move around - flatter.
[profile/ivi/evas.git] / src / lib / engines / common / evas_op_copy / op_copy_pixel_color_.c
1
2 /* copy pixel x color --> dst */
3
4 #ifdef BUILD_C
5 static void
6 _op_copy_p_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
7    DATA32 *e = d + l;
8    while (d < e) {
9         *d = MUL4_SYM(c, *s);
10         d++;
11         s++;
12      }
13 }
14
15 static void
16 _op_copy_p_caa_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
17    DATA32 *e = d + l;
18    c = 1 + (c >> 24);
19    while (d < e) {
20         *d = MUL_256(c, *s);
21         d++;
22         s++;
23      }
24 }
25
26
27 #define _op_copy_pas_c_dp _op_copy_p_c_dp
28 #define _op_copy_pan_c_dp _op_copy_p_c_dp
29 #define _op_copy_p_can_dp _op_copy_p_c_dp
30 #define _op_copy_pas_can_dp _op_copy_p_can_dp
31 #define _op_copy_pan_can_dp _op_copy_p_c_dp
32 #define _op_copy_pas_caa_dp _op_copy_p_caa_dp
33 #define _op_copy_pan_caa_dp _op_copy_p_caa_dp
34
35 #define _op_copy_p_c_dpan _op_copy_p_c_dp
36 #define _op_copy_pas_c_dpan _op_copy_pas_c_dp
37 #define _op_copy_pan_c_dpan _op_copy_pan_c_dp
38 #define _op_copy_p_can_dpan _op_copy_p_can_dp
39 #define _op_copy_pas_can_dpan _op_copy_pas_can_dp
40 #define _op_copy_pan_can_dpan _op_copy_pan_can_dp
41 #define _op_copy_p_caa_dpan _op_copy_p_caa_dp
42 #define _op_copy_pas_caa_dpan _op_copy_pas_caa_dp
43 #define _op_copy_pan_caa_dpan _op_copy_pan_caa_dp
44
45 static void
46 init_copy_pixel_color_span_funcs_c(void)
47 {
48    op_copy_span_funcs[SP][SM_N][SC][DP][CPU_C] = _op_copy_p_c_dp;
49    op_copy_span_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_copy_pas_c_dp;
50    op_copy_span_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_copy_pan_c_dp;
51    op_copy_span_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_copy_p_can_dp;
52    op_copy_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_copy_pas_can_dp;
53    op_copy_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_copy_pan_can_dp;
54    op_copy_span_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_copy_p_caa_dp;
55    op_copy_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_copy_pas_caa_dp;
56    op_copy_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_copy_pan_caa_dp;
57
58    op_copy_span_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_copy_p_c_dpan;
59    op_copy_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_copy_pas_c_dpan;
60    op_copy_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_copy_pan_c_dpan;
61    op_copy_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_p_can_dpan;
62    op_copy_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_pas_can_dpan;
63    op_copy_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_pan_can_dpan;
64    op_copy_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_p_caa_dpan;
65    op_copy_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_pas_caa_dpan;
66    op_copy_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_pan_caa_dpan;
67 }
68 #endif
69
70 #ifdef BUILD_C
71 static void
72 _op_copy_pt_p_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
73         *d = MUL4_SYM(c, s);
74 }
75
76 static void
77 _op_copy_pt_p_caa_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
78         *d = MUL_SYM(c >> 24, s);
79 }
80
81
82 #define _op_copy_pt_p_can_dp _op_copy_pt_p_c_dp
83 #define _op_copy_pt_pan_c_dp _op_copy_pt_p_c_dp
84 #define _op_copy_pt_pan_can_dp _op_copy_pt_p_c_dp
85 #define _op_copy_pt_pan_caa_dp _op_copy_pt_p_caa_dp
86 #define _op_copy_pt_pas_c_dp _op_copy_pt_p_c_dp
87 #define _op_copy_pt_pas_can_dp _op_copy_pt_p_can_dp
88 #define _op_copy_pt_pas_caa_dp _op_copy_pt_p_caa_dp
89
90 #define _op_copy_pt_p_c_dpan _op_copy_pt_p_c_dp
91 #define _op_copy_pt_pas_c_dpan _op_copy_pt_pas_c_dp
92 #define _op_copy_pt_pan_c_dpan _op_copy_pt_pan_c_dp
93 #define _op_copy_pt_p_can_dpan _op_copy_pt_p_can_dp
94 #define _op_copy_pt_pas_can_dpan _op_copy_pt_pas_can_dp
95 #define _op_copy_pt_pan_can_dpan _op_copy_pt_pan_can_dp
96 #define _op_copy_pt_p_caa_dpan _op_copy_pt_p_caa_dp
97 #define _op_copy_pt_pas_caa_dpan _op_copy_pt_pas_caa_dp
98 #define _op_copy_pt_pan_caa_dpan _op_copy_pt_pan_caa_dp
99
100 static void
101 init_copy_pixel_color_pt_funcs_c(void)
102 {
103    op_copy_pt_funcs[SP][SM_N][SC][DP][CPU_C] = _op_copy_pt_p_c_dp;
104    op_copy_pt_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_copy_pt_pas_c_dp;
105    op_copy_pt_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_copy_pt_pan_c_dp;
106    op_copy_pt_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_copy_pt_p_can_dp;
107    op_copy_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_copy_pt_pas_can_dp;
108    op_copy_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_copy_pt_pan_can_dp;
109    op_copy_pt_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_copy_pt_p_caa_dp;
110    op_copy_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_copy_pt_pas_caa_dp;
111    op_copy_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_copy_pt_pan_caa_dp;
112
113    op_copy_pt_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_copy_pt_p_c_dpan;
114    op_copy_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_copy_pt_pas_c_dpan;
115    op_copy_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_copy_pt_pan_c_dpan;
116    op_copy_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_pt_p_can_dpan;
117    op_copy_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_pt_pas_can_dpan;
118    op_copy_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_pt_pan_can_dpan;
119    op_copy_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_pt_p_caa_dpan;
120    op_copy_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_pt_pas_caa_dpan;
121    op_copy_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_pt_pan_caa_dpan;
122 }
123 #endif
124
125 /*-----*/
126
127 /* copy_rel pixel x color --> dst */
128
129 #ifdef BUILD_C
130 static void
131 _op_copy_rel_p_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
132    DATA32 *e = d + l;
133    while (d < e) {
134         DATA32 cs = MUL4_SYM(c, *s);
135         *d = MUL_SYM(*d >> 24, cs);
136         d++;
137         s++;
138      }
139 }
140
141 #define _op_copy_rel_pas_c_dp _op_copy_rel_p_c_dp
142 #define _op_copy_rel_pan_c_dp _op_copy_rel_p_c_dp
143 #define _op_copy_rel_p_can_dp _op_copy_rel_p_c_dp
144 #define _op_copy_rel_pas_can_dp _op_copy_rel_pas_c_dp
145 #define _op_copy_rel_pan_can_dp _op_copy_rel_p_c_dp
146 #define _op_copy_rel_p_caa_dp _op_copy_rel_p_c_dp
147 #define _op_copy_rel_pas_caa_dp _op_copy_rel_p_c_dp
148 #define _op_copy_rel_pan_caa_dp _op_copy_rel_p_c_dp
149
150 #define _op_copy_rel_p_c_dpan _op_copy_p_c_dpan
151 #define _op_copy_rel_pas_c_dpan _op_copy_pas_c_dpan
152 #define _op_copy_rel_pan_c_dpan _op_copy_pan_c_dpan
153 #define _op_copy_rel_p_can_dpan _op_copy_p_can_dpan
154 #define _op_copy_rel_pas_can_dpan _op_copy_pas_can_dpan
155 #define _op_copy_rel_pan_can_dpan _op_copy_pan_can_dpan
156 #define _op_copy_rel_p_caa_dpan _op_copy_p_caa_dpan
157 #define _op_copy_rel_pas_caa_dpan _op_copy_pas_caa_dpan
158 #define _op_copy_rel_pan_caa_dpan _op_copy_pan_caa_dpan
159
160 static void
161 init_copy_rel_pixel_color_span_funcs_c(void)
162 {
163    op_copy_rel_span_funcs[SP][SM_N][SC][DP][CPU_C] = _op_copy_rel_p_c_dp;
164    op_copy_rel_span_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_copy_rel_pas_c_dp;
165    op_copy_rel_span_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_copy_rel_pan_c_dp;
166    op_copy_rel_span_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_p_can_dp;
167    op_copy_rel_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_pas_can_dp;
168    op_copy_rel_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_pan_can_dp;
169    op_copy_rel_span_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_p_caa_dp;
170    op_copy_rel_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_pas_caa_dp;
171    op_copy_rel_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_pan_caa_dp;
172
173    op_copy_rel_span_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_p_c_dpan;
174    op_copy_rel_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_pas_c_dpan;
175    op_copy_rel_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_pan_c_dpan;
176    op_copy_rel_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_p_can_dpan;
177    op_copy_rel_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pas_can_dpan;
178    op_copy_rel_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pan_can_dpan;
179    op_copy_rel_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_p_caa_dpan;
180    op_copy_rel_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pas_caa_dpan;
181    op_copy_rel_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pan_caa_dpan;
182 }
183 #endif
184
185 #ifdef BUILD_C
186 static void
187 _op_copy_rel_pt_p_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
188         s = MUL4_SYM(c, s);
189         *d = MUL_SYM(*d >> 24, s);
190 }
191
192 #define _op_copy_rel_pt_pas_c_dp _op_copy_rel_pt_p_c_dp
193 #define _op_copy_rel_pt_pan_c_dp _op_copy_rel_pt_p_c_dp
194 #define _op_copy_rel_pt_p_can_dp _op_copy_rel_pt_p_c_dp
195 #define _op_copy_rel_pt_pas_can_dp _op_copy_rel_pt_p_can_dp
196 #define _op_copy_rel_pt_pan_can_dp _op_copy_rel_pt_p_c_dp
197 #define _op_copy_rel_pt_p_caa_dp _op_copy_rel_pt_p_c_dp
198 #define _op_copy_rel_pt_pas_caa_dp _op_copy_rel_pt_p_caa_dp
199 #define _op_copy_rel_pt_pan_caa_dp _op_copy_rel_pt_p_caa_dp
200
201 #define _op_copy_rel_pt_p_c_dpan _op_copy_pt_p_c_dpan
202 #define _op_copy_rel_pt_pas_c_dpan _op_copy_pt_pas_c_dpan
203 #define _op_copy_rel_pt_pan_c_dpan _op_copy_pt_pan_c_dpan
204 #define _op_copy_rel_pt_p_can_dpan _op_copy_pt_p_can_dpan
205 #define _op_copy_rel_pt_pas_can_dpan _op_copy_pt_pas_can_dpan
206 #define _op_copy_rel_pt_pan_can_dpan _op_copy_pt_pan_can_dpan
207 #define _op_copy_rel_pt_p_caa_dpan _op_copy_pt_p_caa_dpan
208 #define _op_copy_rel_pt_pas_caa_dpan _op_copy_pt_pas_caa_dpan
209 #define _op_copy_rel_pt_pan_caa_dpan _op_copy_pt_pan_caa_dpan
210
211 static void
212 init_copy_rel_pixel_color_pt_funcs_c(void)
213 {
214    op_copy_rel_pt_funcs[SP][SM_N][SC][DP][CPU_C] = _op_copy_rel_pt_p_c_dp;
215    op_copy_rel_pt_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_copy_rel_pt_pas_c_dp;
216    op_copy_rel_pt_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_copy_rel_pt_pan_c_dp;
217    op_copy_rel_pt_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_pt_p_can_dp;
218    op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_pt_pas_can_dp;
219    op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_pt_pan_can_dp;
220    op_copy_rel_pt_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_pt_p_caa_dp;
221    op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_pt_pas_caa_dp;
222    op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_pt_pan_caa_dp;
223
224    op_copy_rel_pt_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_pt_p_c_dpan;
225    op_copy_rel_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_pt_pas_c_dpan;
226    op_copy_rel_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_pt_pan_c_dpan;
227    op_copy_rel_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pt_p_can_dpan;
228    op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pt_pas_can_dpan;
229    op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pt_pan_can_dpan;
230    op_copy_rel_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pt_p_caa_dpan;
231    op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pt_pas_caa_dpan;
232    op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pt_pan_caa_dpan;
233 }
234 #endif