00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef GEOS_OP_RELATE_EDGEENDBUILDER_H
00020 #define GEOS_OP_RELATE_EDGEENDBUILDER_H
00021
00022 #include <geos/export.h>
00023
00024 #include <vector>
00025
00026
00027 namespace geos {
00028 namespace geom {
00029 class IntersectionMatrix;
00030 class Coordinate;
00031 }
00032 namespace geomgraph {
00033 class Edge;
00034 class EdgeIntersection;
00035 class EdgeEnd;
00036 }
00037 }
00038
00039
00040 namespace geos {
00041 namespace operation {
00042 namespace relate {
00043
00048 class GEOS_DLL EdgeEndBuilder {
00049 public:
00050 EdgeEndBuilder() {}
00051
00052 std::vector<geomgraph::EdgeEnd*> *computeEdgeEnds(std::vector<geomgraph::Edge*> *edges);
00053 void computeEdgeEnds(geomgraph::Edge *edge,std::vector<geomgraph::EdgeEnd*> *l);
00054
00055 protected:
00056
00057 void createEdgeEndForPrev(geomgraph::Edge *edge,
00058 std::vector<geomgraph::EdgeEnd*> *l,
00059 geomgraph::EdgeIntersection *eiCurr,
00060 geomgraph::EdgeIntersection *eiPrev);
00061
00062 void createEdgeEndForNext(geomgraph::Edge *edge,
00063 std::vector<geomgraph::EdgeEnd*> *l,
00064 geomgraph::EdgeIntersection *eiCurr,
00065 geomgraph::EdgeIntersection *eiNext);
00066 };
00067
00068 }
00069 }
00070 }
00071
00072 #endif // GEOS_OP_RELATE_EDGEENDBUILDER_H