xref: /plan9/sys/src/cmd/unix/drawterm/libmemdraw/cmap.c (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
1*7dd7cddfSDavid du Colombier #include "../lib9.h"
2*7dd7cddfSDavid du Colombier 
3*7dd7cddfSDavid du Colombier #include "../libdraw/draw.h"
4*7dd7cddfSDavid du Colombier #include "../libmemdraw/memdraw.h"
5*7dd7cddfSDavid du Colombier 
6*7dd7cddfSDavid du Colombier Memcmap*	memdefcmap;
7*7dd7cddfSDavid du Colombier 
8*7dd7cddfSDavid du Colombier static Memcmap	def;
9*7dd7cddfSDavid du Colombier 
10*7dd7cddfSDavid du Colombier void
11*7dd7cddfSDavid du Colombier memmkcmap(void)
12*7dd7cddfSDavid du Colombier {
13*7dd7cddfSDavid du Colombier 
14*7dd7cddfSDavid du Colombier 	int i, rgb, r, g, b;
15*7dd7cddfSDavid du Colombier 
16*7dd7cddfSDavid du Colombier 	if(memdefcmap)
17*7dd7cddfSDavid du Colombier 		return;
18*7dd7cddfSDavid du Colombier 
19*7dd7cddfSDavid du Colombier 	for(i=0; i<256; i++){
20*7dd7cddfSDavid du Colombier 		rgb = cmap2rgb(i);
21*7dd7cddfSDavid du Colombier 		r = (rgb>>16)&0xff;
22*7dd7cddfSDavid du Colombier 		g = (rgb>>8)&0xff;
23*7dd7cddfSDavid du Colombier 		b = rgb&0xff;
24*7dd7cddfSDavid du Colombier 		def.cmap2rgb[3*i] = r;
25*7dd7cddfSDavid du Colombier 		def.cmap2rgb[3*i+1] = g;
26*7dd7cddfSDavid du Colombier 		def.cmap2rgb[3*i+2] = b;
27*7dd7cddfSDavid du Colombier 	}
28*7dd7cddfSDavid du Colombier 
29*7dd7cddfSDavid du Colombier 	for(r=0; r<16; r++)
30*7dd7cddfSDavid du Colombier 	for(g=0; g<16; g++)
31*7dd7cddfSDavid du Colombier 	for(b=0; b<16; b++)
32*7dd7cddfSDavid du Colombier 		def.rgb2cmap[r*16*16+g*16+b] = rgb2cmap(r*0x11, g*0x11, b*0x11);
33*7dd7cddfSDavid du Colombier 	memdefcmap = &def;
34*7dd7cddfSDavid du Colombier }
35