22 #ifndef GEOS_GEOMGRAPH_EDGEEND_H
23 #define GEOS_GEOMGRAPH_EDGEEND_H
25 #include <geos/export.h>
26 #include <geos/geom/Coordinate.h>
27 #include <geos/geomgraph/Label.h>
28 #include <geos/inline.h>
35 class BoundaryNodeRule;
56 class GEOS_DLL EdgeEnd {
60 friend std::ostream& operator<< (std::ostream&,
const EdgeEnd&);
74 EdgeEnd(Edge* newEdge,
const geom::Coordinate& newP0,
75 const geom::Coordinate& newP1,
76 const Label& newLabel);
84 EdgeEnd(Edge* newEdge,
const geom::Coordinate& newP0,
85 const geom::Coordinate& newP1);
106 virtual geom::Coordinate& getCoordinate() {
110 const geom::Coordinate&
111 getCoordinate()
const
116 virtual geom::Coordinate& getDirectedCoordinate();
118 virtual int getQuadrant();
120 virtual double getDx();
122 virtual double getDy();
124 virtual void setNode(Node* newNode);
126 virtual Node* getNode();
128 virtual int compareTo(
const EdgeEnd* e)
const;
146 virtual int compareDirection(
const EdgeEnd* e)
const;
148 virtual void computeLabel(
const algorithm::BoundaryNodeRule& bnr);
150 virtual std::string print()
const;
158 EdgeEnd(Edge* newEdge);
160 virtual void init(
const geom::Coordinate& newP0,
161 const geom::Coordinate& newP1);
169 geom::Coordinate p0, p1;
177 std::ostream& operator<< (std::ostream&,
const EdgeEnd&);
179 struct GEOS_DLL EdgeEndLT {
181 operator()(
const EdgeEnd* s1,
const EdgeEnd* s2)
const
183 return s1->compareTo(s2) < 0;
194 #endif // ifndef GEOS_GEOMGRAPH_EDGEEND_H