1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct Rgb24 { pub red: u8, pub green: u8, pub blue: u8, } impl Rgb24 { pub const fn new(red: u8, green: u8, blue: u8) -> Self { Self { red, green, blue } } pub const fn into_u32(self) -> u32 { self.red as u32 + ((self.green as u32) << 8) + ((self.blue as u32) << 16) } pub const fn from_u32(u: u32) -> Self { Rgb24::new( (u & 0xff) as u8, ((u >> 8) & 0xff) as u8, ((u >> 16) & 16) as u8, ) } } pub mod colours { use Rgb24; pub const BLACK: Rgb24 = Rgb24 { red: 0, green: 0, blue: 0, }; pub const RED: Rgb24 = Rgb24 { red: 187, green: 0, blue: 0, }; pub const GREEN: Rgb24 = Rgb24 { red: 0, green: 187, blue: 0, }; pub const YELLOW: Rgb24 = Rgb24 { red: 187, green: 187, blue: 0, }; pub const BLUE: Rgb24 = Rgb24 { red: 0, green: 0, blue: 187, }; pub const MAGENTA: Rgb24 = Rgb24 { red: 187, green: 0, blue: 187, }; pub const CYAN: Rgb24 = Rgb24 { red: 0, green: 187, blue: 187, }; pub const GREY: Rgb24 = Rgb24 { red: 187, green: 187, blue: 187, }; pub const DARK_GREY: Rgb24 = Rgb24 { red: 85, green: 85, blue: 85, }; pub const BRIGHT_RED: Rgb24 = Rgb24 { red: 255, green: 85, blue: 85, }; pub const BRIGHT_GREEN: Rgb24 = Rgb24 { red: 0, green: 255, blue: 0, }; pub const BRIGHT_YELLOW: Rgb24 = Rgb24 { red: 255, green: 255, blue: 85, }; pub const BRIGHT_BLUE: Rgb24 = Rgb24 { red: 85, green: 85, blue: 255, }; pub const BRIGHT_MAGENTA: Rgb24 = Rgb24 { red: 255, green: 85, blue: 255, }; pub const BRIGHT_CYAN: Rgb24 = Rgb24 { red: 85, green: 255, blue: 255, }; pub const WHITE: Rgb24 = Rgb24 { red: 255, green: 255, blue: 255, }; }