00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef GEOS_OP_QUADTREENESTEDRINGTESTER_H
00021 #define GEOS_OP_QUADTREENESTEDRINGTESTER_H
00022
00023 #include <geos/export.h>
00024
00025 #include <geos/geom/Envelope.h>
00026
00027 #include <vector>
00028
00029 #ifdef _MSC_VER
00030 #pragma warning(push)
00031 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
00032 #endif
00033
00034
00035 namespace geos {
00036 namespace geom {
00037 class LinearRing;
00038 class Coordinate;
00039 }
00040 namespace index {
00041 namespace quadtree {
00042 class Quadtree;
00043 }
00044 }
00045 namespace geomgraph {
00046 class GeometryGraph;
00047 }
00048 }
00049
00050 namespace geos {
00051 namespace operation {
00052 namespace valid {
00053
00060 class GEOS_DLL QuadtreeNestedRingTester {
00061 public:
00062
00064 QuadtreeNestedRingTester(geomgraph::GeometryGraph* newGraph);
00065
00066 ~QuadtreeNestedRingTester();
00067
00068
00069
00070
00071
00072
00073
00074 geom::Coordinate* getNestedPoint();
00075
00076 void add(const geom::LinearRing* ring);
00077
00078 bool isNonNested();
00079
00080 private:
00081
00082 geomgraph::GeometryGraph* graph;
00083
00084 std::vector<const geom::LinearRing*> rings;
00085
00086 geom::Envelope totalEnv;
00087
00088 index::quadtree::Quadtree* qt;
00089
00090 geom::Coordinate* nestedPt;
00091
00092 void buildQuadtree();
00093 };
00094
00095 }
00096 }
00097 }
00098
00099 #ifdef _MSC_VER
00100 #pragma warning(pop)
00101 #endif
00102
00103 #endif // GEOS_OP_QUADTREENESTEDRINGTESTER_H