| 686 |
|
{ |
| 687 |
|
static char spname[128]; |
| 688 |
|
double mult; |
| 689 |
< |
int i; |
| 689 |
> |
int cbeg, cend, i; |
| 690 |
|
|
| 691 |
|
if (!(clr->flags & C_CDSPEC)) { /* not defined spectrally? */ |
| 692 |
|
cvtcolor(radrgb, clr, intensity); |
| 693 |
|
return("void"); |
| 694 |
|
} |
| 695 |
|
setcolor(radrgb, intensity, intensity, intensity); |
| 696 |
+ |
for (cbeg = 0; cbeg < C_CNSS; cbeg++) /* trim zeros off beginning */ |
| 697 |
+ |
if (clr->ssamp[cbeg]) |
| 698 |
+ |
break; |
| 699 |
+ |
if (cbeg >= C_CNSS) /* should never happen! */ |
| 700 |
+ |
return("void"); |
| 701 |
|
if (clr->client_data != NULL) { /* get name if available */ |
| 702 |
|
strcpy(spname, (char *)clr->client_data); |
| 703 |
|
strcat(spname, "*"); /* make sure it's special */ |
| 706 |
|
} else |
| 707 |
|
strcpy(spname, "spec*"); |
| 708 |
|
c_ccvt(clr, C_CSEFF); /* else output spectrum prim */ |
| 709 |
+ |
for (cend = 0; !clr->ssamp[C_CNSS-1-cend]; cend++) |
| 710 |
+ |
; /* trim zeros off end */ |
| 711 |
|
fprintf(matfp, "\nvoid spectrum %s\n0\n0\n", spname); |
| 712 |
< |
fprintf(matfp, "%d %d %d", C_CNSS+2, C_CMINWL, C_CMAXWL); |
| 712 |
> |
fprintf(matfp, "%d %d %d", C_CNSS+2-cbeg-cend, |
| 713 |
> |
C_CMINWL+cbeg*C_CWLI, C_CMAXWL-cend*C_CWLI); |
| 714 |
|
mult = (C_CNSS*c_dfcolor.eff)/(clr->ssum*clr->eff); |
| 715 |
< |
for (i = 0; i < C_CNSS; i++) { |
| 716 |
< |
if (!((i+1)%6)) fputc('\n', matfp); |
| 715 |
> |
for (i = cbeg; i < C_CNSS-cend; i++) { |
| 716 |
> |
if (!((i-cbeg+1)%6)) fputc('\n', matfp); |
| 717 |
|
fprintf(matfp, "\t%.5f", clr->ssamp[i]*mult); |
| 718 |
|
} |
| 719 |
|
fputc('\n', matfp); |