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.
12  * See the COPYING file for more information.
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  {
108  deStar->add(de);
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
void add(DirectedEdge *de)
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
void addOutEdge(DirectedEdge *de)
Adds an outgoing DirectedEdge to this Node.
Definition: planargraph/Node.h:106
geom::Coordinate pt
The location of this Node.
Definition: planargraph/Node.h:49
The base class for all graph component classes.
Definition: planargraph/GraphComponent.h:46
A node in a PlanarGraph is a location where 0 or more Edge meet.
Definition: planargraph/Node.h:45
std::ostream & operator<<(std::ostream &, const DirectedEdge &)
Output operator.