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