use plotters::style::{RGBAColor, RGBColor};
#[allow(dead_code)]
pub mod default_pallette {
use plotters::style::{RGBAColor, RGBColor};
pub const DARK_C: RGBColor = RGBColor(184, 187, 38); pub const DARK_U: RGBColor = RGBColor(131, 165, 146); pub const DARK_G: RGBColor = RGBColor(251, 73, 52); pub const DARK_A: RGBColor = RGBColor(250, 189, 47); pub const DARK_X: RGBColor = RGBColor(211, 134, 155); pub const DARK_BG: RGBAColor = RGBAColor(40, 40, 40, 1.0); pub const DARK_FG: RGBColor = RGBColor(235, 219, 178); pub const BRIGHT_C: RGBColor = RGBColor(152, 151, 26);
pub const BRIGHT_U: RGBColor = RGBColor(69, 133, 136);
pub const BRIGHT_G: RGBColor = RGBColor(204, 36, 29);
pub const BRIGHT_A: RGBColor = RGBColor(215, 153, 33);
pub const BRIGHT_X: RGBColor = RGBColor(211, 134, 155);
pub const BRIGHT_BG: RGBAColor = RGBAColor(251, 241, 199, 1.0);
pub const BRIGHT_FG: RGBColor = RGBColor(60, 56, 54);
pub const HIGHLIGHTS: [RGBColor; 9] = [
RGBColor(133, 0, 0), RGBColor(18, 93, 152), RGBColor(55, 146, 55), RGBColor(255, 105, 180), RGBColor(245, 134, 52), RGBColor(146, 67, 238), RGBColor(240, 212, 58), RGBColor(158, 117, 64), RGBColor(64, 224, 208), ];
}
pub fn user_input_to_highlight_indices(hls: &str) -> Vec<Option<usize>> {
hls.bytes()
.map(|c| (c as usize).checked_sub(0x31))
.collect()
}
#[derive(Debug, Clone)]
pub struct ColorTheme {
pub c: RGBColor,
pub u: RGBColor,
pub g: RGBColor,
pub a: RGBColor,
pub x: RGBColor,
pub bg: RGBAColor,
pub fg: RGBColor,
pub highlights: [RGBColor; 9],
}
impl ColorTheme {
pub fn dark() -> Self {
Self {
a: default_pallette::DARK_A,
c: default_pallette::DARK_C,
g: default_pallette::DARK_G,
u: default_pallette::DARK_U,
x: default_pallette::DARK_X,
bg: default_pallette::DARK_BG,
fg: default_pallette::DARK_FG,
highlights: default_pallette::HIGHLIGHTS,
}
}
pub fn bright() -> Self {
Self {
a: default_pallette::BRIGHT_A,
c: default_pallette::BRIGHT_C,
g: default_pallette::BRIGHT_G,
u: default_pallette::BRIGHT_U,
x: default_pallette::BRIGHT_X,
bg: default_pallette::BRIGHT_BG,
fg: default_pallette::BRIGHT_FG,
highlights: default_pallette::HIGHLIGHTS,
}
}
pub fn black() -> Self {
Self {
bg: RGBAColor(0, 0, 0, 1.),
..Self::bright()
}
}
pub fn white() -> Self {
Self {
bg: RGBAColor(255, 255, 255, 1.),
..Self::bright()
}
}
}
impl Default for ColorTheme {
fn default() -> Self {
Self::dark()
}
}