FDO .NET API Reference | Feature Data Objects |
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. |