📄 rgbrgbv.c
字号:
#include <u.h>#include <libc.h>#include <draw.h>/* * This version of closest() is now (feb 20, 2001) installed as rgb2cmap in libdraw */intclosest(int cr, int cg, int cb){ int i, r, g, b, sq; ulong rgb; int best, bestsq; best = 0; bestsq = 0x7FFFFFFF; for(i=0; i<256; i++){ rgb = cmap2rgb(i); r = (rgb>>16) & 0xFF; g = (rgb>>8) & 0xFF; b = (rgb>>0) & 0xFF; sq = (r-cr)*(r-cr)+(g-cg)*(g-cg)+(b-cb)*(b-cb); if(sq < bestsq){ bestsq = sq; best = i; } } return best;}voidmain(int argc, char *argv[]){ int i, rgb; int r, g, b; uchar close[16*16*16]; /* rgbmap */ print("uint rgbmap[256] = {\n"); for(i=0; i<256; i++){ if(i%8 == 0) print("\t"); rgb = cmap2rgb(i); r = (rgb>>16) & 0xFF; g = (rgb>>8) & 0xFF; b = (rgb>>0) & 0xFF; print("0x%.6ulX, ", (r<<16) | (g<<8) | b); if(i%8 == 7) print("\n"); } print("};\n\n"); /* closestrgb */ print("uchar closestrgb[16*16*16] = {\n"); for(r=0; r<256; r+=16) for(g=0; g<256; g+=16) for(b=0; b<256; b+=16) close[(b/16)+16*((g/16)+16*(r/16))] = closest(r+8, g+8, b+8); for(i=0; i<16*16*16; i++){ if(i%16 == 0) print("\t"); print("%d,", close[i]); if(i%16 == 15) print("\n"); } print("};\n\n"); exits(nil);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -