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