ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cv/mgf2rad.c
(Generate patch)

Comparing ray/src/cv/mgf2rad.c (file contents):
Revision 2.33 by greg, Thu Jan 4 01:55:42 2024 UTC vs.
Revision 2.34 by greg, Fri Jan 5 16:33:36 2024 UTC

# Line 686 | Line 686 | specolor(      /* check if color has spectra and output acc
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 */
# Line 701 | Line 706 | specolor(      /* check if color has spectra and output acc
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);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines