161 lines
2.9 KiB
Swift
161 lines
2.9 KiB
Swift
import ExpoModulesCore
|
|
import Vision
|
|
|
|
struct BarcodeSettings: Record {
|
|
@Field var barcodeTypes: [BarcodeType]
|
|
|
|
func toMetadataObjectType() -> [AVMetadataObject.ObjectType] {
|
|
barcodeTypes.map {
|
|
$0.toMetadataObjectType()
|
|
}
|
|
}
|
|
}
|
|
|
|
enum BarcodeType: String, Enumerable {
|
|
case aztec
|
|
case ean13
|
|
case ean8
|
|
case qr
|
|
case pdf417
|
|
case upc_e
|
|
case datamatrix
|
|
case code39
|
|
case code93
|
|
case itf14
|
|
case codabar
|
|
case code128
|
|
case upc_a
|
|
|
|
func toMetadataObjectType() -> AVMetadataObject.ObjectType {
|
|
if #available(iOS 15.4, *) {
|
|
if self == .codabar {
|
|
return .codabar
|
|
}
|
|
}
|
|
switch self {
|
|
case .aztec:
|
|
return .aztec
|
|
case .qr:
|
|
return .qr
|
|
case .ean13:
|
|
return .ean13
|
|
case .ean8:
|
|
return .ean8
|
|
case .pdf417:
|
|
return .pdf417
|
|
case .itf14:
|
|
return .itf14
|
|
case .upc_a:
|
|
return .ean13
|
|
case .upc_e:
|
|
return .upce
|
|
case .code39:
|
|
return .code39
|
|
case .code93:
|
|
return .code93
|
|
case .datamatrix:
|
|
return .dataMatrix
|
|
case .code128:
|
|
return .code128
|
|
default:
|
|
return .aztec
|
|
}
|
|
}
|
|
|
|
static func toBarcodeType(type: AVMetadataObject.ObjectType) -> BarcodeType {
|
|
if #available(iOS 15.4, *) {
|
|
if type == .codabar {
|
|
return .codabar
|
|
}
|
|
}
|
|
switch type {
|
|
case .aztec:
|
|
return .aztec
|
|
case .qr:
|
|
return .qr
|
|
case .ean13:
|
|
return .ean13
|
|
case .ean8:
|
|
return .ean8
|
|
case .pdf417:
|
|
return .pdf417
|
|
case .itf14:
|
|
return .itf14
|
|
case .upce:
|
|
return .upc_e
|
|
case .code39:
|
|
return .code39
|
|
case .code93:
|
|
return .code93
|
|
case .dataMatrix:
|
|
return .datamatrix
|
|
case .code128:
|
|
return .code128
|
|
default:
|
|
return .aztec
|
|
}
|
|
}
|
|
}
|
|
|
|
enum VNBarcodeType: String, Enumerable {
|
|
case aztec
|
|
case ean13
|
|
case ean8
|
|
case qr
|
|
case pdf417
|
|
case upc_e
|
|
case datamatrix
|
|
case code39
|
|
case code93
|
|
case itf14
|
|
case codabar
|
|
case code128
|
|
case upc_a
|
|
|
|
@available(iOS 16.0, *)
|
|
func toSymbology() -> VNBarcodeSymbology {
|
|
switch self {
|
|
case .aztec:
|
|
return .aztec
|
|
case .codabar:
|
|
return .codabar
|
|
case .qr:
|
|
return .qr
|
|
case .ean13:
|
|
return .ean13
|
|
case .ean8:
|
|
return .ean8
|
|
case .pdf417:
|
|
return .pdf417
|
|
case .itf14:
|
|
return .itf14
|
|
case .upc_a:
|
|
return .ean13
|
|
case .upc_e:
|
|
return .upce
|
|
case .code39:
|
|
return .code39
|
|
case .code93:
|
|
return .code93
|
|
case .datamatrix:
|
|
return .dataMatrix
|
|
case .code128:
|
|
return .code128
|
|
}
|
|
}
|
|
}
|
|
|
|
struct VisionScannerOptions: Record {
|
|
@Field var barcodeTypes: [VNBarcodeType] = []
|
|
@Field var isPinchToZoomEnabled: Bool = false
|
|
@Field var isGuidanceEnabled: Bool = true
|
|
@Field var isHighlightingEnabled: Bool = false
|
|
|
|
@available(iOS 16.0, *)
|
|
func toSymbology() -> [VNBarcodeSymbology] {
|
|
barcodeTypes.map {
|
|
$0.toSymbology()
|
|
}
|
|
}
|
|
}
|