// // KMSignature.swift // PDF Master // // Created by lizhe on 2023/10/9. // import Cocoa @objc enum KMPDFSignatureType: Int { case ink = 0 case text case image } @objc enum KMPDFSignature: Int { case managerView = 0 case createView } @objcMembers class KMSignature: NSObject, NSCoding { private let kPathKey = "Paths" private let kColorKey = "Color" private let kImageKey = "Image" private let kTypeKey = "Type" var signatureColor: NSColor = .black var paths: [NSBezierPath] = [] var pathsImage: NSImage = NSImage() var signatureType: KMPDFSignatureType = .text var isSelect: Bool = false override init() { super.init() } func addPath(_ path: NSBezierPath) { paths.append(path) } func removePath(_ path: NSBezierPath) { if let index = paths.firstIndex(of: path) { paths.remove(at: index) } } func clearPath() { paths.removeAll() } // MARK: - NSCoding required init?(coder decoder: NSCoder) { if let decodedPaths = decoder.decodeObject(forKey: kPathKey) as? [NSBezierPath], let decodedColor = decoder.decodeObject(forKey: kColorKey) as? NSColor, let decodedImage = decoder.decodeObject(forKey: kImageKey) as? NSImage, let decodedType = decoder.decodeObject(forKey: kTypeKey) as? NSNumber { paths = decodedPaths signatureColor = decodedColor pathsImage = decodedImage signatureType = KMPDFSignatureType.init(rawValue: decodedType.intValue) ?? .text } } func encode(with encoder: NSCoder) { encoder.encode(paths, forKey: kPathKey) encoder.encode(signatureColor, forKey: kColorKey) encoder.encode(pathsImage, forKey: kImageKey) encoder.encode(NSNumber(integerLiteral: signatureType.rawValue), forKey: kTypeKey) } }