Files
Schnappix/node_modules/expo-camera/ios/Current/BarcodeRecord.swift
T

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()
}
}
}