1 |
< |
/* Copyright (c) 1989 Regents of the University of California */ |
1 |
> |
/* Copyright (c) 1992 Regents of the University of California */ |
2 |
|
|
3 |
|
#ifndef lint |
4 |
|
static char SCCSid[] = "$SunId$ LBL"; |
33 |
|
(int)(colval(c,p)*256.) : 255 ] |
34 |
|
/* color partition tree */ |
35 |
|
#define CNODE short |
36 |
< |
#define set_branch(p,c) ((c)<<2|(p)) |
36 |
> |
#define set_branch(p,c) ((c)<<2|(p)) |
37 |
|
#define set_pval(pv) ((pv)<<2|3) |
38 |
|
#define is_branch(cn) (((cn)&3)!=3) |
39 |
|
#define is_pval(cn) (((cn)&3)==3) |
53 |
|
/* histogram of colors used */ |
54 |
|
static unsigned short histo[NRED][NGRN][NBLU]; |
55 |
|
/* initial color cube boundary */ |
56 |
< |
static int CLRCUBE[3][2] = {0,NRED,0,NGRN,0,NBLU}; |
56 |
> |
static int CLRCUBE[3][2] = {{0,NRED},{0,NGRN},{0,NBLU}}; |
57 |
|
|
58 |
+ |
static int split(), cut(); |
59 |
|
|
60 |
+ |
|
61 |
|
int |
62 |
|
new_ctab(ncolors) /* start new color table with max ncolors */ |
63 |
|
int ncolors; |
130 |
|
(g-clrtab[h].ent[GRN])*(g-clrtab[h].ent[GRN]) + |
131 |
|
(b-clrtab[h].ent[BLU])*(b-clrtab[h].ent[BLU]) > MAXDST2) { |
132 |
|
clrtab[h].ent[RED] = r; |
133 |
< |
clrtab[h].ent[GRN] = g; /* reassign pixel */ |
133 |
> |
clrtab[h].ent[GRN] = g; /* reassign pixel */ |
134 |
|
clrtab[h].ent[BLU] = b; |
135 |
|
#ifdef DEBUG |
136 |
|
sprintf(errmsg, "pixel %d = (%d,%d,%d) (%d refs)\n", |
144 |
|
|
145 |
|
|
146 |
|
make_gmap(gam) /* make gamma correction map */ |
147 |
< |
double gam; |
147 |
> |
double gam; |
148 |
|
{ |
147 |
– |
extern double pow(); |
149 |
|
register int i; |
150 |
|
|
151 |
|
for (i = 0; i < 256; i++) |
207 |
|
#define c0 r |
208 |
|
register int r, g, b; |
209 |
|
int pri; |
210 |
< |
int t[HMAX], med; |
210 |
> |
long t[HMAX], med; |
211 |
|
/* find dominant axis */ |
212 |
|
pri = RED; |
213 |
|
if (box[GRN][1]-box[GRN][0] > box[pri][1]-box[pri][0]) |