00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef GEOS_OP_VALID_OFFSETCURVEVERTEXLIST_H
00020 #define GEOS_OP_VALID_OFFSETCURVEVERTEXLIST_H
00021
00022 #include <vector>
00023
00024
00025 namespace geos {
00026 namespace geom {
00027
00028 class Coordinate;
00029 class LinearRing;
00030 }
00031 namespace index {
00032 class SpatialIndex;
00033 }
00034 namespace geomgraph {
00035 class GeometryGraph;
00036 }
00037 }
00038
00039 namespace geos {
00040 namespace operation {
00041 namespace valid {
00042
00049 class IndexedNestedRingTester
00050 {
00051 public:
00052
00053 IndexedNestedRingTester(geomgraph::GeometryGraph* newGraph)
00054 :
00055 graph(newGraph),
00056
00057 index(0),
00058 nestedPt(0)
00059 {
00060 }
00061
00062 ~IndexedNestedRingTester();
00063
00064
00065
00066
00067
00068
00069
00070 const geom::Coordinate* getNestedPoint() const
00071 {
00072 return nestedPt;
00073 }
00074
00076 void add(const geom::LinearRing* ring)
00077 {
00078 rings.push_back(ring);
00079 }
00080
00081 bool isNonNested();
00082
00083 private:
00084
00086 geomgraph::GeometryGraph* graph;
00087
00089 std::vector<const geom::LinearRing*> rings;
00090
00091
00092
00093
00094
00095 geos::index::SpatialIndex* index;
00096
00097
00098 const geom::Coordinate *nestedPt;
00099
00100 void buildIndex();
00101 };
00102
00103 }
00104 }
00105 }
00106
00107 #endif // GEOS_OP_VALID_OFFSETCURVEVERTEXLIST_H