MCPcopy Create free account
hub / github.com/TheForceEngine/TheForceEngine / AddLocalMinPoly

Method AddLocalMinPoly

TheForceEngine/TFE_Polygon/clipper.cpp:1841–1881  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1839//------------------------------------------------------------------------------
1840
1841OutPt* Clipper::AddLocalMinPoly(TEdge *e1, TEdge *e2, const IntPoint &Pt)
1842{
1843 OutPt* result;
1844 TEdge *e, *prevE;
1845 if (IsHorizontal(*e2) || ( e1->Dx > e2->Dx ))
1846 {
1847 result = AddOutPt(e1, Pt);
1848 e2->OutIdx = e1->OutIdx;
1849 e1->Side = esLeft;
1850 e2->Side = esRight;
1851 e = e1;
1852 if (e->PrevInAEL == e2)
1853 prevE = e2->PrevInAEL;
1854 else
1855 prevE = e->PrevInAEL;
1856 } else
1857 {
1858 result = AddOutPt(e2, Pt);
1859 e1->OutIdx = e2->OutIdx;
1860 e1->Side = esRight;
1861 e2->Side = esLeft;
1862 e = e2;
1863 if (e->PrevInAEL == e1)
1864 prevE = e1->PrevInAEL;
1865 else
1866 prevE = e->PrevInAEL;
1867 }
1868
1869 if (prevE && prevE->OutIdx >= 0 && prevE->Top.Y < Pt.Y && e->Top.Y < Pt.Y)
1870 {
1871 cInt xPrev = TopX(*prevE, Pt.Y);
1872 cInt xE = TopX(*e, Pt.Y);
1873 if (xPrev == xE && (e->WindDelta != 0) && (prevE->WindDelta != 0) &&
1874 SlopesEqual(IntPoint(xPrev, Pt.Y), prevE->Top, IntPoint(xE, Pt.Y), e->Top, m_UseFullRange))
1875 {
1876 OutPt* outPt = AddOutPt(prevE, Pt);
1877 AddJoin(result, outPt, e->Top);
1878 }
1879 }
1880 return result;
1881}
1882//------------------------------------------------------------------------------
1883
1884void Clipper::AddLocalMaxPoly(TEdge *e1, TEdge *e2, const IntPoint &Pt)

Callers

nothing calls this directly

Calls 4

IsHorizontalFunction · 0.85
TopXFunction · 0.85
SlopesEqualFunction · 0.85
IntPointClass · 0.85

Tested by

no test coverage detected