1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
use crate::color::Color;
#[derive(Debug, Clone, Copy)]
pub enum SGR {
Reset,
Bold,
HalfBright,
Underscore,
Blink,
Reverse,
Underline,
NormalIntensity,
UnderlineOff,
BlinkOff,
ReverseOff,
FG(Color),
FG256(u8),
FG24(u8, u8, u8),
DefaultFG,
BG(Color),
BG256(u8),
BG24(u8, u8, u8),
DefaultBG,
FGB(Color),
BGB(Color),
}
impl Into<Vec<u16>> for SGR {
fn into(self) -> Vec<u16> {
use SGR::*;
match self {
Reset => vec![0],
Bold => vec![1],
HalfBright => vec![2],
Underscore => vec![4],
Blink => vec![5],
Reverse => vec![7],
Underline => vec![21],
NormalIntensity => vec![22],
UnderlineOff => vec![24],
BlinkOff => vec![25],
ReverseOff => vec![27],
FG(n) => vec![30 + u16::from(n)],
FG256(n) => vec![38, 5, n.into()],
FG24(r, g, b) => vec![38, 2, r.into(), g.into(), b.into()],
DefaultFG => vec![39],
BG(n) => vec![40 + u16::from(n)],
BG256(n) => vec![48, 5, n.into()],
BG24(r, g, b) => vec![48, 2, r.into(), g.into(), b.into()],
DefaultBG => vec![49],
FGB(n) => vec![90 + u16::from(n)],
BGB(n) => vec![100 + u16::from(n)],
}
}
}