10 |
|
|
11 |
|
#include "color.h" |
12 |
|
|
13 |
+ |
#define CEPS 1e-7 /* color epsilon */ |
14 |
|
|
15 |
+ |
|
16 |
|
RGBPRIMS stdprims = STDPRIMS; /* standard primary chromaticities */ |
17 |
|
|
18 |
|
COLOR cblack = BLKCOLOR; /* global black color */ |
153 |
|
vv = 1.; /* check each limit */ |
154 |
|
for (i = 0; i < 3; i++) |
155 |
|
if (gamut & CGAMUT_LOWER && col[i] < lower[i]) { |
156 |
< |
v = (lower[i] - cgry[i])/(col[i] - cgry[i]); |
156 |
> |
v = (lower[i]+CEPS - cgry[i])/(col[i] - cgry[i]); |
157 |
|
if (v < vv) vv = v; |
158 |
|
rflags |= CGAMUT_LOWER; |
159 |
|
} else if (gamut & CGAMUT_UPPER && col[i] > upper[i]) { |
160 |
< |
v = (upper[i] - cgry[i])/(col[i] - cgry[i]); |
160 |
> |
v = (upper[i]-CEPS - cgry[i])/(col[i] - cgry[i]); |
161 |
|
if (v < vv) vv = v; |
162 |
|
rflags |= CGAMUT_UPPER; |
163 |
|
} |
172 |
|
register COLORMAT mat; |
173 |
|
register COLOR c1, c2; |
174 |
|
{ |
175 |
< |
c2[0] = mat[0][0]*c1[0] + mat[0][1]*c1[1] + mat[0][2]*c1[2]; |
176 |
< |
c2[1] = mat[1][0]*c1[0] + mat[1][1]*c1[1] + mat[1][2]*c1[2]; |
177 |
< |
c2[2] = mat[2][0]*c1[0] + mat[2][1]*c1[1] + mat[2][2]*c1[2]; |
175 |
> |
COLOR cout; |
176 |
> |
|
177 |
> |
cout[0] = mat[0][0]*c1[0] + mat[0][1]*c1[1] + mat[0][2]*c1[2]; |
178 |
> |
cout[1] = mat[1][0]*c1[0] + mat[1][1]*c1[1] + mat[1][2]*c1[2]; |
179 |
> |
cout[2] = mat[2][0]*c1[0] + mat[2][1]*c1[1] + mat[2][2]*c1[2]; |
180 |
> |
|
181 |
> |
copycolor(c2, cout); |
182 |
|
} |
183 |
|
|
184 |
|
|