Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature-vt/sys/src/cmd/jpg/rgbrgbv.c – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
#include <draw.h>
4
 
5
/*
6
 * This version of closest() is now (feb 20, 2001) installed as rgb2cmap in libdraw
7
 */
8
 
9
int
10
closest(int cr, int cg, int cb)
11
{
12
	int i, r, g, b, sq;
13
	ulong rgb;
14
	int best, bestsq;
15
 
16
	best = 0;
17
	bestsq = 0x7FFFFFFF;
18
	for(i=0; i<256; i++){
19
		rgb = cmap2rgb(i);
20
		r = (rgb>>16) & 0xFF;
21
		g = (rgb>>8) & 0xFF;
22
		b = (rgb>>0) & 0xFF;
23
		sq = (r-cr)*(r-cr)+(g-cg)*(g-cg)+(b-cb)*(b-cb);
24
		if(sq < bestsq){
25
			bestsq = sq;
26
			best = i;
27
		}
28
	}
29
	return best;
30
}
31
 
32
void
33
main(int argc, char *argv[])
34
{
35
	int i, rgb;
36
	int r, g, b;
37
	uchar close[16*16*16];
38
 
39
	/* rgbmap */
40
	print("uint rgbmap[256] = {\n");
41
	for(i=0; i<256; i++){
42
		if(i%8 == 0)
43
			print("\t");
44
		rgb = cmap2rgb(i);
45
		r = (rgb>>16) & 0xFF;
46
		g = (rgb>>8) & 0xFF;
47
		b = (rgb>>0) & 0xFF;
48
		print("0x%.6ulX, ", (r<<16) | (g<<8) | b);
49
		if(i%8 == 7)
50
			print("\n");
51
	}
52
	print("};\n\n");
53
 
54
	/* closestrgb */
55
	print("uchar closestrgb[16*16*16] = {\n");
56
	for(r=0; r<256; r+=16)
57
	for(g=0; g<256; g+=16)
58
	for(b=0; b<256; b+=16)
59
		close[(b/16)+16*((g/16)+16*(r/16))] = closest(r+8, g+8, b+8);
60
	for(i=0; i<16*16*16; i++){
61
		if(i%16 == 0)
62
			print("\t");
63
		print("%d,", close[i]);
64
		if(i%16 == 15)
65
			print("\n");
66
	}
67
	print("};\n\n");
68
	exits(nil);
69
}