//
//  KMWatermarkAdjectiveBaseModel.swift
//  PDF Reader Pro
//
//  Created by tangchao on 2022/12/27.
//

import Cocoa

enum KMWatermarkeModelPageRangeType: Int {
    case all = 0
    case odd
    case even
    case other
}

/// 关联指
enum KMWatermarkAdjectiveText {
    case font(name: String, size: CGFloat)
    case color(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)
}

@objcMembers class KMWatermarkAdjectiveBaseModel: NSObject {
    var textFont: KMWatermarkAdjectiveText!
    var fontSize: Float = 12.0 {
        didSet {
            textFont = KMWatermarkAdjectiveText.font(name: "Helvetica", size: CGFloat(fontSize))
        }
    }
    var textColor: KMWatermarkAdjectiveText!
    var tempTextColor: NSColor = NSColor.black {
        didSet {
//            var red: CGFloat = 0.0
//            var greed: CGFloat = 0.0
//            var blue: CGFloat = 0.0
//            NSColor * oldStrokeColor = [config.oldStrokeColor colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
//            [oldStrokeColor getRed:&red green:&green blue:&blue alpha:NULL];
//            oldStrokeColor = [NSColor colorWithRed:red green:green blue:blue alpha:config.oldStrokeOpacity];
            
            var red: CGFloat = 0
            var green: CGFloat = 0
            var blue: CGFloat = 0
            var alpha: CGFloat = 0

            let oldStrokeColor = tempTextColor.usingColorSpace(NSColorSpace.deviceRGB)
            oldStrokeColor?.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
//            let newStrokeColor = NSColor(red: red, green: green, blue: blue, alpha: alpha)
            
            textColor = KMWatermarkAdjectiveText.color(red: red, green: green, blue: blue, alpha: alpha)
        }
    }
    
    var id: String = ""
    
    var pageRangeType: KMWatermarkeModelPageRangeType = .all
    var pageRangeString: String = ""
    var pageCount: Int = 0
    
    public func getTextColor() -> NSColor {
        var color: NSColor!
        switch self.textColor {
        case .color(red: let red, green: let green, blue: let blue, alpha: let alpha):
            color = NSColor(red: red, green: green, blue: blue, alpha: alpha)
        default:
            break
        }
        
        if (color == nil) {
            color = NSColor.red
        }
        
        return color
    }
    
    public func getTextFont() -> NSFont {
        var fontSize = 0.0
        var fontName: String = ""
        switch self.textFont {
        case .font(name: let name, size: let size):
            fontName = name
            fontSize = size
            break
        default:
            break
        }
        
        return NSFont(name: fontName, size: fontSize) ?? NSFont(name: "Helvetica", size: 48)!
    }
    
    public func getTextFontName() -> String {
        var fontName: String = ""
        switch self.textFont {
        case .font(name: let name, size: _):
            fontName = name
            break
        default:
            break
        }
        
        return fontName
    }
    
    public func getTextFontSize() -> CGFloat {
        var fontSize = 48.0
        switch self.textFont {
        case .font(name: _, size: let size):
            fontSize = size
            break
        default:
            break
        }
        
        return fontSize
    }

}