3 DATA32 *pix, *dptr, *pbuf, **yp;
4 int r, g, b, a, rr, gg, bb, aa;
5 int *xp, xap, yap, pos;
10 pos = (src_region_y * src_w) + src_region_x;
11 //dyy = dst_clip_y - dst_region_y;
12 //dxx = dst_clip_x - dst_region_x;
14 xp = xpoints;// + dxx;
15 yp = ypoints;// + dyy;
16 xapp = xapoints;// + dxx;
17 yapp = yapoints;// + dyy;
20 if (src->cache_entry.flags.alpha)
28 pix = *yp + *xp + pos;
30 a = (A_VAL(pix) * xap) >> 10;
31 r = (R_VAL(pix) * xap) >> 10;
32 g = (G_VAL(pix) * xap) >> 10;
33 b = (B_VAL(pix) * xap) >> 10;
34 for (j = (1 << 14) - xap; j > Cx; j -= Cx)
37 a += (A_VAL(pix) * Cx) >> 10;
38 r += (R_VAL(pix) * Cx) >> 10;
39 g += (G_VAL(pix) * Cx) >> 10;
40 b += (B_VAL(pix) * Cx) >> 10;
45 a += (A_VAL(pix) * j) >> 10;
46 r += (R_VAL(pix) * j) >> 10;
47 g += (G_VAL(pix) * j) >> 10;
48 b += (B_VAL(pix) * j) >> 10;
50 if ((yap = *yapp) > 0)
52 pix = *yp + *xp + src_w + pos;
53 aa = (A_VAL(pix) * xap) >> 10;
54 rr = (R_VAL(pix) * xap) >> 10;
55 gg = (G_VAL(pix) * xap) >> 10;
56 bb = (B_VAL(pix) * xap) >> 10;
57 for (j = (1 << 14) - xap; j > Cx; j -= Cx)
60 aa += (A_VAL(pix) * Cx) >> 10;
61 rr += (R_VAL(pix) * Cx) >> 10;
62 gg += (G_VAL(pix) * Cx) >> 10;
63 bb += (B_VAL(pix) * Cx) >> 10;
68 aa += (A_VAL(pix) * j) >> 10;
69 rr += (R_VAL(pix) * j) >> 10;
70 gg += (G_VAL(pix) * j) >> 10;
71 bb += (B_VAL(pix) * j) >> 10;
73 a += ((aa - a) * yap) >> 8;
74 r += ((rr - r) * yap) >> 8;
75 g += ((gg - g) * yap) >> 8;
76 b += ((bb - b) * yap) >> 8;
78 *pbuf++ = ARGB_JOIN(((a + (1 << 3)) >> 4),
79 ((r + (1 << 3)) >> 4),
80 ((g + (1 << 3)) >> 4),
81 ((b + (1 << 3)) >> 4));
85 func(buf, NULL, dc->mul.col, dptr, w);
88 dptr += dst_w; dst_clip_w = w;
90 xp = xpoints;// + dxx;
91 xapp = xapoints;// + dxx;
97 if ((!src->cache_entry.flags.alpha) &&
98 (!dst->cache_entry.flags.alpha) &&
108 xap = *xapp & 0xffff;
109 pix = *yp + *xp + pos;
111 r = (R_VAL(pix) * xap) >> 10;
112 g = (G_VAL(pix) * xap) >> 10;
113 b = (B_VAL(pix) * xap) >> 10;
114 for (j = (1 << 14) - xap; j > Cx; j -= Cx)
117 r += (R_VAL(pix) * Cx) >> 10;
118 g += (G_VAL(pix) * Cx) >> 10;
119 b += (B_VAL(pix) * Cx) >> 10;
124 r += (R_VAL(pix) * j) >> 10;
125 g += (G_VAL(pix) * j) >> 10;
126 b += (B_VAL(pix) * j) >> 10;
128 if ((yap = *yapp) > 0)
130 pix = *yp + *xp + src_w + pos;
131 rr = (R_VAL(pix) * xap) >> 10;
132 gg = (G_VAL(pix) * xap) >> 10;
133 bb = (B_VAL(pix) * xap) >> 10;
134 for (j = (1 << 14) - xap; j > Cx; j -= Cx)
137 rr += (R_VAL(pix) * Cx) >> 10;
138 gg += (G_VAL(pix) * Cx) >> 10;
139 bb += (B_VAL(pix) * Cx) >> 10;
144 rr += (R_VAL(pix) * j) >> 10;
145 gg += (G_VAL(pix) * j) >> 10;
146 bb += (B_VAL(pix) * j) >> 10;
148 r += ((rr - r) * yap) >> 8;
149 g += ((gg - g) * yap) >> 8;
150 b += ((bb - b) * yap) >> 8;
152 *pbuf++ = ARGB_JOIN(0xff,
153 ((r + (1 << 3)) >> 4),
154 ((g + (1 << 3)) >> 4),
155 ((b + (1 << 3)) >> 4));
159 dptr += dst_w; dst_clip_w = w;
161 xp = xpoints;// + dxx;
162 xapp = xapoints;// + dxx;
173 xap = *xapp & 0xffff;
174 pix = *yp + *xp + pos;
176 r = (R_VAL(pix) * xap) >> 10;
177 g = (G_VAL(pix) * xap) >> 10;
178 b = (B_VAL(pix) * xap) >> 10;
179 for (j = (1 << 14) - xap; j > Cx; j -= Cx)
182 r += (R_VAL(pix) * Cx) >> 10;
183 g += (G_VAL(pix) * Cx) >> 10;
184 b += (B_VAL(pix) * Cx) >> 10;
189 r += (R_VAL(pix) * j) >> 10;
190 g += (G_VAL(pix) * j) >> 10;
191 b += (B_VAL(pix) * j) >> 10;
193 if ((yap = *yapp) > 0)
195 pix = *yp + *xp + src_w + pos;
196 rr = (R_VAL(pix) * xap) >> 10;
197 gg = (G_VAL(pix) * xap) >> 10;
198 bb = (B_VAL(pix) * xap) >> 10;
199 for (j = (1 << 14) - xap; j > Cx; j -= Cx)
202 rr += (R_VAL(pix) * Cx) >> 10;
203 gg += (G_VAL(pix) * Cx) >> 10;
204 bb += (B_VAL(pix) * Cx) >> 10;
209 rr += (R_VAL(pix) * j) >> 10;
210 gg += (G_VAL(pix) * j) >> 10;
211 bb += (B_VAL(pix) * j) >> 10;
213 r += ((rr - r) * yap) >> 8;
214 g += ((gg - g) * yap) >> 8;
215 b += ((bb - b) * yap) >> 8;
217 *pbuf++ = ARGB_JOIN(0xff,
218 ((r + (1 << 3)) >> 4),
219 ((g + (1 << 3)) >> 4),
220 ((b + (1 << 3)) >> 4));
224 func(buf, NULL, dc->mul.col, dptr, w);
227 dptr += dst_w; dst_clip_w = w;
229 xp = xpoints;// + dxx;
230 xapp = xapoints;// + dxx;