20 #ifndef GEOS_OP_CONNECTEDINTERIORTESTER_H
21 #define GEOS_OP_CONNECTEDINTERIORTESTER_H
23 #include <geos/export.h>
25 #include <geos/geom/Coordinate.h>
26 #include <geos/geom/GeometryFactory.h>
32 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
40 class CoordinateSequence;
41 class GeometryFactory;
71 class GEOS_DLL ConnectedInteriorTester {
73 ConnectedInteriorTester(geomgraph::GeometryGraph& newGeomGraph);
74 ~ConnectedInteriorTester() =
default;
75 geom::Coordinate& getCoordinate();
76 bool isInteriorsConnected();
77 static const geom::Coordinate& findDifferentPoint(
78 const geom::CoordinateSequence* coord,
79 const geom::Coordinate& pt);
83 void visitLinkedDirectedEdges(geomgraph::DirectedEdge* start);
87 geom::GeometryFactory::Ptr geometryFactory;
89 geomgraph::GeometryGraph& geomGraph;
94 geom::Coordinate disconnectedRingcoord;
97 std::vector<geomgraph::EdgeRing*> maximalEdgeRings;
99 void setInteriorEdgesInResult(geomgraph::PlanarGraph& graph);
113 void buildEdgeRings(std::vector<geomgraph::EdgeEnd*>* dirEdges,
114 std::vector<geomgraph::EdgeRing*>& minEdgeRings);
120 void visitShellInteriors(
const geom::Geometry* g, geomgraph::PlanarGraph& graph);
122 void visitInteriorRing(
const geom::LineString* ring, geomgraph::PlanarGraph& graph);
134 bool hasUnvisitedShellEdge(std::vector<geomgraph::EdgeRing*>* edgeRings);
137 ConnectedInteriorTester(
const ConnectedInteriorTester& other) =
delete;
138 ConnectedInteriorTester& operator=(
const ConnectedInteriorTester& rhs) =
delete;
149 #endif // GEOS_OP_CONNECTEDINTERIORTESTER_H