/* * Copyright (C) 2019 Electric Coin Company * * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * This file has been modified by Electric Coin Company to translate it into Kotlin and add support for Firebase vision. * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package cash.z.android.cameraview.base import androidx.annotation.NonNull /** * Immutable class for describing width and height dimensions in pixels. */ /** * Create a new immutable Size instance. * * @param width The width of the size, in pixels * @param height The height of the size, in pixels */ class Size(val width: Int, val height: Int) : Comparable { override fun equals(o: Any?): Boolean { if (o == null) { return false } if (this === o) { return true } if (o is Size) { val size = o as Size? return width == size!!.width && height == size.height } return false } override fun toString(): String { return width.toString() + "x" + height } override fun hashCode(): Int { // assuming most sizes are <2^16, doing a rotate will give us perfect hashing return height xor (width shl Integer.SIZE / 2 or width.ushr(Integer.SIZE / 2)) } override fun compareTo(@NonNull another: Size): Int { return width * height - another.width * another.height } }