19 #ifndef GEOS_OP_LINEMERGE_LINEMERGER_H
20 #define GEOS_OP_LINEMERGE_LINEMERGER_H
22 #include <geos/export.h>
23 #include <geos/operation/linemerge/LineMergeGraph.h>
29 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
36 class GeometryFactory;
39 namespace planargraph {
45 class LineMergeDirectedEdge;
75 class GEOS_DLL LineMerger {
81 std::vector<geom::LineString*>* mergedLineStrings;
83 std::vector<EdgeString*> edgeStrings;
85 const geom::GeometryFactory* factory;
89 void buildEdgeStringsForObviousStartNodes();
91 void buildEdgeStringsForIsolatedLoops();
93 void buildEdgeStringsForUnprocessedNodes();
95 void buildEdgeStringsForNonDegree2Nodes();
97 void buildEdgeStringsStartingAt(planargraph::Node* node);
99 EdgeString* buildEdgeStringStartingWith(LineMergeDirectedEdge* start);
113 void add(std::vector<const geom::Geometry*>* geometries);
123 void add(
const geom::Geometry* geometry);
131 std::vector<geom::LineString*>* getMergedLineStrings();
133 void add(
const geom::LineString* lineString);
145 #endif // GEOS_OP_LINEMERGE_LINEMERGER_H