From 39a974bdf491b9689ff6f300ab49e3f5c7ab7eaf Mon Sep 17 00:00:00 2001 From: Trey t Date: Wed, 2 Mar 2022 16:28:45 -0600 Subject: [PATCH] add code to create darker custom colors --- Shared/Models/MoodTintable.swift | 10 ++++----- Shared/Random.swift | 38 ++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/Shared/Models/MoodTintable.swift b/Shared/Models/MoodTintable.swift index 20b9607..0ebcc00 100644 --- a/Shared/Models/MoodTintable.swift +++ b/Shared/Models/MoodTintable.swift @@ -123,15 +123,15 @@ final class CustomMoodTint: MoodTintable { static func secondary(forMood mood: Mood) -> Color { switch mood { case .horrible: - return UserDefaultsStore.getCustomMoodTint().colorFive + return UserDefaultsStore.getCustomMoodTint().colorFive.darker(by: 40) case .bad: - return UserDefaultsStore.getCustomMoodTint().colorFour + return UserDefaultsStore.getCustomMoodTint().colorFour.darker(by: 40) case .average: - return UserDefaultsStore.getCustomMoodTint().colorThree + return UserDefaultsStore.getCustomMoodTint().colorThree.darker(by: 40) case .good: - return UserDefaultsStore.getCustomMoodTint().colorTwo + return UserDefaultsStore.getCustomMoodTint().colorTwo.darker(by: 40) case .great: - return UserDefaultsStore.getCustomMoodTint().colorOne + return UserDefaultsStore.getCustomMoodTint().colorOne.darker(by: 40) case .missing: return Color(uiColor: UIColor.lightGray) case .placeholder: diff --git a/Shared/Random.swift b/Shared/Random.swift index 099e5e9..1d9d0e4 100644 --- a/Shared/Random.swift +++ b/Shared/Random.swift @@ -132,6 +132,9 @@ extension Color { blue: .random(in: 0...1) ) } + + public func lighter(by amount: CGFloat = 0.2) -> Self { Self(UIColor(self).lighter(by: amount)) } + public func darker(by amount: CGFloat = 0.2) -> Self { Self(UIColor(self).darker(by: amount)) } } extension String { @@ -151,3 +154,38 @@ extension String { return image ?? UIImage() } } + +extension UIColor { + + func lighter(by percentage: CGFloat = 10.0) -> UIColor { + return self.adjust(by: abs(percentage)) + } + + func darker(by percentage: CGFloat = 10.0) -> UIColor { + return self.adjust(by: -abs(percentage)) + } + + func adjust(by percentage: CGFloat) -> UIColor { + var alpha, hue, saturation, brightness, red, green, blue, white : CGFloat + (alpha, hue, saturation, brightness, red, green, blue, white) = (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) + + let multiplier = percentage / 100.0 + + if self.getHue(&hue, saturation: &saturation, brightness: &brightness, alpha: &alpha) { + let newBrightness: CGFloat = max(min(brightness + multiplier*brightness, 1.0), 0.0) + return UIColor(hue: hue, saturation: saturation, brightness: newBrightness, alpha: alpha) + } + else if self.getRed(&red, green: &green, blue: &blue, alpha: &alpha) { + let newRed: CGFloat = min(max(red + multiplier*red, 0.0), 1.0) + let newGreen: CGFloat = min(max(green + multiplier*green, 0.0), 1.0) + let newBlue: CGFloat = min(max(blue + multiplier*blue, 0.0), 1.0) + return UIColor(red: newRed, green: newGreen, blue: newBlue, alpha: alpha) + } + else if self.getWhite(&white, alpha: &alpha) { + let newWhite: CGFloat = (white + multiplier*white) + return UIColor(white: newWhite, alpha: alpha) + } + + return self + } +}