xref: /inferno-os/libtk/colrs.c (revision f94b359d339cfcefb3725fe7c0e78211443815b4)
137da2899SCharles.Forsyth #include "lib9.h"
237da2899SCharles.Forsyth #include "draw.h"
337da2899SCharles.Forsyth #include "tk.h"
437da2899SCharles.Forsyth 
537da2899SCharles.Forsyth #define RGB(R,G,B) ((R<<24)|(G<<16)|(B<<8)|(0xff))
637da2899SCharles.Forsyth 
737da2899SCharles.Forsyth enum
837da2899SCharles.Forsyth {
937da2899SCharles.Forsyth 	tkBackR		= 0xdd,		/* Background base color */
1037da2899SCharles.Forsyth 	tkBackG 	= 0xdd,
1137da2899SCharles.Forsyth 	tkBackB 	= 0xdd,
1237da2899SCharles.Forsyth 
1337da2899SCharles.Forsyth 	tkSelectR	= 0xb0,		/* Check box selected color */
1437da2899SCharles.Forsyth 	tkSelectG	= 0x30,
1537da2899SCharles.Forsyth 	tkSelectB	= 0x60,
1637da2899SCharles.Forsyth 
1737da2899SCharles.Forsyth 	tkSelectbgndR	= 0x40,		/* Selected item background */
1837da2899SCharles.Forsyth 	tkSelectbgndG	= 0x40,
1937da2899SCharles.Forsyth 	tkSelectbgndB	= 0x40
2037da2899SCharles.Forsyth };
2137da2899SCharles.Forsyth 
2237da2899SCharles.Forsyth typedef struct Coltab Coltab;
2337da2899SCharles.Forsyth struct Coltab {
2437da2899SCharles.Forsyth 	int	c;
2537da2899SCharles.Forsyth 	ulong rgba;
2637da2899SCharles.Forsyth 	int shade;
2737da2899SCharles.Forsyth };
2837da2899SCharles.Forsyth 
2937da2899SCharles.Forsyth static Coltab coltab[] =
3037da2899SCharles.Forsyth {
3137da2899SCharles.Forsyth 	TkCbackgnd,
3237da2899SCharles.Forsyth 		RGB(tkBackR, tkBackG, tkBackB),
3337da2899SCharles.Forsyth 		TkSameshade,
3437da2899SCharles.Forsyth 	TkCbackgndlght,
3537da2899SCharles.Forsyth 		RGB(tkBackR, tkBackG, tkBackB),
3637da2899SCharles.Forsyth 		TkLightshade,
3737da2899SCharles.Forsyth 	TkCbackgnddark,
3837da2899SCharles.Forsyth 		RGB(tkBackR, tkBackG, tkBackB),
3937da2899SCharles.Forsyth 		TkDarkshade,
4037da2899SCharles.Forsyth 	TkCactivebgnd,
4137da2899SCharles.Forsyth 		RGB(tkBackR+0x10, tkBackG+0x10, tkBackB+0x10),
4237da2899SCharles.Forsyth 		TkSameshade,
4337da2899SCharles.Forsyth 	TkCactivebgndlght,
4437da2899SCharles.Forsyth 		RGB(tkBackR+0x10, tkBackG+0x10, tkBackB+0x10),
4537da2899SCharles.Forsyth 		TkLightshade,
4637da2899SCharles.Forsyth 	TkCactivebgnddark,
4737da2899SCharles.Forsyth 		RGB(tkBackR+0x10, tkBackG+0x10, tkBackB+0x10),
4837da2899SCharles.Forsyth 		TkDarkshade,
4937da2899SCharles.Forsyth 	TkCactivefgnd,
5037da2899SCharles.Forsyth 		RGB(0, 0, 0),
5137da2899SCharles.Forsyth 		TkSameshade,
5237da2899SCharles.Forsyth 	TkCforegnd,
5337da2899SCharles.Forsyth 		RGB(0, 0, 0),
5437da2899SCharles.Forsyth 		TkSameshade,
5537da2899SCharles.Forsyth 	TkCselect,
5637da2899SCharles.Forsyth 		RGB(tkSelectR, tkSelectG, tkSelectB),
5737da2899SCharles.Forsyth 		TkSameshade,
5837da2899SCharles.Forsyth 	TkCselectbgnd,
5937da2899SCharles.Forsyth 		RGB(tkSelectbgndR, tkSelectbgndG, tkSelectbgndB),
6037da2899SCharles.Forsyth 		TkSameshade,
6137da2899SCharles.Forsyth 	TkCselectbgndlght,
6237da2899SCharles.Forsyth 		RGB(tkSelectbgndR, tkSelectbgndG, tkSelectbgndB),
6337da2899SCharles.Forsyth 		TkLightshade,
6437da2899SCharles.Forsyth 	TkCselectbgnddark,
6537da2899SCharles.Forsyth 		RGB(tkSelectbgndR, tkSelectbgndG, tkSelectbgndB),
6637da2899SCharles.Forsyth 		TkDarkshade,
6737da2899SCharles.Forsyth 	TkCselectfgnd,
6837da2899SCharles.Forsyth 		RGB(0xff, 0xff, 0xff),
6937da2899SCharles.Forsyth 		TkSameshade,
7037da2899SCharles.Forsyth 	TkCdisablefgnd,
7137da2899SCharles.Forsyth 		RGB(0x88, 0x88, 0x88),
7237da2899SCharles.Forsyth 		TkSameshade,
7337da2899SCharles.Forsyth 	TkChighlightfgnd,
7437da2899SCharles.Forsyth 		RGB(0, 0, 0),
7537da2899SCharles.Forsyth 		TkSameshade,
76*f94b359dSforsyth 	TkCtransparent,
77*f94b359dSforsyth 		DTransparent,
78*f94b359dSforsyth 		TkSameshade,
7937da2899SCharles.Forsyth 	-1,
8037da2899SCharles.Forsyth };
8137da2899SCharles.Forsyth 
8237da2899SCharles.Forsyth void
tksetenvcolours(TkEnv * env)8337da2899SCharles.Forsyth tksetenvcolours(TkEnv *env)
8437da2899SCharles.Forsyth {
8537da2899SCharles.Forsyth 	Coltab *c;
8637da2899SCharles.Forsyth 
8737da2899SCharles.Forsyth 	c = &coltab[0];
8837da2899SCharles.Forsyth 	while(c->c != -1) {
8937da2899SCharles.Forsyth 		env->colors[c->c] = tkrgbashade(c->rgba, c->shade);
9037da2899SCharles.Forsyth 		env->set |= (1<<c->c);
9137da2899SCharles.Forsyth 		c++;
9237da2899SCharles.Forsyth 	}
9337da2899SCharles.Forsyth }
94