00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef GEOS_OP_LINEMERGE_LINEMERGEGRAPH_H
00022 #define GEOS_OP_LINEMERGE_LINEMERGEGRAPH_H
00023
00024 #include <geos/export.h>
00025 #include <geos/planargraph/PlanarGraph.h>
00026
00027 #include <vector>
00028
00029 #ifdef _MSC_VER
00030 #pragma warning(push)
00031 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
00032 #endif
00033
00034
00035 namespace geos {
00036 namespace geom {
00037 class LineString;
00038 class Coordinate;
00039 }
00040 namespace planargraph {
00041 class Node;
00042 class Edge;
00043 class DirectedEdge;
00044 }
00045 }
00046
00047
00048 namespace geos {
00049 namespace operation {
00050 namespace linemerge {
00051
00059 class GEOS_DLL LineMergeGraph: public planargraph::PlanarGraph {
00060
00061 private:
00062
00063 planargraph::Node* getNode(const geom::Coordinate &coordinate);
00064
00065 std::vector<planargraph::Node*> newNodes;
00066
00067 std::vector<planargraph::Edge*> newEdges;
00068
00069 std::vector<planargraph::DirectedEdge*> newDirEdges;
00070
00071 public:
00072
00081 void addEdge(const geom::LineString *lineString);
00082
00083 ~LineMergeGraph();
00084 };
00085 }
00086 }
00087 }
00088
00089 #ifdef _MSC_VER
00090 #pragma warning(pop)
00091 #endif
00092
00093 #endif // GEOS_OP_LINEMERGE_LINEMERGEGRAPH_H