Fix 256-colours-match-xterm, based on 256colres.pl from xterm-205.
authorben <ben@cda61777-01e9-0310-a592-d414129be87e>
Thu, 13 Oct 2005 21:56:43 +0000 (21:56 +0000)
committerben <ben@cda61777-01e9-0310-a592-d414129be87e>
Thu, 13 Oct 2005 21:56:43 +0000 (21:56 +0000)
Largely untested -- may not even compile on Windows.

git-svn-id: svn://svn.tartarus.org/sgt/putty@6393 cda61777-01e9-0310-a592-d414129be87e

macosx/osxwin.m
unix/gtkwin.c
windows/window.c

index f3cba03..e534c90 100644 (file)
@@ -986,10 +986,11 @@ void palette_reset(void *frontend)
     for (i = 0; i < NEXTCOLOURS; i++) {
        if (i < 216) {
            int r = i / 36, g = (i / 6) % 6, b = i % 6;
-           [win setColour:i+16 r:r/5.0 g:g/5.0 b:b/5.0];
+           r = r ? r*40+55 : 0; g = g ? b*40+55 : 0; b = b ? b*40+55 : 0;
+           [win setColour:i+16 r:r/255.0 g:g/255.0 b:b/255.0];
        } else {
            int shade = i - 216;
-           float fshade = (shade + 1) / (float)(NEXTCOLOURS - 216 + 1);
+           float fshade = (shade * 10 + 8) / 255.0;
            [win setColour:i+16 r:fshade g:fshade b:fshade];
        }
     }
index f969b04..6818fff 100644 (file)
@@ -1407,12 +1407,12 @@ void palette_reset(void *frontend)
     for (i = 0; i < NEXTCOLOURS; i++) {
        if (i < 216) {
            int r = i / 36, g = (i / 6) % 6, b = i % 6;
-           inst->cols[i+16].red = r * 0x3333;
-           inst->cols[i+16].green = g * 0x3333;
-           inst->cols[i+16].blue = b * 0x3333;
+           inst->cols[i+16].red = r ? r * 0x2828 + 0x3737 : 0;
+           inst->cols[i+16].green = g ? g * 0x2828 + 0x3737 : 0;
+           inst->cols[i+16].blue = b ? b + 0x2828 + 0x3737 : 0;
        } else {
            int shade = i - 216;
-           shade = (shade + 1) * 0xFFFF / (NEXTCOLOURS - 216 + 1);
+           shade = shade * 0x0a0a + 0x0808;
            inst->cols[i+16].red = inst->cols[i+16].green =
                inst->cols[i+16].blue = shade;
        }
index 7133493..0bd800f 100644 (file)
@@ -1135,12 +1135,12 @@ static void cfgtopalette(void)
     for (i = 0; i < NEXTCOLOURS; i++) {
        if (i < 216) {
            int r = i / 36, g = (i / 6) % 6, b = i % 6;
-           defpal[i+16].rgbtRed = r * 0x33;
-           defpal[i+16].rgbtGreen = g * 0x33;
-           defpal[i+16].rgbtBlue = b * 0x33;
+           defpal[i+16].rgbtRed = r ? r * 40 + 55 : 0;
+           defpal[i+16].rgbtGreen = g ? g * 40 + 55 : 0;
+           defpal[i+16].rgbtBlue = b ? b * 40 + 55 : 0;
        } else {
            int shade = i - 216;
-           shade = (shade + 1) * 0xFF / (NEXTCOLOURS - 216 + 1);
+           shade = shade * 10 + 8;
            defpal[i+16].rgbtRed = defpal[i+16].rgbtGreen =
                defpal[i+16].rgbtBlue = shade;
        }