1use super::{UnicodeProvider, UnicodeTheme};
5
6#[derive(Debug, Clone, Copy)]
8pub enum Block {
9 Full,
11 ThreeQuarters,
13 Half,
15 Quarter,
17 Eighth,
19 UpperHalf,
21 LowerHalf,
23 LeftHalf,
25 RightHalf,
27 LightShade,
29 MediumShade,
31 DarkShade,
33}
34
35impl UnicodeProvider for Block {
36 fn get_char(&self, theme: UnicodeTheme) -> char {
37 match (self, theme) {
38 (Block::Full, UnicodeTheme::Minimal) => '#',
39 (Block::Full, UnicodeTheme::Basic) => '█',
40 (Block::Full, UnicodeTheme::Rich) => '█',
41 (Block::Full, UnicodeTheme::Fancy) => '█',
42
43 (Block::ThreeQuarters, UnicodeTheme::Minimal) => '#',
44 (Block::ThreeQuarters, UnicodeTheme::Basic) => '▉',
45 (Block::ThreeQuarters, UnicodeTheme::Rich) => '▉',
46 (Block::ThreeQuarters, UnicodeTheme::Fancy) => '▉',
47
48 (Block::Half, UnicodeTheme::Minimal) => '=',
49 (Block::Half, UnicodeTheme::Basic) => '▌',
50 (Block::Half, UnicodeTheme::Rich) => '▌',
51 (Block::Half, UnicodeTheme::Fancy) => '▌',
52
53 (Block::Quarter, UnicodeTheme::Minimal) => '|',
54 (Block::Quarter, UnicodeTheme::Basic) => '▎',
55 (Block::Quarter, UnicodeTheme::Rich) => '▎',
56 (Block::Quarter, UnicodeTheme::Fancy) => '▎',
57
58 (Block::Eighth, UnicodeTheme::Minimal) => '|',
59 (Block::Eighth, UnicodeTheme::Basic) => '▏',
60 (Block::Eighth, UnicodeTheme::Rich) => '▏',
61 (Block::Eighth, UnicodeTheme::Fancy) => '▏',
62
63 (Block::UpperHalf, UnicodeTheme::Minimal) => '^',
64 (Block::UpperHalf, UnicodeTheme::Basic) => '▀',
65 (Block::UpperHalf, UnicodeTheme::Rich) => '▀',
66 (Block::UpperHalf, UnicodeTheme::Fancy) => '▀',
67
68 (Block::LowerHalf, UnicodeTheme::Minimal) => '_',
69 (Block::LowerHalf, UnicodeTheme::Basic) => '▄',
70 (Block::LowerHalf, UnicodeTheme::Rich) => '▄',
71 (Block::LowerHalf, UnicodeTheme::Fancy) => '▄',
72
73 (Block::LeftHalf, UnicodeTheme::Minimal) => '|',
74 (Block::LeftHalf, UnicodeTheme::Basic) => '▌',
75 (Block::LeftHalf, UnicodeTheme::Rich) => '▌',
76 (Block::LeftHalf, UnicodeTheme::Fancy) => '▌',
77
78 (Block::RightHalf, UnicodeTheme::Minimal) => '|',
79 (Block::RightHalf, UnicodeTheme::Basic) => '▐',
80 (Block::RightHalf, UnicodeTheme::Rich) => '▐',
81 (Block::RightHalf, UnicodeTheme::Fancy) => '▐',
82
83 (Block::LightShade, UnicodeTheme::Minimal) => '.',
84 (Block::LightShade, UnicodeTheme::Basic) => '░',
85 (Block::LightShade, UnicodeTheme::Rich) => '░',
86 (Block::LightShade, UnicodeTheme::Fancy) => '░',
87
88 (Block::MediumShade, UnicodeTheme::Minimal) => ':',
89 (Block::MediumShade, UnicodeTheme::Basic) => '▒',
90 (Block::MediumShade, UnicodeTheme::Rich) => '▒',
91 (Block::MediumShade, UnicodeTheme::Fancy) => '▒',
92
93 (Block::DarkShade, UnicodeTheme::Minimal) => '#',
94 (Block::DarkShade, UnicodeTheme::Basic) => '▓',
95 (Block::DarkShade, UnicodeTheme::Rich) => '▓',
96 (Block::DarkShade, UnicodeTheme::Fancy) => '▓',
97 }
98 }
99}
100
101pub mod chars {
103 use super::*;
104
105 pub const FULL: Block = Block::Full;
106 pub const THREE_QUARTERS: Block = Block::ThreeQuarters;
107 pub const HALF: Block = Block::Half;
108 pub const QUARTER: Block = Block::Quarter;
109 pub const EIGHTH: Block = Block::Eighth;
110 pub const UPPER_HALF: Block = Block::UpperHalf;
111 pub const LOWER_HALF: Block = Block::LowerHalf;
112 pub const LEFT_HALF: Block = Block::LeftHalf;
113 pub const RIGHT_HALF: Block = Block::RightHalf;
114 pub const LIGHT_SHADE: Block = Block::LightShade;
115 pub const MEDIUM_SHADE: Block = Block::MediumShade;
116 pub const DARK_SHADE: Block = Block::DarkShade;
117}