diff options
author | 2020-03-31 15:31:44 -0500 | |
---|---|---|
committer | 2020-04-24 15:13:22 -0500 | |
commit | 4009f0cf73cdf261a3218a44706fdd1434653c8f (patch) | |
tree | 880b0233b55447fb4f56cc7dfb6740b02c52f94a /core | |
parent | 831a07f720d522954a75b159ccc00824f3affee6 (diff) | |
download | iced-4009f0cf73cdf261a3218a44706fdd1434653c8f.tar.gz iced-4009f0cf73cdf261a3218a44706fdd1434653c8f.tar.bz2 iced-4009f0cf73cdf261a3218a44706fdd1434653c8f.zip |
Remove HSLColor
Diffstat (limited to 'core')
-rw-r--r-- | core/src/color.rs | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/core/src/color.rs b/core/src/color.rs index ce0ea5ed..33eeedaf 100644 --- a/core/src/color.rs +++ b/core/src/color.rs @@ -162,97 +162,7 @@ impl From<Color> for Srgba { } } -impl From<HSLColor> for Color { - fn from(hsl: HSLColor) -> Self { - // Compute Chroma - let ch = (1.0 - (2.0 * hsl.l - 1.0).abs()) * hsl.s; - - // Quantized Hue: H' - let hp: u8 = (hsl.h / 60.0).ceil() as u8; - let x: f32 = ch * f32::from(1 - ((hp % 2) - 1)); - - // Intermediate RGB values - let (r1, g1, b1): (f32, f32, f32) = match hp { - 1 => (ch, x, 0.0), - 2 => (x, ch, 0.0), - 3 => (0.0, ch, x), - 4 => (0.0, x, ch), - 5 => (x, 0.0, ch), - 6 => (ch, 0.0, x), - _ => (0.0, 0.0, 0.0), - }; - - // Match lightness - let m = hsl.l - ch / 2.0; - - Color::new(r1 + m, g1 + m, b1 + m, hsl.a) - } -} - -/// A color in the HSL color space. -#[derive(Debug, Clone, Copy, PartialEq)] -pub struct HSLColor { - /// Hue, 0.0 - 360.0 - pub h: f32, - /// Saturation, 0.0 - 1.0 - pub s: f32, - /// Lightness, 0.0 - 1.0 - pub l: f32, - /// Transparency, 0.0 - 1.0 - pub a: f32, -} - -impl HSLColor { - /// New HSLColor with range checks - pub fn new(h: f32, s: f32, l: f32, a: f32) -> HSLColor { - HSLColor { - h: clamp_hue(h), - s: clamp(s), - l: clamp(l), - a: clamp(a), - } - } -} - -impl From<Color> for HSLColor { - fn from(c: Color) -> Self { - // https://en.wikipedia.org/wiki/HSL_and_HSV#From_RGB - - // Maximum of the RGB: color Value (for HSV) - let v: f32 = c.r.max(c.g).max(c.b); - // Minimum of the RGB values - let m: f32 = c.r.min(c.g).min(c.b); - // Chroma - let ch: f32 = v - m; - // Lightness - let l: f32 = (v + m) / 2.0; - - // Determine Hue - let mut h = 0.0f32; - if c.r >= c.g && c.r >= c.b { - h = 60.0 * (c.g - c.b) / ch; - } else if c.g >= c.r && c.g >= c.b { - h = 60.0 * (2.0 + (c.b - c.r) / ch); - } else if c.b >= c.r && c.b >= c.g { - h = 60.0 * (4.0 + (c.r - c.g) / ch); - } - - // Determine saturation - let mut s = 0.0f32; - if l > 0.0 && l < 1.0 { - s = (v - l) / l.min(1.0 - l); - } - - HSLColor::new(h, s, l, c.a) - } -} - /// Calmps a float value to the range [0.0, 1.0] pub fn clamp(v: f32) -> f32 { v.max(0.0f32).min(1.0f32) } - -/// Calmps a float value to the range [0.0, 360.0] -pub fn clamp_hue(v: f32) -> f32 { - v.max(0.0f32).min(360.0f32) -} |