20 #ifndef GEOS_OP_OVERLAY_POLYGONBUILDER_H
21 #define GEOS_OP_OVERLAY_POLYGONBUILDER_H
23 #include <geos/export.h>
29 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
37 class GeometryFactory;
47 class MaximalEdgeRing;
48 class MinimalEdgeRing;
82 void add(
const std::vector<geomgraph::DirectedEdge*> *dirEdges,
83 const std::vector<geomgraph::Node*> *nodes);
86 std::vector<geom::Geometry*>* getPolygons();
98 std::vector<geomgraph::EdgeRing*> shellList;
107 void buildMaximalEdgeRings(
108 const std::vector<geomgraph::DirectedEdge*> *dirEdges,
109 std::vector<MaximalEdgeRing*> &maxEdgeRings);
112 void buildMinimalEdgeRings(
113 std::vector<MaximalEdgeRing*> &maxEdgeRings,
114 std::vector<geomgraph::EdgeRing*> &newShellList,
115 std::vector<geomgraph::EdgeRing*> &freeHoleList,
116 std::vector<MaximalEdgeRing*> &edgeRings);
129 geomgraph::EdgeRing* findShell(std::vector<MinimalEdgeRing*>* minEdgeRings);
142 void placePolygonHoles(geomgraph::EdgeRing *shell,
143 std::vector<MinimalEdgeRing*> *minEdgeRings);
152 void sortShellsAndHoles(std::vector<MaximalEdgeRing*> &edgeRings,
153 std::vector<geomgraph::EdgeRing*> &newShellList,
154 std::vector<geomgraph::EdgeRing*> &freeHoleList);
170 void placeFreeHoles(std::vector<geomgraph::EdgeRing*>& newShellList,
171 std::vector<geomgraph::EdgeRing*>& freeHoleList);
192 geomgraph::EdgeRing* findEdgeRingContaining(geomgraph::EdgeRing *testEr,
193 std::vector<geomgraph::EdgeRing*>& newShellList);
195 std::vector<geom::Geometry*>* computePolygons(
196 std::vector<geomgraph::EdgeRing*>& newShellList);
213 #endif // ndef GEOS_OP_OVERLAY_POLYGONBUILDER_H