thedes_tui_core/
color.rs

1pub use basic::{
2    BadBassicColorCode,
3    BasicColor,
4    BasicColorParts,
5    BasicColorVariant,
6};
7pub use brightness::{
8    ApproxBrightness,
9    Brightness,
10    BrightnessError,
11    BrightnessLevel,
12    MutableApproxBrightness,
13};
14
15mod brightness;
16mod basic;
17
18pub(crate) mod native_ext;
19
20pub mod mutation;
21
22#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
23pub struct ColorPair {
24    pub background: Color,
25    pub foreground: Color,
26}
27
28impl Default for ColorPair {
29    fn default() -> Self {
30        Self {
31            background: BasicColor::Black.into(),
32            foreground: BasicColor::White.into(),
33        }
34    }
35}
36
37#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
38pub enum Color {
39    Basic(BasicColor),
40}
41
42impl From<BasicColor> for Color {
43    fn from(color: BasicColor) -> Self {
44        Color::Basic(color)
45    }
46}
47
48impl Default for Color {
49    fn default() -> Self {
50        Self::from(BasicColor::default())
51    }
52}
53
54impl ApproxBrightness for Color {
55    fn approx_brightness(&self) -> Result<Brightness, BrightnessError> {
56        match self {
57            Self::Basic(color) => color.approx_brightness(),
58        }
59    }
60}
61
62impl MutableApproxBrightness for Color {
63    fn set_approx_brightness(
64        &mut self,
65        brightness: Brightness,
66    ) -> Result<(), BrightnessError> {
67        match self {
68            Self::Basic(color) => color.set_approx_brightness(brightness),
69        }
70    }
71}