Blob
1 #include <u.h>2 #include <libc.h>3 #include <draw.h>4 #include <memdraw.h>6 /*7 struct Memcmap8 {9 uchar cmap2rgb[3*256];10 uchar rgb2cmap[16*16*16];11 };12 */14 static Memcmap*15 mkcmap(void)16 {17 static Memcmap def;19 int i, rgb, r, g, b;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 }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 }38 void39 main(int argc, char **argv)40 {41 Memcmap *c;42 int i, j, inferno;44 inferno = 0;45 ARGBEGIN{46 case 'i':47 inferno = 1;48 }ARGEND50 memimageinit();51 c = mkcmap();52 if(!inferno)53 print("#include <u.h>\n#include <libc.h>\n");54 else55 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 }