70class GEOS_DLL LineDissolver {
80 std::unique_ptr<Geometry> result;
81 const GeometryFactory* factory =
nullptr;
82 DissolveEdgeGraph graph;
83 std::vector<std::unique_ptr<LineString>> lines;
84 std::stack<HalfEdge*> nodeEdgeStack;
85 DissolveHalfEdge* ringStartEdge =
nullptr;
90 void process(HalfEdge* e);
97 void stackEdges(HalfEdge* node);
120 void updateRingStartEdge(DissolveHalfEdge* e);
135 void buildLine(HalfEdge* eStart);
137 void buildRing(HalfEdge* eStartRing);
139 void addLine(std::unique_ptr<CoordinateSequence>& cs);
144 LineDissolver() : result(
nullptr) {};
152 static std::unique_ptr<Geometry>
dissolve(
const Geometry* g);
162 void add(
const Geometry* geometry);
171 void add(std::vector<const Geometry*> geometries);
173 void add(
const LineString* lineString);
188 LineDissolver& operator=(
const LineDissolver&) =
delete;