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