mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-09 06:43:25 +01:00
Adds UIColor.adjustedForDisplay() to display illegible tint colors
Adjusts illegible tint colors so that they can be displayed in the UI, e.g. by making them brighter or darker.
This commit is contained in:
@@ -12,3 +12,51 @@ extension UIColor
|
|||||||
{
|
{
|
||||||
static let altBackground = UIColor(named: "Background")!
|
static let altBackground = UIColor(named: "Background")!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension UIColor
|
||||||
|
{
|
||||||
|
private static let brightnessMaxThreshold = 0.85
|
||||||
|
private static let brightnessMinThreshold = 0.35
|
||||||
|
|
||||||
|
private static let saturationBrightnessThreshold = 0.5
|
||||||
|
|
||||||
|
var adjustedForDisplay: UIColor {
|
||||||
|
guard self.isTooBright || self.isTooDark else { return self }
|
||||||
|
|
||||||
|
return UIColor { traits in
|
||||||
|
var hue: CGFloat = 0
|
||||||
|
var saturation: CGFloat = 0
|
||||||
|
var brightness: CGFloat = 0
|
||||||
|
guard self.getHue(&hue, saturation: &saturation, brightness: &brightness, alpha: nil) else { return self }
|
||||||
|
|
||||||
|
brightness = min(brightness, UIColor.brightnessMaxThreshold)
|
||||||
|
|
||||||
|
if traits.userInterfaceStyle == .dark
|
||||||
|
{
|
||||||
|
// Only raise brightness when in dark mode.
|
||||||
|
brightness = max(brightness, UIColor.brightnessMinThreshold)
|
||||||
|
}
|
||||||
|
|
||||||
|
let color = UIColor(hue: hue, saturation: saturation, brightness: brightness, alpha: 1.0)
|
||||||
|
return color
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var isTooBright: Bool {
|
||||||
|
var saturation: CGFloat = 0
|
||||||
|
var brightness: CGFloat = 0
|
||||||
|
|
||||||
|
guard self.getHue(nil, saturation: &saturation, brightness: &brightness, alpha: nil) else { return false }
|
||||||
|
|
||||||
|
let isTooBright = (brightness >= UIColor.brightnessMaxThreshold && saturation <= UIColor.saturationBrightnessThreshold)
|
||||||
|
return isTooBright
|
||||||
|
}
|
||||||
|
|
||||||
|
var isTooDark: Bool {
|
||||||
|
var brightness: CGFloat = 0
|
||||||
|
guard self.getHue(nil, saturation: nil, brightness: &brightness, alpha: nil) else { return false }
|
||||||
|
|
||||||
|
let isTooDark = brightness <= UIColor.brightnessMinThreshold
|
||||||
|
return isTooDark
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user