#include <u.h> | |
#include <libc.h> | |
#include <draw.h> | |
#include <memdraw.h> | |
/* | |
struct Memcmap | |
{ | |
uchar cmap2rgb[3*256]; | |
uchar rgb2cmap[16*16*16]; | |
}; | |
*/ | |
static Memcmap* | |
mkcmap(void) | |
{ | |
static Memcmap def; | |
int i, rgb, r, g, b; | |
for(i=0; i<256; i++){ | |
rgb = cmap2rgb(i); | |
r = (rgb>>16)&0xff; | |
g = (rgb>>8)&0xff; | |
b = rgb&0xff; | |
def.cmap2rgb[3*i] = r; | |
def.cmap2rgb[3*i+1] = g; | |
def.cmap2rgb[3*i+2] = b; | |
} | |
for(r=0; r<16; r++) | |
for(g=0; g<16; g++) | |
for(b=0; b<16; b++) | |
def.rgb2cmap[r*16*16+g*16+b] = rgb2cmap(r*0x11, g*0x11, b*0x11); | |
return &def; | |
} | |
void | |
main(int argc, char **argv) | |
{ | |
Memcmap *c; | |
int i, j, inferno; | |
inferno = 0; | |
ARGBEGIN{ | |
case 'i': | |
inferno = 1; | |
}ARGEND | |
memimageinit(); | |
c = mkcmap(); | |
if(!inferno) | |
print("#include <u.h>\n#include <libc.h>\n"); | |
else | |
print("#include \"lib9.h\"\n"); | |
print("#include <draw.h>\n"); | |
print("#include <memdraw.h>\n\n"); | |
print("static Memcmap def = {\n"); | |
print("/* cmap2rgb */ {\n"); | |
for(i=0; i<sizeof(c->cmap2rgb); ){ | |
print("\t"); | |
for(j=0; j<16; j++, i++) | |
print("0x%2.2ux,", c->cmap2rgb[i]); | |
print("\n"); | |
} | |
print("},\n"); | |
print("/* rgb2cmap */ {\n"); | |
for(i=0; i<sizeof(c->rgb2cmap);){ | |
print("\t"); | |
for(j=0; j<16; j++, i++) | |
print("0x%2.2ux,", c->rgb2cmap[i]); | |
print("\n"); | |
} | |
print("}\n"); | |
print("};\n"); | |
print("Memcmap *memdefcmap = &def;\n"); | |
print("void _memmkcmap(void){}\n"); | |
exits(0); | |
} |