3 DATA32 *dptr, *sptr, *pix, *pbuf;
4 int a, r, g, b, rx, gx, bx, ax;
16 pos = (src_region_y * src_w) + src_region_x;
17 //dyy = dst_clip_y - dst_region_y;
18 //dxx = dst_clip_x - dst_region_x;
20 xp = xpoints;// + dxx;
21 yp = ypoints;// + dyy;
22 xapp = xapoints;// + dxx;
23 yapp = yapoints;// + dyy;
25 /*#ifndef SCALE_USING_MMX */
26 /* for now there's no mmx down scaling - so C only */
28 if (src->cache_entry.flags.alpha)
33 if (((ysli) % dc->sli.h) == dc->sli.y)
44 sptr = *yp + *xp + pos;
48 ax = (A_VAL(pix) * xap) >> 9;
49 rx = (R_VAL(pix) * xap) >> 9;
50 gx = (G_VAL(pix) * xap) >> 9;
51 bx = (B_VAL(pix) * xap) >> 9;
53 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
55 ax += (A_VAL(pix) * Cx) >> 9;
56 rx += (R_VAL(pix) * Cx) >> 9;
57 gx += (G_VAL(pix) * Cx) >> 9;
58 bx += (B_VAL(pix) * Cx) >> 9;
63 ax += (A_VAL(pix) * i) >> 9;
64 rx += (R_VAL(pix) * i) >> 9;
65 gx += (G_VAL(pix) * i) >> 9;
66 bx += (B_VAL(pix) * i) >> 9;
74 for (j = (1 << 14) - yap; j > Cy; j -= Cy)
78 ax = (A_VAL(pix) * xap) >> 9;
79 rx = (R_VAL(pix) * xap) >> 9;
80 gx = (G_VAL(pix) * xap) >> 9;
81 bx = (B_VAL(pix) * xap) >> 9;
83 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
85 ax += (A_VAL(pix) * Cx) >> 9;
86 rx += (R_VAL(pix) * Cx) >> 9;
87 gx += (G_VAL(pix) * Cx) >> 9;
88 bx += (B_VAL(pix) * Cx) >> 9;
93 ax += (A_VAL(pix) * i) >> 9;
94 rx += (R_VAL(pix) * i) >> 9;
95 gx += (G_VAL(pix) * i) >> 9;
96 bx += (B_VAL(pix) * i) >> 9;
100 r += (rx * Cy) >> 14;
101 g += (gx * Cy) >> 14;
102 b += (bx * Cy) >> 14;
108 ax = (A_VAL(pix) * xap) >> 9;
109 rx = (R_VAL(pix) * xap) >> 9;
110 gx = (G_VAL(pix) * xap) >> 9;
111 bx = (B_VAL(pix) * xap) >> 9;
113 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
115 ax += (A_VAL(pix) * Cx) >> 9;
116 rx += (R_VAL(pix) * Cx) >> 9;
117 gx += (G_VAL(pix) * Cx) >> 9;
118 bx += (B_VAL(pix) * Cx) >> 9;
123 ax += (A_VAL(pix) * i) >> 9;
124 rx += (R_VAL(pix) * i) >> 9;
125 gx += (G_VAL(pix) * i) >> 9;
126 bx += (B_VAL(pix) * i) >> 9;
134 *pbuf++ = ARGB_JOIN(((a + (1 << 4)) >> 5),
135 ((r + (1 << 4)) >> 5),
136 ((g + (1 << 4)) >> 5),
137 ((b + (1 << 4)) >> 5));
141 func(buf, NULL, dc->mul.col, dptr, w);
147 dptr += dst_w; dst_clip_w = w;
148 xp = xpoints;// + dxx;
149 xapp = xapoints;// + dxx;
156 if ((!src->cache_entry.flags.alpha) &&
157 (!dst->cache_entry.flags.alpha) &&
163 if (((ysli) % dc->sli.h) == dc->sli.y)
167 yap = *yapp & 0xffff;
173 xap = *xapp & 0xffff;
175 sptr = *yp + *xp + pos;
179 rx = (R_VAL(pix) * xap) >> 9;
180 gx = (G_VAL(pix) * xap) >> 9;
181 bx = (B_VAL(pix) * xap) >> 9;
183 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
185 rx += (R_VAL(pix) * Cx) >> 9;
186 gx += (G_VAL(pix) * Cx) >> 9;
187 bx += (B_VAL(pix) * Cx) >> 9;
192 rx += (R_VAL(pix) * i) >> 9;
193 gx += (G_VAL(pix) * i) >> 9;
194 bx += (B_VAL(pix) * i) >> 9;
197 r = (rx * yap) >> 14;
198 g = (gx * yap) >> 14;
199 b = (bx * yap) >> 14;
201 for (j = (1 << 14) - yap; j > Cy; j -= Cy)
205 rx = (R_VAL(pix) * xap) >> 9;
206 gx = (G_VAL(pix) * xap) >> 9;
207 bx = (B_VAL(pix) * xap) >> 9;
209 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
211 rx += (R_VAL(pix) * Cx) >> 9;
212 gx += (G_VAL(pix) * Cx) >> 9;
213 bx += (B_VAL(pix) * Cx) >> 9;
218 rx += (R_VAL(pix) * i) >> 9;
219 gx += (G_VAL(pix) * i) >> 9;
220 bx += (B_VAL(pix) * i) >> 9;
223 r += (rx * Cy) >> 14;
224 g += (gx * Cy) >> 14;
225 b += (bx * Cy) >> 14;
231 rx = (R_VAL(pix) * xap) >> 9;
232 gx = (G_VAL(pix) * xap) >> 9;
233 bx = (B_VAL(pix) * xap) >> 9;
235 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
237 rx += (R_VAL(pix) * Cx) >> 9;
238 gx += (G_VAL(pix) * Cx) >> 9;
239 bx += (B_VAL(pix) * Cx) >> 9;
244 rx += (R_VAL(pix) * i) >> 9;
245 gx += (G_VAL(pix) * i) >> 9;
246 bx += (B_VAL(pix) * i) >> 9;
253 *pbuf++ = ARGB_JOIN(0xff,
254 ((r + (1 << 4)) >> 5),
255 ((g + (1 << 4)) >> 5),
256 ((b + (1 << 4)) >> 5));
263 dptr += dst_w; dst_clip_w = w;
264 xp = xpoints;// + dxx;
265 xapp = xapoints;// + dxx;
275 if (((ysli) % dc->sli.h) == dc->sli.y)
279 yap = *yapp & 0xffff;
284 xap = *xapp & 0xffff;
286 sptr = *yp + *xp + pos;
290 rx = (R_VAL(pix) * xap) >> 9;
291 gx = (G_VAL(pix) * xap) >> 9;
292 bx = (B_VAL(pix) * xap) >> 9;
294 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
296 rx += (R_VAL(pix) * Cx) >> 9;
297 gx += (G_VAL(pix) * Cx) >> 9;
298 bx += (B_VAL(pix) * Cx) >> 9;
303 rx += (R_VAL(pix) * i) >> 9;
304 gx += (G_VAL(pix) * i) >> 9;
305 bx += (B_VAL(pix) * i) >> 9;
308 r = (rx * yap) >> 14;
309 g = (gx * yap) >> 14;
310 b = (bx * yap) >> 14;
312 for (j = (1 << 14) - yap; j > Cy; j -= Cy)
316 rx = (R_VAL(pix) * xap) >> 9;
317 gx = (G_VAL(pix) * xap) >> 9;
318 bx = (B_VAL(pix) * xap) >> 9;
320 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
322 rx += (R_VAL(pix) * Cx) >> 9;
323 gx += (G_VAL(pix) * Cx) >> 9;
324 bx += (B_VAL(pix) * Cx) >> 9;
329 rx += (R_VAL(pix) * i) >> 9;
330 gx += (G_VAL(pix) * i) >> 9;
331 bx += (B_VAL(pix) * i) >> 9;
334 r += (rx * Cy) >> 14;
335 g += (gx * Cy) >> 14;
336 b += (bx * Cy) >> 14;
342 rx = (R_VAL(pix) * xap) >> 9;
343 gx = (G_VAL(pix) * xap) >> 9;
344 bx = (B_VAL(pix) * xap) >> 9;
346 for (i = (1 << 14) - xap; i > Cx; i -= Cx)
348 rx += (R_VAL(pix) * Cx) >> 9;
349 gx += (G_VAL(pix) * Cx) >> 9;
350 bx += (B_VAL(pix) * Cx) >> 9;
355 rx += (R_VAL(pix) * i) >> 9;
356 gx += (G_VAL(pix) * i) >> 9;
357 bx += (B_VAL(pix) * i) >> 9;
364 *pbuf++ = ARGB_JOIN(0xff,
365 ((r + (1 << 4)) >> 5),
366 ((g + (1 << 4)) >> 5),
367 ((b + (1 << 4)) >> 5));
371 func(buf, NULL, dc->mul.col, dptr, w);
377 dptr += dst_w; dst_clip_w = w;
378 xp = xpoints;// + dxx;
379 xapp = xapoints;// + dxx;
385 /* MMX scaling down would go here */