#[derive(Debug, Clone, PartialEq, Eq)]
pub struct GlyphSet {
pub track_vertical: char,
pub track_horizontal: char,
pub arrow_vertical_start: char,
pub arrow_vertical_end: char,
pub arrow_horizontal_start: char,
pub arrow_horizontal_end: char,
pub thumb_vertical_lower: [char; 8],
pub thumb_vertical_upper: [char; 8],
pub thumb_horizontal_left: [char; 8],
pub thumb_horizontal_right: [char; 8],
}
impl GlyphSet {
pub const fn minimal() -> Self {
let mut glyphs = Self::symbols_for_legacy_computing();
glyphs.track_vertical = ' ';
glyphs.track_horizontal = ' ';
glyphs
}
pub const fn box_drawing() -> Self {
Self::symbols_for_legacy_computing()
}
pub const fn symbols_for_legacy_computing() -> Self {
let vertical_lower = ['▁', '▂', '▃', '▄', '▅', '▆', '▇', '█'];
let vertical_upper = ['▔', '🮂', '🮃', '▀', '🮄', '🮅', '🮆', '█'];
let horizontal_left = ['▏', '▎', '▍', '▌', '▋', '▊', '▉', '█'];
let horizontal_right = ['▕', '🮇', '🮈', '▐', '🮉', '🮊', '🮋', '█'];
Self {
track_vertical: '│',
track_horizontal: '─',
arrow_vertical_start: '▲',
arrow_vertical_end: '▼',
arrow_horizontal_start: '◀',
arrow_horizontal_end: '▶',
thumb_vertical_lower: vertical_lower,
thumb_vertical_upper: vertical_upper,
thumb_horizontal_left: horizontal_left,
thumb_horizontal_right: horizontal_right,
}
}
pub const fn unicode() -> Self {
let vertical_lower = ['▁', '▂', '▃', '▄', '▅', '▆', '▇', '█'];
let vertical_upper = ['▔', '▔', '▀', '▀', '▀', '▀', '█', '█'];
let horizontal_left = ['▏', '▎', '▍', '▌', '▋', '▊', '▉', '█'];
let horizontal_right = ['▕', '▕', '▐', '▐', '▐', '▐', '█', '█'];
Self {
track_vertical: '│',
track_horizontal: '─',
arrow_vertical_start: '▲',
arrow_vertical_end: '▼',
arrow_horizontal_start: '◀',
arrow_horizontal_end: '▶',
thumb_vertical_lower: vertical_lower,
thumb_vertical_upper: vertical_upper,
thumb_horizontal_left: horizontal_left,
thumb_horizontal_right: horizontal_right,
}
}
}
impl Default for GlyphSet {
fn default() -> Self {
Self::minimal()
}
}