batbox_color/
consts.rs

1use super::*;
2
3impl<T: ColorComponent> Rgba<T> {
4    /// <span style="background-color:black;color:white">#FFF</span>
5    pub const WHITE: Self = Self {
6        r: T::MAX,
7        g: T::MAX,
8        b: T::MAX,
9        a: T::MAX,
10    };
11    /// <span style="background-color:white;color:black">#000</span>
12    pub const BLACK: Self = Self {
13        r: T::ZERO,
14        g: T::ZERO,
15        b: T::ZERO,
16        a: T::MAX,
17    };
18    /// <span style="background-color:black;color:#7F7F7F">#7F7F7F</span>
19    pub const GRAY: Self = Self {
20        r: T::HALF,
21        g: T::HALF,
22        b: T::HALF,
23        a: T::MAX,
24    };
25    /// <span style="background-color:black;color:white">rgba(255, 255, 255, 0)</span>
26    pub const TRANSPARENT_WHITE: Self = Self {
27        r: T::MAX,
28        g: T::MAX,
29        b: T::MAX,
30        a: T::ZERO,
31    };
32    /// <span style="background-color:white;color:black">rgba(0, 0, 0, 0)</span>
33    pub const TRANSPARENT_BLACK: Self = Self {
34        r: T::ZERO,
35        g: T::ZERO,
36        b: T::ZERO,
37        a: T::ZERO,
38    };
39    /// <span style="background-color:black;color:#F00">#F00</span>
40    pub const RED: Self = Self {
41        r: T::MAX,
42        g: T::ZERO,
43        b: T::ZERO,
44        a: T::MAX,
45    };
46    /// <span style="background-color:black;color:#0F0">#0F0</span>
47    pub const GREEN: Self = Self {
48        r: T::ZERO,
49        g: T::MAX,
50        b: T::ZERO,
51        a: T::MAX,
52    };
53    /// <span style="background-color:black;color:#00F">#00F</span>
54    pub const BLUE: Self = Self {
55        r: T::ZERO,
56        g: T::ZERO,
57        b: T::MAX,
58        a: T::MAX,
59    };
60    /// <span style="background-color:black;color:#0FF">#0FF</span>
61    pub const CYAN: Self = Self {
62        r: T::ZERO,
63        g: T::MAX,
64        b: T::MAX,
65        a: T::MAX,
66    };
67    /// <span style="background-color:black;color:#F0F">#F0F</span>
68    pub const MAGENTA: Self = Self {
69        r: T::MAX,
70        g: T::ZERO,
71        b: T::MAX,
72        a: T::MAX,
73    };
74    /// <span style="background-color:black;color:#FF0">#FF0</span>
75    pub const YELLOW: Self = Self {
76        r: T::MAX,
77        g: T::MAX,
78        b: T::ZERO,
79        a: T::MAX,
80    };
81}
82
83#[test]
84fn test_consts_stable() {
85    macro_rules! test_stable {
86        ($($name:ident,)*) => {
87            $(
88                assert_eq!(Rgba::<f32>::$name.convert::<u8>(), Rgba::<u8>::$name);
89                assert!(Rgba::<f32>::$name.convert::<f64>().approx_eq(&Rgba::<f64>::$name));
90                assert_eq!(Rgba::<f64>::$name.convert::<u8>(), Rgba::<u8>::$name);
91                assert!(Rgba::<f64>::$name.convert::<f32>().approx_eq(&Rgba::<f32>::$name));
92                assert!(Rgba::<u8>::$name.convert::<f32>().approx_eq_eps(&Rgba::<f32>::$name, 1.0 / 255.0));
93                assert!(Rgba::<u8>::$name.convert::<f64>().approx_eq_eps(&Rgba::<f64>::$name, 1.0 / 255.0));
94            )*
95        };
96    }
97    test_stable!(
98        WHITE,
99        BLACK,
100        GRAY,
101        TRANSPARENT_WHITE,
102        TRANSPARENT_BLACK,
103        RED,
104        GREEN,
105        BLUE,
106        CYAN,
107        MAGENTA,
108        YELLOW,
109    );
110}