plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

mkcmap.c (1394B)


      1 #include <u.h>
      2 #include <libc.h>
      3 #include <draw.h>
      4 #include <memdraw.h>
      5 
      6 /*
      7 struct Memcmap
      8 {
      9 	uchar	cmap2rgb[3*256];
     10 	uchar	rgb2cmap[16*16*16];
     11 };
     12 */
     13 
     14 static Memcmap*
     15 mkcmap(void)
     16 {
     17 	static Memcmap def;
     18 
     19 	int i, rgb, r, g, b;
     20 
     21 	for(i=0; i<256; i++){
     22 		rgb = cmap2rgb(i);
     23 		r = (rgb>>16)&0xff;
     24 		g = (rgb>>8)&0xff;
     25 		b = rgb&0xff;
     26 		def.cmap2rgb[3*i] = r;
     27 		def.cmap2rgb[3*i+1] = g;
     28 		def.cmap2rgb[3*i+2] = b;
     29 	}
     30 
     31 	for(r=0; r<16; r++)
     32 	for(g=0; g<16; g++)
     33 	for(b=0; b<16; b++)
     34 		def.rgb2cmap[r*16*16+g*16+b] = rgb2cmap(r*0x11, g*0x11, b*0x11);
     35 	return &def;
     36 }
     37 
     38 void
     39 main(int argc, char **argv)
     40 {
     41 	Memcmap *c;
     42 	int i, j, inferno;
     43 
     44 	inferno = 0;
     45 	ARGBEGIN{
     46 	case 'i':
     47 		inferno = 1;
     48 	}ARGEND
     49 
     50 	memimageinit();
     51 	c = mkcmap();
     52 	if(!inferno)
     53 		print("#include <u.h>\n#include <libc.h>\n");
     54 	else
     55 		print("#include \"lib9.h\"\n");
     56 	print("#include <draw.h>\n");
     57 	print("#include <memdraw.h>\n\n");
     58 	print("static Memcmap def = {\n");
     59 	print("/* cmap2rgb */ {\n");
     60 	for(i=0; i<sizeof(c->cmap2rgb); ){
     61 		print("\t");
     62 		for(j=0; j<16; j++, i++)
     63 			print("0x%2.2ux,", c->cmap2rgb[i]);
     64 		print("\n");
     65 	}
     66 	print("},\n");
     67 	print("/* rgb2cmap */ {\n");
     68 	for(i=0; i<sizeof(c->rgb2cmap);){
     69 		print("\t");
     70 		for(j=0; j<16; j++, i++)
     71 			print("0x%2.2ux,", c->rgb2cmap[i]);
     72 		print("\n");
     73 	}
     74 	print("}\n");
     75 	print("};\n");
     76 	print("Memcmap *memdefcmap = &def;\n");
     77 	print("void _memmkcmap(void){}\n");
     78 	exits(0);
     79 }