3 DATA32 *pix, *dptr, *pbuf, **yp;
4 int r, g, b, a, rr, gg, bb, aa;
5 int *xp, xap, yap, pos;
13 pos = (src_region_y * src_w) + src_region_x;
14 dyy = dst_clip_y - dst_region_y;
15 dxx = dst_clip_x - dst_region_x;
19 xapp = xapoints + dxx;
20 yapp = yapoints + dyy;
23 if (src->cache_entry.flags.alpha)
28 if (((ysli) % dc->sli.h) == dc->sli.y)
35 pix = *yp + *xp + pos;
37 a = (A_VAL(pix) * xap) >> 10;
38 r = (R_VAL(pix) * xap) >> 10;
39 g = (G_VAL(pix) * xap) >> 10;
40 b = (B_VAL(pix) * xap) >> 10;
41 for (j = (1 << 14) - xap; j > Cx; j -= Cx)
44 a += (A_VAL(pix) * Cx) >> 10;
45 r += (R_VAL(pix) * Cx) >> 10;
46 g += (G_VAL(pix) * Cx) >> 10;
47 b += (B_VAL(pix) * Cx) >> 10;
52 a += (A_VAL(pix) * j) >> 10;
53 r += (R_VAL(pix) * j) >> 10;
54 g += (G_VAL(pix) * j) >> 10;
55 b += (B_VAL(pix) * j) >> 10;
57 if ((yap = *yapp) > 0)
59 pix = *yp + *xp + src_w + pos;
60 aa = (A_VAL(pix) * xap) >> 10;
61 rr = (R_VAL(pix) * xap) >> 10;
62 gg = (G_VAL(pix) * xap) >> 10;
63 bb = (B_VAL(pix) * xap) >> 10;
64 for (j = (1 << 14) - xap; j > Cx; j -= Cx)
67 aa += (A_VAL(pix) * Cx) >> 10;
68 rr += (R_VAL(pix) * Cx) >> 10;
69 gg += (G_VAL(pix) * Cx) >> 10;
70 bb += (B_VAL(pix) * Cx) >> 10;
75 aa += (A_VAL(pix) * j) >> 10;
76 rr += (R_VAL(pix) * j) >> 10;
77 gg += (G_VAL(pix) * j) >> 10;
78 bb += (B_VAL(pix) * j) >> 10;
80 a += ((aa - a) * yap) >> 8;
81 r += ((rr - r) * yap) >> 8;
82 g += ((gg - g) * yap) >> 8;
83 b += ((bb - b) * yap) >> 8;
85 *pbuf++ = ARGB_JOIN(a >> 4, r >> 4, g >> 4, b >> 4);
89 func(buf, NULL, dc->mul.col, dptr, w);
95 dptr += dst_w; dst_clip_w = w;
98 xapp = xapoints + dxx;
104 if ((!src->cache_entry.flags.alpha) &&
105 (!dst->cache_entry.flags.alpha) &&
112 if (((ysli) % dc->sli.h) == dc->sli.y)
118 xap = *xapp & 0xffff;
119 pix = *yp + *xp + pos;
121 r = (R_VAL(pix) * xap) >> 10;
122 g = (G_VAL(pix) * xap) >> 10;
123 b = (B_VAL(pix) * xap) >> 10;
124 for (j = (1 << 14) - xap; j > Cx; j -= Cx)
127 r += (R_VAL(pix) * Cx) >> 10;
128 g += (G_VAL(pix) * Cx) >> 10;
129 b += (B_VAL(pix) * Cx) >> 10;
134 r += (R_VAL(pix) * j) >> 10;
135 g += (G_VAL(pix) * j) >> 10;
136 b += (B_VAL(pix) * j) >> 10;
138 if ((yap = *yapp) > 0)
140 pix = *yp + *xp + src_w + pos;
141 rr = (R_VAL(pix) * xap) >> 10;
142 gg = (G_VAL(pix) * xap) >> 10;
143 bb = (B_VAL(pix) * xap) >> 10;
144 for (j = (1 << 14) - xap; j > Cx; j -= Cx)
147 rr += (R_VAL(pix) * Cx) >> 10;
148 gg += (G_VAL(pix) * Cx) >> 10;
149 bb += (B_VAL(pix) * Cx) >> 10;
154 rr += (R_VAL(pix) * j) >> 10;
155 gg += (G_VAL(pix) * j) >> 10;
156 bb += (B_VAL(pix) * j) >> 10;
158 r += ((rr - r) * yap) >> 8;
159 g += ((gg - g) * yap) >> 8;
160 b += ((bb - b) * yap) >> 8;
162 *pbuf++ = ARGB_JOIN(0xff, r >> 4, g >> 4, b >> 4);
170 dptr += dst_w; dst_clip_w = w;
173 xapp = xapoints + dxx;
182 if (((ysli) % dc->sli.h) == dc->sli.y)
188 xap = *xapp & 0xffff;
189 pix = *yp + *xp + pos;
191 r = (R_VAL(pix) * xap) >> 10;
192 g = (G_VAL(pix) * xap) >> 10;
193 b = (B_VAL(pix) * xap) >> 10;
194 for (j = (1 << 14) - xap; j > Cx; j -= Cx)
197 r += (R_VAL(pix) * Cx) >> 10;
198 g += (G_VAL(pix) * Cx) >> 10;
199 b += (B_VAL(pix) * Cx) >> 10;
204 r += (R_VAL(pix) * j) >> 10;
205 g += (G_VAL(pix) * j) >> 10;
206 b += (B_VAL(pix) * j) >> 10;
208 if ((yap = *yapp) > 0)
210 pix = *yp + *xp + src_w + pos;
211 rr = (R_VAL(pix) * xap) >> 10;
212 gg = (G_VAL(pix) * xap) >> 10;
213 bb = (B_VAL(pix) * xap) >> 10;
214 for (j = (1 << 14) - xap; j > Cx; j -= Cx)
217 rr += (R_VAL(pix) * Cx) >> 10;
218 gg += (G_VAL(pix) * Cx) >> 10;
219 bb += (B_VAL(pix) * Cx) >> 10;
224 rr += (R_VAL(pix) * j) >> 10;
225 gg += (G_VAL(pix) * j) >> 10;
226 bb += (B_VAL(pix) * j) >> 10;
228 r += ((rr - r) * yap) >> 8;
229 g += ((gg - g) * yap) >> 8;
230 b += ((bb - b) * yap) >> 8;
232 *pbuf++ = ARGB_JOIN(0xff, r >> 4, g >> 4, b >> 4);
236 func(buf, NULL, dc->mul.col, dptr, w);
243 dptr += dst_w; dst_clip_w = w;
246 xapp = xapoints + dxx;