1 use super::color::PaletteColor;
2 
3 /// Represents a color palette
4 pub trait Palette {
5     /// Array of colors
6     const COLORS: &'static [(u8, u8, u8)];
7     /// Returns a color from the palette
pick(idx: usize) -> PaletteColor<Self> where Self: Sized,8     fn pick(idx: usize) -> PaletteColor<Self>
9     where
10         Self: Sized,
11     {
12         PaletteColor::<Self>::pick(idx)
13     }
14 }
15 
16 /// The palette of 99% accessibility
17 pub struct Palette99;
18 /// The palette of 99.99% accessibility
19 pub struct Palette9999;
20 /// The palette of 100% accessibility
21 pub struct Palette100;
22 
23 impl Palette for Palette99 {
24     const COLORS: &'static [(u8, u8, u8)] = &[
25         (230, 25, 75),
26         (60, 180, 75),
27         (255, 225, 25),
28         (0, 130, 200),
29         (245, 130, 48),
30         (145, 30, 180),
31         (70, 240, 240),
32         (240, 50, 230),
33         (210, 245, 60),
34         (250, 190, 190),
35         (0, 128, 128),
36         (230, 190, 255),
37         (170, 110, 40),
38         (255, 250, 200),
39         (128, 0, 0),
40         (170, 255, 195),
41         (128, 128, 0),
42         (255, 215, 180),
43         (0, 0, 128),
44         (128, 128, 128),
45         (0, 0, 0),
46     ];
47 }
48 
49 impl Palette for Palette9999 {
50     const COLORS: &'static [(u8, u8, u8)] = &[
51         (255, 225, 25),
52         (0, 130, 200),
53         (245, 130, 48),
54         (250, 190, 190),
55         (230, 190, 255),
56         (128, 0, 0),
57         (0, 0, 128),
58         (128, 128, 128),
59         (0, 0, 0),
60     ];
61 }
62 
63 impl Palette for Palette100 {
64     const COLORS: &'static [(u8, u8, u8)] =
65         &[(255, 225, 25), (0, 130, 200), (128, 128, 128), (0, 0, 0)];
66 }
67