28 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
28 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ |
29 */ |
30 |
30 |
31 #include "coloredline.h" |
31 #include "coloredline.h" |
32 |
32 |
33 static const struct { Color color; bool bold; } g_colorCodes['v' - 'a' + 1] = |
33 static const struct |
34 { |
34 { |
35 { RED, true }, // a - brick |
35 const char* name; |
36 { YELLOW, true }, // b - tan |
36 Color color; |
37 { WHITE, false }, // c - gray |
37 bool bold; |
38 { GREEN, true }, // d - light green |
38 } g_colorCodes['v' - 'a' + 1] = |
39 { YELLOW, false }, // e - brown |
39 { |
40 { YELLOW, true }, // f - gold yellow |
40 { "Brick", RED, true }, // a |
41 { RED, true }, // g - bright red |
41 { "Tan", YELLOW, true }, // b |
42 { BLUE, false }, // h - dark blue |
42 { "Gray", WHITE, false }, // c |
43 { YELLOW, false }, // i - orange |
43 { "Green", GREEN, true }, // d |
44 { WHITE, true }, // j - white |
44 { "Brown", YELLOW, false }, // e |
45 { YELLOW, true }, // k - fire yellow |
45 { "Gold", YELLOW, true }, // f |
46 { DEFAULT, false }, // l - untranslated |
46 { "Red", RED, true }, // g |
47 { BLACK, false }, // m - black |
47 { "Blue", BLUE, false }, // h |
48 { BLUE, true }, // n - light blue |
48 { "Orange", YELLOW, false }, // i |
49 { YELLOW, true }, // o - cream |
49 { "White", WHITE, true }, // j |
50 { GREEN, true }, // p - olive green |
50 { "Yellow", YELLOW, true }, // k |
51 { GREEN, false }, // q - dark green |
51 { "Untranslated", DEFAULT, false }, // l |
52 { RED, false }, // r - dark red |
52 { "Black", BLACK, false }, // m |
53 { YELLOW, false }, // s - dark brown |
53 { "Blue", BLUE, true }, // n |
54 { MAGENTA, false }, // t - purple |
54 { "Cream", YELLOW, true }, // o |
55 { BLACK, true }, // u - dark gray |
55 { "Olive", GREEN, true }, // p |
56 { CYAN, true }, // v - cyan |
56 { "Dark Green", GREEN, false }, // q |
|
57 { "Dark Red", RED, false }, // r |
|
58 { "Dark Brown", YELLOW, false }, // s |
|
59 { "Purple", MAGENTA, false }, // t |
|
60 { "Dark Gray", BLACK, true }, // u |
|
61 { "Cyan", CYAN, true }, // v |
57 }; |
62 }; |
58 |
63 |
59 // ------------------------------------------------------------------------------------------------- |
64 // ------------------------------------------------------------------------------------------------- |
60 // |
65 // |
61 METHOD |
66 METHOD |
62 ColoredLine::finalize() -> void |
67 ColoredLine::finalize() -> void |
63 { |
68 { |
64 if (m_activeColor != DEFAULT) |
69 if (m_activeColor != DEFAULT) |
65 this->set_color (m_activeColor, false); |
70 set_color (m_activeColor, false); |
66 |
71 |
67 if (m_boldActive) |
72 if (m_boldActive) |
68 m_data << RLINE_OFF_BOLD; |
73 m_data << RLINE_OFF_BOLD; |
69 |
74 |
70 m_final = true; |
75 m_final = true; |
85 } |
90 } |
86 |
91 |
87 if (m_colorCodeStage == 1) |
92 if (m_colorCodeStage == 1) |
88 { |
93 { |
89 if (m_activeColor != DEFAULT) |
94 if (m_activeColor != DEFAULT) |
90 this->set_color (m_activeColor, false); |
95 set_color (m_activeColor, false); |
91 |
96 |
92 if (m_boldActive) |
97 if (m_boldActive) |
93 m_data << RLINE_OFF_BOLD; |
98 m_data << RLINE_OFF_BOLD; |
|
99 |
|
100 // Chars may be in uppercase |
|
101 if (ch >= 'A' and ch <= 'V') |
|
102 ch += 'a' - 'A'; |
94 |
103 |
95 if (ch >= 'a' and ch <= 'v' and ch != 'l') |
104 if (ch >= 'a' and ch <= 'v' and ch != 'l') |
96 { |
105 { |
97 auto colorInfo = g_colorCodes[ch - 'a']; |
106 auto colorInfo = g_colorCodes[ch - 'a']; |
98 m_activeColor = colorInfo.color; |
107 m_activeColor = colorInfo.color; |
99 m_boldActive = colorInfo.bold; |
108 m_boldActive = colorInfo.bold; |
100 assert (m_activeColor < 8); |
109 assert (m_activeColor < 8); |
101 this->set_color (m_activeColor, true); |
110 set_color (m_activeColor, true); |
102 |
111 |
103 if (m_boldActive) |
112 if (m_boldActive) |
104 m_data << RLINE_ON_BOLD; |
113 m_data << RLINE_ON_BOLD; |
105 } |
114 } |
106 |
115 |