From ec236059b618dbad4e54a295b94557659435024e Mon Sep 17 00:00:00 2001 From: stanley lieber Date: Mon, 9 May 2011 16:51:12 +0000 Subject: [PATCH] there are no pastel paints in the dungeons and dragons world - rob pike --- sys/src/cmd/rio/wind.c | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/sys/src/cmd/rio/wind.c b/sys/src/cmd/rio/wind.c index f3dc1a777..c6eb2f94a 100644 --- a/sys/src/cmd/rio/wind.c +++ b/sys/src/cmd/rio/wind.c @@ -23,6 +23,7 @@ enum static int topped; static int id; +static int reverse; static Image *cols[NCOL]; static Image *grey; @@ -30,6 +31,7 @@ static Image *darkgrey; static Cursor *lastcursor; static Image *titlecol; static Image *lighttitlecol; +static Image *dholdcol; static Image *holdcol; static Image *lightholdcol; static Image *paleholdcol; @@ -41,19 +43,36 @@ wmk(Image *i, Mousectl *mc, Channel *ck, Channel *cctl, int scrolling) Rectangle r; if(cols[0] == nil){ + /* there are no pastel paints in the dungeons and dragons world + * - rob pike + */ + reverse = 0; + if(getenv("reverse") != nil) + reverse = ~0xFF; + /* greys are multiples of 0x11111100+0xFF, 14* being palest */ - grey = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0xEEEEEEFF); - darkgrey = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0x666666FF); - cols[BACK] = display->white; - cols[HIGH] = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0xCCCCCCFF); + grey = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0xEEEEEEFF^reverse); + darkgrey = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0x666666FF^reverse); + cols[BACK] = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0xFFFFFFFF^reverse); + cols[HIGH] = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0xCCCCCCFF^reverse); cols[BORD] = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0x999999FF); - cols[TEXT] = display->black; - cols[HTEXT] = display->black; - titlecol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DGreygreen); - lighttitlecol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DPalegreygreen); - holdcol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DMedblue); + cols[TEXT] = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0x000000FF^reverse); + cols[HTEXT] = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0x000000FF^reverse); + if(reverse == 0) { + titlecol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DGreygreen); + lighttitlecol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DPalegreygreen); + } else { + titlecol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DPurpleblue); + lighttitlecol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0x666666FF^reverse); + } + dholdcol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DMedblue); lightholdcol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DGreyblue); paleholdcol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DPalegreyblue); + + if(reverse == 0) + holdcol = dholdcol; + else + holdcol = paleholdcol; } w = emalloc(sizeof(Window)); w->screenr = i->r; @@ -700,7 +719,7 @@ wsetcols(Window *w) w->cols[TEXT] = w->cols[HTEXT] = lightholdcol; else if(w == input) - w->cols[TEXT] = w->cols[HTEXT] = display->black; + w->cols[TEXT] = w->cols[HTEXT] = cols[TEXT]; else w->cols[TEXT] = w->cols[HTEXT] = darkgrey; } @@ -1300,7 +1319,6 @@ wclosewin(Window *w) if(hidden[i] == w){ --nhidden; memmove(hidden+i, hidden+i+1, (nhidden-i)*sizeof(hidden[0])); - hidden[nhidden] = nil; break; } for(i=0; i