ScanEngine.swift
53 lignes · 1311 octets
import UIKit /// Port of android `scan/ScanEngine.kt`. /// Coordinates are image pixels with a top-left origin (same as Android). struct ScanCorners { let topLeft: CGPoint let topRight: CGPoint let bottomRight: CGPoint let bottomLeft: CGPoint } struct ScanResult { let bitmap: UIImage let angleDegrees: Float let confidence: Float let corners: ScanCorners? init( bitmap: UIImage, angleDegrees: Float = 0, confidence: Float = 1, corners: ScanCorners? = nil ) { self.bitmap = bitmap self.angleDegrees = angleDegrees self.confidence = confidence self.corners = corners } } protocol ScanEngine { func scan(_ source: UIImage, manualCorners: ScanCorners?) async throws -> ScanResult } extension ScanEngine { /// Kotlin default parameter `manualCorners = null`. func scan(_ source: UIImage) async throws -> ScanResult { try await scan(source, manualCorners: nil) } } /// Port of Kotlin `ScanException`. struct ScanException: Error, LocalizedError { let message: String let underlying: Error? init(_ message: String, underlying: Error? = nil) { self.message = message self.underlying = underlying } var errorDescription: String? { message } }
GitRust