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 }