move around - flatter.
[profile/ivi/evas.git] / src / lib / engines / common / evas_op_mul / op_mul_pixel_mask_.c
1
2 /* mul pixel x mask --> dst */
3
4 #ifdef BUILD_C
5 static void
6 _op_mul_p_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
7    DATA32 *e = d + l;
8    while (d < e)
9      {
10         c = *m;
11         switch(c)
12           {
13             case 0:
14                 break;
15             case 255:
16                 *d = MUL4_SYM(*s, *d);
17                 break;
18             default:
19                 c = ~(*s);
20                 c = ~MUL_SYM(*m, c);
21                 *d = MUL4_SYM(c, *d);
22                 break;
23           }
24         m++;  s++;  d++;
25      }
26 }
27
28 static void
29 _op_mul_pan_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
30    DATA32 *e = d + l;
31    while (d < e)
32      {
33         c = *m;
34         switch(c)
35           {
36             case 0:
37                 break;
38             case 255:
39                 *d = (*d & 0xff000000) + MUL3_SYM(*s, *d);
40                 break;
41             default:
42                 c = ~(*s);
43                 c = ~MUL_SYM(*m, c);
44                 *d = (*d & 0xff000000) + MUL3_SYM(c, *d);
45                 break;
46           }
47         m++;  s++;  d++;
48      }
49 }
50
51 static void
52 _op_mul_p_mas_dpan(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
53    DATA32 *e = d + l;
54    while (d < e)
55      {
56         c = *m;
57         switch(c)
58           {
59             case 0:
60                 break;
61             case 255:
62                 *d = (*s & 0xff000000) + MUL3_SYM(*s, *d);
63                 break;
64             default:
65                 c = ~(*s);
66                 c = ~MUL_SYM(*m, c);
67                 *d = (c & 0xff000000) + MUL3_SYM(c, *d);
68                 break;
69           }
70         m++;  d++;
71      }
72 }
73
74 #define _op_mul_pas_mas_dp _op_mul_p_mas_dp
75
76 #define _op_mul_pan_mas_dpan _op_mul_p_mas_dpan
77 #define _op_mul_pas_mas_dpan _op_mul_p_mas_dpan
78
79 static void
80 init_mul_pixel_mask_span_funcs_c(void)
81 {
82    op_mul_span_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_mul_p_mas_dp;
83    op_mul_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_mul_pas_mas_dp;
84    op_mul_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_mul_pan_mas_dp;
85
86    op_mul_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_mul_p_mas_dpan;
87    op_mul_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_mul_pas_mas_dpan;
88    op_mul_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_mul_pan_mas_dpan;
89 }
90 #endif
91
92 #ifdef BUILD_C
93 static void
94 _op_mul_pt_p_mas_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
95         s = ~s;
96         s = ~MUL_SYM(m, s);
97         *d = MUL4_SYM(s, *d);
98 }
99
100 #define _op_mul_pt_pas_mas_dp _op_mul_pt_p_mas_dp
101 #define _op_mul_pt_pan_mas_dp _op_mul_pt_p_mas_dp
102
103 #define _op_mul_pt_p_mas_dpan _op_mul_pt_p_mas_dp
104 #define _op_mul_pt_pas_mas_dpan _op_mul_pt_p_mas_dp
105 #define _op_mul_pt_pan_mas_dpan _op_mul_pt_p_mas_dp
106
107 static void
108 init_mul_pixel_mask_pt_funcs_c(void)
109 {
110    op_mul_pt_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_mul_pt_p_mas_dp;
111    op_mul_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_mul_pt_pas_mas_dp;
112    op_mul_pt_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_mul_pt_pan_mas_dp;
113
114    op_mul_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_mul_pt_p_mas_dpan;
115    op_mul_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_mul_pt_pas_mas_dpan;
116    op_mul_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_mul_pt_pan_mas_dpan;
117 }
118 #endif