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
#[cfg(feature = "serialize")] use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))] pub struct Rgba32 { pub r: u8, pub g: u8, pub b: u8, pub a: u8, } impl Rgba32 { pub const fn new(r: u8, g: u8, b: u8, a: u8) -> Self { Self { r, g, b, a } } pub const fn new_rgb(r: u8, g: u8, b: u8) -> Self { Self { r, g, b, a: 255 } } pub const fn new_grey(x: u8) -> Self { Self { r: x, g: x, b: x, a: 255, } } pub fn to_f32_array_01(self) -> [f32; 4] { [ self.r as f32 / 255., self.g as f32 / 255., self.b as f32 / 255., self.a as f32 / 255., ] } } pub const fn rgba32(r: u8, g: u8, b: u8, a: u8) -> Rgba32 { Rgba32::new(r, g, b, a) } pub const fn rgba32_rgb(r: u8, g: u8, b: u8) -> Rgba32 { Rgba32::new_rgb(r, g, b) } pub const fn rgba32_grey(x: u8) -> Rgba32 { Rgba32::new_grey(x) }