#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)]
pub struct RGB {
pub r: u8,
pub g: u8,
pub b: u8
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)]
pub struct ARGB {
pub a: u8,
pub r: u8,
pub g: u8,
pub b: u8
}
impl RGB {
#[allow(dead_code)]
pub fn is_black(&self) -> bool {
(self.r == 0) && (self.g == 0) && (self.b == 0)
}
#[allow(dead_code)]
pub fn lum(&self) -> u8 {
((((self.r as u32) + (self.g as u32) + (self.b as u32)) * 21845) >> 0x10) as u8
}
}
impl From<RGB> for ARGB {
fn from(color: RGB) -> Self {
Self{a: 0xFF, r: color.r, g: color.g, b: color.b}
}
}
impl From<ARGB> for RGB {
fn from(color: ARGB) -> Self {
Self{r: color.r, g: color.g, b: color.b}
}
}