21 #ifndef GEOS_OP_POLYGONIZE_POLYGONIZER_H
22 #define GEOS_OP_POLYGONIZE_POLYGONIZER_H
24 #include <geos/export.h>
25 #include <geos/geom/GeometryComponentFilter.h>
31 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
42 namespace polygonize {
44 class PolygonizeGraph;
51 namespace polygonize {
87 LineStringAdder lineStringAdder;
101 void findValidRings(
const std::vector<EdgeRing*>& edgeRingList,
102 std::vector<EdgeRing*>& validEdgeRingList,
103 std::vector<geom::LineString*>& invalidRingList);
105 void findShellsAndHoles(
const std::vector<EdgeRing*>& edgeRingList);
107 static void assignHolesToShells(
const std::vector<EdgeRing*>& holeList,
108 std::vector<EdgeRing*>& shellList);
110 static void assignHoleToShell(
EdgeRing *holeER,
111 std::vector<EdgeRing*>& shellList);
118 std::vector<const geom::LineString*> dangles;
119 std::vector<const geom::LineString*> cutEdges;
120 std::vector<geom::LineString*> invalidRingLines;
122 std::vector<EdgeRing*> holeList;
123 std::vector<EdgeRing*> shellList;
124 std::vector<geom::Polygon*> *polyList;
144 void add(std::vector<geom::Geometry*> *geomList);
154 void add(std::vector<const geom::Geometry*> *geomList);
183 std::vector<geom::Polygon*>* getPolygons();
192 const std::vector<const geom::LineString*>& getDangles();
202 const std::vector<const geom::LineString*>& getCutEdges();
212 const std::vector<geom::LineString*>& getInvalidRingLines();
215 friend class Polygonizer::LineStringAdder;
226 #endif // GEOS_OP_POLYGONIZE_POLYGONIZER_H