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