12 |
|
#include "copyright.h" |
13 |
|
|
14 |
|
#include <stdio.h> |
15 |
+ |
#include <stdlib.h> |
16 |
|
#include <math.h> |
17 |
|
#include "tmprivat.h" |
18 |
|
#include "tmerrmsg.h" |
180 |
|
#endif |
181 |
|
return(TM_NOBRT); |
182 |
|
d = TM_BRTSCALE*log(lum); |
183 |
< |
if (d > 0.) |
183 |
< |
return((TMbright)(d+.5)); |
184 |
< |
return((TMbright)(d-.5)); |
183 |
> |
return((TMbright)(d + .5 - (d < 0.))); |
184 |
|
} |
185 |
|
|
186 |
|
|
418 |
|
} |
419 |
|
|
420 |
|
|
422 |
– |
static int |
423 |
– |
tmNewMap( /* allocate new tone-mapping array */ |
424 |
– |
TMstruct *tms |
425 |
– |
) |
426 |
– |
{ |
427 |
– |
if (tms->lumap != NULL && (tms->mbrmax - tms->mbrmin) != |
428 |
– |
(tms->hbrmax - tms->hbrmin)) { |
429 |
– |
free((MEM_PTR)tms->lumap); |
430 |
– |
tms->lumap = NULL; |
431 |
– |
} |
432 |
– |
tms->mbrmin = tms->hbrmin; |
433 |
– |
tms->mbrmax = tms->hbrmax; |
434 |
– |
if (tms->mbrmin > tms->mbrmax) |
435 |
– |
return 0; |
436 |
– |
if (tms->lumap == NULL) |
437 |
– |
tms->lumap = (unsigned short *)malloc(sizeof(unsigned short)* |
438 |
– |
(tms->mbrmax-tms->mbrmin+1)); |
439 |
– |
return(tms->lumap != NULL); |
440 |
– |
} |
441 |
– |
|
442 |
– |
|
421 |
|
int |
422 |
|
tmFixedMapping( /* compute fixed, linear tone-mapping */ |
423 |
|
TMstruct *tms, |
593 |
|
} |
594 |
|
|
595 |
|
|
618 |
– |
|
619 |
– |
|
596 |
|
TMstruct * |
597 |
|
tmDup( /* duplicate top tone mapping */ |
598 |
|
TMstruct *tms |
667 |
|
tmMesofact[i-BMESLOWER] = 256. * |
668 |
|
(tmLuminance(i) - LMESLOWER) / |
669 |
|
(LMESUPPER - LMESLOWER); |
670 |
+ |
} |
671 |
+ |
|
672 |
+ |
|
673 |
+ |
int |
674 |
+ |
tmNewMap( /* allocate new tone-mapping array */ |
675 |
+ |
TMstruct *tms |
676 |
+ |
) |
677 |
+ |
{ |
678 |
+ |
if (tms->lumap != NULL && (tms->mbrmax - tms->mbrmin) != |
679 |
+ |
(tms->hbrmax - tms->hbrmin)) { |
680 |
+ |
free((MEM_PTR)tms->lumap); |
681 |
+ |
tms->lumap = NULL; |
682 |
+ |
} |
683 |
+ |
tms->mbrmin = tms->hbrmin; |
684 |
+ |
tms->mbrmax = tms->hbrmax; |
685 |
+ |
if (tms->mbrmin > tms->mbrmax) |
686 |
+ |
return 0; |
687 |
+ |
if (tms->lumap == NULL) |
688 |
+ |
tms->lumap = (unsigned short *)malloc(sizeof(unsigned short)* |
689 |
+ |
(tms->mbrmax-tms->mbrmin+1)); |
690 |
+ |
return(tms->lumap != NULL); |
691 |
|
} |
692 |
|
|
693 |
|
|