1#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
24#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
25#[non_exhaustive]
26pub enum Color {
27 #[default]
29 Default,
30 Ansi(u8),
32 Rgb(u8, u8, u8),
34}
35
36#[allow(missing_docs)]
37impl Color {
38 pub const BLACK: Color = Color::Ansi(0);
39 pub const RED: Color = Color::Ansi(1);
40 pub const GREEN: Color = Color::Ansi(2);
41 pub const YELLOW: Color = Color::Ansi(3);
42 pub const BLUE: Color = Color::Ansi(4);
43 pub const MAGENTA: Color = Color::Ansi(5);
44 pub const CYAN: Color = Color::Ansi(6);
45 pub const WHITE: Color = Color::Ansi(7);
46 pub const LIGHT_BLACK: Color = Color::Ansi(8);
47 pub const LIGHT_RED: Color = Color::Ansi(9);
48 pub const LIGHT_GREEN: Color = Color::Ansi(10);
49 pub const LIGHT_YELLOW: Color = Color::Ansi(11);
50 pub const LIGHT_BLUE: Color = Color::Ansi(12);
51 pub const LIGHT_MAGENTA: Color = Color::Ansi(13);
52 pub const LIGHT_CYAN: Color = Color::Ansi(14);
53 pub const LIGHT_WHITE: Color = Color::Ansi(15);
54}
55
56impl From<u8> for Color {
57 fn from(value: u8) -> Self {
58 Color::Ansi(value)
59 }
60}
61
62impl From<(u8, u8, u8)> for Color {
63 fn from((r, g, b): (u8, u8, u8)) -> Self {
64 Color::Rgb(r, g, b)
65 }
66}