television_previewers/ansi/
code.rs1use tui::style::Color;
2
3#[derive(Debug, PartialEq, Clone)]
10#[non_exhaustive]
11pub enum AnsiCode {
12 Reset,
14 Bold,
16 Faint,
18 Italic,
20 Underline,
22 SlowBlink,
24 RapidBlink,
26 Reverse,
28 Conceal,
30 CrossedOut,
32 PrimaryFont,
34 AlternateFont,
36 #[allow(dead_code)]
38 AlternateFonts(u8), Fraktur,
41 BoldOff,
43 Normal,
45 NotItalic,
47 UnderlineOff,
49 BlinkOff,
51 InvertOff,
54 Reveal,
56 CrossedOutOff,
58 ForegroundColor(Color), SetForegroundColor,
62 DefaultForegroundColor,
64 BackgroundColor(Color), SetBackgroundColor,
68 DefaultBackgroundColor, Code(Vec<u8>),
72}
73
74impl From<u8> for AnsiCode {
75 fn from(code: u8) -> Self {
76 match code {
77 0 => AnsiCode::Reset,
78 1 => AnsiCode::Bold,
79 2 => AnsiCode::Faint,
80 3 => AnsiCode::Italic,
81 4 => AnsiCode::Underline,
82 5 => AnsiCode::SlowBlink,
83 6 => AnsiCode::RapidBlink,
84 7 => AnsiCode::Reverse,
85 8 => AnsiCode::Conceal,
86 9 => AnsiCode::CrossedOut,
87 10 => AnsiCode::PrimaryFont,
88 11 => AnsiCode::AlternateFont,
89 20 => AnsiCode::Fraktur,
91 21 => AnsiCode::BoldOff,
92 22 => AnsiCode::Normal,
93 23 => AnsiCode::NotItalic,
94 24 => AnsiCode::UnderlineOff,
95 25 => AnsiCode::BlinkOff,
96 27 => AnsiCode::InvertOff,
98 28 => AnsiCode::Reveal,
99 29 => AnsiCode::CrossedOutOff,
100 30 => AnsiCode::ForegroundColor(Color::Black),
101 31 => AnsiCode::ForegroundColor(Color::Red),
102 32 => AnsiCode::ForegroundColor(Color::Green),
103 33 => AnsiCode::ForegroundColor(Color::Yellow),
104 34 => AnsiCode::ForegroundColor(Color::Blue),
105 35 => AnsiCode::ForegroundColor(Color::Magenta),
106 36 => AnsiCode::ForegroundColor(Color::Cyan),
107 37 => AnsiCode::ForegroundColor(Color::Gray),
108 38 => AnsiCode::SetForegroundColor,
109 39 => AnsiCode::DefaultForegroundColor,
110 40 => AnsiCode::BackgroundColor(Color::Black),
111 41 => AnsiCode::BackgroundColor(Color::Red),
112 42 => AnsiCode::BackgroundColor(Color::Green),
113 43 => AnsiCode::BackgroundColor(Color::Yellow),
114 44 => AnsiCode::BackgroundColor(Color::Blue),
115 45 => AnsiCode::BackgroundColor(Color::Magenta),
116 46 => AnsiCode::BackgroundColor(Color::Cyan),
117 47 => AnsiCode::BackgroundColor(Color::Gray),
118 48 => AnsiCode::SetBackgroundColor,
119 49 => AnsiCode::DefaultBackgroundColor,
120 90 => AnsiCode::ForegroundColor(Color::DarkGray),
121 91 => AnsiCode::ForegroundColor(Color::LightRed),
122 92 => AnsiCode::ForegroundColor(Color::LightGreen),
123 93 => AnsiCode::ForegroundColor(Color::LightYellow),
124 94 => AnsiCode::ForegroundColor(Color::LightBlue),
125 95 => AnsiCode::ForegroundColor(Color::LightMagenta),
126 96 => AnsiCode::ForegroundColor(Color::LightCyan),
127 #[allow(clippy::match_same_arms)]
128 97 => AnsiCode::ForegroundColor(Color::White),
129 100 => AnsiCode::BackgroundColor(Color::DarkGray),
130 101 => AnsiCode::BackgroundColor(Color::LightRed),
131 102 => AnsiCode::BackgroundColor(Color::LightGreen),
132 103 => AnsiCode::BackgroundColor(Color::LightYellow),
133 104 => AnsiCode::BackgroundColor(Color::LightBlue),
134 105 => AnsiCode::BackgroundColor(Color::LightMagenta),
135 106 => AnsiCode::BackgroundColor(Color::LightCyan),
136 107 => AnsiCode::ForegroundColor(Color::White),
137 code => AnsiCode::Code(vec![code]),
138 }
139 }
140}