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}