Skip to main content

algebraeon_drawing/
colour.rs

1#[derive(Debug, Clone)]
2pub struct Colour {
3    pub rgb: [f32; 3],
4}
5
6impl Colour {
7    pub fn black() -> Self {
8        Self {
9            rgb: [0.0, 0.0, 0.0],
10        }
11    }
12    pub fn white() -> Self {
13        Self {
14            rgb: [1.0, 1.0, 1.0],
15        }
16    }
17    pub fn red() -> Self {
18        Self {
19            rgb: [1.0, 0.0, 0.0],
20        }
21    }
22    pub fn green() -> Self {
23        Self {
24            rgb: [0.0, 1.0, 0.0],
25        }
26    }
27    pub fn blue() -> Self {
28        Self {
29            rgb: [0.0, 0.0, 1.0],
30        }
31    }
32    pub fn cyan() -> Self {
33        Self {
34            rgb: [0.0, 1.0, 1.0],
35        }
36    }
37    pub fn magenta() -> Self {
38        Self {
39            rgb: [1.0, 0.0, 1.0],
40        }
41    }
42    pub fn yellow() -> Self {
43        Self {
44            rgb: [1.0, 1.0, 0.0],
45        }
46    }
47    pub fn orange() -> Self {
48        Self {
49            rgb: [1.0, 0.5, 0.0],
50        }
51    }
52    pub fn lime() -> Self {
53        Self {
54            rgb: [1.0, 0.5, 0.0],
55        }
56    }
57    pub fn pink() -> Self {
58        Self {
59            rgb: [1.0, 0.0, 0.5],
60        }
61    }
62    pub fn purple() -> Self {
63        Self {
64            rgb: [0.5, 0.0, 1.0],
65        }
66    }
67    pub fn aquamarine() -> Self {
68        Self {
69            rgb: [0.0, 1.0, 0.5],
70        }
71    }
72    pub fn azure() -> Self {
73        Self {
74            rgb: [0.0, 0.5, 1.0],
75        }
76    }
77    pub fn grey() -> Self {
78        Self {
79            rgb: [0.5, 0.5, 0.5],
80        }
81    }
82    pub fn lighten(self) -> Self {
83        let t = 0.5;
84        Self {
85            rgb: [
86                1.0 - t * (1.0 - self.rgb[0]),
87                1.0 - t * (1.0 - self.rgb[1]),
88                1.0 - t * (1.0 - self.rgb[2]),
89            ],
90        }
91    }
92    pub fn darken(self) -> Self {
93        let t = 0.5;
94        Self {
95            rgb: [t * self.rgb[0], t * self.rgb[1], t * self.rgb[2]],
96        }
97    }
98}