Skip to content

Commit d37acbf

Browse files
committed
fix: align IntersectEdges parity with C# 1.4
1 parent 63c7915 commit d37acbf

1 file changed

Lines changed: 12 additions & 14 deletions

File tree

src/main/java/clipper2/engine/ClipperBase.java

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1416,13 +1416,13 @@ private static Active FindEdgeWithMatchingLocMin(Active e) {
14161416
return result;
14171417
}
14181418

1419-
private OutPt IntersectEdges(Active ae1, Active ae2, Point64 pt) {
1419+
private void IntersectEdges(Active ae1, Active ae2, Point64 pt) {
14201420
OutPt resultOp = null;
14211421

14221422
// MANAGE OPEN PATH INTERSECTIONS SEPARATELY ...
14231423
if (hasOpenPaths && (IsOpen(ae1) || IsOpen(ae2))) {
14241424
if (IsOpen(ae1) && IsOpen(ae2)) {
1425-
return null;
1425+
return;
14261426
}
14271427
// the following line avoids duplicating quite a bit of code
14281428
if (IsOpen(ae2)) {
@@ -1436,26 +1436,26 @@ private OutPt IntersectEdges(Active ae1, Active ae2, Point64 pt) {
14361436

14371437
if (cliptype == ClipType.Union) {
14381438
if (!IsHotEdge(ae2)) {
1439-
return null;
1439+
return;
14401440
}
14411441
} else if (ae2.localMin.polytype == PathType.Subject) {
1442-
return null;
1442+
return;
14431443
}
14441444

14451445
switch (fillrule) {
14461446
case Positive :
14471447
if (ae2.windCount != 1) {
1448-
return null;
1448+
return;
14491449
}
14501450
break;
14511451
case Negative :
14521452
if (ae2.windCount != -1) {
1453-
return null;
1453+
return;
14541454
}
14551455
break;
14561456
default :
14571457
if (Math.abs(ae2.windCount) != 1) {
1458-
return null;
1458+
return;
14591459
}
14601460
break;
14611461
}
@@ -1483,15 +1483,15 @@ else if (pt.opEquals(ae1.localMin.vertex.pt) && !IsOpenEnd(ae1.localMin.vertex))
14831483
} else {
14841484
SetSides(ae3.outrec, ae3, ae1);
14851485
}
1486-
return ae3.outrec.pts;
1486+
return;
14871487
}
14881488

14891489
resultOp = StartOpenPath(ae1, pt);
14901490
} else {
14911491
resultOp = StartOpenPath(ae1, pt);
14921492
}
14931493

1494-
return resultOp;
1494+
return;
14951495
}
14961496

14971497
// MANAGING CLOSED PATHS FROM HERE ON
@@ -1554,7 +1554,7 @@ else if (pt.opEquals(ae1.localMin.vertex.pt) && !IsOpenEnd(ae1.localMin.vertex))
15541554
boolean e2WindCountIs0or1 = oldE2WindCount == 0 || oldE2WindCount == 1;
15551555

15561556
if ((!IsHotEdge(ae1) && !e1WindCountIs0or1) || (!IsHotEdge(ae2) && !e2WindCountIs0or1)) {
1557-
return null;
1557+
return;
15581558
}
15591559

15601560
// NOW PROCESS THE INTERSECTION ...
@@ -1612,7 +1612,7 @@ else if (IsHotEdge(ae1)) {
16121612
switch (cliptype) {
16131613
case Union :
16141614
if (e1Wc2 > 0 && e2Wc2 > 0) {
1615-
return null;
1615+
return;
16161616
}
16171617
resultOp = AddLocalMinPoly(ae1, ae2, pt);
16181618
break;
@@ -1631,15 +1631,13 @@ else if (IsHotEdge(ae1)) {
16311631

16321632
default : // ClipType.Intersection:
16331633
if (e1Wc2 <= 0 || e2Wc2 <= 0) {
1634-
return null;
1634+
return;
16351635
}
16361636
resultOp = AddLocalMinPoly(ae1, ae2, pt);
16371637
break;
16381638
}
16391639
}
16401640
}
1641-
1642-
return resultOp;
16431641
}
16441642

16451643
private void DeleteFromAEL(Active ae) {

0 commit comments

Comments
 (0)