00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef GEOS_OP_OVERLAY_MAXIMALEDGERING_H
00020 #define GEOS_OP_OVERLAY_MAXIMALEDGERING_H
00021
00022 #include <geos/export.h>
00023
00024 #include <vector>
00025
00026 #include <geos/geomgraph/EdgeRing.h>
00027
00028
00029 namespace geos {
00030 namespace geom {
00031 class GeometryFactory;
00032 }
00033 namespace geomgraph {
00034 class DirectedEdge;
00035
00036 }
00037 namespace operation {
00038 namespace overlay {
00039 class MinimalEdgeRing;
00040 }
00041 }
00042 }
00043
00044 namespace geos {
00045 namespace operation {
00046 namespace overlay {
00047
00066 class GEOS_DLL MaximalEdgeRing: public geomgraph::EdgeRing {
00067
00068 public:
00069
00070 MaximalEdgeRing(geomgraph::DirectedEdge *start,
00071 const geom::GeometryFactory *geometryFactory);
00072
00073
00074 virtual ~MaximalEdgeRing();
00075
00076 geomgraph::DirectedEdge* getNext(geomgraph::DirectedEdge *de);
00077
00078 void setEdgeRing(geomgraph::DirectedEdge* de, geomgraph::EdgeRing* er);
00079
00086 std::vector<MinimalEdgeRing*>* buildMinimalRings();
00087
00092 void buildMinimalRings(std::vector<MinimalEdgeRing*>& minEdgeRings);
00093 void buildMinimalRings(std::vector<EdgeRing*>& minEdgeRings);
00094
00099 void linkDirectedEdgesForMinimalEdgeRings();
00100 };
00101
00102
00103 }
00104 }
00105 }
00106
00107 #endif // ndef GEOS_OP_OVERLAY_MAXIMALEDGERING_H