--- ray/src/util/wrapBSDF.c 2015/02/18 06:18:38 2.9 +++ ray/src/util/wrapBSDF.c 2015/03/25 22:50:48 2.13 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: wrapBSDF.c,v 2.9 2015/02/18 06:18:38 greg Exp $"; +static const char RCSid[] = "$Id: wrapBSDF.c,v 2.13 2015/03/25 22:50:48 greg Exp $"; #endif /* * Wrap BSDF data in valid WINDOW XML file @@ -66,7 +66,8 @@ int nfield_assign = 0; /* data file(s) & spectra */ enum { DTtransForward, DTtransBackward, DTreflForward, DTreflBackward }; -enum { DSsolar=-1, DSnir=-2, DSxbar31=-3, DSvisible=-4, DSzbar31=-5 }; +enum { DSsolar=-1, DSnir=-2, DSxbar31=-3, DSvisible=-4, DSzbar31=-5, + DSuprime=-6, DSvprime=-7 }; #define MAXFILES 20 @@ -159,6 +160,7 @@ input2str(const char *inpspec) fprintf(stderr, "%s: cannot open\n", inpspec); return ""; } +#ifndef _WIN32 /* XXX somehow broken on Windows */ len = lseek(fd, 0L, SEEK_END); if (len > 0) { lseek(fd, 0L, SEEK_SET); @@ -177,6 +179,7 @@ input2str(const char *inpspec) close(fd); return str; } +#endif fp = fdopen(fd, "r"); /* not a regular file */ } /* reading from stream */ @@ -294,14 +297,12 @@ mat_assignments(const char *caller, const char *fn, ez if (xml_input == win6_template) for (i = 0; XMLfieldID[i].nickName[0]; i++) if (XMLfieldID[i].win_need && - !ezxml_txt(ezxml_child(wtl,XMLfieldID[i].fullName))[0]) { + !ezxml_txt(ezxml_child(wtl,XMLfieldID[i].fullName))[0]) fprintf(stderr, - "%s: missing required '%s' assignment for WINDOW <%s>\n", + "%s: warning - missing '%s' assignment for WINDOW <%s>\n", caller, XMLfieldID[i].nickName, XMLfieldID[i].fullName); - return 0; - } - return 1; /* no errors */ + return 1; } /* Complete angle basis specification */ @@ -452,6 +453,16 @@ writeBSDFblock(const char *caller, struct s_dfile *df) puts("\t\tSourceSpectrum>CIE Illuminant D65 1nm.ssp"); puts("\t\tASTM E308 1931 Z.dsp"); break; + case DSuprime: + puts("\t\tCIE-u"); + puts("\t\tSourceSpectrum>CIE Illuminant D65 1nm.ssp"); + puts("\t\tASTM E308 1931 u.dsp"); + break; + case DSvprime: + puts("\t\tCIE-v"); + puts("\t\tSourceSpectrum>CIE Illuminant D65 1nm.ssp"); + puts("\t\tASTM E308 1931 v.dsp"); + break; case DSsolar: puts("\t\tSolar"); puts("\t\tSourceSpectrum>CIE Illuminant D65 1nm.ssp"); @@ -707,7 +718,7 @@ UsageExit(const char *pname) { fputs("Usage: ", stderr); fputs(pname, stderr); - fputs(" [-W][-a {kf|kh|kq|t3|t4}][-u unit][-g geom][-f 'x=string;y=string']", stderr); + fputs(" [-W][-c][-a {kf|kh|kq|t3|t4}][-u unit][-g geom][-f 'x=string;y=string']", stderr); fputs(" [-s spectr][-tb inp][-tf inp][-rb inp][-rf inp]", stderr); fputs(" [input.xml]\n", stderr); exit(1); @@ -833,6 +844,10 @@ main(int argc, char *argv[]) cur_spectrum = DSxbar31; else if (!strcasecmp(argv[i], "CIE-Z")) cur_spectrum = DSzbar31; + else if (!strcasecmp(argv[i], "CIE-u")) + cur_spectrum = DSuprime; + else if (!strcasecmp(argv[i], "CIE-v")) + cur_spectrum = DSvprime; else if (!strcasecmp(argv[i], "NIR")) cur_spectrum = DSnir; else {