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> |
17 |
|
|
17 |
– |
#include "tmprivat.h" |
18 |
– |
#include "resolu.h" |
18 |
|
#ifdef PCOND |
19 |
|
#include "rtprocess.h" |
20 |
|
#endif |
21 |
+ |
#include "tmprivat.h" |
22 |
+ |
#include "resolu.h" |
23 |
|
|
24 |
|
#define GAMTSZ 1024 |
25 |
|
|
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; |