00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef GEOS_OP_RELATE_EDGEENDBUNDLE_H
00017 #define GEOS_OP_RELATE_EDGEENDBUNDLE_H
00018
00019 #include <geos/geomgraph/EdgeEnd.h>
00020
00021 #include <string>
00022
00023
00024 namespace geos {
00025 namespace geom {
00026 class IntersectionMatrix;
00027 }
00028 }
00029
00030
00031 namespace geos {
00032 namespace operation {
00033 namespace relate {
00034
00039 class EdgeEndBundle: public geomgraph::EdgeEnd {
00040 public:
00041 EdgeEndBundle(geomgraph::EdgeEnd *e);
00042 virtual ~EdgeEndBundle();
00043 geomgraph::Label *getLabel();
00044
00045 std::vector<geomgraph::EdgeEnd*>* getEdgeEnds();
00046 void insert(geomgraph::EdgeEnd *e);
00047 void computeLabel() ;
00048 void updateIM(geom::IntersectionMatrix *im);
00049 std::string print();
00050 protected:
00051 std::vector<geomgraph::EdgeEnd*> *edgeEnds;
00052 void computeLabelOn(int geomIndex);
00053 void computeLabelSides(int geomIndex);
00054 void computeLabelSide(int geomIndex,int side);
00055 };
00056
00057 }
00058 }
00059 }
00060
00061 #endif // GEOS_OP_RELATE_EDGEENDBUNDLE_H
00062
00063
00064
00065
00066
00067
00068
00069