41 |
|
static char *wrapBSDF[MAXCARG] = {"wrapBSDF", "-W", "-UU"}; |
42 |
|
static int wbsdfac = 3; |
43 |
|
|
44 |
< |
/* Add argument to wrapBSDF, allocating space if isstatic */ |
44 |
> |
/* Add argument to wrapBSDF, allocating space if !isstatic */ |
45 |
|
static void |
46 |
|
add_wbsdf(const char *arg, int isstatic) |
47 |
|
{ |
203 |
|
sum += sdv.cieY; |
204 |
|
if (rbf_colorimetry == RBCtristimulus) { |
205 |
|
c_ccvt(&sdv.spec, C_CSXY); |
206 |
< |
xsum += sdv.cieY*sdv.spec.cx; |
207 |
< |
ysum += sdv.cieY*sdv.spec.cy; |
206 |
> |
xsum += sdv.cieY * sdv.spec.cx; |
207 |
> |
ysum += sdv.cieY * sdv.spec.cy; |
208 |
|
} |
209 |
|
} |
210 |
|
fprintf(cfp[CIE_Y], "\t%.3e\n", sum/npsamps); |
211 |
|
if (rbf_colorimetry == RBCtristimulus) { |
212 |
< |
fprintf(cfp[CIE_X], "\t%3e\n", xsum*sum/(npsamps*ysum)); |
213 |
< |
fprintf(cfp[CIE_Z], "\t%3e\n", |
212 |
> |
fprintf(cfp[CIE_X], "\t%.3e\n", xsum*sum/(npsamps*ysum)); |
213 |
> |
fprintf(cfp[CIE_Z], "\t%.3e\n", |
214 |
|
(sum - xsum - ysum)*sum/(npsamps*ysum)); |
215 |
|
} |
216 |
|
} |
253 |
|
sum += sdv.cieY; |
254 |
|
if (rbf_colorimetry == RBCtristimulus) { |
255 |
|
c_ccvt(&sdv.spec, C_CSXY); |
256 |
< |
xsum += sdv.cieY*sdv.spec.cx; |
257 |
< |
ysum += sdv.cieY*sdv.spec.cy; |
256 |
> |
xsum += sdv.cieY * sdv.spec.cx; |
257 |
> |
ysum += sdv.cieY * sdv.spec.cy; |
258 |
|
} |
259 |
|
} |
260 |
|
fprintf(cfp[CIE_Y], "\t%.3e\n", sum/npsamps); |
261 |
|
if (rbf_colorimetry == RBCtristimulus) { |
262 |
< |
fprintf(cfp[CIE_X], "\t%3e\n", xsum*sum/(npsamps*ysum)); |
263 |
< |
fprintf(cfp[CIE_Z], "\t%3e\n", |
262 |
> |
fprintf(cfp[CIE_X], "\t%.3e\n", xsum*sum/(npsamps*ysum)); |
263 |
> |
fprintf(cfp[CIE_Z], "\t%.3e\n", |
264 |
|
(sum - xsum - ysum)*sum/(npsamps*ysum)); |
265 |
|
} |
266 |
|
} |
302 |
|
sum += sdv.cieY; |
303 |
|
if (rbf_colorimetry == RBCtristimulus) { |
304 |
|
c_ccvt(&sdv.spec, C_CSXY); |
305 |
< |
xsum += sdv.cieY*sdv.spec.cx; |
306 |
< |
ysum += sdv.cieY*sdv.spec.cy; |
305 |
> |
xsum += sdv.cieY * sdv.spec.cx; |
306 |
> |
ysum += sdv.cieY * sdv.spec.cy; |
307 |
|
} |
308 |
|
} |
309 |
|
fprintf(cfp[CIE_Y], "\t%.3e\n", sum/npsamps); |
310 |
|
if (rbf_colorimetry == RBCtristimulus) { |
311 |
< |
fprintf(cfp[CIE_X], "\t%3e\n", xsum*sum/(npsamps*ysum)); |
312 |
< |
fprintf(cfp[CIE_Z], "\t%3e\n", |
311 |
> |
fprintf(cfp[CIE_X], "\t%.3e\n", xsum*sum/(npsamps*ysum)); |
312 |
> |
fprintf(cfp[CIE_Z], "\t%.3e\n", |
313 |
|
(sum - xsum - ysum)*sum/(npsamps*ysum)); |
314 |
|
} |
315 |
|
} |
332 |
|
if ((bsd.tb != NULL) | (bsd.tf != NULL)) { |
333 |
|
input_orient = -1; output_orient = 1; |
334 |
|
cfp[CIE_Y] = open_component_file(CIE_Y); |
335 |
< |
if (bsd.tb != NULL && bsd.tb->comp[0].cspec[2].flags) { |
336 |
< |
rbf_colorimetry = RBCtristimulus; |
335 |
> |
if (bsd.tb != NULL) |
336 |
> |
rbf_colorimetry = bsd.tb->comp[0].cspec[2].flags |
337 |
> |
? RBCtristimulus : RBCphotopic ; |
338 |
> |
if (rbf_colorimetry == RBCtristimulus) { |
339 |
|
cfp[CIE_X] = open_component_file(CIE_X); |
340 |
|
cfp[CIE_Z] = open_component_file(CIE_Z); |
341 |
< |
} else |
340 |
< |
rbf_colorimetry = RBCphotopic; |
341 |
> |
} |
342 |
|
for (j = 0; j < abp->nangles; j++) { |
343 |
|
for (i = 0; i < abp->nangles; i++) { |
344 |
|
sum = 0; /* average over patches */ |
352 |
|
sum += sdv.cieY; |
353 |
|
if (rbf_colorimetry == RBCtristimulus) { |
354 |
|
c_ccvt(&sdv.spec, C_CSXY); |
355 |
< |
xsum += sdv.cieY*sdv.spec.cx; |
356 |
< |
ysum += sdv.cieY*sdv.spec.cy; |
355 |
> |
xsum += sdv.cieY * sdv.spec.cx; |
356 |
> |
ysum += sdv.cieY * sdv.spec.cy; |
357 |
|
} |
358 |
|
} |
359 |
|
fprintf(cfp[CIE_Y], "\t%.3e\n", sum/npsamps); |
360 |
|
if (rbf_colorimetry == RBCtristimulus) { |
361 |
< |
fprintf(cfp[CIE_X], "\t%3e\n", xsum*sum/(npsamps*ysum)); |
362 |
< |
fprintf(cfp[CIE_Z], "\t%3e\n", |
361 |
> |
fprintf(cfp[CIE_X], "\t%.3e\n", xsum*sum/(npsamps*ysum)); |
362 |
> |
fprintf(cfp[CIE_Z], "\t%.3e\n", |
363 |
|
(sum - xsum - ysum)*sum/(npsamps*ysum)); |
364 |
|
} |
365 |
|
} |
470 |
|
|
471 |
|
eval_rbfcol(&sdv, rbf, vout); |
472 |
|
sum += sdv.cieY; |
473 |
< |
if (XZarr != NULL) { |
473 |
> |
if (rbf_colorimetry == RBCtristimulus) { |
474 |
|
c_ccvt(&sdv.spec, C_CSXY); |
475 |
< |
xsum += sdv.cieY*sdv.spec.cx; |
476 |
< |
ysum += sdv.cieY*sdv.spec.cy; |
475 |
> |
xsum += sdv.cieY * sdv.spec.cx; |
476 |
> |
ysum += sdv.cieY * sdv.spec.cy; |
477 |
|
} |
478 |
|
} |
479 |
|
n = j*abp->nangles + i; |
480 |
< |
bsdfarr[n] = sum / (double)npsamps; |
481 |
< |
if (XZarr != NULL) { |
480 |
> |
bsdfarr[n] = sum / npsamps; |
481 |
> |
if (rbf_colorimetry == RBCtristimulus) { |
482 |
|
XZarr[n][0] = xsum*sum/(npsamps*ysum); |
483 |
|
XZarr[n][1] = (sum - xsum - ysum)*sum/(npsamps*ysum); |
484 |
|
} |
520 |
|
} |
521 |
|
} |
522 |
|
|
523 |
< |
#ifdef _WIN32 |
523 |
> |
#if defined(_WIN32) || defined(_WIN64) |
524 |
|
/* Execute wrapBSDF command (may never return) */ |
525 |
|
static int |
526 |
|
wrap_up(void) |