MCPcopy Create free account
hub / github.com/AngusJohnson/Clipper2 / ClipperBase

Class ClipperBase

CSharp/Clipper2Lib/Clipper.Engine.cs:353–3181  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

351 }
352
353 public class ClipperBase
354 {
355 private ClipType _cliptype;
356 private FillRule _fillrule;
357 private Active? _actives;
358 private Active? _sel;
359 private Stack<Active> _freeActives;
360 private readonly List<LocalMinima> _minimaList;
361 private readonly List<IntersectNode> _intersectList;
362 private readonly VertexPoolList _vertexList;
363 private readonly OutRecPoolList _outrecList;
364 private readonly List<long> _scanlineList;
365 private readonly List<HorzSegment> _horzSegList;
366 private readonly HorzJoinPoolList _horzJoinList;
367 private readonly OutPtPoolList _outPtPool;
368 private int _currentLocMin;
369 private long _currentBotY;
370 private bool _isSortedMinimaList;
371 private bool _hasOpenPaths;
372 internal bool _using_polytree;
373 internal bool _succeeded;
374 public bool PreserveCollinear { get; set; }
375 public bool ReverseSolution { get; set; }
376
377#if USINGZ
378 public delegate void ZCallback64(Point64 bot1, Point64 top1,
379 Point64 bot2, Point64 top2, ref Point64 intersectPt);
380
381 public long DefaultZ { get; set; }
382 protected ZCallback64? _zCallback;
383#endif
384 public ClipperBase()
385 {
386 _minimaList = new List<LocalMinima>();
387 _intersectList = new List<IntersectNode>();
388 _vertexList = new VertexPoolList();
389 _outrecList = new OutRecPoolList();
390 _scanlineList = new List<long>();
391 _horzSegList = new List<HorzSegment>();
392 _horzJoinList = new HorzJoinPoolList();
393 _outPtPool = new OutPtPoolList();
394 _freeActives = new Stack<Active>();
395 PreserveCollinear = true;
396 }
397
398#if USINGZ
399 private bool XYCoordsEqual(Point64 pt1, Point64 pt2)
400 {
401 return (pt1.X == pt2.X && pt1.Y == pt2.Y);
402 }
403
404 private void SetZ(Active e1, Active e2, ref Point64 intersectPt)
405 {
406 if (_zCallback == null) return;
407
408 // prioritize subject vertices over clip vertices
409 // and pass the subject vertices before clip vertices in the callback
410 if (GetPolyType(e1) == PathType.Subject)

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected