1use crate::Color;
2
3#[derive(Clone, Copy, Debug, PartialEq)]
4#[repr(u8)]
5pub enum Hue {
6 Red = 0,
7 Pink = 1,
8 Purple = 2,
9 DeepPurple = 3,
10 Indigo = 4,
11 Blue = 5,
12 LightBlue = 6,
13 Cyan = 7,
14 Teal = 8,
15 Green = 9,
16 LightGreen = 10,
17 Lime = 11,
18 Yellow = 12,
19 Amber = 13,
20 Orange = 14,
21 DeepOrange = 15,
22 Brown = 16,
23 BlueGrey = 17,
24 Grey = 18,
25}
26
27const MATERIAL_COLORS: [[Color; 10]; 19] = [
31 [
33 Color::new(0xFF, 0xEB, 0xEE), Color::new(0xFF, 0xCD, 0xD2), Color::new(0xEF, 0x9A, 0x9A), Color::new(0xE5, 0x73, 0x73), Color::new(0xEF, 0x53, 0x50), Color::new(0xF4, 0x43, 0x36), Color::new(0xE5, 0x39, 0x35), Color::new(0xD3, 0x2F, 0x2F), Color::new(0xC6, 0x28, 0x28), Color::new(0xB7, 0x1C, 0x1C), ],
44 [
46 Color::new(0xFC, 0xE4, 0xEC), Color::new(0xF8, 0xBB, 0xD9), Color::new(0xF4, 0x8F, 0xB1), Color::new(0xF0, 0x62, 0x92), Color::new(0xEC, 0x40, 0x7A), Color::new(0xE9, 0x1E, 0x63), Color::new(0xD8, 0x1B, 0x60), Color::new(0xC2, 0x18, 0x5B), Color::new(0xAD, 0x14, 0x57), Color::new(0x88, 0x0E, 0x4F), ],
57 [
59 Color::new(0xF3, 0xE5, 0xF5), Color::new(0xE1, 0xBE, 0xE7), Color::new(0xCE, 0x93, 0xD8), Color::new(0xBA, 0x68, 0xC8), Color::new(0xAB, 0x47, 0xBC), Color::new(0x9C, 0x27, 0xB0), Color::new(0x8E, 0x24, 0xAA), Color::new(0x7B, 0x1F, 0xA2), Color::new(0x6A, 0x1B, 0x9A), Color::new(0x4A, 0x14, 0x8C), ],
70 [
72 Color::new(0xED, 0xE7, 0xF6), Color::new(0xD1, 0xC4, 0xE9), Color::new(0xB3, 0x9D, 0xDB), Color::new(0x95, 0x75, 0xCD), Color::new(0x7E, 0x57, 0xC2), Color::new(0x67, 0x3A, 0xB7), Color::new(0x5E, 0x35, 0xB1), Color::new(0x51, 0x2D, 0xA8), Color::new(0x45, 0x27, 0xA0), Color::new(0x31, 0x1B, 0x92), ],
83 [
85 Color::new(0xE8, 0xEA, 0xF6), Color::new(0xC5, 0xCA, 0xE9), Color::new(0x9F, 0xA8, 0xDA), Color::new(0x79, 0x86, 0xCB), Color::new(0x5C, 0x6B, 0xC0), Color::new(0x3F, 0x51, 0xB5), Color::new(0x39, 0x49, 0xAB), Color::new(0x30, 0x3F, 0x9F), Color::new(0x28, 0x35, 0x93), Color::new(0x1A, 0x23, 0x7E), ],
96 [
98 Color::new(0xE3, 0xF2, 0xFD), Color::new(0xBB, 0xDE, 0xFB), Color::new(0x90, 0xCA, 0xF9), Color::new(0x64, 0xB5, 0xF6), Color::new(0x42, 0xA5, 0xF5), Color::new(0x21, 0x96, 0xF3), Color::new(0x1E, 0x88, 0xE5), Color::new(0x19, 0x76, 0xD2), Color::new(0x15, 0x65, 0xC0), Color::new(0x0D, 0x47, 0xA1), ],
109 [
111 Color::new(0xE1, 0xF5, 0xFE), Color::new(0xB3, 0xE5, 0xFC), Color::new(0x81, 0xD4, 0xFA), Color::new(0x4F, 0xC3, 0xF7), Color::new(0x29, 0xB6, 0xF6), Color::new(0x03, 0xA9, 0xF4), Color::new(0x03, 0x9B, 0xE5), Color::new(0x02, 0x88, 0xD1), Color::new(0x02, 0x77, 0xBD), Color::new(0x01, 0x57, 0x9B), ],
122 [
124 Color::new(0xE0, 0xF7, 0xFA), Color::new(0xB2, 0xEB, 0xF2), Color::new(0x80, 0xDE, 0xEA), Color::new(0x4D, 0xD0, 0xE1), Color::new(0x26, 0xC6, 0xDA), Color::new(0x00, 0xBC, 0xD4), Color::new(0x00, 0xAC, 0xC1), Color::new(0x00, 0x97, 0xA7), Color::new(0x00, 0x83, 0x8F), Color::new(0x00, 0x60, 0x64), ],
135 [
137 Color::new(0xE0, 0xF2, 0xF1), Color::new(0xB2, 0xDF, 0xDB), Color::new(0x80, 0xCB, 0xC4), Color::new(0x4D, 0xB6, 0xAC), Color::new(0x26, 0xA6, 0x9A), Color::new(0x00, 0x96, 0x88), Color::new(0x00, 0x89, 0x7B), Color::new(0x00, 0x79, 0x6B), Color::new(0x00, 0x69, 0x5C), Color::new(0x00, 0x4D, 0x40), ],
148 [
150 Color::new(0xE8, 0xF5, 0xE9), Color::new(0xC8, 0xE6, 0xC9), Color::new(0xA5, 0xD6, 0xA7), Color::new(0x81, 0xC7, 0x84), Color::new(0x66, 0xBB, 0x6A), Color::new(0x4C, 0xAF, 0x50), Color::new(0x43, 0xA0, 0x47), Color::new(0x38, 0x8E, 0x3C), Color::new(0x2E, 0x7D, 0x32), Color::new(0x1B, 0x5E, 0x20), ],
161 [
163 Color::new(0xF1, 0xF8, 0xE9), Color::new(0xDC, 0xED, 0xC8), Color::new(0xC5, 0xE1, 0xA5), Color::new(0xAE, 0xD5, 0x81), Color::new(0x9C, 0xCC, 0x65), Color::new(0x8B, 0xC3, 0x4A), Color::new(0x7C, 0xB3, 0x42), Color::new(0x68, 0x9F, 0x38), Color::new(0x55, 0x8B, 0x2F), Color::new(0x33, 0x69, 0x1E), ],
174 [
176 Color::new(0xF9, 0xFB, 0xE7), Color::new(0xF0, 0xF4, 0xC3), Color::new(0xE6, 0xEE, 0x9C), Color::new(0xDC, 0xE7, 0x75), Color::new(0xD4, 0xE1, 0x57), Color::new(0xCD, 0xDC, 0x39), Color::new(0xC0, 0xCA, 0x33), Color::new(0xAF, 0xB4, 0x2B), Color::new(0x9E, 0x9D, 0x24), Color::new(0x82, 0x77, 0x17), ],
187 [
189 Color::new(0xFF, 0xFD, 0xE7), Color::new(0xFF, 0xF9, 0xC4), Color::new(0xFF, 0xF5, 0x9D), Color::new(0xFF, 0xF1, 0x76), Color::new(0xFF, 0xEE, 0x58), Color::new(0xFF, 0xEB, 0x3B), Color::new(0xFD, 0xD8, 0x35), Color::new(0xFB, 0xC0, 0x2D), Color::new(0xF9, 0xA8, 0x25), Color::new(0xF5, 0x7F, 0x17), ],
200 [
202 Color::new(0xFF, 0xF8, 0xE1), Color::new(0xFF, 0xEC, 0xB3), Color::new(0xFF, 0xE0, 0x82), Color::new(0xFF, 0xD5, 0x4F), Color::new(0xFF, 0xCA, 0x28), Color::new(0xFF, 0xC1, 0x07), Color::new(0xFF, 0xB3, 0x00), Color::new(0xFF, 0xA0, 0x00), Color::new(0xFF, 0x8F, 0x00), Color::new(0xFF, 0x6F, 0x00), ],
213 [
215 Color::new(0xFF, 0xF3, 0xE0), Color::new(0xFF, 0xE0, 0xB2), Color::new(0xFF, 0xCC, 0x80), Color::new(0xFF, 0xB7, 0x4D), Color::new(0xFF, 0xA7, 0x26), Color::new(0xFF, 0x98, 0x00), Color::new(0xFB, 0x8C, 0x00), Color::new(0xF5, 0x7C, 0x00), Color::new(0xEF, 0x6C, 0x00), Color::new(0xE6, 0x51, 0x00), ],
226 [
228 Color::new(0xFB, 0xE9, 0xE7), Color::new(0xFF, 0xCC, 0xBC), Color::new(0xFF, 0xAB, 0x91), Color::new(0xFF, 0x8A, 0x65), Color::new(0xFF, 0x70, 0x43), Color::new(0xFF, 0x57, 0x22), Color::new(0xF4, 0x51, 0x1E), Color::new(0xE6, 0x4A, 0x19), Color::new(0xD8, 0x43, 0x15), Color::new(0xBF, 0x36, 0x0C), ],
239 [
241 Color::new(0xEF, 0xEB, 0xE9), Color::new(0xD7, 0xCC, 0xC8), Color::new(0xBC, 0xAA, 0xA4), Color::new(0xA1, 0x88, 0x7F), Color::new(0x8D, 0x6E, 0x63), Color::new(0x79, 0x55, 0x48), Color::new(0x6D, 0x4C, 0x41), Color::new(0x5D, 0x40, 0x37), Color::new(0x4E, 0x34, 0x2E), Color::new(0x3E, 0x27, 0x23), ],
252 [
254 Color::new(0xEC, 0xEF, 0xF1), Color::new(0xCF, 0xD8, 0xDC), Color::new(0xB0, 0xBE, 0xC5), Color::new(0x90, 0xA4, 0xAE), Color::new(0x78, 0x90, 0x9C), Color::new(0x60, 0x7D, 0x8B), Color::new(0x54, 0x6E, 0x7A), Color::new(0x45, 0x5A, 0x64), Color::new(0x37, 0x47, 0x4F), Color::new(0x26, 0x32, 0x38), ],
265 [
267 Color::new(0xFA, 0xFA, 0xFA), Color::new(0xF5, 0xF5, 0xF5), Color::new(0xEE, 0xEE, 0xEE), Color::new(0xE0, 0xE0, 0xE0), Color::new(0xBD, 0xBD, 0xBD), Color::new(0x9E, 0x9E, 0x9E), Color::new(0x75, 0x75, 0x75), Color::new(0x61, 0x61, 0x61), Color::new(0x42, 0x42, 0x42), Color::new(0x21, 0x21, 0x21), ],
278];
279
280impl Hue {
281 const fn get_color_index(self) -> usize {
283 self as usize
284 }
285}
286
287#[derive(Clone, Copy, Debug, PartialEq)]
288pub enum Tone {
289 Tone50 = 0,
290 Tone100 = 1,
291 Tone200 = 2,
292 Tone300 = 3,
293 Tone400 = 4,
294 Tone500 = 5,
295 Tone600 = 6,
296 Tone700 = 7,
297 Tone800 = 8,
298 Tone900 = 9,
299}
300
301impl Tone {
302 pub const MAIN: Tone = Tone::Tone500;
303
304 const fn get_tone_index(self) -> usize {
306 self as usize
307 }
308}
309
310pub const fn get(hue: Hue, tone: Tone) -> Color {
313 let color_index = hue.get_color_index();
314 let tone_index = tone.get_tone_index();
315 MATERIAL_COLORS[color_index][tone_index]
316}