22 #ifndef GEOS_GEOMGRAPH_EDGE_H 23 #define GEOS_GEOMGRAPH_EDGE_H 25 #include <geos/export.h> 29 #include <geos/geomgraph/GraphComponent.h> 30 #include <geos/geomgraph/Depth.h> 31 #include <geos/geomgraph/EdgeIntersectionList.h> 32 #include <geos/geom/CoordinateSequence.h> 34 #include <geos/inline.h> 38 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class 45 class IntersectionMatrix;
49 class LineIntersector;
57 class MonotoneChainEdge;
67 using GraphComponent::updateIM;
74 index::MonotoneChainEdge *mce;
87 void testInvariant()
const {
89 assert(pts->size() > 1);
93 friend std::ostream&
operator<< (std::ostream& os,
const Edge& el);
112 virtual int getNumPoints()
const {
113 return static_cast<int>(pts->
getSize());
116 virtual void setName(
const std::string &newName) {
127 return pts->
getAt(i);
132 return pts->
getAt(0);
136 virtual Depth &getDepth() {
151 virtual void setDepthDelta(
int newDepthDelta) {
152 depthDelta=newDepthDelta;
156 virtual int getMaximumSegmentIndex()
const {
158 return getNumPoints()-1;
170 virtual index::MonotoneChainEdge* getMonotoneChainEdge();
172 virtual bool isClosed()
const {
174 return pts->
getAt(0)==pts->
getAt(getNumPoints()-1);
181 virtual bool isCollapsed()
const;
183 virtual Edge* getCollapsedEdge();
185 virtual void setIsolated(
bool newIsIsolated) {
186 isIsolatedVar=newIsIsolated;
190 virtual bool isIsolated()
const {
192 return isIsolatedVar;
208 int geomIndex,
int intIndex);
221 virtual bool isPointwiseEqual(
const Edge *e)
const;
223 virtual std::string print()
const;
225 virtual std::string printReverse()
const;
234 virtual bool equals(
const Edge& e)
const;
236 virtual bool equals(
const Edge* e)
const {
264 #endif // ifndef GEOS_GEOMGRAPH_EDGE_H virtual const Coordinate & getAt(std::size_t i) const =0
Returns a read-only reference to Coordinate at position i.
virtual int getDepthDelta() const
The depthDelta is the change in depth as an edge is crossed from R to L.
Definition: geomgraph/Edge.h:146
An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition: Envelope.h:53
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:60
GEOS_DLL std::ostream & operator<<(std::ostream &os, const Coordinate &c)
Output function.
Implementation of Dimensionally Extended Nine-Intersection Model (DE-9IM) matrix. ...
Definition: IntersectionMatrix.h:51
virtual bool equals(const Edge &e) const
Definition: EdgeIntersectionList.h:59
A LineIntersector is an algorithm that can both test whether two line segments intersect and compute ...
Definition: LineIntersector.h:49
geom::CoordinateSequence * pts
Externally-set, owned by Edge. FIXME: refuse ownership.
Definition: geomgraph/Edge.h:98
virtual std::size_t getSize() const =0
Returns the number of Coordinates (actual or otherwise, as this implementation may not store its data...
A Label indicates the topological relationship of a component of a topology graph to a given Geometry...
Definition: Label.h:57
Basic namespace for all GEOS functionalities.
Definition: IndexedNestedRingTester.h:25
GEOS_DLL bool operator==(const Coordinate &a, const Coordinate &b)
Equality operator for Coordinate. 2D only.
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:59
A GraphComponent is the parent class for the objects' that form a graph.
Definition: geomgraph/GraphComponent.h:47
virtual void computeIM(geom::IntersectionMatrix &im)
Update the IM with the contribution for this component.
Definition: geomgraph/Edge.h:215
Definition: geomgraph/Edge.h:66