GEOS 3.9.1
geomgraph/DirectedEdge.h
1/**********************************************************************
2 *
3 * GEOS - Geometry Engine Open Source
4 * http://geos.osgeo.org
5 *
6 * Copyright (C) 2011 Sandro Santilli <strk@kbt.io>
7 * Copyright (C) 2005-2006 Refractions Research Inc.
8 * Copyright (C) 2001-2002 Vivid Solutions Inc.
9 *
10 * This is free software; you can redistribute and/or modify it under
11 * the terms of the GNU Lesser General Public Licence as published
12 * by the Free Software Foundation.
13 * See the COPYING file for more information.
14 *
15 **********************************************************************
16 *
17 * Last port: geomgraph/DirectedEdge.java r428 (JTS-1.12)
18 *
19 **********************************************************************/
20
21
22#ifndef GEOS_GEOMGRAPH_DIRECTEDEDGE_H
23#define GEOS_GEOMGRAPH_DIRECTEDEDGE_H
24
25#include <geos/export.h>
26#include <string>
27
28#include <geos/geom/Location.h>
29#include <geos/geomgraph/EdgeEnd.h> // for inheritance
30
31#include <geos/inline.h>
32
33// Forward declarations
34namespace geos {
35namespace geomgraph {
36class Edge;
37class EdgeRing;
38}
39}
40
41namespace geos {
42namespace geomgraph { // geos.geomgraph
43
45class GEOS_DLL DirectedEdge: public EdgeEnd {
46
47public:
48
55 static int depthFactor(geom::Location currLocation, geom::Location nextLocation);
56
57 //DirectedEdge();
58 //virtual ~DirectedEdge();
59
60 DirectedEdge(Edge* newEdge, bool newIsForward);
61
62 // this is no different from Base class, no need to override
63 //Edge* getEdge();
64
65 void setInResult(bool newIsInResult);
66
67 bool isInResult();
68
69 bool isVisited();
70
71 void setVisited(bool newIsVisited);
72
73 void setEdgeRing(EdgeRing* newEdgeRing);
74
75 EdgeRing* getEdgeRing();
76
77 void setMinEdgeRing(EdgeRing* newMinEdgeRing);
78
79 EdgeRing* getMinEdgeRing();
80
81 int getDepth(int position);
82
83 void setDepth(int position, int newDepth);
84
85 int getDepthDelta() const;
86
92 void setVisitedEdge(bool newIsVisited);
93
94
103
104 bool isForward();
105
106 void setSym(DirectedEdge* de);
107
108 DirectedEdge* getNext();
109
110 void setNext(DirectedEdge* newNext);
111
112 DirectedEdge* getNextMin();
113
114 void setNextMin(DirectedEdge* newNextMin);
115
125
136
144 void setEdgeDepths(int position, int newDepth);
145
146 std::string print() const override;
147
148 std::string printEdge();
149
150protected:
151
152 bool isForwardVar;
153
154private:
155
156 bool isInResultVar;
157
158 bool isVisitedVar;
159
161 DirectedEdge* sym;
162
164 DirectedEdge* next;
165
167 DirectedEdge* nextMin;
168
170 EdgeRing* edgeRing;
171
173 EdgeRing* minEdgeRing;
174
179 int depth[3];
180
182 void computeDirectedLabel();
183};
184
185} // namespace geos.geomgraph
186} // namespace geos
187
188#ifdef GEOS_INLINE
189# include "geos/geomgraph/DirectedEdge.inl"
190#endif
191
192#endif // ifndef GEOS_GEOMGRAPH_DIRECTEDEDGE_H
A directed EdgeEnd.
Definition: geomgraph/DirectedEdge.h:45
DirectedEdge * getSym()
Each Edge gives rise to a pair of symmetric DirectedEdges, in opposite directions.
void setEdgeDepths(int position, int newDepth)
Set both edge depths.
void setVisitedEdge(bool newIsVisited)
bool isLineEdge()
Tells wheter this edge is a Line.
static int depthFactor(geom::Location currLocation, geom::Location nextLocation)
Computes the factor for the change in depth when moving from one location to another....
bool isInteriorAreaEdge()
Tells wheter this edge is an Area.
Models the end of an edge incident on a node.
Definition: EdgeEnd.h:56
Definition: geomgraph/EdgeRing.h:60
Definition: geomgraph/Edge.h:66
Location
Constants representing the location of a point relative to a geometry.
Definition: Location.h:34
Basic namespace for all GEOS functionalities.
Definition: IndexedNestedRingTester.h:26