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;
17 xp = xpoints;// + dxx;
18 yp = ypoints;// + dyy;
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 + (1 << 3)) >> 4),
86 ((r + (1 << 3)) >> 4),
87 ((g + (1 << 3)) >> 4),
88 ((b + (1 << 3)) >> 4));
92 func(buf, NULL, dc->mul.col, dptr, w);
98 dptr += dst_w; dst_clip_w = w;
100 xp = xpoints;// + dxx;
101 xapp = xapoints;// + dxx;
107 if ((!src->cache_entry.flags.alpha) &&
108 (!dst->cache_entry.flags.alpha) &&
115 if (((ysli) % dc->sli.h) == dc->sli.y)
121 xap = *xapp & 0xffff;
122 pix = *yp + *xp + pos;
124 r = (R_VAL(pix) * xap) >> 10;
125 g = (G_VAL(pix) * xap) >> 10;
126 b = (B_VAL(pix) * xap) >> 10;
127 for (j = (1 << 14) - xap; j > Cx; j -= Cx)
130 r += (R_VAL(pix) * Cx) >> 10;
131 g += (G_VAL(pix) * Cx) >> 10;
132 b += (B_VAL(pix) * Cx) >> 10;
137 r += (R_VAL(pix) * j) >> 10;
138 g += (G_VAL(pix) * j) >> 10;
139 b += (B_VAL(pix) * j) >> 10;
141 if ((yap = *yapp) > 0)
143 pix = *yp + *xp + src_w + pos;
144 rr = (R_VAL(pix) * xap) >> 10;
145 gg = (G_VAL(pix) * xap) >> 10;
146 bb = (B_VAL(pix) * xap) >> 10;
147 for (j = (1 << 14) - xap; j > Cx; j -= Cx)
150 rr += (R_VAL(pix) * Cx) >> 10;
151 gg += (G_VAL(pix) * Cx) >> 10;
152 bb += (B_VAL(pix) * Cx) >> 10;
157 rr += (R_VAL(pix) * j) >> 10;
158 gg += (G_VAL(pix) * j) >> 10;
159 bb += (B_VAL(pix) * j) >> 10;
161 r += ((rr - r) * yap) >> 8;
162 g += ((gg - g) * yap) >> 8;
163 b += ((bb - b) * yap) >> 8;
165 *pbuf++ = ARGB_JOIN(0xff,
166 ((r + (1 << 3)) >> 4),
167 ((g + (1 << 3)) >> 4),
168 ((b + (1 << 3)) >> 4));
176 dptr += dst_w; dst_clip_w = w;
178 xp = xpoints;// + dxx;
179 xapp = xapoints;// + dxx;
188 if (((ysli) % dc->sli.h) == dc->sli.y)
194 xap = *xapp & 0xffff;
195 pix = *yp + *xp + pos;
197 r = (R_VAL(pix) * xap) >> 10;
198 g = (G_VAL(pix) * xap) >> 10;
199 b = (B_VAL(pix) * xap) >> 10;
200 for (j = (1 << 14) - xap; j > Cx; j -= Cx)
203 r += (R_VAL(pix) * Cx) >> 10;
204 g += (G_VAL(pix) * Cx) >> 10;
205 b += (B_VAL(pix) * Cx) >> 10;
210 r += (R_VAL(pix) * j) >> 10;
211 g += (G_VAL(pix) * j) >> 10;
212 b += (B_VAL(pix) * j) >> 10;
214 if ((yap = *yapp) > 0)
216 pix = *yp + *xp + src_w + pos;
217 rr = (R_VAL(pix) * xap) >> 10;
218 gg = (G_VAL(pix) * xap) >> 10;
219 bb = (B_VAL(pix) * xap) >> 10;
220 for (j = (1 << 14) - xap; j > Cx; j -= Cx)
223 rr += (R_VAL(pix) * Cx) >> 10;
224 gg += (G_VAL(pix) * Cx) >> 10;
225 bb += (B_VAL(pix) * Cx) >> 10;
230 rr += (R_VAL(pix) * j) >> 10;
231 gg += (G_VAL(pix) * j) >> 10;
232 bb += (B_VAL(pix) * j) >> 10;
234 r += ((rr - r) * yap) >> 8;
235 g += ((gg - g) * yap) >> 8;
236 b += ((bb - b) * yap) >> 8;
238 *pbuf++ = ARGB_JOIN(0xff,
239 ((r + (1 << 3)) >> 4),
240 ((g + (1 << 3)) >> 4),
241 ((b + (1 << 3)) >> 4));
245 func(buf, NULL, dc->mul.col, dptr, w);
252 dptr += dst_w; dst_clip_w = w;
254 xp = xpoints;// + dxx;
255 xapp = xapoints;// + dxx;