diff options
| author | 2025-01-27 01:09:16 +0100 | |
|---|---|---|
| committer | 2025-01-27 01:09:16 +0100 | |
| commit | ce07acf6fedd705d6380739fbc5da40f95739e04 (patch) | |
| tree | 183322ddbbe61c0c2dba4cdc4d69e9da0504fae4 /core | |
| parent | d9a454ac4d60a259931f13e844680b2fcd18853b (diff) | |
| download | iced-ce07acf6fedd705d6380739fbc5da40f95739e04.tar.gz iced-ce07acf6fedd705d6380739fbc5da40f95739e04.tar.bz2 iced-ce07acf6fedd705d6380739fbc5da40f95739e04.zip | |
Make all `Color` constructors `const` :tada:
Diffstat (limited to '')
| -rw-r--r-- | core/src/color.rs | 53 | 
1 files changed, 12 insertions, 41 deletions
| diff --git a/core/src/color.rs b/core/src/color.rs index 7b4b772f..a2e076ae 100644 --- a/core/src/color.rs +++ b/core/src/color.rs @@ -42,22 +42,18 @@ impl Color {      ///      /// In debug mode, it will panic if the values are not in the correct      /// range: 0.0 - 1.0 -    pub fn new(r: f32, g: f32, b: f32, a: f32) -> Color { +    const fn new(r: f32, g: f32, b: f32, a: f32) -> Color {          debug_assert!( -            (0.0..=1.0).contains(&r), -            "Red component must be on [0, 1]" +            r >= 0.0 && r <= 1.0, +            "Red component must be in [0, 1] range."          );          debug_assert!( -            (0.0..=1.0).contains(&g), -            "Green component must be on [0, 1]" +            g >= 0.0 && g <= 1.0, +            "Green component must be in [0, 1] range."          );          debug_assert!( -            (0.0..=1.0).contains(&b), -            "Blue component must be on [0, 1]" -        ); -        debug_assert!( -            (0.0..=1.0).contains(&a), -            "Alpha component must be on [0, 1]" +            b >= 0.0 && b <= 1.0, +            "Blue component must be in [0, 1] range."          );          Color { r, g, b, a } @@ -70,7 +66,7 @@ impl Color {      /// Creates a [`Color`] from its RGBA components.      pub const fn from_rgba(r: f32, g: f32, b: f32, a: f32) -> Color { -        Color { r, g, b, a } +        Color::new(r, g, b, a)      }      /// Creates a [`Color`] from its RGB8 components. @@ -80,12 +76,7 @@ impl Color {      /// Creates a [`Color`] from its RGB8 components and an alpha value.      pub const fn from_rgba8(r: u8, g: u8, b: u8, a: f32) -> Color { -        Color { -            r: r as f32 / 255.0, -            g: g as f32 / 255.0, -            b: b as f32 / 255.0, -            a, -        } +        Color::new(r as f32 / 255.0, g as f32 / 255.0, b as f32 / 255.0, a)      }      /// Creates a [`Color`] from its linear RGBA components. @@ -234,30 +225,10 @@ impl From<[f32; 4]> for Color {  #[macro_export]  macro_rules! color {      ($r:expr, $g:expr, $b:expr) => { -        $crate::color!($r, $g, $b, 1.0) +        $crate::Color::from_rgb8($r, $g, $b)      };      ($r:expr, $g:expr, $b:expr, $a:expr) => {{ -        let r = $r as f32 / 255.0; -        let g = $g as f32 / 255.0; -        let b = $b as f32 / 255.0; - -        #[allow(clippy::manual_range_contains)] -        { -            debug_assert!( -                r >= 0.0 && r <= 1.0, -                "R channel must be in [0, 255] range." -            ); -            debug_assert!( -                g >= 0.0 && g <= 1.0, -                "G channel must be in [0, 255] range." -            ); -            debug_assert!( -                b >= 0.0 && b <= 1.0, -                "B channel must be in [0, 255] range." -            ); -        } - -        $crate::Color { r, g, b, a: $a } +        $crate::Color::from_rgba8($r, $g, $b, $a)      }};      ($hex:expr) => {{          $crate::color!($hex, 1.0) @@ -271,7 +242,7 @@ macro_rules! color {          let g = (hex & 0xff00) >> 8;          let b = (hex & 0xff); -        $crate::color!(r, g, b, $a) +        $crate::color!(r as u8, g as u8, b as u8, $a)      }};  } | 
