22 #ifndef GEOS_GEOMGRAPH_EDGEINTERSECTION_H
23 #define GEOS_GEOMGRAPH_EDGEINTERSECTION_H
25 #include <geos/export.h>
27 #include <geos/geom/Coordinate.h>
29 #include <geos/inline.h>
45 class GEOS_DLL EdgeIntersection {
49 geom::Coordinate coord;
57 EdgeIntersection(
const geom::Coordinate& newCoord,
58 int newSegmentIndex,
double newDist)
62 segmentIndex(newSegmentIndex)
65 bool isEndPoint(
int maxSegmentIndex)
const {
66 if (segmentIndex==0 && dist==0.0)
return true;
67 if (segmentIndex==maxSegmentIndex)
return true;
71 const geom::Coordinate& getCoordinate()
const {
75 int getSegmentIndex()
const {
return segmentIndex; }
77 double getDistance()
const {
return dist; }
84 inline bool operator< (
const EdgeIntersection& ei1,
const EdgeIntersection& ei2)
86 if ( ei1.segmentIndex < ei2.segmentIndex )
return true;
87 if ( ei1.segmentIndex == ei2.segmentIndex )
89 if ( ei1.dist < ei2.dist )
return true;
99 struct GEOS_DLL EdgeIntersectionLessThen {
100 bool operator()(
const EdgeIntersection *ei1,
101 const EdgeIntersection *ei2)
const
108 inline std::ostream& operator<< (std::ostream& os,
const EdgeIntersection& e)
110 os << e.coord <<
" seg # = " << e.segmentIndex <<
" dist = " << e.dist;
117 #endif // ifndef GEOS_GEOMGRAPH_EDGEINTERSECTION_H