Skip to content

Commit

Permalink
Update Color to RGBColor conversion
Browse files Browse the repository at this point in the history
If `Color` was created from dynamic colors, it's `cgColor` will be nil. Convert it back to UIColor / NSColor instead.
  • Loading branch information
intitni committed Oct 16, 2022
1 parent e21f5d7 commit 74a39d4
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions Sources/SmoothGradient/SmoothGradientGenerator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -236,13 +236,12 @@ public extension SmoothGradientGenerator {

extension NSColor: RGBColorConvertible {
func toRGB() -> RGBColor {
var r: CGFloat = 0
var g: CGFloat = 0
var b: CGFloat = 0
var a: CGFloat = 0

getRed(&r, green: &g, blue: &b, alpha: &a)
return RGBColor(r: Double(r), g: Double(g), b: Double(b), alpha: Double(a))
let sRGBColor = usingColorSpace(.sRGB);
let r = sRGBColor?.redComponent ?? 0
let g = sRGBColor?.greenComponent ?? 0
let b = sRGBColor?.blueComponent ?? 0
let a = sRGBColor?.alphaComponent ?? 0
return RGBColor(r: r, g: g, b: b, alpha: a)
}
}

Expand Down Expand Up @@ -285,13 +284,19 @@ public extension SmoothGradientGenerator {
@available(iOS 14.0, OSX 11, tvOS 14, *)
extension Color {
func toRGB() -> RGBColor {
#if canImport(UIKit)
return UIColor(self).toRGB()
#elseif canImport(AppKit)
return NSColor(self).toRGB()
#else
guard let components = cgColor?.components else { return .init(r: 0, g: 0, b: 0, alpha: 0) }
return .init(
r: Double(components[safely: 0] ?? 0),
g: Double(components[safely: 1] ?? 0),
b: Double(components[safely: 2] ?? 0),
alpha: Double(components[safely: 3] ?? 0)
)
#endif
}
}

Expand Down

0 comments on commit 74a39d4

Please sign in to comment.