MCPcopy Create free account
hub / github.com/axmolengine/axmol / DoTopOfScanbeam

Method DoTopOfScanbeam

3rdparty/clipper2/src/clipper.engine.cpp:2708–2737  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2706 }
2707
2708 void ClipperBase::DoTopOfScanbeam(const int64_t y)
2709 {
2710 sel_ = nullptr; // sel_ is reused to flag horizontals (see PushHorz below)
2711 Active* e = actives_;
2712 while (e)
2713 {
2714 //nb: 'e' will never be horizontal here
2715 if (e->top.y == y)
2716 {
2717 e->curr_x = e->top.x;
2718 if (IsMaxima(*e))
2719 {
2720 e = DoMaxima(*e); // TOP OF BOUND (MAXIMA)
2721 continue;
2722 }
2723 else
2724 {
2725 //INTERMEDIATE VERTEX ...
2726 if (IsHotEdge(*e)) AddOutPt(*e, e->top);
2727 UpdateEdgeIntoAEL(e);
2728 if (IsHorizontal(*e))
2729 PushHorz(*e); // horizontals are processed later
2730 }
2731 }
2732 else // i.e. not the top of the edge
2733 e->curr_x = TopX(*e, y);
2734
2735 e = e->next_in_ael;
2736 }
2737 }
2738
2739
2740 Active* ClipperBase::DoMaxima(Active& e)

Callers

nothing calls this directly

Calls 4

IsMaximaFunction · 0.85
IsHotEdgeFunction · 0.85
TopXFunction · 0.85
IsHorizontalFunction · 0.70

Tested by

no test coverage detected