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