move around - flatter.
[profile/ivi/evas.git] / src / lib / engines / common / evas_op_mul / op_mul_pixel_color_.c
1
2 /* mul pixel x color --> dst */
3
4 #ifdef BUILD_C
5 static void
6 _op_mul_p_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
7    DATA32 *e = d + l;
8    while (d < e) {
9         DATA32 cs = MUL4_SYM(c, *s);
10         *d = MUL4_SYM(cs, *d);
11         s++;  d++;
12      }
13 }
14
15 static void
16 _op_mul_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      {
21         DATA32 cs = MUL_256(c, *s);
22         *d = MUL4_SYM(cs, *d);
23         s++;  d++;
24      }
25 }
26
27 #define _op_mul_pas_c_dp _op_mul_p_c_dp
28 #define _op_mul_pan_c_dp _op_mul_p_c_dp
29 #define _op_mul_p_can_dp _op_mul_p_c_dp
30 #define _op_mul_pas_can_dp _op_mul_p_c_dp
31 #define _op_mul_pan_can_dp _op_mul_p_c_dp
32 #define _op_mul_pas_caa_dp _op_mul_p_caa_dp
33 #define _op_mul_pan_caa_dp _op_mul_p_caa_dp
34
35 #define _op_mul_p_c_dpan _op_mul_p_c_dp
36 #define _op_mul_pas_c_dpan _op_mul_pas_c_dp
37 #define _op_mul_pan_c_dpan _op_mul_pan_c_dp
38 #define _op_mul_p_can_dpan _op_mul_p_can_dp
39 #define _op_mul_pas_can_dpan _op_mul_pas_can_dp
40 #define _op_mul_pan_can_dpan _op_mul_pan_can_dp
41 #define _op_mul_p_caa_dpan _op_mul_p_caa_dp
42 #define _op_mul_pas_caa_dpan _op_mul_pas_caa_dp
43 #define _op_mul_pan_caa_dpan _op_mul_pan_caa_dp
44
45 static void
46 init_mul_pixel_color_span_funcs_c(void)
47 {
48    op_mul_span_funcs[SP][SM_N][SC][DP][CPU_C] = _op_mul_p_c_dp;
49    op_mul_span_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_mul_pas_c_dp;
50    op_mul_span_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_mul_pan_c_dp;
51    op_mul_span_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_mul_p_can_dp;
52    op_mul_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_mul_pas_can_dp;
53    op_mul_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_mul_pan_can_dp;
54    op_mul_span_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_mul_p_caa_dp;
55    op_mul_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_mul_pas_caa_dp;
56    op_mul_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_mul_pan_caa_dp;
57
58    op_mul_span_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_mul_p_c_dpan;
59    op_mul_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_mul_pas_c_dpan;
60    op_mul_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_mul_pan_c_dpan;
61    op_mul_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_mul_p_can_dpan;
62    op_mul_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_mul_pas_can_dpan;
63    op_mul_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_mul_pan_can_dpan;
64    op_mul_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_mul_p_caa_dpan;
65    op_mul_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_mul_pas_caa_dpan;
66    op_mul_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_mul_pan_caa_dpan;
67 }
68 #endif
69
70 #ifdef BUILD_C
71 static void
72 _op_mul_pt_p_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
73         s = MUL4_SYM(c, s);
74         *d = MUL4_SYM(s, *d);
75 }
76
77 static void
78 _op_mul_pt_p_caa_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
79         s = MUL_SYM(c >> 24, s);
80         *d = MUL4_SYM(s, *d);
81 }
82
83 #define _op_mul_pt_pas_c_dp _op_mul_pt_p_c_dp
84 #define _op_mul_pt_pan_c_dp _op_mul_pt_p_c_dp
85 #define _op_mul_pt_p_can_dp _op_mul_pt_p_c_dp
86 #define _op_mul_pt_pas_can_dp _op_mul_pt_p_c_dp
87 #define _op_mul_pt_pan_can_dp _op_mul_pt_p_c_dp
88 #define _op_mul_pt_pas_caa_dp _op_mul_pt_p_caa_dp
89 #define _op_mul_pt_pan_caa_dp _op_mul_pt_p_caa_dp
90
91 #define _op_mul_pt_p_c_dpan _op_mul_pt_p_c_dp
92 #define _op_mul_pt_pan_c_dpan _op_mul_pt_pan_c_dp
93 #define _op_mul_pt_pas_c_dpan _op_mul_pt_pas_c_dp
94 #define _op_mul_pt_p_can_dpan _op_mul_pt_p_can_dp
95 #define _op_mul_pt_pan_can_dpan _op_mul_pt_pan_can_dp
96 #define _op_mul_pt_pas_can_dpan _op_mul_pt_pas_can_dp
97 #define _op_mul_pt_p_caa_dpan _op_mul_pt_p_caa_dp
98 #define _op_mul_pt_pan_caa_dpan _op_mul_pt_pan_caa_dp
99 #define _op_mul_pt_pas_caa_dpan _op_mul_pt_pas_caa_dp
100 static void
101 init_mul_pixel_color_pt_funcs_c(void)
102 {
103    op_mul_pt_funcs[SP][SM_N][SC][DP][CPU_C] = _op_mul_pt_p_c_dp;
104    op_mul_pt_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_mul_pt_pas_c_dp;
105    op_mul_pt_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_mul_pt_pan_c_dp;
106    op_mul_pt_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_mul_pt_p_can_dp;
107    op_mul_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_mul_pt_pas_can_dp;
108    op_mul_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_mul_pt_pan_can_dp;
109    op_mul_pt_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_mul_pt_p_caa_dp;
110    op_mul_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_mul_pt_pas_caa_dp;
111    op_mul_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_mul_pt_pan_caa_dp;
112
113    op_mul_pt_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_mul_pt_p_c_dpan;
114    op_mul_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_mul_pt_pas_c_dpan;
115    op_mul_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_mul_pt_pan_c_dpan;
116    op_mul_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_mul_pt_p_can_dpan;
117    op_mul_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_mul_pt_pas_can_dpan;
118    op_mul_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_mul_pt_pan_can_dpan;
119    op_mul_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_mul_pt_p_caa_dpan;
120    op_mul_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_mul_pt_pas_caa_dpan;
121    op_mul_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_mul_pt_pan_caa_dpan;
122 }
123 #endif