From 4fb71406b884c6ac0a9a4d2acf7a32b544611f70 Mon Sep 17 00:00:00 2001 From: Ron Yorston Date: Thu, 4 Feb 2021 11:04:52 +0000 Subject: winansi: tweak colour mapping --- win32/winansi.c | 28 +++++++++------------------- 1 file 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) } while (*(str-1) == ';' && count < 3); *attr &= ~(FOREGROUND_ALL|FOREGROUND_INTENSITY); - if (val[0] > 127) { + if (val[0] > 85) *attr |= FOREGROUND_RED; - ++bright; - } - if (val[1] > 127) { + if (val[1] > 85) *attr |= FOREGROUND_GREEN; - ++bright; - } - if (val[2] > 127) { + if (val[2] > 85) *attr |= FOREGROUND_BLUE; - ++bright; - } /* increase intensity if all components are either bright or * dark and at least one is bright */ - dark = (val[0] <= 63) + (val[1] <= 63) + (val[2] <= 63); + dark = (val[0] <= 85) + (val[1] <= 85) + (val[2] <= 85); + bright = (val[0] > 171) + (val[1] > 171) + (val[2] > 171); if (bright + dark == 3 && dark != 3) { *attr |= FOREGROUND_INTENSITY; } @@ -339,22 +334,17 @@ static char *process_fg_8bit(char *str, WORD *attr) g = val / 6 % 6; b = val % 6; - if (r >= 3) { + if (r > 1) *attr |= FOREGROUND_RED; - ++bright; - } - if (g >= 3) { + if (g > 1) *attr |= FOREGROUND_GREEN; - ++bright; - } - if (b >= 3) { + if (b > 1) *attr |= FOREGROUND_BLUE; - ++bright; - } /* increase intensity if all components are either bright or * dark and at least one is bright */ dark = (r <= 1) + (g <= 1) + (b <= 1); + bright = (r >= 4) + (g >= 4) + (b >= 4); if (bright + dark == 3 && dark != 3) { *attr |= FOREGROUND_INTENSITY; } -- cgit v1.2.3-55-g6feb