9fans.net/go@v0.0.5/draw/memdraw/mkcmap.go (about)

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