Skip to main content

winit_ui/
color.rs

1pub struct Color {
2    pub r: u8,
3    pub g: u8,
4    pub b: u8,
5    pub a: u8,
6}
7
8impl Color {
9    pub const fn new(r: u8, g: u8, b: u8, a: u8) -> Self {
10        Self {
11            r,
12            g,
13            b,
14            a 
15        }
16    }
17}
18
19impl From<&str> for Color {
20    fn from(value: &str) -> Self {
21        let value = value.trim_start_matches('#');
22        let r = u8::from_str_radix(&value[0..2], 16).unwrap_or(0);
23        let g = u8::from_str_radix(&value[2..4], 16).unwrap_or(0);
24        let b = u8::from_str_radix(&value[4..6], 16).unwrap_or(0);
25        Self { r, g, b, a: 255 }
26    }
27}
28
29impl From<u32> for Color {
30    fn from(value: u32) -> Self {
31        Self {
32            r: (value >> 16) as u8,
33            g: (value >> 8) as u8,
34            b: value as u8,
35            a: 255,
36        }
37    }
38}