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