| 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 |
| 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 | |