2 /* blend pixel x mask --> dst */
6 _op_blend_p_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
16 *d = *s + MUL_256(l, *d);
21 *d = c + MUL_256(l, *d);
29 _op_blend_pas_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
43 *d = c + MUL_256(l, *d);
51 _op_blend_pan_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
64 *d = INTERP_256(l, *s, *d);
72 #define _op_blend_p_mas_dpan _op_blend_p_mas_dp
73 #define _op_blend_pas_mas_dpan _op_blend_pas_mas_dp
74 #define _op_blend_pan_mas_dpan _op_blend_pan_mas_dp
77 init_blend_pixel_mask_span_funcs_c(void)
79 op_blend_span_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_blend_p_mas_dp;
80 op_blend_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_blend_pas_mas_dp;
81 op_blend_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_blend_pan_mas_dp;
83 op_blend_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_p_mas_dpan;
84 op_blend_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pas_mas_dpan;
85 op_blend_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pan_mas_dpan;
91 _op_blend_pt_p_mas_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
94 *d = s + MUL_256(c, *d);
98 _op_blend_pt_pan_mas_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
99 *d = INTERP_256(m + 1, s, *d);
102 #define _op_blend_pt_pas_mas_dp _op_blend_pt_p_mas_dp
104 #define _op_blend_pt_p_mas_dpan _op_blend_pt_p_mas_dp
105 #define _op_blend_pt_pas_mas_dpan _op_blend_pt_pas_mas_dp
106 #define _op_blend_pt_pan_mas_dpan _op_blend_pt_pan_mas_dp
109 init_blend_pixel_mask_pt_funcs_c(void)
111 op_blend_pt_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_blend_pt_p_mas_dp;
112 op_blend_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_blend_pt_pas_mas_dp;
113 op_blend_pt_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_blend_pt_pan_mas_dp;
115 op_blend_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pt_p_mas_dpan;
116 op_blend_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pt_pas_mas_dpan;
117 op_blend_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pt_pan_mas_dpan;
123 /* blend_rel pixel x mask -> dst */
127 _op_blend_rel_p_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
132 *d = MUL_SYM(*d >> 24, c) + MUL_256(l, *d);
139 #define _op_blend_rel_pas_mas_dp _op_blend_rel_p_mas_dp
140 #define _op_blend_rel_pan_mas_dp _op_blend_rel_p_mas_dp
142 #define _op_blend_rel_p_mas_dpan _op_blend_p_mas_dpan
143 #define _op_blend_rel_pas_mas_dpan _op_blend_pas_mas_dpan
144 #define _op_blend_rel_pan_mas_dpan _op_blend_pan_mas_dpan
147 init_blend_rel_pixel_mask_span_funcs_c(void)
149 op_blend_rel_span_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_p_mas_dp;
150 op_blend_rel_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pas_mas_dp;
151 op_blend_rel_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pan_mas_dp;
153 op_blend_rel_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_p_mas_dpan;
154 op_blend_rel_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pas_mas_dpan;
155 op_blend_rel_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pan_mas_dpan;
161 _op_blend_rel_pt_p_mas_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
164 *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d);
167 #define _op_blend_rel_pt_pas_mas_dp _op_blend_rel_pt_p_mas_dp
168 #define _op_blend_rel_pt_pan_mas_dp _op_blend_rel_pt_p_mas_dp
170 #define _op_blend_rel_pt_p_mas_dpan _op_blend_pt_p_mas_dpan
171 #define _op_blend_rel_pt_pas_mas_dpan _op_blend_pt_pas_mas_dpan
172 #define _op_blend_rel_pt_pan_mas_dpan _op_blend_pt_pan_mas_dpan
175 init_blend_rel_pixel_mask_pt_funcs_c(void)
177 op_blend_rel_pt_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pt_p_mas_dp;
178 op_blend_rel_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pt_pas_mas_dp;
179 op_blend_rel_pt_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pt_pan_mas_dp;
181 op_blend_rel_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_p_mas_dpan;
182 op_blend_rel_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_pas_mas_dpan;
183 op_blend_rel_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_pan_mas_dpan;