import Foundation
import ScanbotSDK
import ScanbotSDKNativeWrapper

@objc public protocol RNScanbotCroppingViewEventsDelegate {
    
    @objc func onExtractCroppingArea(_ json: String)
    
    @objc func onError(_ errorMessage: String, errorCode: Int)
}

extension RNScanbotCroppingViewEventsDelegate {
    
    func onError(_ error: SBError){
        onError(error.localizedDescription, errorCode: error.errorCode)
    }
}

struct RNScanbotCroppingLegacyViewDefaultValues {
    let edgeColor = UIColor.white
    let edgeLineWidth: CGFloat = 2
    let edgeColorOnLine = UIColor.white
    let anchorPointsColors = UIColor.white
}

struct CroppingViewCroppedAreaResult: Codable {
    let polygon: [SBDPoint]
    let rotation: SBSDKImageRotation
    let sourceImage: SBSDKImageRef
}

extension UIImage {
    static func placeholderImage(
        size: CGSize = CGSize(width: 100, height: 100),
        backgroundColor: UIColor = .black,
        cornerRadius: CGFloat = 8
    ) -> UIImage {
        let renderer = UIGraphicsImageRenderer(size: size)
        
        return renderer.image { context in
            let rect = CGRect(origin: .zero, size: size)
            let path = UIBezierPath(roundedRect: rect, cornerRadius: cornerRadius)
            backgroundColor.setFill()
            path.fill()
        }
    }
}
