mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
48 lines
1.6 KiB
Swift
48 lines
1.6 KiB
Swift
|
|
extension UIColor {
|
|
|
|
public func adjust(hueBy degrees: CGFloat) -> UIColor {
|
|
|
|
var currentHue: CGFloat = 0.0
|
|
var currentSaturation: CGFloat = 0.0
|
|
var currentBrigthness: CGFloat = 0.0
|
|
var currentAlpha: CGFloat = 0.0
|
|
|
|
if getHue(¤tHue, saturation: ¤tSaturation, brightness: ¤tBrigthness, alpha: ¤tAlpha) {
|
|
// Round values so we get closer values to Desktop
|
|
let currentHueDegrees = (currentHue * 360.0).rounded()
|
|
let normalizedDegrees = fmod(degrees, 360.0).rounded()
|
|
|
|
// Make sure we're in the range 0 to 360
|
|
var newHue = fmod(currentHueDegrees + normalizedDegrees, 360.0)
|
|
if (newHue < 0) { newHue = 360 + newHue }
|
|
|
|
let decimalHue = (currentHueDegrees + normalizedDegrees) / 360.0
|
|
|
|
return UIColor(hue: decimalHue,
|
|
saturation: currentSaturation,
|
|
brightness: currentBrigthness,
|
|
alpha: 1.0)
|
|
} else {
|
|
return self
|
|
}
|
|
}
|
|
|
|
convenience init(red: Int, green: Int, blue: Int, a: CGFloat = 1.0) {
|
|
self.init(
|
|
red: CGFloat(red) / 255.0,
|
|
green: CGFloat(green) / 255.0,
|
|
blue: CGFloat(blue) / 255.0,
|
|
alpha: a
|
|
)
|
|
}
|
|
|
|
convenience init(rgb: Int, a: CGFloat = 1.0) {
|
|
self.init(
|
|
red: (rgb >> 16) & 0xFF,
|
|
green: (rgb >> 8) & 0xFF,
|
|
blue: rgb & 0xFF,
|
|
a: a
|
|
)
|
|
}
|
|
}
|