use termion::color;
pub struct PaletteElement {
pub fg: color::Fg<&'static dyn color::Color>,
pub bg: color::Bg<&'static dyn color::Color>,
}
impl PaletteElement {
pub const fn new(bg: &'static dyn color::Color, fg: &'static dyn color::Color) -> Self {
Self {
fg: color::Fg(fg),
bg: color::Bg(bg),
}
}
}
pub struct Palette {
pub closed: PaletteElement,
pub open_bg: color::Bg<&'static dyn color::Color>,
pub neighbour_count_to_fg_color: [color::Fg<&'static dyn color::Color>; 9],
pub mine: PaletteElement,
pub flag: PaletteElement,
pub cursor_fg: color::Fg<&'static dyn color::Color>,
pub correct_flag: PaletteElement,
pub wrong_flag: PaletteElement,
}
pub const OG_PALETTE: Palette = Palette {
closed: PaletteElement::new(&color::Rgb(30, 30, 30), &color::Rgb(30, 30, 30)),
open_bg: color::Bg(&color::Rgb(138, 138, 138)),
neighbour_count_to_fg_color: [
color::Fg(&color::Reset), color::Fg(&color::Rgb(0, 0, 255)), color::Fg(&color::Rgb(0, 130, 0)), color::Fg(&color::Rgb(200, 0, 0)), color::Fg(&color::Rgb(0, 0, 131)), color::Fg(&color::Rgb(132, 0, 1)), color::Fg(&color::Rgb(0, 130, 132)), color::Fg(&color::Rgb(132, 0, 132)), color::Fg(&color::Rgb(117, 117, 117)), ],
mine: PaletteElement::new(&color::Red, &color::White),
flag: PaletteElement::new(&color::Rgb(40, 100, 40), &color::White),
cursor_fg: color::Fg(&color::White),
correct_flag: PaletteElement::new(&color::Green, &color::White),
wrong_flag: PaletteElement::new(&color::LightRed, &color::White),
};
pub const MNSWPR_PALETTE: Palette = Palette {
closed: PaletteElement::new(&color::Rgb(30, 30, 30), &color::White),
open_bg: color::Bg(&color::Rgb(30, 30, 30)),
neighbour_count_to_fg_color: [
color::Fg(&color::Reset), color::Fg(&color::Rgb(70, 100, 255)), color::Fg(&color::Rgb(0, 130, 0)), color::Fg(&color::Rgb(200, 0, 0)), color::Fg(&color::Rgb(200, 30, 200)), color::Fg(&color::Rgb(132, 0, 1)), color::Fg(&color::Rgb(0, 130, 132)), color::Fg(&color::Rgb(132, 0, 132)), color::Fg(&color::Rgb(117, 117, 117)), ],
mine: PaletteElement::new(&color::Red, &color::White),
flag: PaletteElement::new(&color::Rgb(40, 100, 40), &color::White),
cursor_fg: color::Fg(&color::White),
correct_flag: PaletteElement::new(&color::Green, &color::White),
wrong_flag: PaletteElement::new(&color::LightRed, &color::White),
};
pub const BG_RESET: color::Bg<color::Reset> = color::Bg(color::Reset);
pub const FG_RESET: color::Fg<color::Reset> = color::Fg(color::Reset);