1 |
– |
/* Copyright (c) 1997 Regents of the University of California */ |
2 |
– |
|
1 |
|
#ifndef lint |
2 |
< |
static char SCCSid[] = "$SunId$ LBL"; |
2 |
> |
static const char RCSid[] = "$Id$"; |
3 |
|
#endif |
6 |
– |
|
4 |
|
/* |
5 |
|
* Input and output conditioning routines for pcond. |
6 |
+ |
* Added white-balance adjustment 10/01 (GW). |
7 |
|
*/ |
8 |
|
|
9 |
|
#include "pcond.h" |
65 |
|
if (nread >= numscans(&inpres)) { |
66 |
|
if (cwarpfile != NULL) |
67 |
|
free3dw(cwarp); |
68 |
< |
free((char *)scanbuf); |
68 |
> |
free((void *)scanbuf); |
69 |
|
return(scanbuf = NULL); |
70 |
|
} |
71 |
|
if (what2do&DO_ACUITY) |
87 |
|
mbscan(scanbuf, scanlen(&inpres), &mbcond); |
88 |
|
else if (cwarpfile != NULL) /* device color space warp */ |
89 |
|
cwscan(scanbuf, scanlen(&inpres), cwarp); |
90 |
< |
else if (lumf == cielum | inprims != outprims) |
90 |
> |
else if ((lumf == cielum) | (inprims != outprims)) |
91 |
|
matscan(scanbuf, scanlen(&inpres), mbcond.cmat); |
92 |
|
nread++; |
93 |
|
return(scanbuf); |
104 |
|
syserror(cwarpfile); |
105 |
|
} else |
106 |
|
if (lumf == rgblum) |
107 |
< |
comprgb2rgbmat(mbcond.cmat, inprims, outprims); |
107 |
> |
comprgb2rgbWBmat(mbcond.cmat, inprims, outprims); |
108 |
|
else |
109 |
< |
compxyz2rgbmat(mbcond.cmat, outprims); |
109 |
> |
compxyz2rgbWBmat(mbcond.cmat, outprims); |
110 |
|
if (what2do&DO_ACUITY) |
111 |
|
initacuity(); |
112 |
|
scanbuf = (COLOR *)malloc(scanlen(&inpres)*sizeof(COLOR)); |
251 |
|
inpflags |= 040; |
252 |
|
else if (!(inpflags & 0100) && |
253 |
|
sscanf(buf, |
254 |
< |
"r = %f*r1 + %f*g1 + %f*b1", |
254 |
> |
"ro = %f*rn + %f*gn + %f*bn", |
255 |
|
&mb->cmat[0][0], &mb->cmat[0][1], |
256 |
|
&mb->cmat[0][2]) == 3) |
257 |
|
inpflags |= 0100; |
258 |
|
else if (!(inpflags & 0200) && |
259 |
|
sscanf(buf, |
260 |
< |
"g = %f*r1 + %f*g1 + %f*b1", |
260 |
> |
"go = %f*rn + %f*gn + %f*bn", |
261 |
|
&mb->cmat[1][0], &mb->cmat[1][1], |
262 |
|
&mb->cmat[1][2]) == 3) |
263 |
|
inpflags |= 0200; |
264 |
|
else if (!(inpflags & 0400) && |
265 |
|
sscanf(buf, |
266 |
< |
"b = %f*r1 + %f*g1 + %f*b1", |
266 |
> |
"bo = %f*rn + %f*gn + %f*bn", |
267 |
|
&mb->cmat[2][0], &mb->cmat[2][1], |
268 |
|
&mb->cmat[2][2]) == 3) |
269 |
|
inpflags |= 0400; |