GEOS  3.3.3
LineMergeGraph.h
1 /**********************************************************************
2  * $Id: LineMergeGraph.h 3309 2011-04-27 15:47:14Z strk $
3  *
4  * GEOS - Geometry Engine Open Source
5  * http://geos.refractions.net
6  *
7  * Copyright (C) 2011 Sandro Santilli <strk@keybit.net>
8  * Copyright (C) 2006 Refractions Research Inc.
9  * Copyright (C) 2001-2002 Vivid Solutions Inc.
10  *
11  * This is free software; you can redistribute and/or modify it under
12  * the terms of the GNU Lesser General Public Licence as published
13  * by the Free Software Foundation.
14  * See the COPYING file for more information.
15  *
16  **********************************************************************
17  *
18  * Last port: operation/linemerge/LineMergeGraph.java r378 (JTS-1.12)
19  *
20  **********************************************************************/
21 
22 #ifndef GEOS_OP_LINEMERGE_LINEMERGEGRAPH_H
23 #define GEOS_OP_LINEMERGE_LINEMERGEGRAPH_H
24 
25 #include <geos/export.h>
26 #include <geos/planargraph/PlanarGraph.h> // for inheritance
27 
28 #include <vector>
29 
30 #ifdef _MSC_VER
31 #pragma warning(push)
32 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
33 #endif
34 
35 // Forward declarations
36 namespace geos {
37  namespace geom {
38  class LineString;
39  class Coordinate;
40  }
41  namespace planargraph {
42  class Node;
43  class Edge;
44  class DirectedEdge;
45  }
46 }
47 
48 
49 namespace geos {
50 namespace operation { // geos::operation
51 namespace linemerge { // geos::operation::linemerge
52 
60 class GEOS_DLL LineMergeGraph: public planargraph::PlanarGraph {
61 
62 private:
63 
64  planargraph::Node* getNode(const geom::Coordinate &coordinate);
65 
66  std::vector<planargraph::Node*> newNodes;
67 
68  std::vector<planargraph::Edge*> newEdges;
69 
70  std::vector<planargraph::DirectedEdge*> newDirEdges;
71 
72 public:
73 
82  void addEdge(const geom::LineString *lineString);
83 
84  ~LineMergeGraph();
85 };
86 } // namespace geos::operation::linemerge
87 } // namespace geos::operation
88 } // namespace geos
89 
90 #ifdef _MSC_VER
91 #pragma warning(pop)
92 #endif
93 
94 #endif // GEOS_OP_LINEMERGE_LINEMERGEGRAPH_H
95 
96 /**********************************************************************
97  * $Log$
98  * Revision 1.1 2006/03/22 10:13:53 strk
99  * opLinemerge.h split
100  *
101  **********************************************************************/