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