5 |
|
* Simple median-cut color quantization based on colortab.c |
6 |
|
*/ |
7 |
|
|
8 |
< |
#include "standard.h" |
8 |
> |
#include "copyright.h" |
9 |
|
|
10 |
+ |
#include <string.h> |
11 |
+ |
|
12 |
+ |
#include "standard.h" |
13 |
|
#include "color.h" |
14 |
+ |
|
15 |
|
/* histogram resolution */ |
16 |
|
#define NRED 36 |
17 |
|
#define NGRN 48 |
49 |
|
new_histo(n) /* clear our histogram */ |
50 |
|
int n; |
51 |
|
{ |
52 |
< |
bzero((char *)histo, sizeof(histo)); |
52 |
> |
memset((void *)histo, '\0', sizeof(histo)); |
53 |
|
return(0); |
54 |
|
} |
55 |
|
|
134 |
|
return; |
135 |
|
} |
136 |
|
N = n; |
137 |
< |
bzero((char *)cerr, 3*N*sizeof(short)); |
137 |
> |
memset((void *)cerr, '\0', 3*N*sizeof(short)); |
138 |
|
} |
139 |
|
err[0] = err[1] = err[2] = 0; |
140 |
|
for (x = 0; x < n; x++) { |
173 |
|
} |
174 |
|
/* split box */ |
175 |
|
branch = split(box); |
176 |
< |
bcopy((char *)box, (char *)kb, sizeof(kb)); |
176 |
> |
memcpy((void *)kb, (void *)box, sizeof(kb)); |
177 |
|
/* do left (lesser) branch */ |
178 |
|
kb[prim(branch)][1] = part(branch); |
179 |
|
cut(kb, c0, (c0+c1)>>1); |
257 |
|
for (r = box[RED][0]; r < box[RED][1]; r++) |
258 |
|
for (g = box[GRN][0]; g < box[GRN][1]; g++) |
259 |
|
for (b = box[BLU][0]; b < box[BLU][1]; b++) { |
260 |
< |
if (c = histo[r][g][b]) { |
260 |
> |
if ( (c = histo[r][g][b]) ) { |
261 |
|
n += c; |
262 |
|
sum[RED] += (long)c*r; |
263 |
|
sum[GRN] += (long)c*g; |
341 |
|
if (nl[i][t] == i) { /* add to list */ |
342 |
|
nl[i][t++] = j; |
343 |
|
if (t % NBSIZ == 0) { /* enlarge list */ |
344 |
< |
if ((nnl = realloc(nl[i], t+NBSIZ)) == NULL) |
344 |
> |
if ((nnl = realloc((void *)nl[i], |
345 |
> |
t+NBSIZ)) == NULL) |
346 |
|
t--; |
347 |
|
else |
348 |
|
nl[i] = (BYTE *)nnl; |