1pub mod block {
2 pub const FULL: &str = "█";
3 pub const SEVEN_EIGHTHS: &str = "▉";
4 pub const THREE_QUARTERS: &str = "▊";
5 pub const FIVE_EIGHTHS: &str = "▋";
6 pub const HALF: &str = "▌";
7 pub const THREE_EIGHTHS: &str = "▍";
8 pub const ONE_QUARTER: &str = "▎";
9 pub const ONE_EIGHTH: &str = "▏";
10
11 #[derive(Debug, Clone)]
12 pub struct Set {
13 pub full: &'static str,
14 pub seven_eighths: &'static str,
15 pub three_quarters: &'static str,
16 pub five_eighths: &'static str,
17 pub half: &'static str,
18 pub three_eighths: &'static str,
19 pub one_quarter: &'static str,
20 pub one_eighth: &'static str,
21 pub empty: &'static str,
22 }
23
24 pub const THREE_LEVELS: Set = Set {
25 full: FULL,
26 seven_eighths: FULL,
27 three_quarters: HALF,
28 five_eighths: HALF,
29 half: HALF,
30 three_eighths: HALF,
31 one_quarter: HALF,
32 one_eighth: " ",
33 empty: " ",
34 };
35
36 pub const NINE_LEVELS: Set = Set {
37 full: FULL,
38 seven_eighths: SEVEN_EIGHTHS,
39 three_quarters: THREE_QUARTERS,
40 five_eighths: FIVE_EIGHTHS,
41 half: HALF,
42 three_eighths: THREE_EIGHTHS,
43 one_quarter: ONE_QUARTER,
44 one_eighth: ONE_EIGHTH,
45 empty: " ",
46 };
47}
48
49pub mod bar {
50 pub const FULL: &str = "█";
51 pub const SEVEN_EIGHTHS: &str = "▇";
52 pub const THREE_QUARTERS: &str = "▆";
53 pub const FIVE_EIGHTHS: &str = "▅";
54 pub const HALF: &str = "▄";
55 pub const THREE_EIGHTHS: &str = "▃";
56 pub const ONE_QUARTER: &str = "▂";
57 pub const ONE_EIGHTH: &str = "▁";
58
59 #[derive(Debug, Clone)]
60 pub struct Set {
61 pub full: &'static str,
62 pub seven_eighths: &'static str,
63 pub three_quarters: &'static str,
64 pub five_eighths: &'static str,
65 pub half: &'static str,
66 pub three_eighths: &'static str,
67 pub one_quarter: &'static str,
68 pub one_eighth: &'static str,
69 pub empty: &'static str,
70 }
71
72 pub const THREE_LEVELS: Set = Set {
73 full: FULL,
74 seven_eighths: FULL,
75 three_quarters: HALF,
76 five_eighths: HALF,
77 half: HALF,
78 three_eighths: HALF,
79 one_quarter: HALF,
80 one_eighth: " ",
81 empty: " ",
82 };
83
84 pub const NINE_LEVELS: Set = Set {
85 full: FULL,
86 seven_eighths: SEVEN_EIGHTHS,
87 three_quarters: THREE_QUARTERS,
88 five_eighths: FIVE_EIGHTHS,
89 half: HALF,
90 three_eighths: THREE_EIGHTHS,
91 one_quarter: ONE_QUARTER,
92 one_eighth: ONE_EIGHTH,
93 empty: " ",
94 };
95}
96
97pub mod line {
98 pub const VERTICAL: &str = "│";
99 pub const DOUBLE_VERTICAL: &str = "║";
100 pub const THICK_VERTICAL: &str = "┃";
101
102 pub const HORIZONTAL: &str = "─";
103 pub const DOUBLE_HORIZONTAL: &str = "═";
104 pub const THICK_HORIZONTAL: &str = "━";
105
106 pub const TOP_RIGHT: &str = "┐";
107 pub const ROUNDED_TOP_RIGHT: &str = "╮";
108 pub const DOUBLE_TOP_RIGHT: &str = "╗";
109 pub const THICK_TOP_RIGHT: &str = "┓";
110
111 pub const TOP_LEFT: &str = "┌";
112 pub const ROUNDED_TOP_LEFT: &str = "╭";
113 pub const DOUBLE_TOP_LEFT: &str = "╔";
114 pub const THICK_TOP_LEFT: &str = "┏";
115
116 pub const BOTTOM_RIGHT: &str = "┘";
117 pub const ROUNDED_BOTTOM_RIGHT: &str = "╯";
118 pub const DOUBLE_BOTTOM_RIGHT: &str = "╝";
119 pub const THICK_BOTTOM_RIGHT: &str = "┛";
120
121 pub const BOTTOM_LEFT: &str = "└";
122 pub const ROUNDED_BOTTOM_LEFT: &str = "╰";
123 pub const DOUBLE_BOTTOM_LEFT: &str = "╚";
124 pub const THICK_BOTTOM_LEFT: &str = "┗";
125
126 pub const VERTICAL_LEFT: &str = "┤";
127 pub const DOUBLE_VERTICAL_LEFT: &str = "╣";
128 pub const THICK_VERTICAL_LEFT: &str = "┫";
129
130 pub const VERTICAL_RIGHT: &str = "├";
131 pub const DOUBLE_VERTICAL_RIGHT: &str = "╠";
132 pub const THICK_VERTICAL_RIGHT: &str = "┣";
133
134 pub const HORIZONTAL_DOWN: &str = "┬";
135 pub const DOUBLE_HORIZONTAL_DOWN: &str = "╦";
136 pub const THICK_HORIZONTAL_DOWN: &str = "┳";
137
138 pub const HORIZONTAL_UP: &str = "┴";
139 pub const DOUBLE_HORIZONTAL_UP: &str = "╩";
140 pub const THICK_HORIZONTAL_UP: &str = "┻";
141
142 pub const CROSS: &str = "┼";
143 pub const DOUBLE_CROSS: &str = "╬";
144 pub const THICK_CROSS: &str = "╋";
145
146 #[derive(Debug, Clone)]
147 pub struct Set {
148 pub vertical: &'static str,
149 pub horizontal: &'static str,
150 pub top_right: &'static str,
151 pub top_left: &'static str,
152 pub bottom_right: &'static str,
153 pub bottom_left: &'static str,
154 pub vertical_left: &'static str,
155 pub vertical_right: &'static str,
156 pub horizontal_down: &'static str,
157 pub horizontal_up: &'static str,
158 pub cross: &'static str,
159 }
160
161 pub const NORMAL: Set = Set {
162 vertical: VERTICAL,
163 horizontal: HORIZONTAL,
164 top_right: TOP_RIGHT,
165 top_left: TOP_LEFT,
166 bottom_right: BOTTOM_RIGHT,
167 bottom_left: BOTTOM_LEFT,
168 vertical_left: VERTICAL_LEFT,
169 vertical_right: VERTICAL_RIGHT,
170 horizontal_down: HORIZONTAL_DOWN,
171 horizontal_up: HORIZONTAL_UP,
172 cross: CROSS,
173 };
174
175 pub const ROUNDED: Set = Set {
176 top_right: ROUNDED_TOP_RIGHT,
177 top_left: ROUNDED_TOP_LEFT,
178 bottom_right: ROUNDED_BOTTOM_RIGHT,
179 bottom_left: ROUNDED_BOTTOM_LEFT,
180 ..NORMAL
181 };
182
183 pub const DOUBLE: Set = Set {
184 vertical: DOUBLE_VERTICAL,
185 horizontal: DOUBLE_HORIZONTAL,
186 top_right: DOUBLE_TOP_RIGHT,
187 top_left: DOUBLE_TOP_LEFT,
188 bottom_right: DOUBLE_BOTTOM_RIGHT,
189 bottom_left: DOUBLE_BOTTOM_LEFT,
190 vertical_left: DOUBLE_VERTICAL_LEFT,
191 vertical_right: DOUBLE_VERTICAL_RIGHT,
192 horizontal_down: DOUBLE_HORIZONTAL_DOWN,
193 horizontal_up: DOUBLE_HORIZONTAL_UP,
194 cross: DOUBLE_CROSS,
195 };
196
197 pub const THICK: Set = Set {
198 vertical: THICK_VERTICAL,
199 horizontal: THICK_HORIZONTAL,
200 top_right: THICK_TOP_RIGHT,
201 top_left: THICK_TOP_LEFT,
202 bottom_right: THICK_BOTTOM_RIGHT,
203 bottom_left: THICK_BOTTOM_LEFT,
204 vertical_left: THICK_VERTICAL_LEFT,
205 vertical_right: THICK_VERTICAL_RIGHT,
206 horizontal_down: THICK_HORIZONTAL_DOWN,
207 horizontal_up: THICK_HORIZONTAL_UP,
208 cross: THICK_CROSS,
209 };
210}
211
212pub const DOT: &str = "•";
213
214pub mod braille {
215 pub const BLANK: u16 = 0x2800;
216 pub const DOTS: [[u16; 2]; 4] = [
217 [0x0001, 0x0008],
218 [0x0002, 0x0010],
219 [0x0004, 0x0020],
220 [0x0040, 0x0080],
221 ];
222}
223
224#[derive(Debug, Clone, Copy)]
226pub enum Marker {
227 Dot,
229 Block,
231 Braille,
233}