FDO .NET API Reference Feature Data Objects

mgEnvelopeImpl.h

Go to the documentation of this file.
00001 /*
00002 * Copyright (C) 2004-2006  Autodesk, Inc.
00003 * 
00004 * This library is free software; you can redistribute it and/or
00005 * modify it under the terms of version 2.1 of the GNU Lesser
00006 * General Public License as published by the Free Software Foundation.
00007 * 
00008 * This library is distributed in the hope that it will be useful,
00009 * but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00011 * Lesser General Public License for more details.
00012 * 
00013 * You should have received a copy of the GNU Lesser General Public
00014 * License along with this library; if not, write to the Free Software
00015 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00016 *
00017 */
00018 
00019 
00020 #pragma once
00021 
00022 #include "mgIEnvelopeImp.h"
00023 
00024 class FdoEnvelopeImpl;
00025 
00026 BEGIN_NAMESPACE_OSGEO_GEOMETRY
00027 public __gc __interface IEnvelope;
00028 public __gc __interface IDirectPosition;
00029 END_NAMESPACE_OSGEO_GEOMETRY
00030 
00031 BEGIN_NAMESPACE_OSGEO_GEOMETRY
00032 
00033 /// \ingroup (OSGeoFDOGeometry)
00034 /// \brief
00035 /// The EnvelopeImpl class is a default implementation of IEnvelope.
00036 /// EnvelopeImpl implements accessors from IEnvelope, matching mutators, and simple data members.
00037 /// Assignment, exact equality operators, and utility methods are also provided.
00038 public __gc class EnvelopeImpl : public NAMESPACE_OSGEO_RUNTIME::Disposable, public NAMESPACE_OSGEO_GEOMETRY::IEnvelope
00039 {
00040 public:
00041     /// \brief
00042     /// Constructs a default instance of a EnvelopeImpl object.
00043     /// 
00044     /// \remarks
00045     /// Ordinate values default to System::Double::NaN.
00046     /// 
00047     EnvelopeImpl();
00048 
00049     /// \brief
00050     /// Constructs a 2D EnvelopeImpl object from X and Y ordinates.
00051     /// 
00052     /// \remarks
00053     /// Z ordinate value defaults to System::Double::NaN.
00054     /// 
00055     /// \param minX 
00056     /// Input Lower-left X ordinate
00057     /// \param minY 
00058     /// Input Lower-left Y ordinate
00059     /// \param maxX 
00060     /// Input Upper-right X ordinate
00061     /// \param maxY 
00062     /// Input Upper-right Y ordinate
00063     /// 
00064     EnvelopeImpl(System::Double minX, System::Double minY,
00065         System::Double maxX, System::Double maxY);
00066 
00067     /// \brief
00068     /// Constructs a 3D EnvelopeImpl object from X, Y and Z ordinates.
00069     /// 
00070     /// \param minX 
00071     /// Input Lower-left X ordinate
00072     /// \param minY 
00073     /// Input Lower-left Y ordinate
00074     /// \param minZ 
00075     /// Input Lower-left, rear Z ordinate
00076     /// \param maxX 
00077     /// Input Upper-right X ordinate
00078     /// \param maxY 
00079     /// Input Upper-right Y ordinate
00080     /// \param maxZ 
00081     /// Input Upper-right, front Z ordinate
00082     /// 
00083     EnvelopeImpl(System::Double minX, System::Double minY, System::Double minZ,
00084         System::Double maxX, System::Double maxY, System::Double maxZ);
00085 
00086     /// \brief
00087     /// Constructs a copy of a EnvelopeImpl.
00088     /// 
00089     /// \param envelopeImpl 
00090     /// Input envelope to copy
00091     /// 
00092     EnvelopeImpl(EnvelopeImpl* envelopeImpl);
00093 
00094     /// \brief
00095     /// Constructs a EnvelopeImpl object from two positions.
00096     /// 
00097     /// \param lowerLeft 
00098     /// Input Lower-left position
00099     /// \param upperRight 
00100     /// Input Upper-right position
00101     /// 
00102     EnvelopeImpl(NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* lowerLeft, NAMESPACE_OSGEO_GEOMETRY::IDirectPosition * upperRight);
00103 
00104     /// \brief
00105     /// Constructs a EnvelopeImpl object by copying from an array of ordinates.
00106     /// 
00107     /// \param dimensionType 
00108     /// Input dimensionality of the ordinates (see Dimensionality)
00109     /// \param ordinates 
00110     /// Input ordinate array representing two positions
00111     /// 
00112     EnvelopeImpl(System::Int32 dimensionType, System::Double ordinates __gc[]);
00113 
00114     /// \brief
00115     /// Equality function for EnvelopeImpl.
00116     /// 
00117     /// \param right 
00118     /// Input envelope for comparison (right-hand-side of equation)
00119     /// 
00120     /// \param left 
00121     /// Input envelope for comparison (left-hand-side of equation)
00122     /// 
00123     /// \return
00124     /// Returns true if all non-NaN ordinates exactly equal.  All NaN values compare as equal to each other.
00125     /// 
00126     static System::Boolean op_Equality(EnvelopeImpl *left, EnvelopeImpl* right);
00127 
00128     /// \brief
00129     /// InEquality function for EnvelopeImpl.
00130     /// 
00131     /// \param right 
00132     /// Input envelope for comparison (right-hand-side of equation)
00133     /// 
00134     /// \param left 
00135     /// Input envelope for comparison (left-hand-side of equation)
00136     /// 
00137     /// \return
00138     /// Returns true if the envelope ordinates are not equal.
00139     /// 
00140     static System::Boolean op_Inequality(EnvelopeImpl *left, EnvelopeImpl* right);
00141 
00142     /// \brief
00143     /// Equality function for EnvelopeImpl.
00144     /// 
00145     /// \param obj 
00146     /// Input envelope for comparison (right-hand-side of equation)
00147     /// 
00148     /// \return
00149     /// Returns true if all non-NaN ordinates exactly equal to this instance.  All NaN values compare as equal to each other.
00150     /// 
00151     System::Boolean Equals(System::Object* obj);
00152 
00153 /// \cond DOXYGEN-IGNORE
00154     System::Int32 GetHashCode();
00155 /// \endcond
00156 
00157     /// \brief
00158     /// Gets the minimum X coordinate value.
00159     /// 
00160     /// \return
00161     /// Returns the minimum X ordinate; numeric_limits::quiet_NaN() by default
00162     /// 
00163     __property System::Double get_MinX();
00164 
00165     /// \brief
00166     /// Sets the minimum X coordinate value.
00167     /// 
00168     /// \param minX 
00169     /// Input Lower-left X ordinate
00170     /// 
00171     /// \return
00172     /// Returns nothing
00173     /// 
00174     __property System::Void set_MinX(System::Double minX);
00175 
00176     /// \brief
00177     /// Gets the minimum Y coordinate value.
00178     /// 
00179     /// \return
00180     /// Returns the minimum Y ordinate; numeric_limits::quiet_NaN() by default
00181     /// 
00182     __property System::Double get_MinY();
00183 
00184     /// \brief
00185     /// Sets the minimum Y coordinate value.
00186     /// 
00187     /// \param minY 
00188     /// Input Lower-left Y ordinate
00189     /// 
00190     /// \return
00191     /// Returns nothing
00192     /// 
00193     __property System::Void set_MinY(System::Double minY);
00194 
00195     /// \brief
00196     /// Gets the minimum Z coordinate value.
00197     /// 
00198     /// \return
00199     /// Returns the minimum Z ordinate; numeric_limits::quiet_NaN() by default
00200     /// 
00201     __property System::Double get_MinZ();
00202 
00203     /// \brief
00204     /// Sets the minimum Z coordinate value.
00205     /// 
00206     /// \param minZ 
00207     /// Input Lower-left, rear Z ordinate
00208     /// 
00209     /// \return
00210     /// Returns nothing
00211     /// 
00212     __property System::Void set_MinZ(System::Double minZ);
00213 
00214     /// \brief
00215     /// Gets the maximum X coordinate value.
00216     /// 
00217     /// \return
00218     /// Returns the maximum X ordinate; numeric_limits::quiet_NaN() by default
00219     /// 
00220     __property System::Double get_MaxX();
00221 
00222     /// \brief
00223     /// Sets the maximum X coordinate value.
00224     /// 
00225     /// \param maxX 
00226     /// Input Upper-right X ordinate
00227     /// 
00228     /// \return
00229     /// Returns nothing
00230     /// 
00231     __property System::Void set_MaxX(System::Double maxX);
00232 
00233     /// \brief
00234     /// Gets the maximum Y coordinate value.
00235     /// 
00236     /// \return
00237     /// Returns the maximum Y ordinate; numeric_limits::quiet_NaN() by default
00238     /// 
00239     __property System::Double get_MaxY();
00240 
00241     /// \brief
00242     /// Sets the maximum Y coordinate value.
00243     /// 
00244     /// \param maxY 
00245     /// Input Upper-right Y ordinate
00246     /// 
00247     /// \return
00248     /// Returns nothing
00249     /// 
00250     __property System::Void set_MaxY(System::Double maxY);
00251 
00252     /// \brief
00253     /// Gets the maximum Z coordinate value.
00254     /// 
00255     /// \return
00256     /// Returns the maximum Z ordinate; numeric_limits::quiet_NaN() by default
00257     /// 
00258     __property System::Double get_MaxZ();
00259 
00260     /// \brief
00261     /// Sets the maximum Z coordinate value.
00262     /// 
00263     /// \param maxZ 
00264     /// Input Upper-right, front Z ordinate
00265     /// 
00266     /// \return
00267     /// Returns nothing
00268     /// 
00269     __property System::Void set_MaxZ(System::Double maxZ);
00270 
00271     /// \brief
00272     /// Indicates whether the envelope's extents are set.
00273     /// 
00274     /// \return
00275     /// Returns 'true' if none of the X, Y and Z extents have been set; 'false' otherwise
00276     /// 
00277     __property System::Boolean get_IsEmpty();
00278 
00279     /// \brief
00280     /// Expands the envelope's extents to include a given position.
00281     /// 
00282     /// \param position 
00283     /// Input position to include in extent
00284     /// 
00285     /// \return
00286     /// Returns nothing
00287     /// 
00288     System::Void Expand(NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* position);
00289 
00290     /// \brief
00291     /// Expands the envelope's extents to include another envelope.
00292     /// 
00293     /// \param envelope 
00294     /// Input envelope to include in extent
00295     /// 
00296     /// \return
00297     /// Returns nothing
00298     /// 
00299     System::Void Expand(NAMESPACE_OSGEO_GEOMETRY::IEnvelope* envelope);
00300 
00301 public:
00302     /// \brief
00303     /// Constructs an Envelope based on an unmanaged instance of the object
00304     /// 
00305     /// \param unmanaged 
00306     /// Input A Pointer to the unmanaged object.
00307     /// 
00308     /// \param autoDelete 
00309     /// Input Indicates if the constructed element should be automatically deleted 
00310     /// once it no longer referenced.
00311     /// 
00312     EnvelopeImpl(System::IntPtr unmanaged, System::Boolean autoDelete);
00313 
00314 /// \cond DOXYGEN-IGNORE
00315 protected:
00316     System::Void ReleaseUnmanagedObject();
00317 
00318 public private:
00319     FdoEnvelopeImpl* GetImpObj();
00320 /// \endcond
00321 };
00322 
00323 END_NAMESPACE_OSGEO_GEOMETRY
00324 
00325 

Comments or suggestions? Send us feedback.