MCPcopy Create free account
hub / github.com/axmolengine/axmol / CleanCollinear

Method CleanCollinear

3rdparty/clipper2/src/clipper.engine.cpp:1525–1560  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1523 }
1524
1525 void ClipperBase::CleanCollinear(OutRec* outrec)
1526 {
1527 outrec = GetRealOutRec(outrec);
1528 if (!outrec || outrec->is_open) return;
1529 if (!IsValidClosedPath(outrec->pts))
1530 {
1531 DisposeOutPts(outrec);
1532 return;
1533 }
1534
1535 OutPt* startOp = outrec->pts, * op2 = startOp;
1536 for (; ; )
1537 {
1538 //NB if preserveCollinear == true, then only remove 180 deg. spikes
1539 if (IsCollinear(op2->prev->pt, op2->pt, op2->next->pt) &&
1540 (op2->pt == op2->prev->pt ||
1541 op2->pt == op2->next->pt || !preserve_collinear_ ||
1542 DotProduct(op2->prev->pt, op2->pt, op2->next->pt) < 0))
1543 {
1544
1545 if (op2 == outrec->pts) outrec->pts = op2->prev;
1546
1547 op2 = DisposeOutPt(op2);
1548 if (!IsValidClosedPath(op2))
1549 {
1550 DisposeOutPts(outrec);
1551 return;
1552 }
1553 startOp = op2;
1554 continue;
1555 }
1556 op2 = op2->next;
1557 if (op2 == startOp) break;
1558 }
1559 FixSelfIntersects(outrec);
1560 }
1561
1562 void ClipperBase::DoSplitOp (OutRec* outrec, OutPt* splitOp)
1563 {

Callers

nothing calls this directly

Calls 6

GetRealOutRecFunction · 0.85
IsValidClosedPathFunction · 0.85
DisposeOutPtsFunction · 0.85
IsCollinearFunction · 0.85
DotProductFunction · 0.85
DisposeOutPtFunction · 0.85

Tested by

no test coverage detected