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