| 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) |
nothing calls this directly
no outgoing calls
no test coverage detected