GEOS  3.9.1dev
planargraph/Node.h
Go to the documentation of this file.
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 private:
147 
148  Node(const Node&) = delete;
149  Node& operator=(const Node&) = delete;
150 
151 };
152 
154 std::ostream& operator<<(std::ostream& os, const Node& n);
155 
156 
158 //typedef Node planarNode;
159 
160 } // namespace geos::planargraph
161 } // namespace geos
162 
163 #endif // GEOS_PLANARGRAPH_NODE_H
geom::Coordinate & getCoordinate()
Returns the location of this Node.
int getIndex(Edge *edge)
Returns the zero-based index of the given Edge, after sorting in ascending order by angle with the po...
DirectedEdgeStar * deStar
The collection of DirectedEdges that leave this Node.
A sorted collection of DirectedEdge which leave a Node in a PlanarGraph.
#define GEOS_DLL
Definition: export.h:28
Node(const geom::Coordinate &newPt)
Constructs a Node with the given location.
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.
size_t getDegree() const
Returns the number of edges around this Node.
const DirectedEdgeStar * getOutEdges() const
Node(geom::Coordinate &newPt, DirectedEdgeStar *newDeStar)
Constructs a Node with the given location and collection of outgoing DirectedEdges. Takes ownership of the given DirectedEdgeStar!!
DirectedEdgeStar * getOutEdges()
Returns the collection of DirectedEdges that leave this Node.
std::size_t getDegree() const
Returns the number of edges around the Node associated with this DirectedEdgeStar.
void add(DirectedEdge *de)
Adds a new member to this DirectedEdgeStar.
Basic namespace for all GEOS functionalities.
Represents an undirected edge of a PlanarGraph.
void addOutEdge(DirectedEdge *de)
Adds an outgoing DirectedEdge to this Node.
geom::Coordinate pt
The location of this Node.
The base class for all graph component classes.
A node in a PlanarGraph is a location where 0 or more Edge meet.
std::ostream & operator<<(std::ostream &, const DirectedEdge &)
Output operator.