algebraeon_drawing/
colour.rs1#[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}