void POLYFILL(struct pvertex *pv, int nverts)
{
- int i;
+ int i, winding;
int topidx = 0, botidx = 0, sltop = pfill_fb.height, slbot = 0;
struct pvertex *left, *right;
uint16_t color;
if(pv[i].y > pv[botidx].y) botidx = i;
}
- int winding = 0;
+ winding = 0;
for(i=0; i<nverts; i++) {
int next = NEXTIDX(i);
- winding += ((pv[next].x - pv[i].x) >> 8) * ((pv[next].y + pv[i].y) >> 8);
+ winding += ((pv[next].x - pv[i].x) >> 4) * ((pv[next].y + pv[i].y) >> 4);
}
/* +1 to avoid crashing due to off-by-one rounding errors in the rasterization */
uint32_t res, tmp;
if(winding < 0) {
+ // clockwise
edge = y0 > y1 ? left : right;
} else {
+ // counter-clockwise
edge = y0 > y1 ? right : left;
}
res = SCANEDGE(pv + i, pv + next, edge);