7 PN_stdfloat fdx1, fdx2, fdy1, fdy2, fz, d1, d2;
10 int part, update_left, update_right;
12 int nb_lines, dx1, dy1, tmp, dx2, dy2;
15 int x1, dxdy_min, dxdy_max;
20 int z1 = 0, dzdx = 0, dzdy = 0, dzdl_min = 0, dzdl_max = 0;
23 int r1 = 0, drdx = 0, drdy = 0, drdl_min = 0, drdl_max = 0;
24 int g1 = 0, dgdx = 0, dgdy = 0, dgdl_min = 0, dgdl_max = 0;
25 int b1 = 0, dbdx = 0, dbdy = 0, dbdl_min = 0, dbdl_max = 0;
26 int a1 = 0, dadx = 0, dady = 0, dadl_min = 0, dadl_max = 0;
29 int s1 = 0, dsdx = 0, dsdy = 0, dsdl_min = 0, dsdl_max = 0;
30 int t1 = 0, dtdx = 0, dtdy = 0, dtdl_min = 0, dtdl_max = 0;
33 PN_stdfloat sz1 = 0, dszdx = 0, dszdy = 0, dszdl_min = 0, dszdl_max = 0;
34 PN_stdfloat tz1 = 0, dtzdx = 0, dtzdy = 0, dtzdl_min = 0, dtzdl_max = 0;
37 PN_stdfloat sza1 = 0, dszadx = 0, dszady = 0, dszadl_min = 0, dszadl_max = 0;
38 PN_stdfloat tza1 = 0, dtzadx = 0, dtzady = 0, dtzadl_min = 0, dtzadl_max = 0;
41 PN_stdfloat szb1 = 0, dszbdx = 0, dszbdy = 0, dszbdl_min = 0, dszbdl_max = 0;
42 PN_stdfloat tzb1 = 0, dtzbdx = 0, dtzbdy = 0, dtzbdl_min = 0, dtzbdl_max = 0;
44 #if defined(INTERP_MIPMAP) && (defined(INTERP_ST) || defined(INTERP_STZ)) 45 unsigned int mipmap_dx = 0, mipmap_level = 0;
47 #if defined(INTERP_MIPMAP) && defined(INTERP_STZA) 48 unsigned int mipmap_dxa = 0, mipmap_levela = 0;
50 #if defined(INTERP_MIPMAP) && defined(INTERP_STZB) 51 unsigned int mipmap_dxb = 0, mipmap_levelb = 0;
56 COUNT_PIXELS(PIXEL_COUNT, p0, p1, p2);
69 }
else if (p2->y < p1->y) {
77 fdx1 = (PN_stdfloat) (p1->x - p0->x);
78 fdy1 = (PN_stdfloat) (p1->y - p0->y);
80 fdx2 = (PN_stdfloat) (p2->x - p0->x);
81 fdy2 = (PN_stdfloat) (p2->y - p0->y);
83 fz = fdx1 * fdy2 - fdx2 * fdy1;
94 d1 = (PN_stdfloat) (p1->z - p0->z);
95 d2 = (PN_stdfloat) (p2->z - p0->z);
96 dzdx = (int) (fdy2 * d1 - fdy1 * d2);
97 dzdy = (int) (fdx1 * d2 - fdx2 * d1);
101 d1 = (PN_stdfloat) (p1->r - p0->r);
102 d2 = (PN_stdfloat) (p2->r - p0->r);
103 drdx = (int) (fdy2 * d1 - fdy1 * d2);
104 drdy = (int) (fdx1 * d2 - fdx2 * d1);
106 d1 = (PN_stdfloat) (p1->g - p0->g);
107 d2 = (PN_stdfloat) (p2->g - p0->g);
108 dgdx = (int) (fdy2 * d1 - fdy1 * d2);
109 dgdy = (int) (fdx1 * d2 - fdx2 * d1);
111 d1 = (PN_stdfloat) (p1->b - p0->b);
112 d2 = (PN_stdfloat) (p2->b - p0->b);
113 dbdx = (int) (fdy2 * d1 - fdy1 * d2);
114 dbdy = (int) (fdx1 * d2 - fdx2 * d1);
116 d1 = (PN_stdfloat) (p1->a - p0->a);
117 d2 = (PN_stdfloat) (p2->a - p0->a);
118 dadx = (int) (fdy2 * d1 - fdy1 * d2);
119 dady = (int) (fdx1 * d2 - fdx2 * d1);
124 d1 = (PN_stdfloat) (p1->s - p0->s);
125 d2 = (PN_stdfloat) (p2->s - p0->s);
126 dsdx = (int) (fdy2 * d1 - fdy1 * d2);
127 dsdy = (int) (fdx1 * d2 - fdx2 * d1);
129 d1 = (PN_stdfloat) (p1->t - p0->t);
130 d2 = (PN_stdfloat) (p2->t - p0->t);
131 dtdx = (int) (fdy2 * d1 - fdy1 * d2);
132 dtdy = (int) (fdx1 * d2 - fdx2 * d1);
134 CALC_MIPMAP_LEVEL(mipmap_level, mipmap_dx, dsdx, dtdx);
140 zz=(PN_stdfloat) p0->z;
141 p0->sz= (PN_stdfloat) p0->s * zz;
142 p0->tz= (PN_stdfloat) p0->t * zz;
143 zz=(PN_stdfloat) p1->z;
144 p1->sz= (PN_stdfloat) p1->s * zz;
145 p1->tz= (PN_stdfloat) p1->t * zz;
146 zz=(PN_stdfloat) p2->z;
147 p2->sz= (PN_stdfloat) p2->s * zz;
148 p2->tz= (PN_stdfloat) p2->t * zz;
150 d1 = p1->sz - p0->sz;
151 d2 = p2->sz - p0->sz;
152 dszdx = (fdy2 * d1 - fdy1 * d2);
153 dszdy = (fdx1 * d2 - fdx2 * d1);
155 d1 = p1->tz - p0->tz;
156 d2 = p2->tz - p0->tz;
157 dtzdx = (fdy2 * d1 - fdy1 * d2);
158 dtzdy = (fdx1 * d2 - fdx2 * d1);
165 zz=(PN_stdfloat) p0->z;
166 p0->sza= (PN_stdfloat) p0->sa * zz;
167 p0->tza= (PN_stdfloat) p0->ta * zz;
168 zz=(PN_stdfloat) p1->z;
169 p1->sza= (PN_stdfloat) p1->sa * zz;
170 p1->tza= (PN_stdfloat) p1->ta * zz;
171 zz=(PN_stdfloat) p2->z;
172 p2->sza= (PN_stdfloat) p2->sa * zz;
173 p2->tza= (PN_stdfloat) p2->ta * zz;
175 d1 = p1->sza - p0->sza;
176 d2 = p2->sza - p0->sza;
177 dszadx = (fdy2 * d1 - fdy1 * d2);
178 dszady = (fdx1 * d2 - fdx2 * d1);
180 d1 = p1->tza - p0->tza;
181 d2 = p2->tza - p0->tza;
182 dtzadx = (fdy2 * d1 - fdy1 * d2);
183 dtzady = (fdx1 * d2 - fdx2 * d1);
190 zz=(PN_stdfloat) p0->z;
191 p0->szb= (PN_stdfloat) p0->sb * zz;
192 p0->tzb= (PN_stdfloat) p0->tb * zz;
193 zz=(PN_stdfloat) p1->z;
194 p1->szb= (PN_stdfloat) p1->sb * zz;
195 p1->tzb= (PN_stdfloat) p1->tb * zz;
196 zz=(PN_stdfloat) p2->z;
197 p2->szb= (PN_stdfloat) p2->sb * zz;
198 p2->tzb= (PN_stdfloat) p2->tb * zz;
200 d1 = p1->szb - p0->szb;
201 d2 = p2->szb - p0->szb;
202 dszbdx = (fdy2 * d1 - fdy1 * d2);
203 dszbdy = (fdx1 * d2 - fdx2 * d1);
205 d1 = p1->tzb - p0->tzb;
206 d2 = p2->tzb - p0->tzb;
207 dtzbdx = (fdy2 * d1 - fdy1 * d2);
208 dtzbdy = (fdx1 * d2 - fdx2 * d1);
214 pp1 = (PIXEL *) ((
char *) zb->pbuf + zb->linesize * p0->y);
215 pz1 = zb->zbuf + p0->y * zb->xsize;
219 for(part=0;part<2;part++) {
236 nb_lines = p1->y - p0->y;
250 nb_lines = p2->y - p1->y + 1;
259 tmp = (dx1 << 16) / dy1;
264 derror = tmp & 0x0000ffff;
265 dxdy_min = tmp >> 16;
266 dxdy_max = dxdy_min + 1;
270 dzdl_min=(dzdy + dzdx * dxdy_min);
271 dzdl_max=dzdl_min + dzdx;
275 drdl_min=(drdy + drdx * dxdy_min);
276 drdl_max=drdl_min + drdx;
279 dgdl_min=(dgdy + dgdx * dxdy_min);
280 dgdl_max=dgdl_min + dgdx;
283 dbdl_min=(dbdy + dbdx * dxdy_min);
284 dbdl_max=dbdl_min + dbdx;
287 dadl_min=(dady + dadx * dxdy_min);
288 dadl_max=dadl_min + dadx;
292 dsdl_min=(dsdy + dsdx * dxdy_min);
293 dsdl_max=dsdl_min + dsdx;
296 dtdl_min=(dtdy + dtdx * dxdy_min);
297 dtdl_max=dtdl_min + dtdx;
301 dszdl_min=(dszdy + dszdx * dxdy_min);
302 dszdl_max=dszdl_min + dszdx;
305 dtzdl_min=(dtzdy + dtzdx * dxdy_min);
306 dtzdl_max=dtzdl_min + dtzdx;
310 dszadl_min=(dszady + dszadx * dxdy_min);
311 dszadl_max=dszadl_min + dszadx;
314 dtzadl_min=(dtzady + dtzadx * dxdy_min);
315 dtzadl_max=dtzadl_min + dtzadx;
319 dszbdl_min=(dszbdy + dszbdx * dxdy_min);
320 dszbdl_max=dszbdl_min + dszbdx;
323 dtzbdl_min=(dtzbdy + dtzbdx * dxdy_min);
324 dtzbdl_max=dtzbdl_min + dtzbdx;
331 dx2 = (pr2->x - pr1->x);
332 dy2 = (pr2->y - pr1->y);
334 dx2dy2 = ( dx2 << 16) / dy2;
354 unsigned int or1,og1,ob1,oa1;
370 pp=(PIXEL *)((
char *)pp1 + x1 * PSZB);
405 pp=(PIXEL *)((
char *)pp + 4 * PSZB);
413 pp=(PIXEL *)((
char *)pp + PSZB);
484 pp1=(PIXEL *)((
char *)pp1 + zb->linesize);