| 286 | //------------------------------------------------------------------------------ |
| 287 | |
| 288 | void InitEdge(TEdge *e, TEdge *eNext, |
| 289 | TEdge *ePrev, const IntPoint &pt, PolyType polyType) |
| 290 | { |
| 291 | std::memset( e, 0, sizeof( TEdge )); |
| 292 | |
| 293 | e->next = eNext; |
| 294 | e->prev = ePrev; |
| 295 | e->xcurr = pt.X; |
| 296 | e->ycurr = pt.Y; |
| 297 | if (e->ycurr >= e->next->ycurr) |
| 298 | { |
| 299 | e->xbot = e->xcurr; |
| 300 | e->ybot = e->ycurr; |
| 301 | e->xtop = e->next->xcurr; |
| 302 | e->ytop = e->next->ycurr; |
| 303 | e->windDelta = 1; |
| 304 | } else |
| 305 | { |
| 306 | e->xtop = e->xcurr; |
| 307 | e->ytop = e->ycurr; |
| 308 | e->xbot = e->next->xcurr; |
| 309 | e->ybot = e->next->ycurr; |
| 310 | e->windDelta = -1; |
| 311 | } |
| 312 | SetDx(*e); |
| 313 | e->polyType = polyType; |
| 314 | e->outIdx = -1; |
| 315 | } |
| 316 | //------------------------------------------------------------------------------ |
| 317 | |
| 318 | inline void SwapX(TEdge &e) |