clipper2-ts 2.0.1-16 → 2.0.1-18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Engine.d.ts +3 -3
- package/dist/Engine.d.ts.map +1 -1
- package/dist/Engine.js +116 -71
- package/dist/Engine.js.map +1 -1
- package/dist/clipper2.min.mjs +6 -6
- package/dist/clipper2.min.mjs.map +1 -1
- package/package.json +1 -1
- package/src/Engine.ts +113 -70
package/dist/Engine.d.ts
CHANGED
|
@@ -170,6 +170,7 @@ export declare class ClipperBase {
|
|
|
170
170
|
protected readonly horzJoinList: HorzJoin[];
|
|
171
171
|
protected currentLocMin: number;
|
|
172
172
|
protected currentBotY: number;
|
|
173
|
+
private curXValidAtTop;
|
|
173
174
|
protected isSortedMinimaList: boolean;
|
|
174
175
|
protected hasOpenPaths: boolean;
|
|
175
176
|
protected usingPolytree: boolean;
|
|
@@ -198,13 +199,13 @@ export declare class ClipperBase {
|
|
|
198
199
|
private static isHorizontal;
|
|
199
200
|
private static isHeadingRightHorz;
|
|
200
201
|
private static isHeadingLeftHorz;
|
|
201
|
-
private static swapActives;
|
|
202
202
|
private static getPolyType;
|
|
203
203
|
private static isSamePolyType;
|
|
204
204
|
private static setDx;
|
|
205
205
|
private static nextVertex;
|
|
206
206
|
private static prevPrevVertex;
|
|
207
|
-
private static
|
|
207
|
+
private static isMaximaVertex;
|
|
208
|
+
private static isMaximaEdge;
|
|
208
209
|
private static getMaximaPair;
|
|
209
210
|
private boundingBoxesOverlap;
|
|
210
211
|
protected clearSolutionOnly(): void;
|
|
@@ -229,7 +230,6 @@ export declare class ClipperBase {
|
|
|
229
230
|
private convertHorzSegsToJoins;
|
|
230
231
|
private updateHorzSegment;
|
|
231
232
|
private setHorzSegHeadingForward;
|
|
232
|
-
private horzSegSort;
|
|
233
233
|
protected duplicateOp(op: OutPt, insertAfter: boolean): OutPt;
|
|
234
234
|
protected getRealOutRec(outRec: OutRec | null): OutRec | null;
|
|
235
235
|
private doIntersections;
|
package/dist/Engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../src/Engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../src/Engine.ts"],"names":[],"mappings":"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"}
|
package/dist/Engine.js
CHANGED
|
@@ -172,6 +172,23 @@ export class HorzJoin {
|
|
|
172
172
|
this.op2 = rtol;
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
|
+
function compareHorzSegments(hs1, hs2) {
|
|
176
|
+
if (hs1.rightOp === null) {
|
|
177
|
+
return hs2.rightOp === null ? 0 : 1;
|
|
178
|
+
}
|
|
179
|
+
if (hs2.rightOp === null)
|
|
180
|
+
return -1;
|
|
181
|
+
return hs1.leftOp.pt.x - hs2.leftOp.pt.x;
|
|
182
|
+
}
|
|
183
|
+
function compareIntersectNodes(a, b) {
|
|
184
|
+
if (a.pt.y !== b.pt.y)
|
|
185
|
+
return (a.pt.y > b.pt.y) ? -1 : 1;
|
|
186
|
+
if (a.pt.x !== b.pt.x)
|
|
187
|
+
return (a.pt.x < b.pt.x) ? -1 : 1;
|
|
188
|
+
if (a.edge1.curX !== b.edge1.curX)
|
|
189
|
+
return (a.edge1.curX < b.edge1.curX) ? -1 : 1;
|
|
190
|
+
return (a.edge2.curX < b.edge2.curX) ? -1 : (a.edge2.curX > b.edge2.curX) ? 1 : 0;
|
|
191
|
+
}
|
|
175
192
|
///////////////////////////////////////////////////////////////////
|
|
176
193
|
// Important: UP and DOWN here are premised on Y-axis positive down
|
|
177
194
|
// displays, which is the orientation used in Clipper's development.
|
|
@@ -217,18 +234,22 @@ export const ClipperEngine = {
|
|
|
217
234
|
const path = paths[i];
|
|
218
235
|
let v0 = null;
|
|
219
236
|
let prevV = null;
|
|
237
|
+
// nb: vertexList holds only each path's head vertex; the rest of the
|
|
238
|
+
// chain stays reachable through the next/prev links
|
|
239
|
+
let prevPt = null;
|
|
220
240
|
for (let j = 0, len2 = path.length; j < len2; j++) {
|
|
221
241
|
const pt = path[j];
|
|
222
242
|
if (v0 === null) {
|
|
223
243
|
v0 = new Vertex(pt, VertexFlags.None, null);
|
|
224
244
|
vertexList.push(v0);
|
|
225
245
|
prevV = v0;
|
|
246
|
+
prevPt = pt;
|
|
226
247
|
}
|
|
227
|
-
else if (!(
|
|
248
|
+
else if (!(prevPt.x === pt.x && prevPt.y === pt.y)) { // ie skips duplicates
|
|
228
249
|
const currV = new Vertex(pt, VertexFlags.None, prevV);
|
|
229
|
-
vertexList.push(currV);
|
|
230
250
|
prevV.next = currV;
|
|
231
251
|
prevV = currV;
|
|
252
|
+
prevPt = pt;
|
|
232
253
|
}
|
|
233
254
|
}
|
|
234
255
|
if (prevV?.prev == null)
|
|
@@ -464,6 +485,10 @@ export class ClipperBase {
|
|
|
464
485
|
horzJoinList = [];
|
|
465
486
|
currentLocMin = 0;
|
|
466
487
|
currentBotY = 0;
|
|
488
|
+
// True when every active edge's curX already equals topX(edge, topY) for the
|
|
489
|
+
// scanbeam top being processed (set by buildIntersectList when the SEL scan
|
|
490
|
+
// finds no inversions, i.e. no intersections; consumed by doTopOfScanbeam).
|
|
491
|
+
curXValidAtTop = false;
|
|
467
492
|
isSortedMinimaList = false;
|
|
468
493
|
hasOpenPaths = false;
|
|
469
494
|
usingPolytree = false;
|
|
@@ -581,7 +606,9 @@ export class ClipperBase {
|
|
|
581
606
|
return InternalClipper.roundToEven(ae.bot.x + ae.dx * (currentY - ae.bot.y));
|
|
582
607
|
}
|
|
583
608
|
static isHorizontal(ae) {
|
|
584
|
-
|
|
609
|
+
// dx is ±Infinity iff top.y === bot.y (see getDx); every mutation of
|
|
610
|
+
// bot/top must be followed by setDx() for this to hold.
|
|
611
|
+
return ae.dx === Number.NEGATIVE_INFINITY || ae.dx === Number.POSITIVE_INFINITY;
|
|
585
612
|
}
|
|
586
613
|
static isHeadingRightHorz(ae) {
|
|
587
614
|
return ae.dx === Number.NEGATIVE_INFINITY;
|
|
@@ -589,9 +616,6 @@ export class ClipperBase {
|
|
|
589
616
|
static isHeadingLeftHorz(ae) {
|
|
590
617
|
return ae.dx === Number.POSITIVE_INFINITY;
|
|
591
618
|
}
|
|
592
|
-
static swapActives(ae1, ae2) {
|
|
593
|
-
return [ae2, ae1];
|
|
594
|
-
}
|
|
595
619
|
static getPolyType(ae) {
|
|
596
620
|
return ae.localMin.polytype;
|
|
597
621
|
}
|
|
@@ -607,15 +631,11 @@ export class ClipperBase {
|
|
|
607
631
|
static prevPrevVertex(ae) {
|
|
608
632
|
return ae.windDx > 0 ? ae.vertexTop.prev.prev : ae.vertexTop.next.next;
|
|
609
633
|
}
|
|
610
|
-
static
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
else {
|
|
616
|
-
// It's an Active
|
|
617
|
-
return ClipperBase.isMaxima(vertexOrAe.vertexTop);
|
|
618
|
-
}
|
|
634
|
+
static isMaximaVertex(v) {
|
|
635
|
+
return (v.flags & VertexFlags.LocalMax) !== VertexFlags.None;
|
|
636
|
+
}
|
|
637
|
+
static isMaximaEdge(ae) {
|
|
638
|
+
return (ae.vertexTop.flags & VertexFlags.LocalMax) !== VertexFlags.None;
|
|
619
639
|
}
|
|
620
640
|
static getMaximaPair(ae) {
|
|
621
641
|
let ae2 = ae.nextInAEL;
|
|
@@ -629,15 +649,21 @@ export class ClipperBase {
|
|
|
629
649
|
// optimization (not in C# reference): fast bounding box overlap check for segment intersection
|
|
630
650
|
boundingBoxesOverlap(p1, p2, p3, p4) {
|
|
631
651
|
// segment 1: p1-p2, segment 2: p3-p4
|
|
632
|
-
const min1x =
|
|
633
|
-
const
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
const
|
|
637
|
-
const
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
652
|
+
const min1x = p1.x < p2.x ? p1.x : p2.x;
|
|
653
|
+
const max2x = p3.x > p4.x ? p3.x : p4.x;
|
|
654
|
+
if (max2x < min1x)
|
|
655
|
+
return false;
|
|
656
|
+
const max1x = p1.x > p2.x ? p1.x : p2.x;
|
|
657
|
+
const min2x = p3.x < p4.x ? p3.x : p4.x;
|
|
658
|
+
if (max1x < min2x)
|
|
659
|
+
return false;
|
|
660
|
+
const min1y = p1.y < p2.y ? p1.y : p2.y;
|
|
661
|
+
const max2y = p3.y > p4.y ? p3.y : p4.y;
|
|
662
|
+
if (max2y < min1y)
|
|
663
|
+
return false;
|
|
664
|
+
const max1y = p1.y > p2.y ? p1.y : p2.y;
|
|
665
|
+
const min2y = p3.y < p4.y ? p3.y : p4.y;
|
|
666
|
+
return max1y >= min2y;
|
|
641
667
|
}
|
|
642
668
|
clearSolutionOnly() {
|
|
643
669
|
while (this.actives !== null)
|
|
@@ -676,6 +702,7 @@ export class ClipperBase {
|
|
|
676
702
|
this.currentLocMin = 0;
|
|
677
703
|
this.actives = null;
|
|
678
704
|
this.sel = null;
|
|
705
|
+
this.curXValidAtTop = false;
|
|
679
706
|
this.succeeded = true;
|
|
680
707
|
}
|
|
681
708
|
upgradeScanlineStructureFromArray() {
|
|
@@ -878,15 +905,23 @@ export class ClipperBase {
|
|
|
878
905
|
// Now if the LeftB isn't on the left of RightB then we need swap them.
|
|
879
906
|
if (leftBound !== null && rightBound !== null) {
|
|
880
907
|
if (ClipperBase.isHorizontal(leftBound)) {
|
|
881
|
-
if (ClipperBase.isHeadingRightHorz(leftBound))
|
|
882
|
-
|
|
908
|
+
if (ClipperBase.isHeadingRightHorz(leftBound)) {
|
|
909
|
+
const tmp = leftBound;
|
|
910
|
+
leftBound = rightBound;
|
|
911
|
+
rightBound = tmp;
|
|
912
|
+
}
|
|
883
913
|
}
|
|
884
914
|
else if (ClipperBase.isHorizontal(rightBound)) {
|
|
885
|
-
if (ClipperBase.isHeadingLeftHorz(rightBound))
|
|
886
|
-
|
|
915
|
+
if (ClipperBase.isHeadingLeftHorz(rightBound)) {
|
|
916
|
+
const tmp = leftBound;
|
|
917
|
+
leftBound = rightBound;
|
|
918
|
+
rightBound = tmp;
|
|
919
|
+
}
|
|
887
920
|
}
|
|
888
921
|
else if (leftBound.dx < rightBound.dx) {
|
|
889
|
-
|
|
922
|
+
const tmp = leftBound;
|
|
923
|
+
leftBound = rightBound;
|
|
924
|
+
rightBound = tmp;
|
|
890
925
|
}
|
|
891
926
|
}
|
|
892
927
|
else if (leftBound === null) {
|
|
@@ -1155,14 +1190,18 @@ export class ClipperBase {
|
|
|
1155
1190
|
this.updateEdgeIntoAEL(horz); // this is the end of an intermediate horiz.
|
|
1156
1191
|
}
|
|
1157
1192
|
convertHorzSegsToJoins() {
|
|
1193
|
+
// compact valid segments to [0, k) so the sort below only orders those
|
|
1194
|
+
const list = this.horzSegList;
|
|
1158
1195
|
let k = 0;
|
|
1159
|
-
for (
|
|
1196
|
+
for (let i = 0, len = list.length; i < len; i++) {
|
|
1197
|
+
const hs = list[i];
|
|
1160
1198
|
if (this.updateHorzSegment(hs))
|
|
1161
|
-
k
|
|
1199
|
+
list[k++] = hs;
|
|
1162
1200
|
}
|
|
1163
1201
|
if (k < 2)
|
|
1164
1202
|
return;
|
|
1165
|
-
|
|
1203
|
+
list.length = k;
|
|
1204
|
+
this.horzSegList.sort(compareHorzSegments);
|
|
1166
1205
|
for (let i = 0; i < k - 1; i++) {
|
|
1167
1206
|
const hs1 = this.horzSegList[i];
|
|
1168
1207
|
// for each HorzSegment, find others that overlap
|
|
@@ -1241,14 +1280,6 @@ export class ClipperBase {
|
|
|
1241
1280
|
}
|
|
1242
1281
|
return true;
|
|
1243
1282
|
}
|
|
1244
|
-
horzSegSort(hs1, hs2) {
|
|
1245
|
-
if (hs1.rightOp === null) {
|
|
1246
|
-
return hs2.rightOp === null ? 0 : 1;
|
|
1247
|
-
}
|
|
1248
|
-
if (hs2.rightOp === null)
|
|
1249
|
-
return -1;
|
|
1250
|
-
return hs1.leftOp.pt.x - hs2.leftOp.pt.x;
|
|
1251
|
-
}
|
|
1252
1283
|
duplicateOp(op, insertAfter) {
|
|
1253
1284
|
const result = new OutPt(op.pt, op.outrec);
|
|
1254
1285
|
if (insertAfter) {
|
|
@@ -1278,13 +1309,18 @@ export class ClipperBase {
|
|
|
1278
1309
|
}
|
|
1279
1310
|
}
|
|
1280
1311
|
doTopOfScanbeam(y) {
|
|
1312
|
+
// When the preceding buildIntersectList found no inversions, every edge's
|
|
1313
|
+
// curX already equals topX(ae, y), so skip recomputing it (topX is pure in
|
|
1314
|
+
// ae.bot/ae.dx/y, none of which change below for edges not at their top).
|
|
1315
|
+
const curXValid = this.curXValidAtTop;
|
|
1316
|
+
this.curXValidAtTop = false;
|
|
1281
1317
|
this.sel = null; // sel is reused to flag horizontals (see PushHorz below)
|
|
1282
1318
|
let ae = this.actives;
|
|
1283
1319
|
while (ae !== null) {
|
|
1284
1320
|
// NB 'ae' will never be horizontal here
|
|
1285
1321
|
if (ae.top.y === y) {
|
|
1286
1322
|
ae.curX = ae.top.x;
|
|
1287
|
-
if (ClipperBase.
|
|
1323
|
+
if (ClipperBase.isMaximaEdge(ae)) {
|
|
1288
1324
|
ae = this.doMaxima(ae); // TOP OF BOUND (MAXIMA)
|
|
1289
1325
|
continue;
|
|
1290
1326
|
}
|
|
@@ -1298,7 +1334,7 @@ export class ClipperBase {
|
|
|
1298
1334
|
}
|
|
1299
1335
|
}
|
|
1300
1336
|
}
|
|
1301
|
-
else { // i.e. not the top of the edge
|
|
1337
|
+
else if (!curXValid) { // i.e. not the top of the edge
|
|
1302
1338
|
ae.curX = ClipperBase.topX(ae, y); // TopX already returns correctly rounded integer
|
|
1303
1339
|
}
|
|
1304
1340
|
ae = ae.nextInAEL;
|
|
@@ -1492,7 +1528,13 @@ export class ClipperBase {
|
|
|
1492
1528
|
return false;
|
|
1493
1529
|
// Calculate edge positions at the top of the current scanbeam, and from this
|
|
1494
1530
|
// we will determine the intersections required to reach these new positions.
|
|
1495
|
-
|
|
1531
|
+
// If the AEL is already sorted by the new curX values (no adjacent
|
|
1532
|
+
// inversions), no edges intersect within this scanbeam, so skip the merge
|
|
1533
|
+
// sort; every edge's curX is then already correct for topY.
|
|
1534
|
+
if (!this.adjustCurrXAndCopyToSEL(topY)) {
|
|
1535
|
+
this.curXValidAtTop = true;
|
|
1536
|
+
return false;
|
|
1537
|
+
}
|
|
1496
1538
|
// Find all edge intersections in the current scanbeam using a stable merge
|
|
1497
1539
|
// sort that ensures only adjacent edges are intersecting. Intersect info is
|
|
1498
1540
|
// stored in intersectList ready to be processed in ProcessIntersectList.
|
|
@@ -1548,18 +1590,7 @@ export class ClipperBase {
|
|
|
1548
1590
|
// that edge intersections are processed from the bottom up, but it's also
|
|
1549
1591
|
// crucial that intersections only occur between adjacent edges.
|
|
1550
1592
|
// First we do a quicksort so intersections proceed in a bottom up order ...
|
|
1551
|
-
this.intersectList.sort(
|
|
1552
|
-
if (a.pt.y !== b.pt.y)
|
|
1553
|
-
return (a.pt.y > b.pt.y) ? -1 : 1;
|
|
1554
|
-
if (a.pt.x !== b.pt.x)
|
|
1555
|
-
return (a.pt.x < b.pt.x) ? -1 : 1;
|
|
1556
|
-
// Tiebreaker: when points are identical, sort by edge1's curX position
|
|
1557
|
-
// This provides deterministic ordering matching C# IntroSort behavior
|
|
1558
|
-
if (a.edge1.curX !== b.edge1.curX)
|
|
1559
|
-
return (a.edge1.curX < b.edge1.curX) ? -1 : 1;
|
|
1560
|
-
// Final tiebreaker: edge2's curX
|
|
1561
|
-
return (a.edge2.curX < b.edge2.curX) ? -1 : (a.edge2.curX > b.edge2.curX) ? 1 : 0;
|
|
1562
|
-
});
|
|
1593
|
+
this.intersectList.sort(compareIntersectNodes);
|
|
1563
1594
|
// Now as we process these intersections, we must sometimes adjust the order
|
|
1564
1595
|
// to ensure that intersecting edges are always adjacent ...
|
|
1565
1596
|
for (let i = 0; i < this.intersectList.length; ++i) {
|
|
@@ -1582,19 +1613,28 @@ export class ClipperBase {
|
|
|
1582
1613
|
edgesAdjacentInAEL(inode) {
|
|
1583
1614
|
return (inode.edge1.nextInAEL === inode.edge2) || (inode.edge1.prevInAEL === inode.edge2);
|
|
1584
1615
|
}
|
|
1616
|
+
// Returns true if any adjacent pair is inverted at topY (i.e. at least one
|
|
1617
|
+
// intersection exists within this scanbeam).
|
|
1585
1618
|
adjustCurrXAndCopyToSEL(topY) {
|
|
1586
1619
|
let ae = this.actives;
|
|
1587
1620
|
this.sel = ae;
|
|
1621
|
+
let prevX = Number.NEGATIVE_INFINITY;
|
|
1622
|
+
let inverted = false;
|
|
1588
1623
|
while (ae !== null) {
|
|
1589
1624
|
ae.prevInSEL = ae.prevInAEL;
|
|
1590
1625
|
ae.nextInSEL = ae.nextInAEL;
|
|
1591
1626
|
ae.jump = ae.nextInSEL;
|
|
1592
1627
|
// it is safe to ignore 'joined' edges here because
|
|
1593
1628
|
// if necessary they will be split in IntersectEdges()
|
|
1594
|
-
|
|
1629
|
+
const x = ClipperBase.topX(ae, topY);
|
|
1630
|
+
ae.curX = x;
|
|
1595
1631
|
// NB don't update ae.curr.Y yet (see AddNewIntersectNode)
|
|
1632
|
+
if (x < prevX)
|
|
1633
|
+
inverted = true;
|
|
1634
|
+
prevX = x;
|
|
1596
1635
|
ae = ae.nextInAEL;
|
|
1597
1636
|
}
|
|
1637
|
+
return inverted;
|
|
1598
1638
|
}
|
|
1599
1639
|
doMaxima(ae) {
|
|
1600
1640
|
const prevE = ae.prevInAEL;
|
|
@@ -1682,7 +1722,7 @@ export class ClipperBase {
|
|
|
1682
1722
|
horzEdge.vertexTop = ClipperBase.nextVertex(horzEdge);
|
|
1683
1723
|
horzEdge.top = pt;
|
|
1684
1724
|
wasTrimmed = true;
|
|
1685
|
-
if (ClipperBase.
|
|
1725
|
+
if (ClipperBase.isMaximaVertex(horzEdge.vertexTop))
|
|
1686
1726
|
break;
|
|
1687
1727
|
pt = ClipperBase.nextVertex(horzEdge).pt;
|
|
1688
1728
|
}
|
|
@@ -1758,7 +1798,7 @@ export class ClipperBase {
|
|
|
1758
1798
|
((result.flags & (VertexFlags.OpenEnd | VertexFlags.LocalMax)) === VertexFlags.None))
|
|
1759
1799
|
result = result.prev;
|
|
1760
1800
|
}
|
|
1761
|
-
if (!ClipperBase.
|
|
1801
|
+
if (!ClipperBase.isMaximaVertex(result))
|
|
1762
1802
|
result = null; // not a maxima
|
|
1763
1803
|
return result;
|
|
1764
1804
|
}
|
|
@@ -1772,7 +1812,7 @@ export class ClipperBase {
|
|
|
1772
1812
|
while (result.prev.pt.y === result.pt.y)
|
|
1773
1813
|
result = result.prev;
|
|
1774
1814
|
}
|
|
1775
|
-
if (!ClipperBase.
|
|
1815
|
+
if (!ClipperBase.isMaximaVertex(result))
|
|
1776
1816
|
result = null; // not a maxima
|
|
1777
1817
|
return result;
|
|
1778
1818
|
}
|
|
@@ -2124,8 +2164,11 @@ export class ClipperBase {
|
|
|
2124
2164
|
}
|
|
2125
2165
|
checkJoinLeft(ae, pt, checkCurrX = false) {
|
|
2126
2166
|
const prev = ae.prevInAEL;
|
|
2127
|
-
if (prev === null
|
|
2128
|
-
|
|
2167
|
+
if (prev === null)
|
|
2168
|
+
return;
|
|
2169
|
+
if (!checkCurrX && ae.curX !== prev.curX)
|
|
2170
|
+
return;
|
|
2171
|
+
if (!ClipperBase.isHotEdge(ae) || !ClipperBase.isHotEdge(prev) ||
|
|
2129
2172
|
ClipperBase.isHorizontal(ae) || ClipperBase.isHorizontal(prev) ||
|
|
2130
2173
|
ClipperBase.isOpen(ae) || ClipperBase.isOpen(prev))
|
|
2131
2174
|
return;
|
|
@@ -2136,8 +2179,6 @@ export class ClipperBase {
|
|
|
2136
2179
|
if (this.perpendicDistFromLineSqrdGreaterThanQuarter(pt, prev.bot, prev.top))
|
|
2137
2180
|
return;
|
|
2138
2181
|
}
|
|
2139
|
-
else if (ae.curX !== prev.curX)
|
|
2140
|
-
return;
|
|
2141
2182
|
if (!InternalClipper.isCollinear(ae.top, pt, prev.top))
|
|
2142
2183
|
return;
|
|
2143
2184
|
if (ae.outrec.idx === prev.outrec.idx) {
|
|
@@ -2154,8 +2195,11 @@ export class ClipperBase {
|
|
|
2154
2195
|
}
|
|
2155
2196
|
checkJoinRight(ae, pt, checkCurrX = false) {
|
|
2156
2197
|
const next = ae.nextInAEL;
|
|
2157
|
-
if (next === null
|
|
2158
|
-
|
|
2198
|
+
if (next === null)
|
|
2199
|
+
return;
|
|
2200
|
+
if (!checkCurrX && ae.curX !== next.curX)
|
|
2201
|
+
return;
|
|
2202
|
+
if (!ClipperBase.isHotEdge(ae) || !ClipperBase.isHotEdge(next) ||
|
|
2159
2203
|
ClipperBase.isHorizontal(ae) || ClipperBase.isHorizontal(next) ||
|
|
2160
2204
|
ClipperBase.isOpen(ae) || ClipperBase.isOpen(next))
|
|
2161
2205
|
return;
|
|
@@ -2166,8 +2210,6 @@ export class ClipperBase {
|
|
|
2166
2210
|
if (this.perpendicDistFromLineSqrdGreaterThanQuarter(pt, next.bot, next.top))
|
|
2167
2211
|
return;
|
|
2168
2212
|
}
|
|
2169
|
-
else if (ae.curX !== next.curX)
|
|
2170
|
-
return;
|
|
2171
2213
|
if (!InternalClipper.isCollinear(ae.top, pt, next.top))
|
|
2172
2214
|
return;
|
|
2173
2215
|
if (ae.outrec.idx === next.outrec.idx) {
|
|
@@ -2215,8 +2257,11 @@ export class ClipperBase {
|
|
|
2215
2257
|
if (ClipperBase.isOpen(ae1) && ClipperBase.isOpen(ae2))
|
|
2216
2258
|
return;
|
|
2217
2259
|
// the following line avoids duplicating quite a bit of code
|
|
2218
|
-
if (ClipperBase.isOpen(ae2))
|
|
2219
|
-
|
|
2260
|
+
if (ClipperBase.isOpen(ae2)) {
|
|
2261
|
+
const tmp = ae1;
|
|
2262
|
+
ae1 = ae2;
|
|
2263
|
+
ae2 = tmp;
|
|
2264
|
+
}
|
|
2220
2265
|
if (this.isJoined(ae2))
|
|
2221
2266
|
this.split(ae2, pt); // needed for safety
|
|
2222
2267
|
if (this.cliptype === ClipType.Union) {
|
|
@@ -2450,10 +2495,10 @@ export class ClipperBase {
|
|
|
2450
2495
|
// edges must be collinear to get here
|
|
2451
2496
|
// for starting open paths, place them according to
|
|
2452
2497
|
// the direction they're about to turn
|
|
2453
|
-
if (!ClipperBase.
|
|
2498
|
+
if (!ClipperBase.isMaximaEdge(resident) && (resident.top.y > newcomer.top.y)) {
|
|
2454
2499
|
return InternalClipper.crossProductSign(newcomer.bot, resident.top, ClipperBase.nextVertex(resident).pt) <= 0;
|
|
2455
2500
|
}
|
|
2456
|
-
if (!ClipperBase.
|
|
2501
|
+
if (!ClipperBase.isMaximaEdge(newcomer) && (newcomer.top.y > resident.top.y)) {
|
|
2457
2502
|
return InternalClipper.crossProductSign(newcomer.bot, newcomer.top, ClipperBase.nextVertex(newcomer).pt) >= 0;
|
|
2458
2503
|
}
|
|
2459
2504
|
const y = newcomer.bot.y;
|