1 | /* ----------------- */ |
---|
2 | /* --- nrmacro.h --- */ |
---|
3 | /* ----------------- */ |
---|
4 | |
---|
5 | /* |
---|
6 | * Copyright (c) 2000-2014, Lionel Lacassagne, All rights reserved |
---|
7 | * Univ Paris Sud XI, CNRS |
---|
8 | */ |
---|
9 | |
---|
10 | #ifndef __NRMACRO_H__ |
---|
11 | #define __NRMACRO_H__ |
---|
12 | |
---|
13 | #ifdef __cplusplus |
---|
14 | extern "C" { |
---|
15 | #endif |
---|
16 | |
---|
17 | #define RGB32CAST8(s,d) d.r=(uint8)s.r; d.g=(uint8)s.g; d.b=(uint8)s.b |
---|
18 | #define RGBX32CAST8(s,d) d.r=(uint8)s.r; d.g=(uint8)s.g; d.b=(uint8)s.b; d.x=(uint8)s.x |
---|
19 | |
---|
20 | #define RGB32_RGB8(s,d) d.r=(uint8)s.r; d.g=(uint8)s.g; d.b=(uint8)s.b |
---|
21 | #define RGBX32_RGBX8(s,d) d.r=(uint8)s.r; d.g=(uint8)s.g; d.b=(uint8)s.b; d.x=(uint8)s.x |
---|
22 | |
---|
23 | #define RGB8_NOT(s,d) d.r=!s.r; d.g=!s.g; d.b=!s.b |
---|
24 | #define RGB8_OR(s1,s2,d) d.r=s1.r|s2.r; d.g=s1.g|s2.g; d.b=s1.b|s2.b |
---|
25 | #define RGB8_XOR(s1,s2,d) d.r=s1.r^s2.r; d.g=s1.g^s2.g; d.b=s1.b^s2.b |
---|
26 | #define RGB8_AND(s1,s2,d) d.r=s1.r&s2.r; d.g=s1.g&s2.g; d.b=s1.b&s2.b |
---|
27 | #define RGB8_NAND(s1,s2,d) d.r=!(s1.r&s2.r); d.g=!(s1.g&s2.g); d.b=!(s1.b&s2.b) |
---|
28 | |
---|
29 | #define RGBX8_NOT(s,d) d.r=~s.r; d.g=~s.g; d.b=~s.b; d.x=~s.x |
---|
30 | #define RGBX8_OR(s1,s2,d) d.r=s1.r|s2.r; d.g=s1.g|s2.g; d.b=s1.b|s2.b; d.x=s1.x|s2.x |
---|
31 | #define RGBX8_XOR(s1,s2,d) d.r=s1.r^s2.r; d.g=s1.g^s2.g; d.b=s1.b^s2.b; d.x=s1.x^s2.x |
---|
32 | #define RGBX8_AND(s1,s2,d) d.r=s1.r&s2.r; d.g=s1.g&s2.g; d.b=s1.b&s2.b; d.x=s1.x&s2.x |
---|
33 | #define RGBX8_NAND(s1,s2,d) d.r=!(s1.r&s2.r); d.g=!(s1.g&s2.g); d.b=!(s1.b&s2.b); d.x=!(s1.x&s2.x) |
---|
34 | |
---|
35 | #define RGB8_ZERO(s) s.r=0; s.g=0; s.b=0 |
---|
36 | #define RGBX8_ZERO(s) s.r=0; s.g=0; s.b=0; s.x=0 |
---|
37 | |
---|
38 | #define RGB8_NEG(s,d) d.r=-s.r; d.g=-s.g; d.b=-s.b |
---|
39 | #define RGBX8_NEG(s,d) d.r=-s.r; d.g=-s.g; d.b=-s.b; d.x=-s.x |
---|
40 | |
---|
41 | #define RGB8_ABS(s,d) d.r=abs(s.r); d.g=abs(s.g); d.b=abs(s.b) |
---|
42 | #define RGBX8_ABS(s,d) d.r=abs(s.r); d.g=abs(s.g); d.b=abs(s.b); d.x=abs(s.x) |
---|
43 | |
---|
44 | #define RGB8_SAT(s, sat, d) if(s.r>sat.r) d.r=sat.r; if(s.g>sat.g) d.g=sat.g; if(s.b>sat.b) d.b=sat.b |
---|
45 | #define RGB8_SATK(s, sat, d) if(s.r>sat) d.r=sat; if(s.g>sat) d.g=sat; if(s.b>sat) d.b=sat; |
---|
46 | |
---|
47 | #define RGBX8_SAT(s, sat, d) if(s.r>sat.r) d.r=sat.r; if(s.g>sat.g) d.g=sat.g; if(s.b>sat.b) d.b=sat.b; if(s.x>sat.x) s.x=sat.x |
---|
48 | #define RGBX8_SATK(s, sat, d) if(s.r>sat) d.r=sat; if(s.g>sat) d.g=sat; if(s.b>sat) d.b=sat; if(s.x>sat) s.x=sat |
---|
49 | |
---|
50 | #define RGB8_ADD(s1,s2,d) d.r=s1.r+s2.r; d.g=s1.g+s2.g; d.b=s1.b+s2.b |
---|
51 | #define RGB8_SUB(s1,s2,d) d.r=s1.r-s2.r; d.g=s1.g-s2.g; d.b=s1.b-s2.b |
---|
52 | #define RGB8_MUL(s1,s2,d) d.r=s1.r*s2.r; d.g=s1.g*s2.g; d.b=s1.b*s2.b |
---|
53 | #define RGB8_DIV(s1,s2,d) d.r=s1.r/s2.r; d.g=s1.g/s2.g; d.b=s1.b/s2.b |
---|
54 | |
---|
55 | #define RGBX8_ADD(s1,s2,d) d.r=s1.r+s2.r; d.g=s1.g+s2.g; d.b=s1.b+s2.b; d.x=s1.x+s2.x |
---|
56 | #define RGBX8_SUB(s1,s2,d) d.r=s1.r-s2.r; d.g=s1.g-s2.g; d.b=s1.b-s2.b; d.x=s1.x-s2.x |
---|
57 | #define RGBX8_MUL(s1,s2,d) d.r=s1.r*s2.r; d.g=s1.g*s2.g; d.b=s1.b*s2.b; d.x=s1.x*s2.x |
---|
58 | #define RGBX8_DIV(s1,s2,d) d.r=s1.r/s2.r; d.g=s1.g/s2.g; d.b=s1.b/s2.b; d.x=s1.x/s2.x |
---|
59 | |
---|
60 | #define RGB8_ADDK(s,c,d) d.r=s.r+c; d.g=s.g+c; d.b=s.b+c |
---|
61 | #define RGB8_SUBK(s,c,d) d.r=s.r-c; d.g=s.g-c; d.b=s.b-c |
---|
62 | #define RGB8_MULK(s,c,d) d.r=s.r*c; d.g=s.g*c; d.b=s.b*c |
---|
63 | #define RGB8_DIVK(s,c,d) d.r=s.r/c; d.g=s.g/c; d.b=s.b/c |
---|
64 | |
---|
65 | #define RGB8_DUP(s,d) d.r=s.r; d.g=s.g; d.b=s.b |
---|
66 | #define RGB8_SET(s,d) d.r=s.r; d.g=s.g; d.b=s.b |
---|
67 | #define RGB8_SETNEG(s,d) d.r=-s.r; d.g=-s.g; d.b=-s.b |
---|
68 | |
---|
69 | #define RGB8_ACC(s,d) d.r+=s.r; d.g+=s.g; d.b+=s.b |
---|
70 | #define RGB8_SCC(s,d) d.r-=s.r; d.g-=s.g; d.b-=s.b |
---|
71 | |
---|
72 | #define RGB8_MUL2(s, d) d.r=s.r<<1; d.g=s.g<<1; d.b=s.b<<1 |
---|
73 | #define RGB8_MUL4(s, d) d.r=s.r<<2; d.g=s.g<<2; d.b=s.b<<2 |
---|
74 | #define RGB8_MUL6(s, d) d.r=6*s.r; d.g=6*s.g; d.b=6*s.b |
---|
75 | |
---|
76 | #define RGB8_MAC(s,c,d) d.r+=c*s.r; d.g+=c*s.g;d.b+=c*s.b |
---|
77 | |
---|
78 | #define RGB8_MAC2(s, d) d.r+=s.r<<1; d.g+=s.g<<1; d.b+=s.b<<1 |
---|
79 | #define RGB8_MAC4(s, d) d.r+=s.r<<2; d.g+=s.g<<2; d.b+=s.b<<2 |
---|
80 | #define RGB8_MAC6(s, d) d.r+=6*s.r; d.g+=6*s.g; d.b+=6*s.b |
---|
81 | |
---|
82 | #define RGB8_MSC(s,c,d) d.r-=c*s.r; d.g-=c*s.g;d.b-=c*s.b |
---|
83 | |
---|
84 | #define RGB8_MSC2(s, d) d.r-=s.r<<1; d.g-=s.g<<1; d.b-=s.b<<1 |
---|
85 | #define RGB8_MSC4(s, d) d.r-=s.r<<2; d.g-=s.g<<2; d.b-=s.b<<2 |
---|
86 | #define RGB8_MSC6(s, d) d.r-=6*s.r; d.g-=6*s.g; d.b-=6*s.b |
---|
87 | |
---|
88 | #define RGB8_DIV2(s, d) d.r=s.r>>1; d.g=s.g>>1; d.b=s.b>>1 |
---|
89 | #define RGB8_DIV4(s, d) d.r=s.r>>2; d.g=s.g>>2; d.b=s.b>>2 |
---|
90 | |
---|
91 | #define RGB8_MULFRAC(s, a, b, d) d.r=(a.r*s.r)/b.r; d.g=(a.g*s.g)/b.g; d.b=(a.b*s.b)/b.b |
---|
92 | #define RGB8_MULFRACK(s, a, b, d) d.r=(a*s.r)/b; d.g=(a*s.g)/b; d.b=(a*s.b)/b |
---|
93 | |
---|
94 | #define RGBX8_MULFRAC(s, a, b, d) d.r=(a.r*s.r)/b.r; d.g=(a.g*s.g)/b.g; d.b=(a.b*s.b)/b.b; d.x=(a.x*s.x)/b.x |
---|
95 | #define RGBX8_MULFRACK(s, a, b, d) d.r=(a*s.r)/b; d.g=(a*s.g)/b; d.b=(a*s.b)/b; d.x=(a*s.x)/b |
---|
96 | |
---|
97 | #define RGB8_MULSHIFT(s, a, n, d) d.r=(a.r*s.r)>>n.r; d.g=(a.g*s.g)>>n.g; d.b=(a.b*s.b)>>n.b |
---|
98 | #define RGBX8_MULSHIFT(s, a, n, d) d.r=(a.r*s.r)>>n.r; d.g=(a.g*s.g)>>n.g; d.b=(a.b*s.b)>>n.b; d.x=(a.x*s.x)>>n.x |
---|
99 | |
---|
100 | #define RGB8_MULSHIFTK(s, a, n, d) d.r=(a*s.r)>>n; d.g=(a*s.g)>>n; d.b=(a*s.b)>>n |
---|
101 | #define RGBX8_MULSHIFTK(s, a, n, d) d.r=(a*s.r)>>n; d.g=(a*s.g)>>n; d.b=(a*s.b)>>n; d.x=(a*s.x)>>n |
---|
102 | |
---|
103 | |
---|
104 | #define RGB8_LSHIFT(s, n, d) d.r=s.r<<n; d.g=s.g<<n; d.b=s.b<<n |
---|
105 | #define RGB8_RSHIFT(s, n, d) d.r=s.r>>n; d.g=s.g>>n; d.b=s.b>>n |
---|
106 | |
---|
107 | #define RGB8_RR5(x0, x1, x2, x3, x4) x0=x1; x1=x2; x2=x3; x3=x4 |
---|
108 | |
---|
109 | #define RGB8_monoLUT(s, lut, d) d.r=lut[s.r]; d.g=lut[s.g]; d.b=lut[s.b]; |
---|
110 | #define RGB8_colorLUT(s, lut, d) d.r=lut[s.r].r; d.g=lut[s.g].g; d.b=lut[s.b].b; |
---|
111 | |
---|
112 | #ifdef __cplusplus |
---|
113 | } |
---|
114 | #endif |
---|
115 | |
---|
116 | #endif // __NRMACRO_H__ |
---|