move around - flatter.
[profile/ivi/evas.git] / src / lib / engines / common / evas_op_copy / op_copy_mask_color_.c
1
2 /* copy mask x color -> dst */
3
4 #ifdef BUILD_C
5 static void
6 _op_copy_mas_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
7    DATA32 *e = d + l;
8    while (d < e) {
9         l = *m;
10         switch(l)
11           {
12             case 0:
13                 break;
14             case 255:
15                 *d = c;
16                 break;
17             default:
18                 l++;
19                 *d = INTERP_256(l, c, *d);
20                 break;
21           }
22         m++;  d++;
23      }
24 }
25
26 #define _op_copy_mas_cn_dp _op_copy_mas_c_dp
27 #define _op_copy_mas_can_dp _op_copy_mas_c_dp
28 #define _op_copy_mas_caa_dp _op_copy_mas_c_dp
29
30 #define _op_copy_mas_c_dpan _op_copy_mas_c_dp
31 #define _op_copy_mas_cn_dpan _op_copy_mas_c_dpan
32 #define _op_copy_mas_can_dpan _op_copy_mas_c_dpan
33 #define _op_copy_mas_caa_dpan _op_copy_mas_c_dpan
34
35 static void
36 init_copy_mask_color_span_funcs_c(void)
37 {
38    op_copy_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_copy_mas_cn_dp;
39    op_copy_span_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_copy_mas_c_dp;
40    op_copy_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_copy_mas_can_dp;
41    op_copy_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_copy_mas_caa_dp;
42
43    op_copy_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_mas_cn_dpan;
44    op_copy_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_copy_mas_c_dpan;
45    op_copy_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_copy_mas_can_dpan;
46    op_copy_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_copy_mas_caa_dpan;
47 }
48 #endif
49
50 #ifdef BUILD_C
51 static void
52 _op_copy_pt_mas_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
53         *d = INTERP_256(m + 1, c, *d);
54 }
55
56
57 #define _op_copy_pt_mas_cn_dp _op_copy_pt_mas_c_dp
58 #define _op_copy_pt_mas_can_dp _op_copy_pt_mas_c_dp
59 #define _op_copy_pt_mas_caa_dp _op_copy_pt_mas_c_dp
60
61 #define _op_copy_pt_mas_c_dpan _op_copy_pt_mas_c_dp
62 #define _op_copy_pt_mas_cn_dpan _op_copy_pt_mas_c_dpan
63 #define _op_copy_pt_mas_can_dpan _op_copy_pt_mas_c_dpan
64 #define _op_copy_pt_mas_caa_dpan _op_copy_pt_mas_c_dpan
65
66 static void
67 init_copy_mask_color_pt_funcs_c(void)
68 {
69    op_copy_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_copy_pt_mas_cn_dp;
70    op_copy_pt_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_copy_pt_mas_c_dp;
71    op_copy_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_copy_pt_mas_can_dp;
72    op_copy_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_copy_pt_mas_caa_dp;
73
74    op_copy_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_pt_mas_cn_dpan;
75    op_copy_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_copy_pt_mas_c_dpan;
76    op_copy_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_copy_pt_mas_can_dpan;
77    op_copy_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_copy_pt_mas_caa_dpan;
78 }
79 #endif
80
81 /*-----*/
82
83 /* copy_rel mask x color -> dst */
84
85 #ifdef BUILD_C
86 static void
87 _op_copy_rel_mas_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
88    DATA32 *e = d + l;
89    while (d < e) {
90         l = *m;
91         switch(l)
92           {
93             case 0:
94                 break;
95             case 255:
96                 l = 1 + (*d >> 24);
97                 *d = MUL_256(l, c);
98                 break;
99             default:
100               {
101                 DATA32 da = 1 + (*d >> 24);
102                 da = MUL_256(da, c);
103                 l++;
104                 *d = INTERP_256(l, da, *d);
105               }
106                 break;
107           }
108         m++;  d++;
109      }
110 }
111
112
113 #define _op_copy_rel_mas_cn_dp _op_copy_rel_mas_c_dp
114 #define _op_copy_rel_mas_can_dp _op_copy_rel_mas_c_dp
115 #define _op_copy_rel_mas_caa_dp _op_copy_rel_mas_c_dp
116
117 #define _op_copy_rel_mas_c_dpan _op_copy_mas_c_dpan
118 #define _op_copy_rel_mas_cn_dpan _op_copy_mas_cn_dpan
119 #define _op_copy_rel_mas_can_dpan _op_copy_mas_can_dpan
120 #define _op_copy_rel_mas_caa_dpan _op_copy_mas_caa_dpan
121
122 static void
123 init_copy_rel_mask_color_span_funcs_c(void)
124 {
125    op_copy_rel_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_copy_rel_mas_cn_dp;
126    op_copy_rel_span_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_copy_rel_mas_c_dp;
127    op_copy_rel_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_copy_rel_mas_can_dp;
128    op_copy_rel_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_copy_rel_mas_caa_dp;
129
130    op_copy_rel_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_rel_mas_cn_dpan;
131    op_copy_rel_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_copy_rel_mas_c_dpan;
132    op_copy_rel_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_copy_rel_mas_can_dpan;
133    op_copy_rel_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_copy_rel_mas_caa_dpan;
134 }
135 #endif
136
137 #ifdef BUILD_C
138 static void
139 _op_copy_rel_pt_mas_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
140         s = 1 + (*d >> 24);
141         s = MUL_256(s, c);
142         *d = INTERP_256(m + 1, s, *d);
143 }
144
145 #define _op_copy_rel_pt_mas_cn_dp _op_copy_rel_pt_mas_c_dp
146 #define _op_copy_rel_pt_mas_can_dp _op_copy_rel_pt_mas_c_dp
147 #define _op_copy_rel_pt_mas_caa_dp _op_copy_rel_pt_mas_c_dp
148
149 #define _op_copy_rel_pt_mas_c_dpan _op_copy_pt_mas_c_dpan
150 #define _op_copy_rel_pt_mas_cn_dpan _op_copy_pt_mas_cn_dpan
151 #define _op_copy_rel_pt_mas_can_dpan _op_copy_pt_mas_can_dpan
152 #define _op_copy_rel_pt_mas_caa_dpan _op_copy_pt_mas_caa_dpan
153
154 static void
155 init_copy_rel_mask_color_pt_funcs_c(void)
156 {
157    op_copy_rel_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_copy_rel_pt_mas_cn_dp;
158    op_copy_rel_pt_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_copy_rel_pt_mas_c_dp;
159    op_copy_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_copy_rel_pt_mas_can_dp;
160    op_copy_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_copy_rel_pt_mas_caa_dp;
161
162    op_copy_rel_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_rel_pt_mas_cn_dpan;
163    op_copy_rel_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_copy_rel_pt_mas_c_dpan;
164    op_copy_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pt_mas_can_dpan;
165    op_copy_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pt_mas_caa_dpan;
166 }
167 #endif