move around - flatter.
[profile/ivi/evas.git] / src / lib / engines / common / evas_op_mask / op_mask_mask_color_.c
1
2 /* mask mask x color -> dst */
3
4 #ifdef BUILD_C
5 static void
6 _op_mask_mas_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
7    DATA32 *e = d + l;
8    c = 1 + (c >> 24);
9    while (d < e) {
10         l = *m;
11         switch(l)
12           {
13             case 0:
14                 break;
15             case 255:
16                 *d = MUL_256(c, *d);
17                 break;
18             default:
19                 l = 256 - (((257 - c) * l) >> 8);
20                 *d = MUL_256(l, *d);
21                 break;
22           }
23         m++;  d++;
24      }
25 }
26
27 #define _op_mask_mas_caa_dp _op_mask_mas_c_dp
28
29 #define _op_mask_mas_c_dpan _op_mask_mas_c_dp
30 #define _op_mask_mas_caa_dpan _op_mask_mas_caa_dp
31
32 static void
33 init_mask_mask_color_span_funcs_c(void)
34 {
35    op_mask_span_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_mask_mas_c_dp;
36    op_mask_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_mask_mas_caa_dp;
37
38    op_mask_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_mask_mas_c_dpan;
39    op_mask_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_mask_mas_caa_dpan;
40 }
41 #endif
42
43 #ifdef BUILD_C
44 static void
45 _op_mask_pt_mas_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
46         c = 256 - (((256 - (c >> 24)) * m) >> 8);
47         *d = MUL_256(c, *d);
48 }
49
50 #define _op_mask_pt_mas_caa_dp _op_mask_pt_mas_c_dp
51
52 #define _op_mask_pt_mas_c_dpan _op_mask_pt_mas_c_dp
53 #define _op_mask_pt_mas_caa_dpan _op_mask_pt_mas_caa_dp
54
55 static void
56 init_mask_mask_color_pt_funcs_c(void)
57 {
58    op_mask_pt_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_mask_pt_mas_c_dp;
59    op_mask_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_mask_pt_mas_caa_dp;
60
61    op_mask_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_mask_pt_mas_c_dpan;
62    op_mask_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_mask_pt_mas_caa_dpan;
63 }
64 #endif