80
80
fprintf (stderr, "\n");
81
81
fprintf (stderr, "Usage: spec2cie [options] input.ti3 output.ti3\n");
82
82
fprintf (stderr, " -v Verbose mode\n");
83
fprintf (stderr, " -i illum Choose viewing illuminant:\n");
84
fprintf (stderr, " A, C, D50 (def.), D65, F5, F8, F10 or file.sp\n");
83
fprintf (stderr, " -I illum Override actual instrument illuminant in .ti3 file:\n");
84
fprintf (stderr, " A, C, D50, D50M2, D65, F5, F8, F10 or file.sp\n");
85
fprintf (stderr, " (only used in conjunction with -f)\n");
86
fprintf (stderr, " -f [illum] Use Fluorescent Whitening Agent compensation [simulated inst. illum.:\n");
87
fprintf (stderr, " M0, M1, M2, A, C, D50 (def.), D50M2, D65, F5, F8, F10 or file.sp]\n");
88
fprintf (stderr, " -i illum Choose illuminant for computation of CIE XYZ from spectral data & FWA:\n");
89
fprintf (stderr, " A, C, D50 (def.), D50M2, D65, F5, F8, F10 or file.sp\n");
85
90
fprintf (stderr, " -o observ Choose CIE Observer for spectral data:\n");
86
fprintf (stderr, " 1931_2 (def), 1964_10, S&B 1955_2, shaw, J&V 1978_2\n");
87
fprintf (stderr, " -f Use Fluorescent Whitening Agent compensation\n");
88
fprintf (stderr, " -I illum Override instrument illuminant in .ti3 file:\n");
89
fprintf (stderr, " A, C, D50, D65, F5, F8, F10 or file.sp\n");
90
fprintf (stderr, " (only used in conjunction with -f)\n");
91
fprintf (stderr, " 1931_2 (def), 1964_10, S&B 1955_2, shaw, J&V 1978_2\n");
91
92
fprintf (stderr, " -n Don't output spectral values\n");
93
94
fprintf (stderr, " -p Plot each values spectrum\n");
117
118
int ci, mi, yi, ki; /* Indexes of device values */
118
119
int fwacomp = 0; /* FWA compensation */
119
120
int doplot = 0; /* Plot each patches spectrum */
120
xspect cust_illum; /* Custom illumination spectrum */
121
xspect inst_cust_illum; /* Custom illumination spectrum */
122
121
char* illum_str = "D50";
122
icxIllumeType tillum = icxIT_none; /* Target/simulated instrument illuminant */
123
xspect cust_tillum, *tillump = NULL; /* Custom target/simulated illumination spectrum */
123
124
icxIllumeType illum = icxIT_D50; /* Spectral defaults */
125
xspect cust_illum; /* Custom illumination spectrum */
124
126
icxIllumeType inst_illum = icxIT_none; /* Spectral defaults */
127
xspect inst_cust_illum; /* Custom illumination spectrum */
125
128
icxObserverType observ = icxOT_CIE_1931_2;
127
130
int npat; /* Number of patches */
205
/* Spectral Illuminant type */
211
/* FWA comp & simulated instrument illuminant */
212
else if (argv[fa][1] == 'f') {
215
if (na != NULL) { /* Argument is present - target/simulated instr. illum. */
217
if (strcmp(na, "A") == 0
218
|| strcmp(na, "M0") == 0) {
220
} else if (strcmp(na, "C") == 0) {
222
} else if (strcmp(na, "D50") == 0
223
|| strcmp(na, "M1") == 0) {
225
} else if (strcmp(na, "D50M2") == 0
226
|| strcmp(na, "M2") == 0) {
227
tillum = icxIT_D50M2;
228
} else if (strcmp(na, "D65") == 0) {
230
} else if (strcmp(na, "F5") == 0) {
232
} else if (strcmp(na, "F8") == 0) {
234
} else if (strcmp(na, "F10") == 0) {
236
} else { /* Assume it's a filename */
237
tillum = icxIT_custom;
238
if (read_xspect(&cust_tillum, na) != 0)
244
/* CIE tristimulous spectral Illuminant type */
206
245
else if (argv[fa][1] == 'i') {
539
578
/* Create a spectral conversion object */
540
579
if ((sp2cie = new_xsp2cie (illum,
541
580
illum == icxIT_none ? NULL : &cust_illum,
542
observ, NULL, icSigXYZData)) == NULL)
581
observ, NULL, icSigXYZData, icxClamp)) == NULL)
544
583
error ("Creation of spectral conversion object failed");
639
678
error ("Failed to find standard illuminant");
681
/* If we are setting a specific simulated instrument illuminant */
682
if (tillum != icxIT_none) {
683
tillump = &cust_tillum;
684
if (tillum != icxIT_custom) {
685
if (standardIlluminant(tillump, tillum, 0.0)) {
686
error("simulated inst. illum. not recognised");
642
691
/* (Note that sp and mwsp.norm is set to 100.0) */
643
if (sp2cie->set_fwa(sp2cie, &insp, &mwsp))
692
if (sp2cie->set_fwa(sp2cie, &insp, tillump, &mwsp))
644
693
error ("Set FWA on sp2cie failed");