Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 42 additions & 14 deletions ios/ReactNativeCameraKit/CodeFormat.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import AVFoundation
enum CodeFormat: String, CaseIterable {
case code128 = "code-128"
case code39 = "code-39"
case code39Mod43 = "code-39-mod-43"
case code93 = "code-93"
case codabar = "codabar"
case ean13 = "ean-13"
case ean8 = "ean-8"
case itf14 = "itf-14"
Expand All @@ -21,17 +21,35 @@ enum CodeFormat: String, CaseIterable {
case pdf417 = "pdf-417"
case aztec = "aztec"
case dataMatrix = "data-matrix"
case code39Mod43 = "code-39-mod-43"
case interleaved2of5 = "interleaved-2of5"
case unknown = "unknown"
@available(iOS 15.4, *)
case codabar = "codabar"
@available(iOS 15.4, *)
case gs1DataBar = "gs1-data-bar"
@available(iOS 15.4, *)
case gs1DataBarLimited = "gs1-data-bar-limited"
@available(iOS 15.4, *)
case gs1DataBarExpanded = "gs1-data-bar-expanded"

// Convert from AVMetadataObject.ObjectType to CodeFormat
static func fromAVMetadataObjectType(_ type: AVMetadataObject.ObjectType) -> CodeFormat {
static var allCases: [CodeFormat] {
var supportedBarcodeTypes: [CodeFormat] =
[.upce, .code39, .code39Mod43,
.ean13, .ean8, .code93, .code128,
.pdf417, .qr, .itf14, .aztec,
.dataMatrix, .interleaved2of5]

if #available(iOS 15.4, *) {
if (type == .codabar) {
return .codabar
}
supportedBarcodeTypes.append(contentsOf: [
.codabar, .gs1DataBar, .gs1DataBarLimited, .gs1DataBarExpanded
])
}

return supportedBarcodeTypes
}

// Convert from AVMetadataObject.ObjectType to CodeFormat
static func fromAVMetadataObjectType(_ type: AVMetadataObject.ObjectType) -> CodeFormat {
switch type {
case .code128: return .code128
case .code39: return .code39
Expand All @@ -46,17 +64,20 @@ enum CodeFormat: String, CaseIterable {
case .aztec: return .aztec
case .dataMatrix: return .dataMatrix
case .interleaved2of5: return .interleaved2of5
@available(iOS 15.4, *)
case .codabar: return .codabar
@available(iOS 15.4, *)
case .gs1DataBar: return .gs1DataBar
@available(iOS 15.4, *)
case .gs1DataBarLimited: return .gs1DataBarLimited
@available(iOS 15.4, *)
case .gs1DataBarExpanded: return .gs1DataBarExpanded
default: return .unknown
}
}

// Convert from CodeFormat to AVMetadataObject.ObjectType
func toAVMetadataObjectType() -> AVMetadataObject.ObjectType {
if #available(iOS 15.4, *) {
if (self == .codabar) {
return .codabar
}
}
switch self {
case .code128: return .code128
case .code39: return .code39
Expand All @@ -71,8 +92,15 @@ enum CodeFormat: String, CaseIterable {
case .aztec: return .aztec
case .dataMatrix: return .dataMatrix
case .interleaved2of5: return .interleaved2of5
case .unknown: fallthrough
default: return .init(rawValue: "unknown")
@available(iOS 15.4, *)
case .codabar: return .codabar
@available(iOS 15.4, *)
case .gs1DataBar: return .gs1DataBar
@available(iOS 15.4, *)
case .gs1DataBarLimited: return .gs1DataBarLimited
@available(iOS 15.4, *)
case .gs1DataBarExpanded: return .gs1DataBarExpanded
case .unknown: return .init(rawValue: "unknown")
}
}
}
5 changes: 4 additions & 1 deletion src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ const codeFormatIOS = [
'code-128',
'code-39',
'code-93',
'codabar', // only iOS 15.4+
'ean-13',
'ean-8',
'itf-14',
Expand All @@ -35,6 +34,10 @@ const codeFormatIOS = [
'data-matrix',
'code-39-mod-43',
'interleaved-2of5',
'codabar', // iOS 15.4+
'gs1-data-bar', // iOS 15.4+
'gs1-data-bar-limited', // iOS 15.4+
'gs1-data-bar-expanded', // iOS 15.4+
] as const;

export const supportedCodeFormats = Array.from(new Set([...codeFormatAndroid, ...codeFormatIOS]));
Expand Down