00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef GEOS_GEOS_MULTIPOLYGON_H
00022 #define GEOS_GEOS_MULTIPOLYGON_H
00023
00024 #include <geos/export.h>
00025 #include <string>
00026 #include <vector>
00027 #include <geos/platform.h>
00028 #include <geos/geom/GeometryCollection.h>
00029 #include <geos/geom/Polygonal.h>
00030 #include <geos/geom/Dimension.h>
00031
00032 #include <geos/inline.h>
00033
00034
00035 namespace geos {
00036 namespace geom {
00037 class Coordinate;
00038 class CoordinateArraySequence;
00039 class MultiPoint;
00040 }
00041 }
00042
00043
00044 namespace geos {
00045 namespace geom {
00046
00047 #ifdef _MSC_VER
00048 #pragma warning(push)
00049 #pragma warning(disable:4250) // T1 inherits T2 via dominance
00050 #endif
00051
00053
00060 class GEOS_DLL MultiPolygon: public GeometryCollection, public Polygonal
00061 {
00062 public:
00063
00064 friend class GeometryFactory;
00065
00066 virtual ~MultiPolygon();
00067
00069 Dimension::DimensionType getDimension() const;
00070
00072 int getBoundaryDimension() const;
00073
00080 Geometry* getBoundary() const;
00081
00082 std::string getGeometryType() const;
00083
00084 virtual GeometryTypeId getGeometryTypeId() const;
00085
00086 bool isSimple() const;
00087
00088 bool equalsExact(const Geometry *other, double tolerance=0) const;
00089
00090 Geometry *clone() const;
00091
00092 protected:
00093
00115 MultiPolygon(std::vector<Geometry *> *newPolys, const GeometryFactory *newFactory);
00116
00117 MultiPolygon(const MultiPolygon &mp);
00118 };
00119
00120 #ifdef _MSC_VER
00121 #pragma warning(pop)
00122 #endif
00123
00124 }
00125 }
00126
00127 #ifdef GEOS_INLINE
00128 # include "geos/geom/MultiPolygon.inl"
00129 #endif
00130
00131 #endif // ndef GEOS_GEOS_MULTIPOLYGON_H