aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/evas/src/lib/engines/common/evas_op_mask/op_mask_mask_color_.c
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/evas/src/lib/engines/common/evas_op_mask/op_mask_mask_color_.c')
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_mask/op_mask_mask_color_.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/libraries/evas/src/lib/engines/common/evas_op_mask/op_mask_mask_color_.c b/libraries/evas/src/lib/engines/common/evas_op_mask/op_mask_mask_color_.c
new file mode 100644
index 0000000..c75edb4
--- /dev/null
+++ b/libraries/evas/src/lib/engines/common/evas_op_mask/op_mask_mask_color_.c
@@ -0,0 +1,63 @@
1/* mask mask x color -> dst */
2
3#ifdef BUILD_C
4static void
5_op_mask_mas_c_dp(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) {
6 DATA32 *e = d + l;
7 c = 1 + (c >> 24);
8 while (d < e) {
9 l = *m;
10 switch(l)
11 {
12 case 0:
13 break;
14 case 255:
15 *d = MUL_256(c, *d);
16 break;
17 default:
18 l = 256 - (((257 - c) * l) >> 8);
19 *d = MUL_256(l, *d);
20 break;
21 }
22 m++; d++;
23 }
24}
25
26#define _op_mask_mas_caa_dp _op_mask_mas_c_dp
27
28#define _op_mask_mas_c_dpan _op_mask_mas_c_dp
29#define _op_mask_mas_caa_dpan _op_mask_mas_caa_dp
30
31static void
32init_mask_mask_color_span_funcs_c(void)
33{
34 op_mask_span_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_mask_mas_c_dp;
35 op_mask_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_mask_mas_caa_dp;
36
37 op_mask_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_mask_mas_c_dpan;
38 op_mask_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_mask_mas_caa_dpan;
39}
40#endif
41
42#ifdef BUILD_C
43static void
44_op_mask_pt_mas_c_dp(DATA32 s __UNUSED__, DATA8 m, DATA32 c, DATA32 *d) {
45 c = 256 - (((256 - (c >> 24)) * m) >> 8);
46 *d = MUL_256(c, *d);
47}
48
49#define _op_mask_pt_mas_caa_dp _op_mask_pt_mas_c_dp
50
51#define _op_mask_pt_mas_c_dpan _op_mask_pt_mas_c_dp
52#define _op_mask_pt_mas_caa_dpan _op_mask_pt_mas_caa_dp
53
54static void
55init_mask_mask_color_pt_funcs_c(void)
56{
57 op_mask_pt_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_mask_pt_mas_c_dp;
58 op_mask_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_mask_pt_mas_caa_dp;
59
60 op_mask_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_mask_pt_mas_c_dpan;
61 op_mask_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_mask_pt_mas_caa_dpan;
62}
63#endif