3 DATA32 *dptr, *pix, *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)
36 pix = *yp + *xp + pos;
38 a = (A_VAL(pix) * yap) >> 10;
39 r = (R_VAL(pix) * yap) >> 10;
40 g = (G_VAL(pix) * yap) >> 10;
41 b = (B_VAL(pix) * yap) >> 10;
42 for (j = (1 << 14) - yap; j > Cy; j -= Cy)
45 a += (A_VAL(pix) * Cy) >> 10;
46 r += (R_VAL(pix) * Cy) >> 10;
47 g += (G_VAL(pix) * Cy) >> 10;
48 b += (B_VAL(pix) * Cy) >> 10;
53 a += (A_VAL(pix) * j) >> 10;
54 r += (R_VAL(pix) * j) >> 10;
55 g += (G_VAL(pix) * j) >> 10;
56 b += (B_VAL(pix) * j) >> 10;
58 if ((xap = *xapp) > 0)
60 pix = *yp + *xp + 1 + pos;
61 aa = (A_VAL(pix) * yap) >> 10;
62 rr = (R_VAL(pix) * yap) >> 10;
63 gg = (G_VAL(pix) * yap) >> 10;
64 bb = (B_VAL(pix) * yap) >> 10;
65 for (j = (1 << 14) - yap; j > Cy; j -= Cy)
68 aa += (A_VAL(pix) * Cy) >> 10;
69 rr += (R_VAL(pix) * Cy) >> 10;
70 gg += (G_VAL(pix) * Cy) >> 10;
71 bb += (B_VAL(pix) * Cy) >> 10;
76 aa += (A_VAL(pix) * j) >> 10;
77 rr += (R_VAL(pix) * j) >> 10;
78 gg += (G_VAL(pix) * j) >> 10;
79 bb += (B_VAL(pix) * j) >> 10;
81 a += ((aa - a) * xap) >> 8;
82 r += ((rr - r) * xap) >> 8;
83 g += ((gg - g) * xap) >> 8;
84 b += ((bb - b) * xap) >> 8;
86 *pbuf++ = ARGB_JOIN(a >> 4, r >> 4, g >> 4, b >> 4);
90 func(buf, NULL, dc->mul.col, dptr, w);
96 dptr += dst_w; dst_clip_w = w;
99 xapp = xapoints + dxx;
105 if ((!src->cache_entry.flags.alpha) &&
106 (!dst->cache_entry.flags.alpha) &&
112 if (((ysli) % dc->sli.h) == dc->sli.y)
116 yap = *yapp & 0xffff;
121 pix = *yp + *xp + pos;
123 r = (R_VAL(pix) * yap) >> 10;
124 g = (G_VAL(pix) * yap) >> 10;
125 b = (B_VAL(pix) * yap) >> 10;
126 for (j = (1 << 14) - yap; j > Cy; j -= Cy)
129 r += (R_VAL(pix) * Cy) >> 10;
130 g += (G_VAL(pix) * Cy) >> 10;
131 b += (B_VAL(pix) * Cy) >> 10;
136 r += (R_VAL(pix) * j) >> 10;
137 g += (G_VAL(pix) * j) >> 10;
138 b += (B_VAL(pix) * j) >> 10;
140 if ((xap = *xapp) > 0)
142 pix = *yp + *xp + 1 + pos;
143 rr = (R_VAL(pix) * yap) >> 10;
144 gg = (G_VAL(pix) * yap) >> 10;
145 bb = (B_VAL(pix) * yap) >> 10;
146 for (j = (1 << 14) - yap; j > Cy; j -= Cy)
149 rr += (R_VAL(pix) * Cy) >> 10;
150 gg += (G_VAL(pix) * Cy) >> 10;
151 bb += (B_VAL(pix) * Cy) >> 10;
156 rr += (R_VAL(pix) * j) >> 10;
157 gg += (G_VAL(pix) * j) >> 10;
158 bb += (B_VAL(pix) * j) >> 10;
160 r += ((rr - r) * xap) >> 8;
161 g += ((gg - g) * xap) >> 8;
162 b += ((bb - b) * xap) >> 8;
164 *pbuf++ = ARGB_JOIN(0xff, r >> 4, g >> 4, b >> 4);
171 dptr += dst_w; dst_clip_w = w;
174 xapp = xapoints + dxx;
183 if (((ysli) % dc->sli.h) == dc->sli.y)
187 yap = *yapp & 0xffff;
191 pix = *yp + *xp + pos;
193 r = (R_VAL(pix) * yap) >> 10;
194 g = (G_VAL(pix) * yap) >> 10;
195 b = (B_VAL(pix) * yap) >> 10;
196 for (j = (1 << 14) - yap; j > Cy; j -= Cy)
199 r += (R_VAL(pix) * Cy) >> 10;
200 g += (G_VAL(pix) * Cy) >> 10;
201 b += (B_VAL(pix) * Cy) >> 10;
206 r += (R_VAL(pix) * j) >> 10;
207 g += (G_VAL(pix) * j) >> 10;
208 b += (B_VAL(pix) * j) >> 10;
210 if ((xap = *xapp) > 0)
212 pix = *yp + *xp + 1 + pos;
213 rr = (R_VAL(pix) * yap) >> 10;
214 gg = (G_VAL(pix) * yap) >> 10;
215 bb = (B_VAL(pix) * yap) >> 10;
216 for (j = (1 << 14) - yap; j > Cy; j -= Cy)
219 rr += (R_VAL(pix) * Cy) >> 10;
220 gg += (G_VAL(pix) * Cy) >> 10;
221 bb += (B_VAL(pix) * Cy) >> 10;
226 rr += (R_VAL(pix) * j) >> 10;
227 gg += (G_VAL(pix) * j) >> 10;
228 bb += (B_VAL(pix) * j) >> 10;
230 r += ((rr - r) * xap) >> 8;
231 g += ((gg - g) * xap) >> 8;
232 b += ((bb - b) * xap) >> 8;
234 *pbuf++ = ARGB_JOIN(0xff, r >> 4, g >> 4, b >> 4);
238 func(buf, NULL, dc->mul.col, dptr, w);
244 dptr += dst_w; dst_clip_w = w;
247 xapp = xapoints + dxx;