00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef GEOS_GEOM_PREP_PREPAREDPOLYGON_H
00022 #define GEOS_GEOM_PREP_PREPAREDPOLYGON_H
00023
00024 #include <geos/geom/prep/BasicPreparedGeometry.h>
00025 #include <geos/noding/SegmentString.h>
00026
00027 namespace geos {
00028 namespace noding {
00029 class FastSegmentSetIntersectionFinder;
00030 }
00031 namespace algorithm {
00032 namespace locate {
00033 class PointOnGeometryLocator;
00034 }
00035 }
00036 }
00037
00038 namespace geos {
00039 namespace geom {
00040 namespace prep {
00041
00049 class PreparedPolygon : public BasicPreparedGeometry
00050 {
00051 private:
00052 bool isRectangle;
00053 mutable noding::FastSegmentSetIntersectionFinder * segIntFinder;
00054 mutable algorithm::locate::PointOnGeometryLocator * ptOnGeomLoc;
00055 mutable noding::SegmentString::ConstVect segStrings;
00056
00057 protected:
00058 public:
00059 PreparedPolygon( const geom::Geometry * geom);
00060 ~PreparedPolygon( );
00061
00062 noding::FastSegmentSetIntersectionFinder * getIntersectionFinder() const;
00063 algorithm::locate::PointOnGeometryLocator * getPointLocator() const;
00064
00065 bool contains( const geom::Geometry* g) const;
00066 bool containsProperly( const geom::Geometry* g) const;
00067 bool covers( const geom::Geometry* g) const;
00068 bool intersects( const geom::Geometry* g) const;
00069
00070 };
00071
00072 }
00073 }
00074 }
00075
00076 #endif // GEOS_GEOM_PREP_PREPAREDPOLYGON_H
00077
00078
00079
00080