1use egui::Color32;
6
7const fn rgb(r: u8, g: u8, b: u8) -> Color32 {
8 Color32::from_rgb(r, g, b)
9}
10
11#[derive(Clone, Copy)]
13pub struct Scale(pub [Color32; 11]);
14
15impl Scale {
16 pub const fn get(&self, step: u16) -> Color32 {
17 match step {
18 50 => self.0[0],
19 100 => self.0[1],
20 200 => self.0[2],
21 300 => self.0[3],
22 400 => self.0[4],
23 500 => self.0[5],
24 600 => self.0[6],
25 700 => self.0[7],
26 800 => self.0[8],
27 900 => self.0[9],
28 950 => self.0[10],
29 _ => self.0[5],
30 }
31 }
32}
33
34pub const NEUTRAL: Scale = Scale([
35 rgb(250, 250, 250),
36 rgb(245, 245, 245),
37 rgb(229, 229, 229),
38 rgb(212, 212, 212),
39 rgb(163, 163, 163),
40 rgb(115, 115, 115),
41 rgb(82, 82, 82),
42 rgb(64, 64, 64),
43 rgb(38, 38, 38),
44 rgb(23, 23, 23),
45 rgb(10, 10, 10),
46]);
47
48pub const SLATE: Scale = Scale([
49 rgb(248, 250, 252),
50 rgb(241, 245, 249),
51 rgb(226, 232, 240),
52 rgb(203, 213, 225),
53 rgb(148, 163, 184),
54 rgb(100, 116, 139),
55 rgb(71, 85, 105),
56 rgb(51, 65, 85),
57 rgb(30, 41, 59),
58 rgb(15, 23, 42),
59 rgb(2, 6, 23),
60]);
61
62pub const GRAY: Scale = Scale([
63 rgb(249, 250, 251),
64 rgb(243, 244, 246),
65 rgb(229, 231, 235),
66 rgb(209, 213, 219),
67 rgb(156, 163, 175),
68 rgb(107, 114, 128),
69 rgb(75, 85, 99),
70 rgb(55, 65, 81),
71 rgb(31, 41, 55),
72 rgb(17, 24, 39),
73 rgb(3, 7, 18),
74]);
75
76pub const RED: Scale = Scale([
77 rgb(254, 242, 242),
78 rgb(254, 226, 226),
79 rgb(254, 202, 202),
80 rgb(252, 165, 165),
81 rgb(248, 113, 113),
82 rgb(239, 68, 68),
83 rgb(220, 38, 38),
84 rgb(185, 28, 28),
85 rgb(153, 27, 27),
86 rgb(127, 29, 29),
87 rgb(69, 10, 10),
88]);
89
90pub const GREEN: Scale = Scale([
91 rgb(240, 253, 244),
92 rgb(220, 252, 231),
93 rgb(187, 247, 208),
94 rgb(134, 239, 172),
95 rgb(74, 222, 128),
96 rgb(34, 197, 94),
97 rgb(22, 163, 74),
98 rgb(21, 128, 61),
99 rgb(22, 101, 52),
100 rgb(20, 83, 45),
101 rgb(5, 46, 22),
102]);
103
104pub const BLUE: Scale = Scale([
105 rgb(239, 246, 255),
106 rgb(219, 234, 254),
107 rgb(191, 219, 254),
108 rgb(147, 197, 253),
109 rgb(96, 165, 250),
110 rgb(59, 130, 246),
111 rgb(37, 99, 235),
112 rgb(29, 78, 216),
113 rgb(30, 64, 175),
114 rgb(30, 58, 138),
115 rgb(23, 37, 84),
116]);
117
118pub const YELLOW: Scale = Scale([
119 rgb(254, 252, 232),
120 rgb(254, 249, 195),
121 rgb(254, 240, 138),
122 rgb(253, 224, 71),
123 rgb(250, 204, 21),
124 rgb(234, 179, 8),
125 rgb(202, 138, 4),
126 rgb(161, 98, 7),
127 rgb(133, 77, 14),
128 rgb(113, 63, 18),
129 rgb(66, 32, 6),
130]);
131
132pub const CYAN: Scale = Scale([
133 rgb(236, 254, 255),
134 rgb(207, 250, 254),
135 rgb(165, 243, 252),
136 rgb(103, 232, 249),
137 rgb(34, 211, 238),
138 rgb(6, 182, 212),
139 rgb(8, 145, 178),
140 rgb(14, 116, 144),
141 rgb(21, 94, 117),
142 rgb(22, 78, 99),
143 rgb(8, 51, 68),
144]);
145
146pub const PURPLE: Scale = Scale([
147 rgb(250, 245, 255),
148 rgb(243, 232, 255),
149 rgb(233, 213, 255),
150 rgb(216, 180, 254),
151 rgb(192, 132, 252),
152 rgb(168, 85, 247),
153 rgb(147, 51, 234),
154 rgb(126, 34, 206),
155 rgb(107, 33, 168),
156 rgb(88, 28, 135),
157 rgb(59, 7, 100),
158]);
159
160pub const WHITE: Color32 = Color32::WHITE;
161pub const BLACK: Color32 = Color32::BLACK;