3 DATA32 *dptr, *sptr, *pix, *pbuf;
4 int a, r, g, b, rx, gx, bx, ax;
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;
17 xp = xpoints;// + dxx;
18 yp = ypoints;// + dyy;
19 xapp = xapoints;// + dxx;
20 yapp = yapoints;// + dyy;
22 /*#ifndef SCALE_USING_MMX */
23 /* for now there's no mmx down scaling - so C only */
25 if (src->cache_entry.flags.alpha)
37 sptr = *yp + *xp + pos;
41 ax = (A_VAL(pix) * xap) >> 9;
42 rx = (R_VAL(pix) * xap) >> 9;
43 gx = (G_VAL(pix) * xap) >> 9;
44 bx = (B_VAL(pix) * xap) >> 9;
46 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
48 ax += (A_VAL(pix) * Cx) >> 9;
49 rx += (R_VAL(pix) * Cx) >> 9;
50 gx += (G_VAL(pix) * Cx) >> 9;
51 bx += (B_VAL(pix) * Cx) >> 9;
56 ax += (A_VAL(pix) * i) >> 9;
57 rx += (R_VAL(pix) * i) >> 9;
58 gx += (G_VAL(pix) * i) >> 9;
59 bx += (B_VAL(pix) * i) >> 9;
67 for (j = (1 << 14) - yap; j > Cy; j -= Cy)
71 ax = (A_VAL(pix) * xap) >> 9;
72 rx = (R_VAL(pix) * xap) >> 9;
73 gx = (G_VAL(pix) * xap) >> 9;
74 bx = (B_VAL(pix) * xap) >> 9;
76 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
78 ax += (A_VAL(pix) * Cx) >> 9;
79 rx += (R_VAL(pix) * Cx) >> 9;
80 gx += (G_VAL(pix) * Cx) >> 9;
81 bx += (B_VAL(pix) * Cx) >> 9;
86 ax += (A_VAL(pix) * i) >> 9;
87 rx += (R_VAL(pix) * i) >> 9;
88 gx += (G_VAL(pix) * i) >> 9;
89 bx += (B_VAL(pix) * i) >> 9;
101 ax = (A_VAL(pix) * xap) >> 9;
102 rx = (R_VAL(pix) * xap) >> 9;
103 gx = (G_VAL(pix) * xap) >> 9;
104 bx = (B_VAL(pix) * xap) >> 9;
106 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
108 ax += (A_VAL(pix) * Cx) >> 9;
109 rx += (R_VAL(pix) * Cx) >> 9;
110 gx += (G_VAL(pix) * Cx) >> 9;
111 bx += (B_VAL(pix) * Cx) >> 9;
116 ax += (A_VAL(pix) * i) >> 9;
117 rx += (R_VAL(pix) * i) >> 9;
118 gx += (G_VAL(pix) * i) >> 9;
119 bx += (B_VAL(pix) * i) >> 9;
127 *pbuf++ = ARGB_JOIN(((a + (1 << 4)) >> 5),
128 ((r + (1 << 4)) >> 5),
129 ((g + (1 << 4)) >> 5),
130 ((b + (1 << 4)) >> 5));
134 func(buf, NULL, dc->mul.col, dptr, w);
137 dptr += dst_w; dst_clip_w = w;
138 xp = xpoints;// + dxx;
139 xapp = xapoints;// + dxx;
146 if ((!src->cache_entry.flags.alpha) &&
147 (!dst->cache_entry.flags.alpha) &&
153 yap = *yapp & 0xffff;
159 xap = *xapp & 0xffff;
161 sptr = *yp + *xp + pos;
165 rx = (R_VAL(pix) * xap) >> 9;
166 gx = (G_VAL(pix) * xap) >> 9;
167 bx = (B_VAL(pix) * xap) >> 9;
169 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
171 rx += (R_VAL(pix) * Cx) >> 9;
172 gx += (G_VAL(pix) * Cx) >> 9;
173 bx += (B_VAL(pix) * Cx) >> 9;
178 rx += (R_VAL(pix) * i) >> 9;
179 gx += (G_VAL(pix) * i) >> 9;
180 bx += (B_VAL(pix) * i) >> 9;
183 r = (rx * yap) >> 14;
184 g = (gx * yap) >> 14;
185 b = (bx * yap) >> 14;
187 for (j = (1 << 14) - yap; j > Cy; j -= Cy)
191 rx = (R_VAL(pix) * xap) >> 9;
192 gx = (G_VAL(pix) * xap) >> 9;
193 bx = (B_VAL(pix) * xap) >> 9;
195 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
197 rx += (R_VAL(pix) * Cx) >> 9;
198 gx += (G_VAL(pix) * Cx) >> 9;
199 bx += (B_VAL(pix) * Cx) >> 9;
204 rx += (R_VAL(pix) * i) >> 9;
205 gx += (G_VAL(pix) * i) >> 9;
206 bx += (B_VAL(pix) * i) >> 9;
209 r += (rx * Cy) >> 14;
210 g += (gx * Cy) >> 14;
211 b += (bx * Cy) >> 14;
217 rx = (R_VAL(pix) * xap) >> 9;
218 gx = (G_VAL(pix) * xap) >> 9;
219 bx = (B_VAL(pix) * xap) >> 9;
221 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
223 rx += (R_VAL(pix) * Cx) >> 9;
224 gx += (G_VAL(pix) * Cx) >> 9;
225 bx += (B_VAL(pix) * Cx) >> 9;
230 rx += (R_VAL(pix) * i) >> 9;
231 gx += (G_VAL(pix) * i) >> 9;
232 bx += (B_VAL(pix) * i) >> 9;
239 *pbuf++ = ARGB_JOIN(0xff,
240 ((r + (1 << 4)) >> 5),
241 ((g + (1 << 4)) >> 5),
242 ((b + (1 << 4)) >> 5));
246 dptr += dst_w; dst_clip_w = w;
247 xp = xpoints;// + dxx;
248 xapp = xapoints;// + dxx;
258 yap = *yapp & 0xffff;
263 xap = *xapp & 0xffff;
265 sptr = *yp + *xp + pos;
269 rx = (R_VAL(pix) * xap) >> 9;
270 gx = (G_VAL(pix) * xap) >> 9;
271 bx = (B_VAL(pix) * xap) >> 9;
273 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
275 rx += (R_VAL(pix) * Cx) >> 9;
276 gx += (G_VAL(pix) * Cx) >> 9;
277 bx += (B_VAL(pix) * Cx) >> 9;
282 rx += (R_VAL(pix) * i) >> 9;
283 gx += (G_VAL(pix) * i) >> 9;
284 bx += (B_VAL(pix) * i) >> 9;
287 r = (rx * yap) >> 14;
288 g = (gx * yap) >> 14;
289 b = (bx * yap) >> 14;
291 for (j = (1 << 14) - yap; j > Cy; j -= Cy)
295 rx = (R_VAL(pix) * xap) >> 9;
296 gx = (G_VAL(pix) * xap) >> 9;
297 bx = (B_VAL(pix) * xap) >> 9;
299 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
301 rx += (R_VAL(pix) * Cx) >> 9;
302 gx += (G_VAL(pix) * Cx) >> 9;
303 bx += (B_VAL(pix) * Cx) >> 9;
308 rx += (R_VAL(pix) * i) >> 9;
309 gx += (G_VAL(pix) * i) >> 9;
310 bx += (B_VAL(pix) * i) >> 9;
313 r += (rx * Cy) >> 14;
314 g += (gx * Cy) >> 14;
315 b += (bx * Cy) >> 14;
321 rx = (R_VAL(pix) * xap) >> 9;
322 gx = (G_VAL(pix) * xap) >> 9;
323 bx = (B_VAL(pix) * xap) >> 9;
325 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
327 rx += (R_VAL(pix) * Cx) >> 9;
328 gx += (G_VAL(pix) * Cx) >> 9;
329 bx += (B_VAL(pix) * Cx) >> 9;
334 rx += (R_VAL(pix) * i) >> 9;
335 gx += (G_VAL(pix) * i) >> 9;
336 bx += (B_VAL(pix) * i) >> 9;
343 *pbuf++ = ARGB_JOIN(0xff,
344 ((r + (1 << 4)) >> 5),
345 ((g + (1 << 4)) >> 5),
346 ((b + (1 << 4)) >> 5));
350 func(buf, NULL, dc->mul.col, dptr, w);
353 dptr += dst_w; dst_clip_w = w;
354 xp = xpoints;// + dxx;
355 xapp = xapoints;// + dxx;
361 /* MMX scaling down would go here */