89
89
90
90
#if __WIN32__
91
91
92
+ // For Windows platform:
93
+ // -t 0 disables color
94
+ // -t 1 enables with white background (default)
95
+ // -t 2 enables with black background
96
+
92
97
#define BACKGROUND_WHITE (BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE | BACKGROUND_INTENSITY)
98
+ #define FOREGROUND_WHITE (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY)
93
99
94
100
#else /* Linux, BSD, Mac OSX */
95
101
133
139
// In recent tests, background is always gray, not white like it should be.
134
140
135
141
136
- #define MAX_T 4
142
+ // Alternative 5:
143
+
144
+ // This uses the 8-color foreground colors like alternative 2, but with a reset background color.
145
+ // For people that prefer dark backgrounds or use terminals with color theming.
146
+
147
+
148
+ // Alternative 6:
149
+
150
+ // This uses the RGB color setting like alternative 1, but with a black background.
137
151
138
- static const char * t_background_white [ MAX_T + 1 ] = { "" , "\e[48;2;255;255;255m" , "\e[48;2;255;255;255m" , "\e[5;47m" , "\e[1;47m" };
152
+ #define MAX_T 6
139
153
140
- static const char * t_black [MAX_T + 1 ] = { "" , "\e[38;2;0;0;0m" , "\e[0;30m" "\e[48;2;255;255;255m" , "\e[0;30m" "\e[5;47m" , "\e[0;30m" "\e[1;47m" };
141
- static const char * t_red [MAX_T + 1 ] = { "" , "\e[38;2;255;0;0m" , "\e[1;31m" "\e[48;2;255;255;255m" , "\e[1;31m" "\e[5;47m" , "\e[1;31m" "\e[1;47m" };
142
- static const char * t_green [MAX_T + 1 ] = { "" , "\e[38;2;0;255;0m" , "\e[1;32m" "\e[48;2;255;255;255m" , "\e[1;32m" "\e[5;47m" , "\e[1;32m" "\e[1;47m" };
143
- static const char * t_dark_green [MAX_T + 1 ]= { "" , "\e[38;2;0;192;0m" , "\e[0;32m" "\e[48;2;255;255;255m" , "\e[0;32m" "\e[5;47m" , "\e[0;32m" "\e[1;47m" };
144
- static const char * t_yellow [MAX_T + 1 ] = { "" , "\e[38;2;255;255;0m" , "\e[1;33m" "\e[48;2;255;255;255m" , "\e[1;33m" "\e[5;47m" , "\e[1;33m" "\e[1;47m" };
145
- static const char * t_blue [MAX_T + 1 ] = { "" , "\e[38;2;0;0;255m" , "\e[1;34m" "\e[48;2;255;255;255m" , "\e[1;34m" "\e[5;47m" , "\e[1;34m" "\e[1;47m" };
146
- static const char * t_magenta [MAX_T + 1 ] = { "" , "\e[38;2;255;0;255m" , "\e[1;35m" "\e[48;2;255;255;255m" , "\e[1;35m" "\e[5;47m" , "\e[1;35m" "\e[1;47m" };
147
- static const char * t_cyan [MAX_T + 1 ] = { "" , "\e[38;2;0;255;255m" , "\e[0;36m" "\e[48;2;255;255;255m" , "\e[0;36m" "\e[5;47m" , "\e[0;36m" "\e[1;47m" };
154
+ static const char * t_background_white [MAX_T + 1 ] = { "" , "\e[48;2;255;255;255m" , "\e[48;2;255;255;255m" , "\e[5;47m" , "\e[1;47m" , "\e[0;49m" , "\e[48;2;0;0;0m" };
155
+
156
+ static const char * t_black [MAX_T + 1 ] = { "" , "\e[38;2;0;0;0m" , "\e[0;30m" "\e[48;2;255;255;255m" , "\e[0;30m" "\e[5;47m" , "\e[0;30m" "\e[1;47m" , "\e[0;49m" "\e[0;39m" , "\e[38;2;255;255;255m" };
157
+ static const char * t_red [MAX_T + 1 ] = { "" , "\e[38;2;255;0;0m" , "\e[1;31m" "\e[48;2;255;255;255m" , "\e[1;31m" "\e[5;47m" , "\e[1;31m" "\e[1;47m" , "\e[0;49m" "\e[1;31m" , "\e[38;2;255;0;0m" };
158
+ static const char * t_green [MAX_T + 1 ] = { "" , "\e[38;2;0;255;0m" , "\e[1;32m" "\e[48;2;255;255;255m" , "\e[1;32m" "\e[5;47m" , "\e[1;32m" "\e[1;47m" , "\e[0;49m" "\e[1;32m" , "\e[38;2;0;255;0m" };
159
+ static const char * t_dark_green [MAX_T + 1 ]= { "" , "\e[38;2;0;192;0m" , "\e[0;32m" "\e[48;2;255;255;255m" , "\e[0;32m" "\e[5;47m" , "\e[0;32m" "\e[1;47m" , "\e[0;49m" "\e[0;32m" , "\e[38;2;0;192;0m" };
160
+ static const char * t_yellow [MAX_T + 1 ] = { "" , "\e[38;2;255;255;0m" , "\e[1;33m" "\e[48;2;255;255;255m" , "\e[1;33m" "\e[5;47m" , "\e[1;33m" "\e[1;47m" , "\e[0;49m" "\e[1;33m" , "\e[38;2;255;255;0m" };
161
+ static const char * t_blue [MAX_T + 1 ] = { "" , "\e[38;2;0;0;255m" , "\e[1;34m" "\e[48;2;255;255;255m" , "\e[1;34m" "\e[5;47m" , "\e[1;34m" "\e[1;47m" , "\e[0;49m" "\e[1;34m" , "\e[38;2;0;0;255m" };
162
+ static const char * t_magenta [MAX_T + 1 ] = { "" , "\e[38;2;255;0;255m" , "\e[1;35m" "\e[48;2;255;255;255m" , "\e[1;35m" "\e[5;47m" , "\e[1;35m" "\e[1;47m" , "\e[0;49m" "\e[1;35m" , "\e[38;2;255;0;255m" };
163
+ static const char * t_cyan [MAX_T + 1 ] = { "" , "\e[38;2;0;255;255m" , "\e[0;36m" "\e[48;2;255;255;255m" , "\e[0;36m" "\e[5;47m" , "\e[0;36m" "\e[1;47m" , "\e[0;49m" "\e[0;36m" , "\e[38;2;0;255;255m" };
148
164
149
165
150
166
/* Clear from cursor to end of screen. */
@@ -179,6 +195,7 @@ void text_color_init (int enable_color)
179
195
180
196
#if __WIN32__
181
197
198
+ g_enable_color = enable_color ;
182
199
183
200
if (g_enable_color != 0 ) {
184
201
@@ -189,6 +206,10 @@ void text_color_init (int enable_color)
189
206
COORD coord ;
190
207
DWORD nwritten ;
191
208
209
+ if (g_enable_color > 1 ) {
210
+ attr = 0 ;
211
+ }
212
+
192
213
h = GetStdHandle (STD_OUTPUT_HANDLE );
193
214
if (h != NULL && h != INVALID_HANDLE_VALUE ) {
194
215
@@ -210,7 +231,7 @@ void text_color_init (int enable_color)
210
231
for (t = 0 ; t <= MAX_T ; t ++ ) {
211
232
text_color_init (t );
212
233
printf ("-t %d" , t );
213
- if (t ) printf (" [white background] " );
234
+ if (t < 5 ) printf (" [white background] " );
214
235
printf ("\n" );
215
236
printf ("%sBlack " , t_black [t ]);
216
237
printf ("%sRed " , t_red [t ]);
@@ -254,34 +275,41 @@ void text_color_set ( enum dw_color_e c )
254
275
return ;
255
276
}
256
277
278
+ WORD info_fg = 0 ;
279
+ WORD background = BACKGROUND_WHITE ;
280
+ if (g_enable_color > 1 ) {
281
+ info_fg = FOREGROUND_WHITE ;
282
+ background = 0 ;
283
+ }
284
+
257
285
switch (c ) {
258
286
259
287
default :
260
288
case DW_COLOR_INFO :
261
- attr = BACKGROUND_WHITE ;
289
+ attr = info_fg | background ;
262
290
break ;
263
291
264
292
case DW_COLOR_ERROR :
265
- attr = FOREGROUND_RED | FOREGROUND_INTENSITY | BACKGROUND_WHITE ;
293
+ attr = FOREGROUND_RED | FOREGROUND_INTENSITY | background ;
266
294
break ;
267
295
268
296
case DW_COLOR_REC :
269
297
// Release 1.6. Dark green, same as for debug.
270
298
// Bright green is too hard to see with white background,
271
299
// attr = FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_WHITE;
272
- attr = FOREGROUND_GREEN | BACKGROUND_WHITE ;
300
+ attr = FOREGROUND_GREEN | background ;
273
301
break ;
274
302
275
303
case DW_COLOR_DECODED :
276
- attr = FOREGROUND_BLUE | FOREGROUND_INTENSITY | BACKGROUND_WHITE ;
304
+ attr = FOREGROUND_BLUE | FOREGROUND_INTENSITY | background ;
277
305
break ;
278
306
279
307
case DW_COLOR_XMIT :
280
- attr = FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY | BACKGROUND_WHITE ;
308
+ attr = FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY | background ;
281
309
break ;
282
310
283
311
case DW_COLOR_DEBUG :
284
- attr = FOREGROUND_GREEN | BACKGROUND_WHITE ;
312
+ attr = FOREGROUND_GREEN | background ;
285
313
break ;
286
314
}
287
315
0 commit comments