GEOS  3.8.0dev
planargraph/Node.h
1 /**********************************************************************
2  *
3  * GEOS - Geometry Engine Open Source
4  * http://geos.osgeo.org
5  *
6  * Copyright (C) 2001-2002 Vivid Solutions Inc.
7  * Copyright (C) 2005-2006 Refractions Research Inc.
8  *
9  * This is free software; you can redistribute and/or modify it under
10  * the terms of the GNU Lesser General Public Licence as published
11  * by the Free Software Foundation.
13  *
14  **********************************************************************/
15
16 #ifndef GEOS_PLANARGRAPH_NODE_H
17 #define GEOS_PLANARGRAPH_NODE_H
18
19 #include <geos/export.h>
20
21 #include <geos/planargraph/GraphComponent.h> // for inheritance
22 #include <geos/planargraph/DirectedEdgeStar.h> // for inlines
23 #include <geos/geom/Coordinate.h> // for composition
24
25 // Forward declarations
26 namespace geos {
27 namespace planargraph {
28 //class DirectedEdgeStar;
29 class DirectedEdge;
30 }
31 }
32
33 namespace geos {
34 namespace planargraph { // geos.planargraph
35
45 class GEOS_DLL Node: public GraphComponent {
46 protected:
47
50
53
54 public:
55
56  friend std::ostream& operator << (std::ostream& os, const Node&);
57
65  static std::vector<Edge*>* getEdgesBetween(Node* node0,
66  Node* node1);
67
69  Node(const geom::Coordinate& newPt)
70  :
71  pt(newPt)
72  {
73  deStar = new DirectedEdgeStar();
74  }
75
76  ~Node() override
77  {
78  delete deStar;
79  }
80
88  :
89  pt(newPt),
90  deStar(newDeStar)
91  {}
92
98  {
99  return pt;
100  }
101
105  void
107  {
109  }
110
117  {
118  return deStar;
119  }
120  const DirectedEdgeStar*
121  getOutEdges() const
122  {
123  return deStar;
124  }
125
129  size_t
130  getDegree() const
131  {
132  return deStar->getDegree();
133  }
134
140  int
141  getIndex(Edge* edge)
142  {
143  return deStar->getIndex(edge);
144  }
145
146 };
147
149 std::ostream& operator<<(std::ostream& os, const Node& n);
150
151
153 //typedef Node planarNode;
154
155 } // namespace geos::planargraph
156 } // namespace geos
157
158 #endif // GEOS_PLANARGRAPH_NODE_H
geom::Coordinate & getCoordinate()
Returns the location of this Node.
Definition: planargraph/Node.h:97
int getIndex(Edge *edge)
Returns the zero-based index of the given Edge, after sorting in ascending order by angle with the po...
Definition: planargraph/Node.h:141
DirectedEdgeStar * deStar
The collection of DirectedEdges that leave this Node.
Definition: planargraph/Node.h:52
A sorted collection of DirectedEdge which leave a Node in a PlanarGraph.
Definition: planargraph/DirectedEdgeStar.h:43
Node(const geom::Coordinate &newPt)
Constructs a Node with the given location.
Definition: planargraph/Node.h:69
int getIndex(const Edge *edge)
Returns the zero-based index of the given Edge, after sorting in ascending order by angle with the po...
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:60
Represents a directed edge in a PlanarGraph.
Definition: planargraph/DirectedEdge.h:46
size_t getDegree() const
Returns the number of edges around this Node.
Definition: planargraph/Node.h:130
Node(geom::Coordinate &newPt, DirectedEdgeStar *newDeStar)
Constructs a Node with the given location and collection of outgoing DirectedEdges. Takes ownership of the given DirectedEdgeStar!!
Definition: planargraph/Node.h:87
DirectedEdgeStar * getOutEdges()
Returns the collection of DirectedEdges that leave this Node.
Definition: planargraph/Node.h:116
std::size_t getDegree() const
Returns the number of edges around the Node associated with this DirectedEdgeStar.
Definition: planargraph/DirectedEdgeStar.h:99
Adds a new member to this DirectedEdgeStar.
Basic namespace for all GEOS functionalities.
Definition: IndexedNestedRingTester.h:25
Represents an undirected edge of a PlanarGraph.
Definition: planargraph/Edge.h:54