| 10 |
|
#include "copyright.h" |
| 11 |
|
|
| 12 |
|
#include <stdio.h> |
| 13 |
+ |
#include <stdlib.h> |
| 14 |
|
#include <string.h> |
| 15 |
|
#include <math.h> |
| 16 |
|
#include <time.h> |
| 90 |
|
li = cd->clfb[RED]*cmon[RED] + |
| 91 |
|
cd->clfb[GRN]*cmon[GRN] + |
| 92 |
|
cd->clfb[BLU]*cmon[BLU] ; |
| 93 |
< |
if (li >= 0xff00) li = 255; |
| 94 |
< |
else li >>= 8; |
| 95 |
< |
if (li <= 0) { |
| 96 |
< |
bi = TM_NOBRT; /* bogus value */ |
| 97 |
< |
li = 1; /* avoid li==0 */ |
| 98 |
< |
} else { |
| 99 |
< |
bi = BRT2SCALE(cmon[EXP]-COLXS) + |
| 100 |
< |
logi[li] + cd->inpsfb; |
| 93 |
> |
if (li >= 0xfff00) li = 255; |
| 94 |
> |
else li >>= 12; |
| 95 |
> |
bi = BRT2SCALE(cmon[EXP]-COLXS) + cd->inpsfb; |
| 96 |
> |
if (li > 0) |
| 97 |
> |
bi += logi[li]; |
| 98 |
> |
else { |
| 99 |
> |
bi += logi[0]; |
| 100 |
> |
li = 1; /* avoid /0 */ |
| 101 |
|
} |
| 102 |
|
ls[i] = bi; |
| 103 |
|
if (cs == TM_NOCHROM) /* no color? */ |
| 124 |
|
for (j = 3; j--; ) |
| 125 |
|
if (cmon[j] < 0) cmon[j] = 0; |
| 126 |
|
} |
| 127 |
< |
bi = ( (int32)GAMTSZ*cd->clfb[RED]*cmon[RED]/li ) >> 8; |
| 127 |
> |
bi = ( (int32)GAMTSZ*cd->clfb[RED]*cmon[RED]/li ) >> 12; |
| 128 |
|
cs[3*i ] = bi>=GAMTSZ ? 255 : cd->gamb[bi]; |
| 129 |
< |
bi = ( (int32)GAMTSZ*cd->clfb[GRN]*cmon[GRN]/li ) >> 8; |
| 129 |
> |
bi = ( (int32)GAMTSZ*cd->clfb[GRN]*cmon[GRN]/li ) >> 12; |
| 130 |
|
cs[3*i+1] = bi>=GAMTSZ ? 255 : cd->gamb[bi]; |
| 131 |
< |
bi = ( (int32)GAMTSZ*cd->clfb[BLU]*cmon[BLU]/li ) >> 8; |
| 131 |
> |
bi = ( (int32)GAMTSZ*cd->clfb[BLU]*cmon[BLU]/li ) >> 12; |
| 132 |
|
cs[3*i+2] = bi>=GAMTSZ ? 255 : cd->gamb[bi]; |
| 133 |
|
} |
| 134 |
|
returnOK; |
| 432 |
|
|
| 433 |
|
cd = (COLRDATA *)tms->pd[colrReg]; |
| 434 |
|
for (i = 3; i--; ) |
| 435 |
< |
cd->clfb[i] = 0x100*tms->clf[i] + .5; |
| 436 |
< |
d = TM_BRTSCALE*log(tms->inpsf); |
| 436 |
< |
cd->inpsfb = d<0. ? d-.5 : d+.5; |
| 435 |
> |
cd->clfb[i] = 0x1000*tms->clf[i] + .5; |
| 436 |
> |
cd->inpsfb = tmCvLuminance(tms->inpsf); |
| 437 |
|
for (i = 3; i--; ) |
| 438 |
|
for (j = 3; j--; ) { |
| 439 |
|
d = tms->cmat[i][j] / tms->inpsf; |