forked from LowLevelDevs/FoundryOS
51 lines
1.7 KiB
Rust
51 lines
1.7 KiB
Rust
#[repr(u32)]
|
|
#[derive(Copy, Clone, PartialEq, Eq, Debug)]
|
|
pub enum Color {
|
|
ARGB(u8, u8, u8, u8),
|
|
RGB(u8, u8, u8),
|
|
HexARGB(u32),
|
|
Black = 0x000000FF,
|
|
Blue = 0x0000FFFF,
|
|
Green = 0x00FF00FF,
|
|
Cyan = 0x00FFFFFF,
|
|
Red = 0xFF0000FF,
|
|
Magenta = 0xFF00FFFF,
|
|
Yellow = 0xFFFF00FF,
|
|
White = 0xFFFFFFFF,
|
|
}
|
|
|
|
impl Into<u32> for Color {
|
|
fn into(self) -> u32 {
|
|
match self {
|
|
Color::ARGB(a, r, g, b) => (a as u32) << 24 | (r as u32) << 16 | (g as u32) << 8 | (b as u32),
|
|
Color::RGB(r, g, b) => (0u32) << 24 | (r as u32) << 16 | (g as u32) << 8 | (b as u32),
|
|
Color::HexARGB(hex) => hex,
|
|
Color::Black => 0xFF000000,
|
|
Color::Blue => 0xFF0000FF,
|
|
Color::Green => 0xFF00FF00,
|
|
Color::Cyan => 0xFF00FFFF,
|
|
Color::Red => 0xFFFF0000,
|
|
Color::Magenta => 0xFFFF00FF,
|
|
Color::Yellow => 0xFFFFFF00,
|
|
Color::White => 0xFFFFFFFF,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl core::fmt::Display for Color {
|
|
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
|
|
match self {
|
|
Color::ARGB(r, g, b, a) => write!(f, "RGBA(#{:x}{:x}{:x}{:x})", r, g, b, a),
|
|
Color::RGB(r, g, b) => write!(f, "RGB(#{:x}{:x}{:x})", r, g, b),
|
|
Color::HexARGB(hex) => write!(f, "Hex(#{:x})", hex),
|
|
Color::Black => write!(f, "Black"),
|
|
Color::Blue => write!(f, "Blue"),
|
|
Color::Green => write!(f, "Green"),
|
|
Color::Cyan => write!(f, "Cyan"),
|
|
Color::Red => write!(f, "Red"),
|
|
Color::Magenta => write!(f, "Magenta"),
|
|
Color::Yellow => write!(f, "Yellow"),
|
|
Color::White => write!(f, "White"),
|
|
}
|
|
}
|
|
} |