rhd/src/colormap.rs

91 lines
2.7 KiB
Rust
Raw Normal View History

2022-12-12 16:54:20 +01:00
extern crate termion;
use termion::color;
2023-01-06 18:44:34 +01:00
const COLOR_RESET: color::Fg<color::Reset> = color::Fg(color::Reset);
2022-12-12 17:39:41 +01:00
const COLOR_SYMBOLS: color::Fg<color::LightGreen> = color::Fg(color::LightGreen);
const COLOR_TEXT: color::Fg<color::Cyan> = color::Fg(color::Cyan);
const COLOR_NUMBERS: color::Fg<color::LightBlue> = color::Fg(color::LightBlue);
2023-01-06 18:44:34 +01:00
const COLOR_OTHER: color::Fg<color::Yellow> = color::Fg(color::Yellow);
2022-12-12 17:39:41 +01:00
2022-12-12 16:54:20 +01:00
pub fn map_u8_to_color(data: u8) -> String {
if super::isatty() {
match data {
2023-01-06 18:44:34 +01:00
32..=47 => format!("{}{:02x}{}", COLOR_SYMBOLS, data, COLOR_RESET),
48..=57 => format!("{}{:02x}{}", COLOR_NUMBERS, data, COLOR_RESET),
58..=64 => format!("{}{:02x}{}", COLOR_SYMBOLS, data, COLOR_RESET),
65..=90 => format!("{}{:02x}{}", COLOR_TEXT, data, COLOR_RESET),
91..=96 => format!("{}{:02x}{}", COLOR_SYMBOLS, data, COLOR_RESET),
97..=122 => format!("{}{:02x}{}", COLOR_TEXT, data, COLOR_RESET),
123..=126 => format!("{}{:02x}{}", COLOR_SYMBOLS, data, COLOR_RESET),
_ => format!(
"{}{:02x}{}",
2023-01-06 18:44:34 +01:00
COLOR_OTHER,
data,
2023-01-06 18:44:34 +01:00
COLOR_RESET
),
}
} else {
format!("{:02x}", data)
2022-12-12 16:54:20 +01:00
}
}
pub fn map_char_to_color(data: u8) -> String {
if super::isatty() {
match data {
32..=47 => format!(
"{}{}{}",
COLOR_SYMBOLS,
(data as char),
2023-01-06 18:44:34 +01:00
COLOR_RESET
),
48..=57 => format!(
"{}{}{}",
COLOR_NUMBERS,
(data as char),
2023-01-06 18:44:34 +01:00
COLOR_RESET
),
58..=64 => format!(
"{}{}{}",
COLOR_SYMBOLS,
(data as char),
2023-01-06 18:44:34 +01:00
COLOR_RESET
),
65..=90 => format!(
"{}{}{}",
COLOR_TEXT,
(data as char),
2023-01-06 18:44:34 +01:00
COLOR_RESET
),
91..=96 => format!(
"{}{}{}",
COLOR_SYMBOLS,
(data as char),
2023-01-06 18:44:34 +01:00
COLOR_RESET
),
97..=122 => format!(
"{}{}{}",
COLOR_TEXT,
(data as char),
2023-01-06 18:44:34 +01:00
COLOR_RESET
),
123..=126 => format!(
"{}{}{}",
COLOR_SYMBOLS,
(data as char),
2023-01-06 18:44:34 +01:00
COLOR_RESET
),
_ => format!(
"{}.{}",
2023-01-06 18:44:34 +01:00
COLOR_SYMBOLS,
COLOR_RESET
),
}
} else {
match data {
32..=126 => format!("{}", (data as char)),
_ => ".".to_string(),
}
2022-12-12 16:54:20 +01:00
}
}