-
Notifications
You must be signed in to change notification settings - Fork 4
/
transfo.c
44 lines (38 loc) · 897 Bytes
/
transfo.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
void copy (int w, int h, unsigned char *src, unsigned char *dest)
{
int i,j;
for (i = 0; i < w; i++) {
for (j = 0; j < h; j++) {
dest[j * w + i] = src[j * w + i];
}
}
}
void light(int w, int h, unsigned char *img, unsigned char val)
{
int i,j;
unsigned char current;
for (i = 0; i < w; i++) {
for (j = 0; j < h; j++) {
current = img[j * w + i];
img[j * w + i] = (((int) current + val) > 255) ? 255 : current + val;
}
}
}
void curve(int w, int h, unsigned char *img, unsigned char *lut)
{
int i,j;
unsigned char current;
for (i = 0; i < w; i++) {
for (j = 0; j < h; j++) {
current = img[j * w + i];
img[j * w + i] = lut[current];
}
}
}
void transfo(int w, int h, unsigned char *src,
unsigned char *dest, unsigned char *lut, unsigned char val)
{
copy(w, h, src, dest);
curve(w, h, dest, lut);
light(w, h, dest, val);
}