2021-04-20 00:40:07 +01:00
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
|
|
|
pub struct Colour {
|
|
|
|
pub r: u8,
|
|
|
|
pub g: u8,
|
|
|
|
pub b: u8,
|
2022-05-22 19:23:29 +01:00
|
|
|
pub a: u8,
|
2021-04-20 00:40:07 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
impl Colour {
|
2022-05-22 19:23:29 +01:00
|
|
|
pub fn from_rgb(r: u8, g: u8, b: u8, a: u8) -> Self {
|
|
|
|
Colour { r, g, b, a }
|
2021-04-20 00:40:07 +01:00
|
|
|
}
|
2021-04-20 20:41:04 +01:00
|
|
|
|
2021-04-20 22:56:47 +01:00
|
|
|
pub fn to_rgb15(self) -> u16 {
|
2021-04-20 20:41:04 +01:00
|
|
|
let (r, g, b) = (self.r as u16, self.g as u16, self.b as u16);
|
|
|
|
((r >> 3) & 31) | (((g >> 3) & 31) << 5) | (((b >> 3) & 31) << 10)
|
|
|
|
}
|
2022-05-22 19:23:29 +01:00
|
|
|
|
|
|
|
pub fn is_transparent(self) -> bool {
|
|
|
|
self.a != 255
|
|
|
|
}
|
2021-04-20 00:40:07 +01:00
|
|
|
}
|