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