]>
Commit | Line | Data |
---|---|---|
1 | use std::time::Instant; | |
2 | ||
3 | const XOFF: usize = 10; | |
4 | const YOFF: usize = 4; | |
5 | ||
6 | #[derive(Default)] | |
7 | pub struct OSD { | |
8 | time: Option<Instant>, | |
9 | text: Vec<u8>, | |
10 | text_stride: usize, | |
11 | duration: u64, | |
12 | perm: bool, | |
13 | } | |
14 | ||
15 | impl OSD { | |
16 | pub fn new() -> Self { Self::default() } | |
17 | pub fn reset(&mut self) { | |
18 | self.text.clear(); | |
19 | self.duration = 0; | |
20 | self.time = None; | |
21 | } | |
22 | pub fn set_duration(&mut self, duration: u64) { self.duration = duration; } | |
23 | pub fn toggle(&mut self) { | |
24 | if self.perm { | |
25 | self.perm = false; | |
26 | self.time = None; | |
27 | return; | |
28 | } | |
29 | if self.time.is_none() { | |
30 | self.time = Some(Instant::now()); | |
31 | } else { | |
32 | self.time = None; | |
33 | } | |
34 | } | |
35 | pub fn toggle_perm(&mut self) { | |
36 | if !self.perm { | |
37 | self.perm = true; | |
38 | } else { | |
39 | self.perm = false; | |
40 | self.time = None; | |
41 | } | |
42 | } | |
43 | pub fn update(&mut self) { | |
44 | if let Some(time) = self.time { | |
45 | if time.elapsed().as_millis() > 3000 { | |
46 | self.time = None; | |
47 | } | |
48 | } | |
49 | } | |
50 | pub fn is_active(&self) -> bool { self.time.is_some() || self.perm } | |
51 | pub fn prepare(&mut self, ts: u64) { | |
52 | self.update(); | |
53 | if !self.is_active() { | |
54 | return; | |
55 | } | |
56 | let mut time_str = format_time(ts); | |
57 | if self.duration != 0 { | |
58 | time_str += "/"; | |
59 | time_str += format_time(self.duration).as_str(); | |
60 | } | |
61 | let mut w = 0; | |
62 | let mut syms = Vec::with_capacity(time_str.len()); | |
63 | for chr in time_str.chars() { | |
64 | let sym_idx = OSD_GLYPHS.iter().position(|el| el.sym == chr).unwrap_or(0); | |
65 | w += OSD_GLYPHS[sym_idx].width; | |
66 | syms.push(sym_idx); | |
67 | } | |
68 | self.text_stride = w; | |
69 | if w > 0 { | |
70 | self.text.resize(self.text_stride * 16, 0); | |
71 | let mut pos = 0; | |
72 | for &sym_idx in syms.iter() { | |
73 | let glyph = &OSD_GLYPHS[sym_idx]; | |
74 | let mut mask = 1 << (glyph.width - 1); | |
75 | while mask > 0 { | |
76 | for (dline, (bits, mbits)) in self.text.chunks_exact_mut(w).zip(glyph.bits.iter().zip(glyph.mask.iter())) { | |
77 | let wval = (bits & mask) != 0; | |
78 | let bval = (mbits & mask) != 0; | |
79 | dline[pos] = if wval { 2 } else if bval { 1 } else { 0 }; | |
80 | } | |
81 | mask >>= 1; | |
82 | pos += 1; | |
83 | } | |
84 | } | |
85 | } else { | |
86 | self.text.clear(); | |
87 | } | |
88 | } | |
89 | pub fn draw_yuv(&self, buffer: &mut [u8], pitch: usize) { | |
90 | if !self.is_active() || self.text_stride == 0 { | |
91 | return; | |
92 | } | |
93 | for (dline, sline) in buffer.chunks_exact_mut(pitch).skip(YOFF).zip(self.text.chunks_exact(self.text_stride)) { | |
94 | for (dst, &src) in dline.iter_mut().skip(XOFF).zip(sline.iter()) { | |
95 | match src { | |
96 | 2 => *dst = 0xFF, | |
97 | 1 => *dst = 0x00, | |
98 | _ => {}, | |
99 | }; | |
100 | } | |
101 | } | |
102 | } | |
103 | pub fn draw_rgb(&self, buffer: &mut [u8], pitch: usize) { | |
104 | if !self.is_active() || self.text_stride == 0 { | |
105 | return; | |
106 | } | |
107 | for (dline, sline) in buffer.chunks_exact_mut(pitch).skip(YOFF).zip(self.text.chunks_exact(self.text_stride)) { | |
108 | for (dst, &src) in dline.chunks_exact_mut(3).skip(XOFF).zip(sline.iter()) { | |
109 | match src { | |
110 | 2 => dst.copy_from_slice(&[0xFF, 0xFF, 0xFF]), | |
111 | 1 => dst.copy_from_slice(&[0x00, 0x00, 0x00]), | |
112 | _ => {}, | |
113 | }; | |
114 | } | |
115 | } | |
116 | } | |
117 | } | |
118 | ||
119 | fn format_time(ms: u64) -> String { | |
120 | let s = ms / 1000; | |
121 | let (min, s) = (s / 60, s % 60); | |
122 | let (h, min) = (min / 60, min % 60); | |
123 | if h == 0 { | |
124 | if min == 0 { | |
125 | format!("0:{:02}", s) | |
126 | } else { | |
127 | format!("{}:{:02}", min, s) | |
128 | } | |
129 | } else { | |
130 | format!("{}:{:02}:{:02}", h, min, s) | |
131 | } | |
132 | } | |
133 | ||
134 | struct Glyph { | |
135 | width: usize, | |
136 | sym: char, | |
137 | bits: [u16; 16], | |
138 | mask: [u16; 16], | |
139 | } | |
140 | ||
141 | const OSD_GLYPHS: &[Glyph] = &[ | |
142 | Glyph { | |
143 | width: 14, | |
144 | sym: '?', | |
145 | bits: [ | |
146 | 0b_0000000000000000, | |
147 | 0b_0000011111110000, | |
148 | 0b_0000110000111000, | |
149 | 0b_0000000000011000, | |
150 | 0b_0000000000011000, | |
151 | 0b_0000000000110000, | |
152 | 0b_0000000001100000, | |
153 | 0b_0000000011000000, | |
154 | 0b_0000000011000000, | |
155 | 0b_0000000011000000, | |
156 | 0b_0000000000000000, | |
157 | 0b_0000000000000000, | |
158 | 0b_0000000000000000, | |
159 | 0b_0000000111100000, | |
160 | 0b_0000000111100000, | |
161 | 0b_0000000000000000 | |
162 | ], | |
163 | mask: [ | |
164 | 0b_0000011111110000, | |
165 | 0b_0000111111111000, | |
166 | 0b_0001111111111100, | |
167 | 0b_0000110000111100, | |
168 | 0b_0000000000111100, | |
169 | 0b_0000000001111000, | |
170 | 0b_0000000011110000, | |
171 | 0b_0000000111100000, | |
172 | 0b_0000000111100000, | |
173 | 0b_0000000111100000, | |
174 | 0b_0000000011000000, | |
175 | 0b_0000000000000000, | |
176 | 0b_0000000111100000, | |
177 | 0b_0000001111110000, | |
178 | 0b_0000001111110000, | |
179 | 0b_0000000111100000 | |
180 | ], | |
181 | }, | |
182 | Glyph { | |
183 | width: 12, | |
184 | sym: '0', | |
185 | bits: [ | |
186 | 0b_0000000000000000, | |
187 | 0b_0000000000000000, | |
188 | 0b_0000000000000000, | |
189 | 0b_0000000011110000, | |
190 | 0b_0000000100001000, | |
191 | 0b_0000001000001100, | |
192 | 0b_0000001000010100, | |
193 | 0b_0000001000100100, | |
194 | 0b_0000001001000100, | |
195 | 0b_0000001010000100, | |
196 | 0b_0000001100000100, | |
197 | 0b_0000000100001000, | |
198 | 0b_0000000011110000, | |
199 | 0b_0000000000000000, | |
200 | 0b_0000000000000000, | |
201 | 0b_0000000000000000 | |
202 | ], | |
203 | mask: [ | |
204 | 0b_0000000000000000, | |
205 | 0b_0000000000000000, | |
206 | 0b_0000000111111000, | |
207 | 0b_0000001100001100, | |
208 | 0b_0000011011110110, | |
209 | 0b_0000010100010010, | |
210 | 0b_0000010100101010, | |
211 | 0b_0000010101011010, | |
212 | 0b_0000010110101010, | |
213 | 0b_0000010101001010, | |
214 | 0b_0000010010011010, | |
215 | 0b_0000011011110110, | |
216 | 0b_0000001100001100, | |
217 | 0b_0000000111111000, | |
218 | 0b_0000000000000000, | |
219 | 0b_0000000000000000 | |
220 | ], | |
221 | }, | |
222 | Glyph { | |
223 | width: 10, | |
224 | sym: '1', | |
225 | bits: [ | |
226 | 0b_0000000000000000, | |
227 | 0b_0000000000000000, | |
228 | 0b_0000000000000000, | |
229 | 0b_0000000000110000, | |
230 | 0b_0000000001110000, | |
231 | 0b_0000000011010000, | |
232 | 0b_0000000000010000, | |
233 | 0b_0000000000010000, | |
234 | 0b_0000000000010000, | |
235 | 0b_0000000000010000, | |
236 | 0b_0000000000010000, | |
237 | 0b_0000000000010000, | |
238 | 0b_0000000001111100, | |
239 | 0b_0000000000000000, | |
240 | 0b_0000000000000000, | |
241 | 0b_0000000000000000 | |
242 | ], | |
243 | mask: [ | |
244 | 0b_0000000000000000, | |
245 | 0b_0000000000000000, | |
246 | 0b_0000000000111000, | |
247 | 0b_0000000001001000, | |
248 | 0b_0000000010001000, | |
249 | 0b_0000000100101000, | |
250 | 0b_0000000111101000, | |
251 | 0b_0000000000101000, | |
252 | 0b_0000000000101000, | |
253 | 0b_0000000000101000, | |
254 | 0b_0000000000101000, | |
255 | 0b_0000000011101110, | |
256 | 0b_0000000010000010, | |
257 | 0b_0000000011111110, | |
258 | 0b_0000000000000000, | |
259 | 0b_0000000000000000 | |
260 | ], | |
261 | }, | |
262 | Glyph { | |
263 | width: 10, | |
264 | sym: '2', | |
265 | bits: [ | |
266 | 0b_0000000000000000, | |
267 | 0b_0000000000000000, | |
268 | 0b_0000000001110000, | |
269 | 0b_0000000010001000, | |
270 | 0b_0000000000000100, | |
271 | 0b_0000000000000100, | |
272 | 0b_0000000000000100, | |
273 | 0b_0000000000001000, | |
274 | 0b_0000000000010000, | |
275 | 0b_0000000000100000, | |
276 | 0b_0000000001000000, | |
277 | 0b_0000000010000000, | |
278 | 0b_0000000011111100, | |
279 | 0b_0000000000000000, | |
280 | 0b_0000000000000000, | |
281 | 0b_0000000000000000 | |
282 | ], | |
283 | mask: [ | |
284 | 0b_0000000000000000, | |
285 | 0b_0000000001110000, | |
286 | 0b_0000000010001000, | |
287 | 0b_0000000101110100, | |
288 | 0b_0000000110001010, | |
289 | 0b_0000000000001010, | |
290 | 0b_0000000000001010, | |
291 | 0b_0000000000010100, | |
292 | 0b_0000000000101000, | |
293 | 0b_0000000001010000, | |
294 | 0b_0000000010100000, | |
295 | 0b_0000000101111110, | |
296 | 0b_0000000100000010, | |
297 | 0b_0000000111111110, | |
298 | 0b_0000000000000000, | |
299 | 0b_0000000000000000 | |
300 | ], | |
301 | }, | |
302 | Glyph { | |
303 | width: 10, | |
304 | sym: '3', | |
305 | bits: [ | |
306 | 0b_0000000000000000, | |
307 | 0b_0000000000000000, | |
308 | 0b_0000000000000000, | |
309 | 0b_0000000011111100, | |
310 | 0b_0000000010000100, | |
311 | 0b_0000000000001000, | |
312 | 0b_0000000000010000, | |
313 | 0b_0000000000100000, | |
314 | 0b_0000000000010000, | |
315 | 0b_0000000000001000, | |
316 | 0b_0000000000000100, | |
317 | 0b_0000000010000100, | |
318 | 0b_0000000001111000, | |
319 | 0b_0000000000000000, | |
320 | 0b_0000000000000000, | |
321 | 0b_0000000000000000 | |
322 | ], | |
323 | mask: [ | |
324 | 0b_0000000000000000, | |
325 | 0b_0000000000000000, | |
326 | 0b_0000000111111110, | |
327 | 0b_0000000100000010, | |
328 | 0b_0000000101111010, | |
329 | 0b_0000000111010100, | |
330 | 0b_0000000000101000, | |
331 | 0b_0000000001010000, | |
332 | 0b_0000000000101000, | |
333 | 0b_0000000000010100, | |
334 | 0b_0000000110001010, | |
335 | 0b_0000000101111010, | |
336 | 0b_0000000010000100, | |
337 | 0b_0000000001111000, | |
338 | 0b_0000000000000000, | |
339 | 0b_0000000000000000 | |
340 | ], | |
341 | }, | |
342 | Glyph { | |
343 | width: 10, | |
344 | sym: '4', | |
345 | bits: [ | |
346 | 0b_0000000000000000, | |
347 | 0b_0000000000000000, | |
348 | 0b_0000000000000000, | |
349 | 0b_0000000000001100, | |
350 | 0b_0000000000010100, | |
351 | 0b_0000000000100100, | |
352 | 0b_0000000001000100, | |
353 | 0b_0000000010000100, | |
354 | 0b_0000000011111100, | |
355 | 0b_0000000000000100, | |
356 | 0b_0000000000000100, | |
357 | 0b_0000000000000100, | |
358 | 0b_0000000000000100, | |
359 | 0b_0000000000000000, | |
360 | 0b_0000000000000000, | |
361 | 0b_0000000000000000 | |
362 | ], | |
363 | mask: [ | |
364 | 0b_0000000000000000, | |
365 | 0b_0000000000000000, | |
366 | 0b_0000000000001110, | |
367 | 0b_0000000000010010, | |
368 | 0b_0000000000101010, | |
369 | 0b_0000000001011010, | |
370 | 0b_0000000010101010, | |
371 | 0b_0000000101111010, | |
372 | 0b_0000000100000010, | |
373 | 0b_0000000111111010, | |
374 | 0b_0000000000001010, | |
375 | 0b_0000000000001010, | |
376 | 0b_0000000000001010, | |
377 | 0b_0000000000001110, | |
378 | 0b_0000000000000000, | |
379 | 0b_0000000000000000 | |
380 | ], | |
381 | }, | |
382 | Glyph { | |
383 | width: 10, | |
384 | sym: '5', | |
385 | bits: [ | |
386 | 0b_0000000000000000, | |
387 | 0b_0000000000000000, | |
388 | 0b_0000000000000000, | |
389 | 0b_0000000011111100, | |
390 | 0b_0000000010000100, | |
391 | 0b_0000000010000000, | |
392 | 0b_0000000001000000, | |
393 | 0b_0000000000100000, | |
394 | 0b_0000000000011000, | |
395 | 0b_0000000000000100, | |
396 | 0b_0000000000000100, | |
397 | 0b_0000000010000100, | |
398 | 0b_0000000001111000, | |
399 | 0b_0000000000000000, | |
400 | 0b_0000000000000000, | |
401 | 0b_0000000000000000 | |
402 | ], | |
403 | mask: [ | |
404 | 0b_0000000000000000, | |
405 | 0b_0000000000000000, | |
406 | 0b_0000000111111110, | |
407 | 0b_0000000100000010, | |
408 | 0b_0000000101111010, | |
409 | 0b_0000000101001110, | |
410 | 0b_0000000010100000, | |
411 | 0b_0000000001011000, | |
412 | 0b_0000000000100100, | |
413 | 0b_0000000000011010, | |
414 | 0b_0000000110001010, | |
415 | 0b_0000000101111010, | |
416 | 0b_0000000010000100, | |
417 | 0b_0000000001111000, | |
418 | 0b_0000000000000000, | |
419 | 0b_0000000000000000 | |
420 | ], | |
421 | }, | |
422 | Glyph { | |
423 | width: 10, | |
424 | sym: '6', | |
425 | bits: [ | |
426 | 0b_0000000000000000, | |
427 | 0b_0000000000000000, | |
428 | 0b_0000000000000000, | |
429 | 0b_0000000001111000, | |
430 | 0b_0000000010000100, | |
431 | 0b_0000000010000000, | |
432 | 0b_0000000010000000, | |
433 | 0b_0000000010000000, | |
434 | 0b_0000000011111000, | |
435 | 0b_0000000010000100, | |
436 | 0b_0000000010000100, | |
437 | 0b_0000000010000100, | |
438 | 0b_0000000001111000, | |
439 | 0b_0000000000000000, | |
440 | 0b_0000000000000000, | |
441 | 0b_0000000000000000 | |
442 | ], | |
443 | mask: [ | |
444 | 0b_0000000000000000, | |
445 | 0b_0000000000000000, | |
446 | 0b_0000000001111000, | |
447 | 0b_0000000010000100, | |
448 | 0b_0000000101111010, | |
449 | 0b_0000000101001110, | |
450 | 0b_0000000101000000, | |
451 | 0b_0000000101111000, | |
452 | 0b_0000000100000100, | |
453 | 0b_0000000101111010, | |
454 | 0b_0000000101001010, | |
455 | 0b_0000000101111010, | |
456 | 0b_0000000010000100, | |
457 | 0b_0000000001111000, | |
458 | 0b_0000000000000000, | |
459 | 0b_0000000000000000 | |
460 | ], | |
461 | }, | |
462 | Glyph { | |
463 | width: 10, | |
464 | sym: '7', | |
465 | bits: [ | |
466 | 0b_0000000000000000, | |
467 | 0b_0000000000000000, | |
468 | 0b_0000000000000000, | |
469 | 0b_0000000111111100, | |
470 | 0b_0000000100000100, | |
471 | 0b_0000000000000100, | |
472 | 0b_0000000000001000, | |
473 | 0b_0000000000001000, | |
474 | 0b_0000000000001000, | |
475 | 0b_0000000000010000, | |
476 | 0b_0000000000010000, | |
477 | 0b_0000000000110000, | |
478 | 0b_0000000000100000, | |
479 | 0b_0000000000000000, | |
480 | 0b_0000000000000000, | |
481 | 0b_0000000000000000 | |
482 | ], | |
483 | mask: [ | |
484 | 0b_0000000000000000, | |
485 | 0b_0000000000000000, | |
486 | 0b_0000001111111110, | |
487 | 0b_0000001000000010, | |
488 | 0b_0000001011111010, | |
489 | 0b_0000001110001010, | |
490 | 0b_0000000000010100, | |
491 | 0b_0000000000010100, | |
492 | 0b_0000000000010100, | |
493 | 0b_0000000000101000, | |
494 | 0b_0000000000101000, | |
495 | 0b_0000000001001000, | |
496 | 0b_0000000001010000, | |
497 | 0b_0000000001110000, | |
498 | 0b_0000000000000000, | |
499 | 0b_0000000000000000 | |
500 | ], | |
501 | }, | |
502 | Glyph { | |
503 | width: 10, | |
504 | sym: '8', | |
505 | bits: [ | |
506 | 0b_0000000000000000, | |
507 | 0b_0000000000000000, | |
508 | 0b_0000000000000000, | |
509 | 0b_0000000001111000, | |
510 | 0b_0000000010000100, | |
511 | 0b_0000000010000100, | |
512 | 0b_0000000010000100, | |
513 | 0b_0000000001111000, | |
514 | 0b_0000000001001000, | |
515 | 0b_0000000010000100, | |
516 | 0b_0000000010000100, | |
517 | 0b_0000000010000100, | |
518 | 0b_0000000001111000, | |
519 | 0b_0000000000000000, | |
520 | 0b_0000000000000000, | |
521 | 0b_0000000000000000 | |
522 | ], | |
523 | mask: [ | |
524 | 0b_0000000000000000, | |
525 | 0b_0000000000000000, | |
526 | 0b_0000000001111000, | |
527 | 0b_0000000010000100, | |
528 | 0b_0000000101111010, | |
529 | 0b_0000000101001010, | |
530 | 0b_0000000101111010, | |
531 | 0b_0000000010000100, | |
532 | 0b_0000000010110100, | |
533 | 0b_0000000101001010, | |
534 | 0b_0000000101001010, | |
535 | 0b_0000000101111010, | |
536 | 0b_0000000010000100, | |
537 | 0b_0000000001111000, | |
538 | 0b_0000000000000000, | |
539 | 0b_0000000000000000 | |
540 | ], | |
541 | }, | |
542 | Glyph { | |
543 | width: 10, | |
544 | sym: '9', | |
545 | bits: [ | |
546 | 0b_0000000000000000, | |
547 | 0b_0000000000000000, | |
548 | 0b_0000000000000000, | |
549 | 0b_0000000001111000, | |
550 | 0b_0000000010000100, | |
551 | 0b_0000000010000100, | |
552 | 0b_0000000010000100, | |
553 | 0b_0000000001111100, | |
554 | 0b_0000000000000100, | |
555 | 0b_0000000000000100, | |
556 | 0b_0000000000000100, | |
557 | 0b_0000000010000100, | |
558 | 0b_0000000001111000, | |
559 | 0b_0000000000000000, | |
560 | 0b_0000000000000000, | |
561 | 0b_0000000000000000 | |
562 | ], | |
563 | mask: [ | |
564 | 0b_0000000000000000, | |
565 | 0b_0000000000000000, | |
566 | 0b_0000000001111000, | |
567 | 0b_0000000010000100, | |
568 | 0b_0000000101111010, | |
569 | 0b_0000000101001010, | |
570 | 0b_0000000101111010, | |
571 | 0b_0000000010000010, | |
572 | 0b_0000000001111010, | |
573 | 0b_0000000000001010, | |
574 | 0b_0000000111001010, | |
575 | 0b_0000000101111010, | |
576 | 0b_0000000010000100, | |
577 | 0b_0000000001111000, | |
578 | 0b_0000000000000000, | |
579 | 0b_0000000000000000 | |
580 | ], | |
581 | }, | |
582 | Glyph { | |
583 | width: 7, | |
584 | sym: ':', | |
585 | bits: [ | |
586 | 0b_0000000000000000, | |
587 | 0b_0000000000000000, | |
588 | 0b_0000000000000000, | |
589 | 0b_0000000000000000, | |
590 | 0b_0000000000000000, | |
591 | 0b_0000000000011100, | |
592 | 0b_0000000000011100, | |
593 | 0b_0000000000000000, | |
594 | 0b_0000000000000000, | |
595 | 0b_0000000000000000, | |
596 | 0b_0000000000000000, | |
597 | 0b_0000000000011100, | |
598 | 0b_0000000000011100, | |
599 | 0b_0000000000000000, | |
600 | 0b_0000000000000000, | |
601 | 0b_0000000000000000 | |
602 | ], | |
603 | mask: [ | |
604 | 0b_0000000000000000, | |
605 | 0b_0000000000000000, | |
606 | 0b_0000000000000000, | |
607 | 0b_0000000000000000, | |
608 | 0b_0000000000011100, | |
609 | 0b_0000000000111110, | |
610 | 0b_0000000000111110, | |
611 | 0b_0000000000011100, | |
612 | 0b_0000000000000000, | |
613 | 0b_0000000000000000, | |
614 | 0b_0000000000011100, | |
615 | 0b_0000000000111110, | |
616 | 0b_0000000000111110, | |
617 | 0b_0000000000011100, | |
618 | 0b_0000000000000000, | |
619 | 0b_0000000000000000 | |
620 | ], | |
621 | }, | |
622 | Glyph { | |
623 | width: 9, | |
624 | sym: '/', | |
625 | bits: [ | |
626 | 0b_0000000000000000, | |
627 | 0b_0000000000000000, | |
628 | 0b_0000000000000000, | |
629 | 0b_0000000000000100, | |
630 | 0b_0000000000000100, | |
631 | 0b_0000000000001000, | |
632 | 0b_0000000000001000, | |
633 | 0b_0000000000010000, | |
634 | 0b_0000000000010000, | |
635 | 0b_0000000000100000, | |
636 | 0b_0000000000100000, | |
637 | 0b_0000000001000000, | |
638 | 0b_0000000001000000, | |
639 | 0b_0000000000000000, | |
640 | 0b_0000000000000000, | |
641 | 0b_0000000000000000 | |
642 | ], | |
643 | mask: [ | |
644 | 0b_0000000000000000, | |
645 | 0b_0000000000000000, | |
646 | 0b_0000000000001110, | |
647 | 0b_0000000000001010, | |
648 | 0b_0000000000001010, | |
649 | 0b_0000000000010100, | |
650 | 0b_0000000000010100, | |
651 | 0b_0000000000101000, | |
652 | 0b_0000000000101000, | |
653 | 0b_0000000001010000, | |
654 | 0b_0000000001010000, | |
655 | 0b_0000000010100000, | |
656 | 0b_0000000010100000, | |
657 | 0b_0000000011100000, | |
658 | 0b_0000000000000000, | |
659 | 0b_0000000000000000 | |
660 | ], | |
661 | }, | |
662 | Glyph { | |
663 | width: 7, | |
664 | sym: '.', | |
665 | bits: [ | |
666 | 0b_0000000000000000, | |
667 | 0b_0000000000000000, | |
668 | 0b_0000000000000000, | |
669 | 0b_0000000000000000, | |
670 | 0b_0000000000000000, | |
671 | 0b_0000000000000000, | |
672 | 0b_0000000000000000, | |
673 | 0b_0000000000000000, | |
674 | 0b_0000000000000000, | |
675 | 0b_0000000000000000, | |
676 | 0b_0000000000000000, | |
677 | 0b_0000000000011100, | |
678 | 0b_0000000000011100, | |
679 | 0b_0000000000000000, | |
680 | 0b_0000000000000000, | |
681 | 0b_0000000000000000 | |
682 | ], | |
683 | mask: [ | |
684 | 0b_0000000000000000, | |
685 | 0b_0000000000000000, | |
686 | 0b_0000000000000000, | |
687 | 0b_0000000000000000, | |
688 | 0b_0000000000000000, | |
689 | 0b_0000000000000000, | |
690 | 0b_0000000000000000, | |
691 | 0b_0000000000000000, | |
692 | 0b_0000000000000000, | |
693 | 0b_0000000000000000, | |
694 | 0b_0000000000011100, | |
695 | 0b_0000000000111110, | |
696 | 0b_0000000000111110, | |
697 | 0b_0000000000011100, | |
698 | 0b_0000000000000000, | |
699 | 0b_0000000000000000 | |
700 | ], | |
701 | }, | |
702 | Glyph { | |
703 | width: 12, | |
704 | sym: 'x', | |
705 | bits: [ | |
706 | 0b_0000000000000000, | |
707 | 0b_0000000000000000, | |
708 | 0b_0000000000000000, | |
709 | 0b_0000000000000000, | |
710 | 0b_0000000000000000, | |
711 | 0b_0000000000000000, | |
712 | 0b_0000000000000000, | |
713 | 0b_0000001110011100, | |
714 | 0b_0000000111111000, | |
715 | 0b_0000000011110000, | |
716 | 0b_0000000011110000, | |
717 | 0b_0000000111111000, | |
718 | 0b_0000001110011100, | |
719 | 0b_0000000000000000, | |
720 | 0b_0000000000000000, | |
721 | 0b_0000000000000000 | |
722 | ], | |
723 | mask: [ | |
724 | 0b_0000000000000000, | |
725 | 0b_0000000000000000, | |
726 | 0b_0000000000000000, | |
727 | 0b_0000000000000000, | |
728 | 0b_0000000000000000, | |
729 | 0b_0000000000000000, | |
730 | 0b_0000001110011100, | |
731 | 0b_0000011111111110, | |
732 | 0b_0000011111111110, | |
733 | 0b_0000001111111100, | |
734 | 0b_0000001111111100, | |
735 | 0b_0000011111111110, | |
736 | 0b_0000011111111110, | |
737 | 0b_0000001110011100, | |
738 | 0b_0000000000000000, | |
739 | 0b_0000000000000000 | |
740 | ], | |
741 | }, | |
742 | Glyph { | |
743 | width: 12, | |
744 | sym: ' ', | |
745 | bits: [ | |
746 | 0b_0000000000000000, | |
747 | 0b_0000000000000000, | |
748 | 0b_0000000000000000, | |
749 | 0b_0000000000000000, | |
750 | 0b_0000000000000000, | |
751 | 0b_0000000000000000, | |
752 | 0b_0000000000000000, | |
753 | 0b_0000000000000000, | |
754 | 0b_0000000000000000, | |
755 | 0b_0000000000000000, | |
756 | 0b_0000000000000000, | |
757 | 0b_0000000000000000, | |
758 | 0b_0000000000000000, | |
759 | 0b_0000000000000000, | |
760 | 0b_0000000000000000, | |
761 | 0b_0000000000000000 | |
762 | ], | |
763 | mask: [ | |
764 | 0b_0000000000000000, | |
765 | 0b_0000000000000000, | |
766 | 0b_0000000000000000, | |
767 | 0b_0000000000000000, | |
768 | 0b_0000000000000000, | |
769 | 0b_0000000000000000, | |
770 | 0b_0000000000000000, | |
771 | 0b_0000000000000000, | |
772 | 0b_0000000000000000, | |
773 | 0b_0000000000000000, | |
774 | 0b_0000000000000000, | |
775 | 0b_0000000000000000, | |
776 | 0b_0000000000000000, | |
777 | 0b_0000000000000000, | |
778 | 0b_0000000000000000, | |
779 | 0b_0000000000000000 | |
780 | ], | |
781 | }, | |
782 | ]; |