use crate::render::palette::RgbColor;
use crate::render::theme::PanelStyle;
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
pub enum ParamState {
Default,
Modified,
Cli,
Display,
}
pub fn state_color(state: ParamState, st: &PanelStyle) -> RgbColor {
match state {
ParamState::Cli => st.cli_color,
ParamState::Modified => st.accent_modified,
ParamState::Default | ParamState::Display => st.state_default,
}
}
pub fn value_color(state: ParamState, st: &PanelStyle) -> RgbColor {
match state {
ParamState::Cli => st.cli_color,
ParamState::Modified => st.accent_modified,
ParamState::Default | ParamState::Display => st.text_primary,
}
}
#[cfg(test)]
mod state_tests {
use super::*;
use crate::render::theme::GRUVBOX_DARK;
#[test]
fn state_color_reads_only_tokens() {
assert_eq!(
state_color(ParamState::Cli, &GRUVBOX_DARK),
GRUVBOX_DARK.cli_color
);
assert_eq!(
state_color(ParamState::Modified, &GRUVBOX_DARK),
GRUVBOX_DARK.accent_modified
);
assert_eq!(
state_color(ParamState::Default, &GRUVBOX_DARK),
GRUVBOX_DARK.state_default
);
assert_eq!(
state_color(ParamState::Display, &GRUVBOX_DARK),
GRUVBOX_DARK.state_default
);
}
}