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
#[cfg(feature = "serde")] use serde::{Serialize, Deserialize}; #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct Color { pub r: u8, pub g: u8, pub b: u8, pub a: u8, } impl Color { pub const WHITE: Color = Color { r: 255, g: 255, b: 255, a: 255 }; pub const BLACK: Color = Color { r: 0, g: 0, b: 0, a: 255 }; pub fn from_rgba_u8(rgba: [u8; 4]) -> Color { Color { r: rgba[0], g: rgba[1], b: rgba[2], a: rgba[3] } } pub fn to_rgb_f32(self) -> [f32; 3] { [ self.r as f32 / 255.0, self.g as f32 / 255.0, self.b as f32 / 255.0, ] } pub fn to_rgba_f32(self) -> [f32; 4] { [ self.r as f32 / 255.0, self.g as f32 / 255.0, self.b as f32 / 255.0, self.a as f32 / 255.0, ] } }