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