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