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

Comparing ray/src/common/tonemap.c (file contents):
Revision 3.40 by greg, Thu Jan 7 02:13:49 2021 UTC vs.
Revision 3.42 by greg, Thu Jan 7 20:34:45 2021 UTC

# Line 439 | Line 439 | double gamval
439                  double  val = TM_BRES * exp(
440                          ( d + (tms->mbrmin+i)*(1./TM_BRTSCALE) )
441                          / gamval);
442 <                tms->lumap[i] = val >= (double)0xffff ? 0xffff : (int)val;
442 >                tms->lumap[i] = val;
443 >                if (sizeof(TMAP_TYP) == 2 && val >= 0xffff)
444 >                        tms->lumap[i] = 0xffff;
445          }
446          returnOK;
447   }
# Line 497 | Line 499 | double Ldmax
499          if ((histo == NULL) | (cumf == NULL))
500                  returnErr(TM_E_NOMEM);
501          cumf[histlen+1] = 1.;           /* guard for assignment code */
502 <        for (i = histlen; i--; )        /* make malleable copy */
503 <                histo[i] = tms->histo[i];
502 >                                        /* make malleable copy */
503 >        memcpy((MEM_PTR)histo, (MEM_PTR)tms->histo, histlen*sizeof(HIST_TYP));
504          do {                            /* iterate to solution */
505                  sum = 0;                /* cumulative probability */
506                  for (i = 0; i < histlen; i++) {
# Line 563 | Line 565 | int    len
565   )
566   {
567          static const char funcName[] = "tmMapPixels";
568 <        int32   li, pv;
568 >        TMbright        lv;
569 >        TMAP_TYP        li;
570 >        int             pv;
571  
572          if (tms == NULL || tms->lumap == NULL)
573                  returnErr(TM_E_TMINVAL);
574          if ((ps == NULL) | (ls == NULL) | (len < 0))
575                  returnErr(TM_E_ILLEGAL);
576          while (len--) {
577 <                if ((li = *ls++) < tms->mbrmin) {
577 >                if ((lv = *ls++) < tms->mbrmin) {
578                          li = 0;
579                  } else {
580 <                        if (li > tms->mbrmax)
581 <                                li = tms->mbrmax;
582 <                        li = tms->lumap[li - tms->mbrmin];
580 >                        if (lv > tms->mbrmax)
581 >                                lv = tms->mbrmax;
582 >                        li = tms->lumap[lv - tms->mbrmin];
583                  }
584                  if (cs == TM_NOCHROM)
585 <                        *ps++ = li>255 ? 255 : li;
585 >                        *ps++ = li>=TM_BRES ? 255 : (int)(256*li/TM_BRES);
586                  else {
587                          pv = *cs++ * li / tms->cdiv[RED];
588                          *ps++ = pv>255 ? 255 : pv;
# Line 593 | Line 597 | int    len
597  
598  
599   TMstruct *
600 < tmDup(                          /* duplicate top tone mapping */
600 > tmDup(                          /* duplicate tone mapping */
601   TMstruct        *tms
602   )
603   {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines