17#include <geos/operation/overlayng/OverlayEdgeRing.h>
21#include <geos/export.h>
44class GEOS_DLL MaximalEdgeRing {
49 static constexpr int STATE_FIND_INCOMING = 1;
50 static constexpr int STATE_LINK_OUTGOING = 2;
53 OverlayEdge* startEdge;
56 void attachEdges(OverlayEdge* startEdge);
57 void linkMinimalRings();
73 static void linkMinRingEdgesAtNode(OverlayEdge* nodeEdge, MaximalEdgeRing* maxRing);
84 static bool isAlreadyLinked(OverlayEdge* edge, MaximalEdgeRing* maxRing);
86 static OverlayEdge* selectMaxOutEdge(OverlayEdge* currOut, MaximalEdgeRing* maxEdgeRing);
87 static OverlayEdge* linkMaxInEdge(OverlayEdge* currOut, OverlayEdge* currMaxRingOut, MaximalEdgeRing* maxEdgeRing);
92 MaximalEdgeRing(OverlayEdge* e)
98 std::vector<std::unique_ptr<OverlayEdgeRing>> buildMinimalRings(
const GeometryFactory* geometryFactory);
124 static void linkResultAreaMaxRingAtNode(OverlayEdge* nodeEdge);
126 friend std::ostream& operator<<(std::ostream& os,
const MaximalEdgeRing& mer);
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
Definition: GeometryFactory.h:66
Basic namespace for all GEOS functionalities.
Definition: geos.h:39