17#include <geos/operation/overlayng/OverlayEdgeRing.h>
21#include <geos/export.h>
41class GEOS_DLL MaximalEdgeRing {
48 static constexpr int STATE_FIND_INCOMING = 1;
49 static constexpr int STATE_LINK_OUTGOING = 2;
52 OverlayEdge* startEdge;
55 void attachEdges(OverlayEdge* startEdge);
56 void linkMinimalRings();
72 static void linkMinRingEdgesAtNode(OverlayEdge* nodeEdge, MaximalEdgeRing* maxRing);
83 static bool isAlreadyLinked(OverlayEdge* edge, MaximalEdgeRing* maxRing);
85 static OverlayEdge* selectMaxOutEdge(OverlayEdge* currOut, MaximalEdgeRing* maxEdgeRing);
86 static OverlayEdge* linkMaxInEdge(OverlayEdge* currOut, OverlayEdge* currMaxRingOut, MaximalEdgeRing* maxEdgeRing);
91 MaximalEdgeRing(OverlayEdge* e)
97 std::vector<std::unique_ptr<OverlayEdgeRing>> buildMinimalRings(
const GeometryFactory* geometryFactory);
123 static void linkResultAreaMaxRingAtNode(OverlayEdge* nodeEdge);
125 friend std::ostream& operator<<(std::ostream& os,
const MaximalEdgeRing& mer);
Coordinate is the lightweight class used to store coordinates.
Definition Coordinate.h:217
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
Definition GeometryFactory.h:70
Basic namespace for all GEOS functionalities.
Definition geos.h:39