17#include <geos/edgegraph/HalfEdge.h>
18#include <geos/geom/CoordinateSequence.h>
19#include <geos/geom/Location.h>
20#include <geos/operation/overlayng/OverlayEdge.h>
21#include <geos/operation/overlayng/OverlayLabel.h>
22#include <geos/export.h>
66 bool m_isInResultArea;
67 bool m_isInResultLine;
70 const OverlayEdgeRing* edgeRing;
71 const MaximalEdgeRing* maxEdgeRing;
88 , direction(p_direction)
91 , m_isInResultArea(
false)
92 , m_isInResultLine(
false)
94 , nextResultEdge(
nullptr)
96 , maxEdgeRing(
nullptr)
97 , nextResultMaxEdge(
nullptr)
102 bool isForward()
const
117 Location getLocation(uint8_t index,
int position)
const
119 return label->
getLocation(index, position, direction);
132 std::unique_ptr<CoordinateSequence> getCoordinates()
138 std::unique_ptr<CoordinateSequence> getCoordinatesOriented();
161 bool isInResultArea()
const
163 return m_isInResultArea;
166 bool isInResultAreaBoth()
const
168 return m_isInResultArea && symOE()->m_isInResultArea;
171 bool isInResultEither()
const
173 return isInResult() || symOE()->isInResult();
176 void unmarkFromResultAreaBoth()
178 m_isInResultArea =
false;
179 symOE()->m_isInResultArea =
false;
182 void markInResultArea()
184 m_isInResultArea =
true;
187 void markInResultAreaBoth()
189 m_isInResultArea =
true;
190 symOE()->m_isInResultArea =
true;
193 bool isInResultLine()
const
195 return m_isInResultLine;
198 void markInResultLine()
200 m_isInResultLine =
true;
201 symOE()->m_isInResultLine =
true;
204 bool isInResult()
const
206 return m_isInResultArea || m_isInResultLine;
209 void setNextResult(OverlayEdge* e)
215 OverlayEdge* nextResult()
const
217 return nextResultEdge;
220 bool isResultLinked()
const
222 return nextResultEdge !=
nullptr;
225 void setNextResultMax(OverlayEdge* e)
228 nextResultMaxEdge = e;
231 OverlayEdge* nextResultMax()
const
233 return nextResultMaxEdge;
236 bool isResultMaxLinked()
const
238 return nextResultMaxEdge !=
nullptr;
241 bool isVisited()
const
246 void markVisitedBoth()
249 symOE()->markVisited();
252 void setEdgeRing(
const OverlayEdgeRing* p_edgeRing)
254 edgeRing = p_edgeRing;
257 const OverlayEdgeRing* getEdgeRing()
const
262 const MaximalEdgeRing* getEdgeRingMax()
const
267 void setEdgeRingMax(
const MaximalEdgeRing* p_maximalEdgeRing)
269 maxEdgeRing = p_maximalEdgeRing;
272 friend std::ostream& operator<<(std::ostream& os,
const OverlayEdge& oe);
273 std::string resultSymbol()
const;
Definition: HalfEdge.h:63
The default implementation of CoordinateSequence.
Definition: CoordinateArraySequence.h:35
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:44
virtual std::unique_ptr< CoordinateSequence > clone() const =0
Returns a deep copy of this collection.
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:58
Definition: OverlayEdge.h:52
const Coordinate & directionPt() const override
Definition: OverlayEdge.h:107
void addCoordinates(CoordinateArraySequence *coords) const
Definition: OverlayLabel.h:87
Location getLocation(uint8_t index) const
Definition: OverlayLabel.h:369
Location
Constants representing the location of a point relative to a geometry.
Definition: Location.h:32
Basic namespace for all GEOS functionalities.
Definition: geos.h:39