diff options
author | Ron Yorston <rmy@pobox.com> | 2021-02-04 11:04:52 +0000 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2021-02-04 11:04:52 +0000 |
commit | 4fb71406b884c6ac0a9a4d2acf7a32b544611f70 (patch) | |
tree | c8ea1930942dab12277f1d413e3098af23f43906 | |
parent | b032d8024e45eb84d21b8798cca8655b6366f01e (diff) | |
download | busybox-w32-4fb71406b884c6ac0a9a4d2acf7a32b544611f70.tar.gz busybox-w32-4fb71406b884c6ac0a9a4d2acf7a32b544611f70.tar.bz2 busybox-w32-4fb71406b884c6ac0a9a4d2acf7a32b544611f70.zip |
winansi: tweak colour mapping
-rw-r--r-- | win32/winansi.c | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/win32/winansi.c b/win32/winansi.c index eda65e62d..da3c977f0 100644 --- a/win32/winansi.c +++ b/win32/winansi.c | |||
@@ -275,22 +275,17 @@ static char *process_fg_24bit(char *str, WORD *attr) | |||
275 | } while (*(str-1) == ';' && count < 3); | 275 | } while (*(str-1) == ';' && count < 3); |
276 | 276 | ||
277 | *attr &= ~(FOREGROUND_ALL|FOREGROUND_INTENSITY); | 277 | *attr &= ~(FOREGROUND_ALL|FOREGROUND_INTENSITY); |
278 | if (val[0] > 127) { | 278 | if (val[0] > 85) |
279 | *attr |= FOREGROUND_RED; | 279 | *attr |= FOREGROUND_RED; |
280 | ++bright; | 280 | if (val[1] > 85) |
281 | } | ||
282 | if (val[1] > 127) { | ||
283 | *attr |= FOREGROUND_GREEN; | 281 | *attr |= FOREGROUND_GREEN; |
284 | ++bright; | 282 | if (val[2] > 85) |
285 | } | ||
286 | if (val[2] > 127) { | ||
287 | *attr |= FOREGROUND_BLUE; | 283 | *attr |= FOREGROUND_BLUE; |
288 | ++bright; | ||
289 | } | ||
290 | 284 | ||
291 | /* increase intensity if all components are either bright or | 285 | /* increase intensity if all components are either bright or |
292 | * dark and at least one is bright */ | 286 | * dark and at least one is bright */ |
293 | dark = (val[0] <= 63) + (val[1] <= 63) + (val[2] <= 63); | 287 | dark = (val[0] <= 85) + (val[1] <= 85) + (val[2] <= 85); |
288 | bright = (val[0] > 171) + (val[1] > 171) + (val[2] > 171); | ||
294 | if (bright + dark == 3 && dark != 3) { | 289 | if (bright + dark == 3 && dark != 3) { |
295 | *attr |= FOREGROUND_INTENSITY; | 290 | *attr |= FOREGROUND_INTENSITY; |
296 | } | 291 | } |
@@ -339,22 +334,17 @@ static char *process_fg_8bit(char *str, WORD *attr) | |||
339 | g = val / 6 % 6; | 334 | g = val / 6 % 6; |
340 | b = val % 6; | 335 | b = val % 6; |
341 | 336 | ||
342 | if (r >= 3) { | 337 | if (r > 1) |
343 | *attr |= FOREGROUND_RED; | 338 | *attr |= FOREGROUND_RED; |
344 | ++bright; | 339 | if (g > 1) |
345 | } | ||
346 | if (g >= 3) { | ||
347 | *attr |= FOREGROUND_GREEN; | 340 | *attr |= FOREGROUND_GREEN; |
348 | ++bright; | 341 | if (b > 1) |
349 | } | ||
350 | if (b >= 3) { | ||
351 | *attr |= FOREGROUND_BLUE; | 342 | *attr |= FOREGROUND_BLUE; |
352 | ++bright; | ||
353 | } | ||
354 | 343 | ||
355 | /* increase intensity if all components are either bright or | 344 | /* increase intensity if all components are either bright or |
356 | * dark and at least one is bright */ | 345 | * dark and at least one is bright */ |
357 | dark = (r <= 1) + (g <= 1) + (b <= 1); | 346 | dark = (r <= 1) + (g <= 1) + (b <= 1); |
347 | bright = (r >= 4) + (g >= 4) + (b >= 4); | ||
358 | if (bright + dark == 3 && dark != 3) { | 348 | if (bright + dark == 3 && dark != 3) { |
359 | *attr |= FOREGROUND_INTENSITY; | 349 | *attr |= FOREGROUND_INTENSITY; |
360 | } | 350 | } |