1use super::color::RGBAColor;
2
3#[derive(Clone, Debug)]
5pub enum PaletteName {
6 Set1,
8 Set2,
9 Set3,
10 Dark2,
11 Paired,
12 Pastel1,
13 Pastel2,
14 Accent,
15 Blues,
17 Greens,
18 Reds,
19 Oranges,
20 Purples,
21 Greys,
22 YlOrRd,
23 YlGnBu,
24 BuGn,
25 BuPu,
26 GnBu,
27 OrRd,
28 PuRd,
29 RdPu,
30 YlGn,
31 YlOrBr,
32 RdBu,
34 Spectral,
35 PiYG,
36 PRGn,
37 BrBG,
38 PuOr,
39 RdGy,
40 RdYlBu,
41 RdYlGn,
42 Viridis,
44 Magma,
45 Plasma,
46 Inferno,
47}
48
49pub fn palette(name: &PaletteName) -> &'static [RGBAColor] {
51 match name {
52 PaletteName::Set1 => &SET1,
53 PaletteName::Set2 => &SET2,
54 PaletteName::Set3 => &SET3,
55 PaletteName::Dark2 => &DARK2,
56 PaletteName::Paired => &PAIRED,
57 PaletteName::Pastel1 => &PASTEL1,
58 PaletteName::Pastel2 => &PASTEL2,
59 PaletteName::Accent => &ACCENT,
60 PaletteName::Blues => &BLUES,
61 PaletteName::Greens => &GREENS,
62 PaletteName::Reds => &REDS,
63 PaletteName::Oranges => &ORANGES,
64 PaletteName::Purples => &PURPLES,
65 PaletteName::Greys => &GREYS,
66 PaletteName::YlOrRd => &YLORRD,
67 PaletteName::YlGnBu => &YLGNBU,
68 PaletteName::BuGn => &BUGN,
69 PaletteName::BuPu => &BUPU,
70 PaletteName::GnBu => &GNBU,
71 PaletteName::OrRd => &ORRD,
72 PaletteName::PuRd => &PURD,
73 PaletteName::RdPu => &RDPU,
74 PaletteName::YlGn => &YLGN,
75 PaletteName::YlOrBr => &YLORBR,
76 PaletteName::RdBu => &RDBU,
77 PaletteName::Spectral => &SPECTRAL,
78 PaletteName::PiYG => &PIYG,
79 PaletteName::PRGn => &PRGN,
80 PaletteName::BrBG => &BRBG,
81 PaletteName::PuOr => &PUOR,
82 PaletteName::RdGy => &RDGY,
83 PaletteName::RdYlBu => &RDYLBU,
84 PaletteName::RdYlGn => &RDYLGN,
85 PaletteName::Viridis => &VIRIDIS,
86 PaletteName::Magma => &MAGMA,
87 PaletteName::Plasma => &PLASMA,
88 PaletteName::Inferno => &INFERNO,
89 }
90}
91
92const fn c(r: u8, g: u8, b: u8) -> RGBAColor {
93 RGBAColor { r, g, b, a: 1.0 }
94}
95
96static SET1: [RGBAColor; 9] = [
99 c(228, 26, 28),
100 c(55, 126, 184),
101 c(77, 175, 74),
102 c(152, 78, 163),
103 c(255, 127, 0),
104 c(255, 255, 51),
105 c(166, 86, 40),
106 c(247, 129, 191),
107 c(153, 153, 153),
108];
109
110static SET2: [RGBAColor; 8] = [
111 c(102, 194, 165),
112 c(252, 141, 98),
113 c(141, 160, 203),
114 c(231, 138, 195),
115 c(166, 216, 84),
116 c(255, 217, 47),
117 c(229, 196, 148),
118 c(179, 179, 179),
119];
120
121static SET3: [RGBAColor; 12] = [
122 c(141, 211, 199),
123 c(255, 255, 179),
124 c(190, 186, 218),
125 c(251, 128, 114),
126 c(128, 177, 211),
127 c(253, 180, 98),
128 c(179, 222, 105),
129 c(252, 205, 229),
130 c(217, 217, 217),
131 c(188, 128, 189),
132 c(204, 235, 197),
133 c(255, 237, 111),
134];
135
136static DARK2: [RGBAColor; 8] = [
137 c(27, 158, 119),
138 c(217, 95, 2),
139 c(117, 112, 179),
140 c(231, 41, 138),
141 c(102, 166, 30),
142 c(230, 171, 2),
143 c(166, 118, 29),
144 c(102, 102, 102),
145];
146
147static PAIRED: [RGBAColor; 12] = [
148 c(166, 206, 227),
149 c(31, 120, 180),
150 c(178, 223, 138),
151 c(51, 160, 44),
152 c(251, 154, 153),
153 c(227, 26, 28),
154 c(253, 191, 111),
155 c(255, 127, 0),
156 c(202, 178, 214),
157 c(106, 61, 154),
158 c(255, 255, 153),
159 c(177, 89, 40),
160];
161
162static PASTEL1: [RGBAColor; 9] = [
163 c(251, 180, 174),
164 c(179, 205, 227),
165 c(204, 235, 197),
166 c(222, 203, 228),
167 c(254, 217, 166),
168 c(255, 255, 204),
169 c(229, 216, 189),
170 c(253, 218, 236),
171 c(242, 242, 242),
172];
173
174static PASTEL2: [RGBAColor; 8] = [
175 c(179, 226, 205),
176 c(253, 205, 172),
177 c(203, 213, 232),
178 c(244, 202, 228),
179 c(230, 245, 201),
180 c(255, 242, 174),
181 c(241, 226, 204),
182 c(204, 204, 204),
183];
184
185static ACCENT: [RGBAColor; 8] = [
186 c(127, 201, 127),
187 c(190, 174, 212),
188 c(253, 192, 134),
189 c(255, 255, 153),
190 c(56, 108, 176),
191 c(240, 2, 127),
192 c(191, 91, 23),
193 c(102, 102, 102),
194];
195
196static BLUES: [RGBAColor; 9] = [
199 c(247, 251, 255),
200 c(222, 235, 247),
201 c(198, 219, 239),
202 c(158, 202, 225),
203 c(107, 174, 214),
204 c(66, 146, 198),
205 c(33, 113, 181),
206 c(8, 81, 156),
207 c(8, 48, 107),
208];
209
210static GREENS: [RGBAColor; 9] = [
211 c(247, 252, 245),
212 c(229, 245, 224),
213 c(199, 233, 192),
214 c(161, 217, 155),
215 c(116, 196, 118),
216 c(65, 171, 93),
217 c(35, 139, 69),
218 c(0, 109, 44),
219 c(0, 68, 27),
220];
221
222static REDS: [RGBAColor; 9] = [
223 c(255, 245, 240),
224 c(254, 224, 210),
225 c(252, 187, 161),
226 c(252, 146, 114),
227 c(251, 106, 74),
228 c(239, 59, 44),
229 c(203, 24, 29),
230 c(165, 15, 21),
231 c(103, 0, 13),
232];
233
234static ORANGES: [RGBAColor; 9] = [
235 c(255, 245, 235),
236 c(254, 230, 206),
237 c(253, 208, 162),
238 c(253, 174, 107),
239 c(253, 141, 60),
240 c(241, 105, 19),
241 c(217, 72, 1),
242 c(166, 54, 3),
243 c(127, 39, 4),
244];
245
246static PURPLES: [RGBAColor; 9] = [
247 c(252, 251, 253),
248 c(239, 237, 245),
249 c(218, 218, 235),
250 c(188, 189, 220),
251 c(158, 154, 200),
252 c(128, 125, 186),
253 c(106, 81, 163),
254 c(84, 39, 143),
255 c(63, 0, 125),
256];
257
258static GREYS: [RGBAColor; 9] = [
259 c(255, 255, 255),
260 c(240, 240, 240),
261 c(217, 217, 217),
262 c(189, 189, 189),
263 c(150, 150, 150),
264 c(115, 115, 115),
265 c(82, 82, 82),
266 c(37, 37, 37),
267 c(0, 0, 0),
268];
269
270static YLORRD: [RGBAColor; 9] = [
271 c(255, 255, 204),
272 c(255, 237, 160),
273 c(254, 217, 118),
274 c(254, 178, 76),
275 c(253, 141, 60),
276 c(252, 78, 42),
277 c(227, 26, 28),
278 c(189, 0, 38),
279 c(128, 0, 38),
280];
281
282static YLGNBU: [RGBAColor; 9] = [
283 c(255, 255, 217),
284 c(237, 248, 177),
285 c(199, 233, 180),
286 c(127, 205, 187),
287 c(65, 182, 196),
288 c(29, 145, 192),
289 c(34, 94, 168),
290 c(37, 52, 148),
291 c(8, 29, 88),
292];
293
294static BUGN: [RGBAColor; 9] = [
295 c(247, 252, 253),
296 c(229, 245, 249),
297 c(204, 236, 230),
298 c(153, 216, 201),
299 c(102, 194, 164),
300 c(65, 174, 118),
301 c(35, 139, 69),
302 c(0, 109, 44),
303 c(0, 68, 27),
304];
305
306static BUPU: [RGBAColor; 9] = [
307 c(247, 252, 253),
308 c(224, 236, 244),
309 c(191, 211, 230),
310 c(158, 188, 218),
311 c(140, 150, 198),
312 c(140, 107, 177),
313 c(136, 65, 157),
314 c(129, 15, 124),
315 c(77, 0, 75),
316];
317
318static GNBU: [RGBAColor; 9] = [
319 c(247, 252, 240),
320 c(224, 243, 219),
321 c(204, 235, 197),
322 c(168, 221, 181),
323 c(123, 204, 196),
324 c(78, 179, 211),
325 c(43, 140, 190),
326 c(8, 104, 172),
327 c(8, 64, 129),
328];
329
330static ORRD: [RGBAColor; 9] = [
331 c(255, 247, 236),
332 c(254, 232, 200),
333 c(253, 212, 158),
334 c(253, 187, 132),
335 c(252, 141, 89),
336 c(239, 101, 72),
337 c(215, 48, 31),
338 c(179, 0, 0),
339 c(127, 0, 0),
340];
341
342static PURD: [RGBAColor; 9] = [
343 c(247, 244, 249),
344 c(231, 225, 239),
345 c(212, 185, 218),
346 c(201, 148, 199),
347 c(223, 101, 176),
348 c(231, 41, 138),
349 c(206, 18, 86),
350 c(152, 0, 67),
351 c(103, 0, 31),
352];
353
354static RDPU: [RGBAColor; 9] = [
355 c(255, 247, 243),
356 c(253, 224, 221),
357 c(252, 197, 192),
358 c(250, 159, 181),
359 c(247, 104, 161),
360 c(221, 52, 151),
361 c(174, 1, 126),
362 c(122, 1, 119),
363 c(73, 0, 106),
364];
365
366static YLGN: [RGBAColor; 9] = [
367 c(255, 255, 229),
368 c(247, 252, 185),
369 c(217, 240, 163),
370 c(173, 221, 142),
371 c(120, 198, 121),
372 c(65, 171, 93),
373 c(35, 132, 67),
374 c(0, 104, 55),
375 c(0, 69, 41),
376];
377
378static YLORBR: [RGBAColor; 9] = [
379 c(255, 255, 229),
380 c(255, 247, 188),
381 c(254, 227, 145),
382 c(254, 196, 79),
383 c(254, 153, 41),
384 c(236, 112, 20),
385 c(204, 76, 2),
386 c(153, 52, 4),
387 c(102, 37, 6),
388];
389
390static RDBU: [RGBAColor; 11] = [
393 c(103, 0, 31),
394 c(178, 24, 43),
395 c(214, 96, 77),
396 c(244, 165, 130),
397 c(253, 219, 199),
398 c(247, 247, 247),
399 c(209, 229, 240),
400 c(146, 197, 222),
401 c(67, 147, 195),
402 c(33, 102, 172),
403 c(5, 48, 97),
404];
405
406static SPECTRAL: [RGBAColor; 11] = [
407 c(158, 1, 66),
408 c(213, 62, 79),
409 c(244, 109, 67),
410 c(253, 174, 97),
411 c(254, 224, 139),
412 c(255, 255, 191),
413 c(230, 245, 152),
414 c(171, 221, 164),
415 c(102, 194, 165),
416 c(50, 136, 189),
417 c(94, 79, 162),
418];
419
420static PIYG: [RGBAColor; 11] = [
421 c(142, 1, 82),
422 c(197, 27, 125),
423 c(222, 119, 174),
424 c(241, 182, 218),
425 c(253, 224, 239),
426 c(247, 247, 247),
427 c(230, 245, 208),
428 c(184, 225, 134),
429 c(127, 188, 65),
430 c(77, 146, 33),
431 c(39, 100, 25),
432];
433
434static PRGN: [RGBAColor; 11] = [
435 c(64, 0, 75),
436 c(118, 42, 131),
437 c(153, 112, 171),
438 c(194, 165, 207),
439 c(231, 212, 232),
440 c(247, 247, 247),
441 c(217, 240, 211),
442 c(166, 219, 160),
443 c(90, 174, 97),
444 c(27, 120, 55),
445 c(0, 68, 27),
446];
447
448static BRBG: [RGBAColor; 11] = [
449 c(84, 48, 5),
450 c(140, 81, 10),
451 c(191, 129, 45),
452 c(223, 194, 125),
453 c(246, 232, 195),
454 c(245, 245, 245),
455 c(199, 234, 229),
456 c(128, 205, 193),
457 c(53, 151, 143),
458 c(1, 102, 94),
459 c(0, 60, 48),
460];
461
462static PUOR: [RGBAColor; 11] = [
463 c(127, 59, 8),
464 c(179, 88, 6),
465 c(224, 130, 20),
466 c(253, 184, 99),
467 c(254, 224, 182),
468 c(247, 247, 247),
469 c(216, 218, 235),
470 c(178, 171, 210),
471 c(128, 115, 172),
472 c(84, 39, 136),
473 c(45, 0, 75),
474];
475
476static RDGY: [RGBAColor; 11] = [
477 c(103, 0, 31),
478 c(178, 24, 43),
479 c(214, 96, 77),
480 c(244, 165, 130),
481 c(253, 219, 199),
482 c(255, 255, 255),
483 c(224, 224, 224),
484 c(186, 186, 186),
485 c(135, 135, 135),
486 c(77, 77, 77),
487 c(26, 26, 26),
488];
489
490static RDYLBU: [RGBAColor; 11] = [
491 c(165, 0, 38),
492 c(215, 48, 39),
493 c(244, 109, 67),
494 c(253, 174, 97),
495 c(254, 224, 144),
496 c(255, 255, 191),
497 c(224, 243, 248),
498 c(171, 217, 233),
499 c(116, 173, 209),
500 c(69, 117, 180),
501 c(49, 54, 149),
502];
503
504static RDYLGN: [RGBAColor; 11] = [
505 c(165, 0, 38),
506 c(215, 48, 39),
507 c(244, 109, 67),
508 c(253, 174, 97),
509 c(254, 224, 139),
510 c(255, 255, 191),
511 c(217, 239, 139),
512 c(166, 217, 106),
513 c(102, 189, 99),
514 c(26, 152, 80),
515 c(0, 104, 55),
516];
517
518static VIRIDIS: [RGBAColor; 16] = [
521 c(68, 1, 84),
522 c(72, 26, 108),
523 c(71, 47, 126),
524 c(65, 68, 135),
525 c(57, 86, 140),
526 c(47, 104, 142),
527 c(38, 121, 142),
528 c(31, 138, 141),
529 c(30, 155, 138),
530 c(42, 172, 130),
531 c(70, 188, 115),
532 c(109, 202, 93),
533 c(155, 213, 67),
534 c(200, 222, 39),
535 c(240, 229, 30),
536 c(253, 231, 37),
537];
538
539static MAGMA: [RGBAColor; 16] = [
540 c(0, 0, 4),
541 c(16, 12, 50),
542 c(41, 17, 90),
543 c(72, 12, 110),
544 c(101, 19, 110),
545 c(131, 29, 103),
546 c(160, 42, 93),
547 c(187, 55, 84),
548 c(213, 72, 72),
549 c(232, 99, 62),
550 c(247, 131, 57),
551 c(254, 167, 69),
552 c(254, 203, 99),
553 c(252, 235, 141),
554 c(252, 254, 188),
555 c(252, 253, 191),
556];
557
558static PLASMA: [RGBAColor; 16] = [
559 c(13, 8, 135),
560 c(53, 5, 157),
561 c(82, 1, 163),
562 c(109, 1, 159),
563 c(133, 7, 147),
564 c(156, 23, 127),
565 c(175, 42, 106),
566 c(192, 61, 85),
567 c(206, 82, 66),
568 c(218, 105, 46),
569 c(228, 130, 24),
570 c(236, 157, 6),
571 c(240, 185, 11),
572 c(239, 213, 38),
573 c(232, 240, 73),
574 c(240, 249, 33),
575];
576
577static INFERNO: [RGBAColor; 16] = [
578 c(0, 0, 4),
579 c(14, 11, 49),
580 c(39, 15, 90),
581 c(67, 10, 107),
582 c(95, 13, 106),
583 c(122, 21, 97),
584 c(149, 33, 81),
585 c(174, 49, 60),
586 c(196, 69, 38),
587 c(215, 95, 15),
588 c(231, 124, 3),
589 c(243, 155, 7),
590 c(250, 189, 28),
591 c(252, 222, 67),
592 c(247, 252, 118),
593 c(252, 255, 164),
594];