Showing
1 changed file
with
27 additions
and
33 deletions
| @@ -10,13 +10,13 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | @@ -10,13 +10,13 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | ||
| 10 | 10 | ||
| 11 | // Sink for publishing event changes | 11 | // Sink for publishing event changes |
| 12 | var sink: FlutterEventSink! | 12 | var sink: FlutterEventSink! |
| 13 | - | 13 | + |
| 14 | // Texture id of the camera preview | 14 | // Texture id of the camera preview |
| 15 | var textureId: Int64! | 15 | var textureId: Int64! |
| 16 | - | 16 | + |
| 17 | // Capture session of the camera | 17 | // Capture session of the camera |
| 18 | var captureSession: AVCaptureSession! | 18 | var captureSession: AVCaptureSession! |
| 19 | - | 19 | + |
| 20 | // The selected camera | 20 | // The selected camera |
| 21 | weak var device: AVCaptureDevice! | 21 | weak var device: AVCaptureDevice! |
| 22 | 22 | ||
| @@ -25,21 +25,19 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | @@ -25,21 +25,19 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | ||
| 25 | 25 | ||
| 26 | // optional window to limit scan search | 26 | // optional window to limit scan search |
| 27 | var scanWindow: CGRect? | 27 | var scanWindow: CGRect? |
| 28 | - | 28 | + |
| 29 | var detectionSpeed: DetectionSpeed = DetectionSpeed.noDuplicates | 29 | var detectionSpeed: DetectionSpeed = DetectionSpeed.noDuplicates |
| 30 | 30 | ||
| 31 | var timeoutSeconds: Double = 0 | 31 | var timeoutSeconds: Double = 0 |
| 32 | - | ||
| 33 | - var symbologies:[VNBarcodeSymbology] = [] | ||
| 34 | - | 32 | + |
| 33 | + var symbologies:[VNBarcodeSymbology] = [] | ||
| 35 | 34 | ||
| 36 | -// var analyzeMode: Int = 0 | 35 | + // var analyzeMode: Int = 0 |
| 37 | var analyzing: Bool = false | 36 | var analyzing: Bool = false |
| 38 | var position = AVCaptureDevice.Position.back | 37 | var position = AVCaptureDevice.Position.back |
| 39 | 38 | ||
| 40 | public static func register(with registrar: FlutterPluginRegistrar) { | 39 | public static func register(with registrar: FlutterPluginRegistrar) { |
| 41 | let instance = MobileScannerPlugin(registrar.textures) | 40 | let instance = MobileScannerPlugin(registrar.textures) |
| 42 | - | ||
| 43 | let method = FlutterMethodChannel(name: | 41 | let method = FlutterMethodChannel(name: |
| 44 | "dev.steenbakker.mobile_scanner/scanner/method", binaryMessenger: registrar.messenger) | 42 | "dev.steenbakker.mobile_scanner/scanner/method", binaryMessenger: registrar.messenger) |
| 45 | let event = FlutterEventChannel(name: | 43 | let event = FlutterEventChannel(name: |
| @@ -53,7 +51,6 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | @@ -53,7 +51,6 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | ||
| 53 | super.init() | 51 | super.init() |
| 54 | } | 52 | } |
| 55 | 53 | ||
| 56 | - | ||
| 57 | public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { | 54 | public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { |
| 58 | switch call.method { | 55 | switch call.method { |
| 59 | case "state": | 56 | case "state": |
| @@ -64,8 +61,8 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | @@ -64,8 +61,8 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | ||
| 64 | start(call, result) | 61 | start(call, result) |
| 65 | case "torch": | 62 | case "torch": |
| 66 | toggleTorch(call, result) | 63 | toggleTorch(call, result) |
| 67 | -// case "analyze": | ||
| 68 | -// switchAnalyzeMode(call, result) | 64 | + // case "analyze": |
| 65 | + // switchAnalyzeMode(call, result) | ||
| 69 | case "stop": | 66 | case "stop": |
| 70 | stop(result) | 67 | stop(result) |
| 71 | case "updateScanWindow": | 68 | case "updateScanWindow": |
| @@ -139,11 +136,11 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | @@ -139,11 +136,11 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | ||
| 139 | DispatchQueue.main.async { | 136 | DispatchQueue.main.async { |
| 140 | self?.sink?(["name": "barcodeMac", "data" : ["payload": barcode.payloadStringValue, "symbology": barcode.symbology.toInt as Any?]] as [String : Any]) | 137 | self?.sink?(["name": "barcodeMac", "data" : ["payload": barcode.payloadStringValue, "symbology": barcode.symbology.toInt as Any?]] as [String : Any]) |
| 141 | } | 138 | } |
| 142 | -// if barcodeType == "QR" { | ||
| 143 | -// let image = CIImage(image: source) | ||
| 144 | -// image?.cropping(to: barcode.boundingBox) | ||
| 145 | -// self.qrCodeDescriptor(qrCode: barcode, qrCodeImage: image!) | ||
| 146 | -// } | 139 | + // if barcodeType == "QR" { |
| 140 | + // let image = CIImage(image: source) | ||
| 141 | + // image?.cropping(to: barcode.boundingBox) | ||
| 142 | + // self.qrCodeDescriptor(qrCode: barcode, qrCodeImage: image!) | ||
| 143 | + // } | ||
| 147 | } | 144 | } |
| 148 | } | 145 | } |
| 149 | } else { | 146 | } else { |
| @@ -204,9 +201,8 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | @@ -204,9 +201,8 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | ||
| 204 | } | 201 | } |
| 205 | 202 | ||
| 206 | func isBarCodeInScanWindow(_ scanWindow: CGRect, _ barcode: VNBarcodeObservation, _ inputImage: CGImage) -> Bool { | 203 | func isBarCodeInScanWindow(_ scanWindow: CGRect, _ barcode: VNBarcodeObservation, _ inputImage: CGImage) -> Bool { |
| 207 | - | ||
| 208 | - let imageWidth = CGFloat(inputImage.width); | ||
| 209 | - let imageHeight = CGFloat(inputImage.height); | 204 | + let imageWidth = CGFloat(inputImage.width) |
| 205 | + let imageHeight = CGFloat(inputImage.height) | ||
| 210 | 206 | ||
| 211 | let minX = scanWindow.minX * imageWidth | 207 | let minX = scanWindow.minX * imageWidth |
| 212 | let minY = scanWindow.minY * imageHeight | 208 | let minY = scanWindow.minY * imageHeight |
| @@ -220,8 +216,8 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | @@ -220,8 +216,8 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | ||
| 220 | func isBarCodeInScanWindow(_ scanWindow: CGRect, _ barcode: VNBarcodeObservation, _ inputImage: CVImageBuffer) -> Bool { | 216 | func isBarCodeInScanWindow(_ scanWindow: CGRect, _ barcode: VNBarcodeObservation, _ inputImage: CVImageBuffer) -> Bool { |
| 221 | let size = CVImageBufferGetEncodedSize(inputImage) | 217 | let size = CVImageBufferGetEncodedSize(inputImage) |
| 222 | 218 | ||
| 223 | - let imageWidth = size.width; | ||
| 224 | - let imageHeight = size.height; | 219 | + let imageWidth = size.width |
| 220 | + let imageHeight = size.height | ||
| 225 | 221 | ||
| 226 | let minX = scanWindow.minX * imageWidth | 222 | let minX = scanWindow.minX * imageWidth |
| 227 | let minY = scanWindow.minY * imageHeight | 223 | let minY = scanWindow.minY * imageHeight |
| @@ -293,7 +289,7 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | @@ -293,7 +289,7 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | ||
| 293 | } catch { | 289 | } catch { |
| 294 | result(FlutterError(code: error.localizedDescription, message: nil, details: nil)) | 290 | result(FlutterError(code: error.localizedDescription, message: nil, details: nil)) |
| 295 | } | 291 | } |
| 296 | - captureSession.sessionPreset = AVCaptureSession.Preset.photo; | 292 | + captureSession.sessionPreset = AVCaptureSession.Preset.photo |
| 297 | // Add video output. | 293 | // Add video output. |
| 298 | let videoOutput = AVCaptureVideoDataOutput() | 294 | let videoOutput = AVCaptureVideoDataOutput() |
| 299 | 295 | ||
| @@ -331,10 +327,10 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | @@ -331,10 +327,10 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | ||
| 331 | } | 327 | } |
| 332 | } | 328 | } |
| 333 | 329 | ||
| 334 | -// func switchAnalyzeMode(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) { | ||
| 335 | -// analyzeMode = call.arguments as! Int | ||
| 336 | -// result(nil) | ||
| 337 | -// } | 330 | + // func switchAnalyzeMode(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) { |
| 331 | + // analyzeMode = call.arguments as! Int | ||
| 332 | + // result(nil) | ||
| 333 | + // } | ||
| 338 | 334 | ||
| 339 | func stop(_ result: FlutterResult) { | 335 | func stop(_ result: FlutterResult) { |
| 340 | if (device == nil) { | 336 | if (device == nil) { |
| @@ -352,7 +348,7 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | @@ -352,7 +348,7 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | ||
| 352 | device.removeObserver(self, forKeyPath: #keyPath(AVCaptureDevice.torchMode)) | 348 | device.removeObserver(self, forKeyPath: #keyPath(AVCaptureDevice.torchMode)) |
| 353 | registry.unregisterTexture(textureId) | 349 | registry.unregisterTexture(textureId) |
| 354 | 350 | ||
| 355 | -// analyzeMode = 0 | 351 | + // analyzeMode = 0 |
| 356 | latestBuffer = nil | 352 | latestBuffer = nil |
| 357 | captureSession = nil | 353 | captureSession = nil |
| 358 | device = nil | 354 | device = nil |
| @@ -365,7 +361,7 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | @@ -365,7 +361,7 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | ||
| 365 | public override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { | 361 | public override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { |
| 366 | switch keyPath { | 362 | switch keyPath { |
| 367 | case "torchMode": | 363 | case "torchMode": |
| 368 | - // off = 0; on = 1; auto = 2; | 364 | + // off = 0 on = 1 auto = 2 |
| 369 | let state = change?[.newKey] as? Int | 365 | let state = change?[.newKey] as? Int |
| 370 | let event: [String: Any?] = ["name": "torchState", "data": state] | 366 | let event: [String: Any?] = ["name": "torchState", "data": state] |
| 371 | sink?(event) | 367 | sink?(event) |
| @@ -376,7 +372,6 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | @@ -376,7 +372,6 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | ||
| 376 | } | 372 | } |
| 377 | 373 | ||
| 378 | class MapArgumentReader { | 374 | class MapArgumentReader { |
| 379 | - | ||
| 380 | let args: [String: Any]? | 375 | let args: [String: Any]? |
| 381 | 376 | ||
| 382 | init(_ args: [String: Any]?) { | 377 | init(_ args: [String: Any]?) { |
| @@ -418,11 +413,10 @@ class MapArgumentReader { | @@ -418,11 +413,10 @@ class MapArgumentReader { | ||
| 418 | func floatArray(key: String) -> [CGFloat]? { | 413 | func floatArray(key: String) -> [CGFloat]? { |
| 419 | return args?[key] as? [CGFloat] | 414 | return args?[key] as? [CGFloat] |
| 420 | } | 415 | } |
| 421 | - | 416 | + |
| 422 | } | 417 | } |
| 423 | 418 | ||
| 424 | extension VNBarcodeSymbology { | 419 | extension VNBarcodeSymbology { |
| 425 | - | ||
| 426 | static func fromInt(_ mapValue:Int) -> VNBarcodeSymbology? { | 420 | static func fromInt(_ mapValue:Int) -> VNBarcodeSymbology? { |
| 427 | if #available(macOS 12.0, *) { | 421 | if #available(macOS 12.0, *) { |
| 428 | if(mapValue == 8){ | 422 | if(mapValue == 8){ |
| @@ -487,7 +481,7 @@ extension VNBarcodeSymbology { | @@ -487,7 +481,7 @@ extension VNBarcodeSymbology { | ||
| 487 | case VNBarcodeSymbology.aztec: | 481 | case VNBarcodeSymbology.aztec: |
| 488 | return 4096 | 482 | return 4096 |
| 489 | default: | 483 | default: |
| 490 | - return -1; | 484 | + return -1 |
| 491 | } | 485 | } |
| 492 | } | 486 | } |
| 493 | } | 487 | } |
-
Please register or login to post a comment