22 #ifndef GEOS_OP_POLYGONIZE_POLYGONIZER_H
23 #define GEOS_OP_POLYGONIZE_POLYGONIZER_H
25 #include <geos/export.h>
26 #include <geos/geom/GeometryComponentFilter.h>
32 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
43 namespace polygonize {
45 class PolygonizeGraph;
52 namespace polygonize {
88 LineStringAdder lineStringAdder;
102 void findValidRings(
const std::vector<EdgeRing*>& edgeRingList,
103 std::vector<EdgeRing*>& validEdgeRingList,
104 std::vector<geom::LineString*>& invalidRingList);
106 void findShellsAndHoles(
const std::vector<EdgeRing*>& edgeRingList);
108 static void assignHolesToShells(
const std::vector<EdgeRing*>& holeList,
109 std::vector<EdgeRing*>& shellList);
111 static void assignHoleToShell(
EdgeRing *holeER,
112 std::vector<EdgeRing*>& shellList);
119 std::vector<const geom::LineString*> dangles;
120 std::vector<const geom::LineString*> cutEdges;
121 std::vector<geom::LineString*> invalidRingLines;
123 std::vector<EdgeRing*> holeList;
124 std::vector<EdgeRing*> shellList;
125 std::vector<geom::Polygon*> *polyList;
145 void add(std::vector<geom::Geometry*> *geomList);
155 void add(std::vector<const geom::Geometry*> *geomList);
184 std::vector<geom::Polygon*>* getPolygons();
193 const std::vector<const geom::LineString*>& getDangles();
203 const std::vector<const geom::LineString*>& getCutEdges();
213 const std::vector<geom::LineString*>& getInvalidRingLines();
216 friend class Polygonizer::LineStringAdder;
227 #endif // GEOS_OP_POLYGONIZE_POLYGONIZER_H