move around - flatter.
[profile/ivi/evas.git] / src / lib / engines / common / evas_op_mask / op_mask_pixel_color_.c
1
2 /* mask pixel x color --> dst */
3
4 #ifdef BUILD_C
5 static void
6 _op_mask_p_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
7    DATA32 *e = d + l;
8    l = 1 + (c >> 24);
9    while (d < e) {
10         c = 1 + ((l * (*s >> 24)) >> 8);
11         *d = MUL_256(c, *d);
12         s++;  d++;
13      }
14 }
15
16 #define _op_mask_pas_c_dp _op_mask_p_c_dp
17 #define _op_mask_pan_c_dp _op_mask_p_c_dp
18 #define _op_mask_p_can_dp _op_mask_p_c_dp
19 #define _op_mask_pas_can_dp _op_mask_p_c_dp
20 #define _op_mask_p_caa_dp _op_mask_p_c_dp
21 #define _op_mask_pas_caa_dp _op_mask_p_c_dp
22 #define _op_mask_pan_caa_dp _op_mask_p_c_dp
23
24 #define _op_mask_p_c_dpan _op_mask_p_c_dp
25 #define _op_mask_pas_c_dpan _op_mask_p_c_dp
26 #define _op_mask_pan_c_dpan _op_mask_p_c_dp
27 #define _op_mask_p_can_dpan _op_mask_p_c_dp
28 #define _op_mask_pas_can_dpan _op_mask_p_c_dp
29 #define _op_mask_p_caa_dpan _op_mask_p_c_dp
30 #define _op_mask_pas_caa_dpan _op_mask_p_c_dp
31 #define _op_mask_pan_caa_dpan _op_mask_p_c_dp
32
33 static void
34 init_mask_pixel_color_span_funcs_c(void)
35 {
36    op_mask_span_funcs[SP][SM_N][SC][DP][CPU_C] = _op_mask_p_c_dp;
37    op_mask_span_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_mask_pas_c_dp;
38    op_mask_span_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_mask_pan_c_dp;
39    op_mask_span_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_mask_p_can_dp;
40    op_mask_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_mask_pas_can_dp;
41    op_mask_span_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_mask_p_caa_dp;
42    op_mask_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_mask_pas_caa_dp;
43    op_mask_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_mask_pan_caa_dp;
44
45    op_mask_span_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_mask_p_c_dpan;
46    op_mask_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_mask_pas_c_dpan;
47    op_mask_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_mask_pan_c_dpan;
48    op_mask_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_mask_p_can_dpan;
49    op_mask_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_mask_pas_can_dpan;
50    op_mask_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_mask_p_caa_dpan;
51    op_mask_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_mask_pas_caa_dpan;
52    op_mask_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_mask_pan_caa_dpan;
53 }
54 #endif
55
56 #ifdef BUILD_C
57 static void
58 _op_mask_pt_p_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
59         c = 1 + ((((c >> 24) * (s >> 24)) + 255) >> 8);
60         *d = MUL_256(c, *d);
61 }
62
63 #define _op_mask_pt_pas_c_dp _op_mask_pt_p_c_dp
64 #define _op_mask_pt_pan_c_dp _op_mask_pt_p_c_dp
65 #define _op_mask_pt_p_can_dp _op_mask_pt_p_c_dp
66 #define _op_mask_pt_pas_can_dp _op_mask_pt_p_c_dp
67 #define _op_mask_pt_p_caa_dp _op_mask_pt_p_c_dp
68 #define _op_mask_pt_pas_caa_dp _op_mask_pt_p_c_dp
69 #define _op_mask_pt_pan_caa_dp _op_mask_pt_p_c_dp
70
71 #define _op_mask_pt_p_c_dpan _op_mask_pt_p_c_dp
72 #define _op_mask_pt_pas_c_dpan _op_mask_pt_p_c_dp
73 #define _op_mask_pt_pan_c_dpan _op_mask_pt_p_c_dp
74 #define _op_mask_pt_p_can_dpan _op_mask_pt_p_c_dp
75 #define _op_mask_pt_pas_can_dpan _op_mask_pt_p_c_dp
76 #define _op_mask_pt_p_caa_dpan _op_mask_pt_p_c_dp
77 #define _op_mask_pt_pas_caa_dpan _op_mask_pt_p_c_dp
78 #define _op_mask_pt_pan_caa_dpan _op_mask_pt_p_c_dp
79
80 static void
81 init_mask_pixel_color_pt_funcs_c(void)
82 {
83    op_mask_pt_funcs[SP][SM_N][SC][DP][CPU_C] = _op_mask_pt_p_c_dp;
84    op_mask_pt_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_mask_pt_pas_c_dp;
85    op_mask_pt_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_mask_pt_pan_c_dp;
86    op_mask_pt_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_mask_pt_p_can_dp;
87    op_mask_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_mask_pt_pas_can_dp;
88    op_mask_pt_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_mask_pt_p_caa_dp;
89    op_mask_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_mask_pt_pas_caa_dp;
90    op_mask_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_mask_pt_pan_caa_dp;
91
92    op_mask_pt_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_mask_pt_p_c_dpan;
93    op_mask_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_mask_pt_pas_c_dpan;
94    op_mask_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_mask_pt_pan_c_dpan;
95    op_mask_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_mask_pt_p_can_dpan;
96    op_mask_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_mask_pt_pas_can_dpan;
97    op_mask_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_mask_pt_p_caa_dpan;
98    op_mask_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_mask_pt_pas_caa_dpan;
99    op_mask_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_mask_pt_pan_caa_dpan;
100 }
101 #endif