macos: OSColor.hexString must be able to compile with UIKit

This commit is contained in:
Mitchell Hashimoto
2024-11-21 14:49:51 -08:00
parent e17741aebd
commit a733ea381b

View File

@ -22,11 +22,29 @@ extension OSColor {
} }
var hexString: String? { var hexString: String? {
#if canImport(AppKit)
guard let rgb = usingColorSpace(.deviceRGB) else { return nil } guard let rgb = usingColorSpace(.deviceRGB) else { return nil }
let red = Int(rgb.redComponent * 255) let red = Int(rgb.redComponent * 255)
let green = Int(rgb.greenComponent * 255) let green = Int(rgb.greenComponent * 255)
let blue = Int(rgb.blueComponent * 255) let blue = Int(rgb.blueComponent * 255)
return String(format: "#%02X%02X%02X", red, green, blue) return String(format: "#%02X%02X%02X", red, green, blue)
#elseif canImport(UIKit)
var red: CGFloat = 0
var green: CGFloat = 0
var blue: CGFloat = 0
var alpha: CGFloat = 0
guard self.getRed(&red, green: &green, blue: &blue, alpha: &alpha) else {
return nil
}
// Convert to 0255 range
let r = Int(red * 255)
let g = Int(green * 255)
let b = Int(blue * 255)
// Format to hexadecimal
return String(format: "#%02X%02X%02X", r, g, b)
#endif
} }
func darken(by amount: CGFloat) -> OSColor { func darken(by amount: CGFloat) -> OSColor {