mirror of
https://github.com/helix-editor/helix.git
synced 2024-12-18 22:11:55 +04:00
35606a3daa
We only rely on some of the rendering primitives and implement our Cursive-style compositor on top.
234 lines
6.8 KiB
Rust
234 lines
6.8 KiB
Rust
pub mod block {
|
|
pub const FULL: &str = "█";
|
|
pub const SEVEN_EIGHTHS: &str = "▉";
|
|
pub const THREE_QUARTERS: &str = "▊";
|
|
pub const FIVE_EIGHTHS: &str = "▋";
|
|
pub const HALF: &str = "▌";
|
|
pub const THREE_EIGHTHS: &str = "▍";
|
|
pub const ONE_QUARTER: &str = "▎";
|
|
pub const ONE_EIGHTH: &str = "▏";
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub struct Set {
|
|
pub full: &'static str,
|
|
pub seven_eighths: &'static str,
|
|
pub three_quarters: &'static str,
|
|
pub five_eighths: &'static str,
|
|
pub half: &'static str,
|
|
pub three_eighths: &'static str,
|
|
pub one_quarter: &'static str,
|
|
pub one_eighth: &'static str,
|
|
pub empty: &'static str,
|
|
}
|
|
|
|
pub const THREE_LEVELS: Set = Set {
|
|
full: FULL,
|
|
seven_eighths: FULL,
|
|
three_quarters: HALF,
|
|
five_eighths: HALF,
|
|
half: HALF,
|
|
three_eighths: HALF,
|
|
one_quarter: HALF,
|
|
one_eighth: " ",
|
|
empty: " ",
|
|
};
|
|
|
|
pub const NINE_LEVELS: Set = Set {
|
|
full: FULL,
|
|
seven_eighths: SEVEN_EIGHTHS,
|
|
three_quarters: THREE_QUARTERS,
|
|
five_eighths: FIVE_EIGHTHS,
|
|
half: HALF,
|
|
three_eighths: THREE_EIGHTHS,
|
|
one_quarter: ONE_QUARTER,
|
|
one_eighth: ONE_EIGHTH,
|
|
empty: " ",
|
|
};
|
|
}
|
|
|
|
pub mod bar {
|
|
pub const FULL: &str = "█";
|
|
pub const SEVEN_EIGHTHS: &str = "▇";
|
|
pub const THREE_QUARTERS: &str = "▆";
|
|
pub const FIVE_EIGHTHS: &str = "▅";
|
|
pub const HALF: &str = "▄";
|
|
pub const THREE_EIGHTHS: &str = "▃";
|
|
pub const ONE_QUARTER: &str = "▂";
|
|
pub const ONE_EIGHTH: &str = "▁";
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub struct Set {
|
|
pub full: &'static str,
|
|
pub seven_eighths: &'static str,
|
|
pub three_quarters: &'static str,
|
|
pub five_eighths: &'static str,
|
|
pub half: &'static str,
|
|
pub three_eighths: &'static str,
|
|
pub one_quarter: &'static str,
|
|
pub one_eighth: &'static str,
|
|
pub empty: &'static str,
|
|
}
|
|
|
|
pub const THREE_LEVELS: Set = Set {
|
|
full: FULL,
|
|
seven_eighths: FULL,
|
|
three_quarters: HALF,
|
|
five_eighths: HALF,
|
|
half: HALF,
|
|
three_eighths: HALF,
|
|
one_quarter: HALF,
|
|
one_eighth: " ",
|
|
empty: " ",
|
|
};
|
|
|
|
pub const NINE_LEVELS: Set = Set {
|
|
full: FULL,
|
|
seven_eighths: SEVEN_EIGHTHS,
|
|
three_quarters: THREE_QUARTERS,
|
|
five_eighths: FIVE_EIGHTHS,
|
|
half: HALF,
|
|
three_eighths: THREE_EIGHTHS,
|
|
one_quarter: ONE_QUARTER,
|
|
one_eighth: ONE_EIGHTH,
|
|
empty: " ",
|
|
};
|
|
}
|
|
|
|
pub mod line {
|
|
pub const VERTICAL: &str = "│";
|
|
pub const DOUBLE_VERTICAL: &str = "║";
|
|
pub const THICK_VERTICAL: &str = "┃";
|
|
|
|
pub const HORIZONTAL: &str = "─";
|
|
pub const DOUBLE_HORIZONTAL: &str = "═";
|
|
pub const THICK_HORIZONTAL: &str = "━";
|
|
|
|
pub const TOP_RIGHT: &str = "┐";
|
|
pub const ROUNDED_TOP_RIGHT: &str = "╮";
|
|
pub const DOUBLE_TOP_RIGHT: &str = "╗";
|
|
pub const THICK_TOP_RIGHT: &str = "┓";
|
|
|
|
pub const TOP_LEFT: &str = "┌";
|
|
pub const ROUNDED_TOP_LEFT: &str = "╭";
|
|
pub const DOUBLE_TOP_LEFT: &str = "╔";
|
|
pub const THICK_TOP_LEFT: &str = "┏";
|
|
|
|
pub const BOTTOM_RIGHT: &str = "┘";
|
|
pub const ROUNDED_BOTTOM_RIGHT: &str = "╯";
|
|
pub const DOUBLE_BOTTOM_RIGHT: &str = "╝";
|
|
pub const THICK_BOTTOM_RIGHT: &str = "┛";
|
|
|
|
pub const BOTTOM_LEFT: &str = "└";
|
|
pub const ROUNDED_BOTTOM_LEFT: &str = "╰";
|
|
pub const DOUBLE_BOTTOM_LEFT: &str = "╚";
|
|
pub const THICK_BOTTOM_LEFT: &str = "┗";
|
|
|
|
pub const VERTICAL_LEFT: &str = "┤";
|
|
pub const DOUBLE_VERTICAL_LEFT: &str = "╣";
|
|
pub const THICK_VERTICAL_LEFT: &str = "┫";
|
|
|
|
pub const VERTICAL_RIGHT: &str = "├";
|
|
pub const DOUBLE_VERTICAL_RIGHT: &str = "╠";
|
|
pub const THICK_VERTICAL_RIGHT: &str = "┣";
|
|
|
|
pub const HORIZONTAL_DOWN: &str = "┬";
|
|
pub const DOUBLE_HORIZONTAL_DOWN: &str = "╦";
|
|
pub const THICK_HORIZONTAL_DOWN: &str = "┳";
|
|
|
|
pub const HORIZONTAL_UP: &str = "┴";
|
|
pub const DOUBLE_HORIZONTAL_UP: &str = "╩";
|
|
pub const THICK_HORIZONTAL_UP: &str = "┻";
|
|
|
|
pub const CROSS: &str = "┼";
|
|
pub const DOUBLE_CROSS: &str = "╬";
|
|
pub const THICK_CROSS: &str = "╋";
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub struct Set {
|
|
pub vertical: &'static str,
|
|
pub horizontal: &'static str,
|
|
pub top_right: &'static str,
|
|
pub top_left: &'static str,
|
|
pub bottom_right: &'static str,
|
|
pub bottom_left: &'static str,
|
|
pub vertical_left: &'static str,
|
|
pub vertical_right: &'static str,
|
|
pub horizontal_down: &'static str,
|
|
pub horizontal_up: &'static str,
|
|
pub cross: &'static str,
|
|
}
|
|
|
|
pub const NORMAL: Set = Set {
|
|
vertical: VERTICAL,
|
|
horizontal: HORIZONTAL,
|
|
top_right: TOP_RIGHT,
|
|
top_left: TOP_LEFT,
|
|
bottom_right: BOTTOM_RIGHT,
|
|
bottom_left: BOTTOM_LEFT,
|
|
vertical_left: VERTICAL_LEFT,
|
|
vertical_right: VERTICAL_RIGHT,
|
|
horizontal_down: HORIZONTAL_DOWN,
|
|
horizontal_up: HORIZONTAL_UP,
|
|
cross: CROSS,
|
|
};
|
|
|
|
pub const ROUNDED: Set = Set {
|
|
top_right: ROUNDED_TOP_RIGHT,
|
|
top_left: ROUNDED_TOP_LEFT,
|
|
bottom_right: ROUNDED_BOTTOM_RIGHT,
|
|
bottom_left: ROUNDED_BOTTOM_LEFT,
|
|
..NORMAL
|
|
};
|
|
|
|
pub const DOUBLE: Set = Set {
|
|
vertical: DOUBLE_VERTICAL,
|
|
horizontal: DOUBLE_HORIZONTAL,
|
|
top_right: DOUBLE_TOP_RIGHT,
|
|
top_left: DOUBLE_TOP_LEFT,
|
|
bottom_right: DOUBLE_BOTTOM_RIGHT,
|
|
bottom_left: DOUBLE_BOTTOM_LEFT,
|
|
vertical_left: DOUBLE_VERTICAL_LEFT,
|
|
vertical_right: DOUBLE_VERTICAL_RIGHT,
|
|
horizontal_down: DOUBLE_HORIZONTAL_DOWN,
|
|
horizontal_up: DOUBLE_HORIZONTAL_UP,
|
|
cross: DOUBLE_CROSS,
|
|
};
|
|
|
|
pub const THICK: Set = Set {
|
|
vertical: THICK_VERTICAL,
|
|
horizontal: THICK_HORIZONTAL,
|
|
top_right: THICK_TOP_RIGHT,
|
|
top_left: THICK_TOP_LEFT,
|
|
bottom_right: THICK_BOTTOM_RIGHT,
|
|
bottom_left: THICK_BOTTOM_LEFT,
|
|
vertical_left: THICK_VERTICAL_LEFT,
|
|
vertical_right: THICK_VERTICAL_RIGHT,
|
|
horizontal_down: THICK_HORIZONTAL_DOWN,
|
|
horizontal_up: THICK_HORIZONTAL_UP,
|
|
cross: THICK_CROSS,
|
|
};
|
|
}
|
|
|
|
pub const DOT: &str = "•";
|
|
|
|
pub mod braille {
|
|
pub const BLANK: u16 = 0x2800;
|
|
pub const DOTS: [[u16; 2]; 4] = [
|
|
[0x0001, 0x0008],
|
|
[0x0002, 0x0010],
|
|
[0x0004, 0x0020],
|
|
[0x0040, 0x0080],
|
|
];
|
|
}
|
|
|
|
/// Marker to use when plotting data points
|
|
#[derive(Debug, Clone, Copy)]
|
|
pub enum Marker {
|
|
/// One point per cell in shape of dot
|
|
Dot,
|
|
/// One point per cell in shape of a block
|
|
Block,
|
|
/// Up to 8 points per cell
|
|
Braille,
|
|
}
|