source: soft/giet_vm/applications/rosenfeld/nrc2/include/nrmacro.h @ 798

Last change on this file since 798 was 772, checked in by meunier, 9 years ago
  • Ajout de l'application rosenfeld
  • Changement du nom du flag O_CREATE en O_CREAT
File size: 5.2 KB
Line 
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
14extern "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__
Note: See TracBrowser for help on using the repository browser.