366 |
|
int i; |
367 |
|
/* allocate BSDF component */ |
368 |
|
sdata = ezxml_txt(ezxml_child(wdb, "WavelengthDataDirection")); |
369 |
< |
if (!strcasecmp(sdata, "Transmission Front")) { |
369 |
> |
if (!strcasecmp(sdata, "Transmission Back") || (sd->tf == NULL && |
370 |
> |
!strcasecmp(sdata, "Transmission Front"))) { |
371 |
|
if (sd->tf != NULL) |
372 |
|
SDfreeSpectralDF(sd->tf); |
373 |
|
if ((sd->tf = SDnewSpectralDF(1)) == NULL) |
374 |
|
return RC_MEMERR; |
375 |
|
df = sd->tf; |
376 |
|
} else if (!strcasecmp(sdata, "Reflection Front")) { |
377 |
< |
if (sd->rf != NULL) |
377 |
< |
SDfreeSpectralDF(sd->rf); |
378 |
< |
if ((sd->rf = SDnewSpectralDF(1)) == NULL) |
379 |
< |
return RC_MEMERR; |
380 |
< |
df = sd->rf; |
381 |
< |
} else if (!strcasecmp(sdata, "Reflection Back")) { |
382 |
< |
if (sd->rb != NULL) |
377 |
> |
if (sd->rb != NULL) /* note back-front reversal */ |
378 |
|
SDfreeSpectralDF(sd->rb); |
379 |
|
if ((sd->rb = SDnewSpectralDF(1)) == NULL) |
380 |
|
return RC_MEMERR; |
381 |
|
df = sd->rb; |
382 |
+ |
} else if (!strcasecmp(sdata, "Reflection Back")) { |
383 |
+ |
if (sd->rf != NULL) /* note front-back reversal */ |
384 |
+ |
SDfreeSpectralDF(sd->rf); |
385 |
+ |
if ((sd->rf = SDnewSpectralDF(1)) == NULL) |
386 |
+ |
return RC_MEMERR; |
387 |
+ |
df = sd->rf; |
388 |
|
} else |
389 |
|
return RC_FAIL; |
390 |
|
/* XXX should also check "ScatteringDataType" for consistency? */ |