-
Notifications
You must be signed in to change notification settings - Fork 0
/
loadstrlut.c
67 lines (60 loc) · 1.22 KB
/
loadstrlut.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "pc2d.h"
void LoadStrLut (int dsp)
{
DSPINFO *d;
UINT1 *lut;
int i,j;
double fmin,fmax,dn;
double slope;
d = &GBLdsp.d[dsp];
for (i=0; i<3; i++) {
if (i == 0) {
fmin = d->rmin;
fmax = d->rmax;
lut = d->rlut;
}
else if (i == 1) {
fmin = d->gmin;
fmax = d->gmax;
lut = d->glut;
}
else {
fmin = d->bmin;
fmax = d->bmax;
lut = d->blut;
}
if (d->f.type != 3) {
fmin = (fmin - d->f.scale[0]) / d->f.scale[1];
fmax = (fmax - d->f.scale[0]) / d->f.scale[1];
}
if (d->f.type == 1) {
if (fmax == fmin) {
slope = VALID_MAX4;
}
else {
slope = (254 - 1) / (fmax - fmin);
}
for (j=0; j<=255; j++) {
dn = slope * (j - fmin) + 1.0;
if (dn < 0) dn = 0;
if (dn > 255) dn = 255;
lut[j] = dn;
}
}
else if (d->f.type == 2) {
if (fmax == fmin) {
slope = VALID_MAX4;
}
else {
slope = (254 - 1) / (fmax - fmin);
}
for (j=-32768; j<=32767; j++) {
dn = slope * (j - fmin) + 1;
if (dn < 0) dn = 0;
if (dn > 255) dn = 255;
lut[j+32768] = dn;
}
}
}
return;
}