package io.scanbot.sdk.reactnative.models import android.graphics.Color import androidx.annotation.Keep import io.scanbot.sdk.barcode.ui.BarcodeOverlayTextFormat import io.scanbot.sdk.camera.ZoomRange import io.scanbot.sdk.geometry.AspectRatio import io.scanbot.sdk.reactnative.extensions.Utils class PolygonStyleConfig( strokeColor: Int? = null, fillColor: Int? = null, ) { companion object { val DEFAULT_STROKE_COLOR = Color.parseColor("#CC00CFA6") val DEFAULT_FILL_COLOR = Color.parseColor("#3300CFA6") } var strokeColor: Int? = strokeColor get() = field ?: DEFAULT_STROKE_COLOR var fillColor: Int? = fillColor get() = field ?: DEFAULT_FILL_COLOR override fun equals(other: Any?): Boolean { if (this === other) return true if (javaClass != other?.javaClass) return false other as PolygonStyleConfig if (strokeColor != other.strokeColor) return false if (fillColor != other.fillColor) return false return true } override fun hashCode(): Int { var result = strokeColor ?: 0 result = 31 * result + (fillColor ?: 0) return result } } class TextStyleConfig( textColor: Int? = null, textContainerColor: Int? = null, textFormat: BarcodeOverlayTextFormat? = null ) { companion object { const val DEFAULT_TEXT_COLOR = Color.BLACK val DEFAULT_TEXT_CONTAINER_COLOR = Color.parseColor("#CC00CFA6") val DEFAULT_TEXT_FORMAT = BarcodeOverlayTextFormat.CODE_AND_TYPE } var textColor: Int? = textColor get() = field ?: DEFAULT_TEXT_COLOR var textContainerColor: Int? = textContainerColor get() = field ?: DEFAULT_TEXT_CONTAINER_COLOR var textFormat: BarcodeOverlayTextFormat? = textFormat get() = field ?: DEFAULT_TEXT_FORMAT override fun equals(other: Any?): Boolean { if (this === other) return true if (javaClass != other?.javaClass) return false other as TextStyleConfig if (textColor != other.textColor) return false if (textContainerColor != other.textContainerColor) return false if (textFormat != other.textFormat) return false return true } override fun hashCode(): Int { var result = textColor ?: 0 result = 31 * result + (textContainerColor ?: 0) result = 31 * result + (textFormat?.hashCode() ?: 0) return result } } object FinderViewConfiguration { const val DEFAULT_STROKE_COLOR = Color.WHITE val DEFAULT_OVERLAY_COLOR = Color.parseColor("#A9000000") const val DEFAULT_FINDER_ENABLED = false const val DEFAULT_STROKE_WIDTH = 2 const val DEFAULT_FINDER_MIN_PADDING = 66 val DEFAULT_FINDER_INSETS = FinderInsets(10, 10, 10, 10) val DEFAULT_ASPECT_RATIO = listOf(AspectRatio(4.0, 3.0)) } object CameraConfiguration { val DEFAULT_ZOOM_RANGE = ZoomRange(1f, 12f) } @Keep data class ZoomRangeConfig( var minZoom: Float, var maxZoom: Float, ) @Keep data class FinderInsets( var left: Int, var right: Int, var top: Int, var bottom: Int ) @Keep data class BarcodeItemOverlayViewConfig( var text: String? = null, var textColor: String? = null, var textContainerColor: String? = null, var polygonColor: String? = null, var strokeColor: String? = null, var refreshRate: Int = 0, ) { val textColorParsed: Int? get() = textColor?.let { Utils.tryToParseRGBAHexColor(it) } val textContainerColorParsed: Int? get() = textContainerColor?.let { Utils.tryToParseRGBAHexColor(it) } val polygonColorParsed: Int? get() = polygonColor?.let { Utils.tryToParseRGBAHexColor(it) } val strokeColorParsed: Int? get() = strokeColor?.let { Utils.tryToParseRGBAHexColor(it) } var lastBind: Long = 0 companion object { var LOADING_TEXT: String? = null } }