azalea_core/
color.rs

1use azalea_buf::AzBuf;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, AzBuf)]
4pub struct RgbColor {
5    value: u32,
6}
7
8impl RgbColor {
9    pub fn new(r: u8, g: u8, b: u8) -> Self {
10        Self {
11            value: ((r as u32) << 16) | ((g as u32) << 8) | (b as u32),
12        }
13    }
14
15    pub fn red(&self) -> u8 {
16        (self.value >> 16) as u8
17    }
18
19    pub fn green(&self) -> u8 {
20        (self.value >> 8) as u8
21    }
22
23    pub fn blue(&self) -> u8 {
24        self.value as u8
25    }
26}
27
28#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, AzBuf)]
29pub struct ArgbColor {
30    value: u32,
31}
32
33impl ArgbColor {
34    pub fn new(a: u8, r: u8, g: u8, b: u8) -> Self {
35        Self {
36            value: ((a as u32) << 24) | ((r as u32) << 16) | ((g as u32) << 8) | b as u32,
37        }
38    }
39
40    pub fn alpha(&self) -> u8 {
41        (self.value >> 24) as u8
42    }
43
44    pub fn red(&self) -> u8 {
45        (self.value >> 16) as u8
46    }
47
48    pub fn green(&self) -> u8 {
49        (self.value >> 8) as u8
50    }
51
52    pub fn blue(&self) -> u8 {
53        self.value as u8
54    }
55}