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 class FdoCurveSegmentCollection; 00023 00024 BEGIN_NAMESPACE_OSGEO_GEOMETRY 00025 00026 public __gc __interface IEnvelope; 00027 public __gc __interface IDirectPosition; 00028 00029 /// \ingroup (OSGeoFDOGeometry) 00030 /// \interface OSGeo::FDO::Geometry::ICurveSegmentAbstract 00031 /// \brief 00032 /// The ICurveSegmentAbstract class is an abstract geometric Curve Segment object. 00033 /// This class is used strictly as a component of curves 00034 /// and, thus, does not inherit from IGeometry. 00035 public __gc __interface ICurveSegmentAbstract : public System::IDisposable 00036 { 00037 public: 00038 /// \brief 00039 /// Gets the envelope for the curve segment. 00040 /// 00041 /// \return 00042 /// Returns the envelope 00043 /// 00044 __property NAMESPACE_OSGEO_GEOMETRY::IEnvelope *get_Envelope(); 00045 00046 /// \brief 00047 /// Gets the starting position of this curve segment. 00048 /// 00049 /// \return 00050 /// Returns the starting position 00051 /// 00052 __property NAMESPACE_OSGEO_GEOMETRY::IDirectPosition *get_StartPosition(); 00053 00054 /// \brief 00055 /// Gets the ending position of this curve segment. 00056 /// 00057 /// \return 00058 /// Returns the ending position 00059 /// 00060 __property NAMESPACE_OSGEO_GEOMETRY::IDirectPosition *get_EndPosition(); 00061 00062 /// \brief 00063 /// Gets the closure state for the curve segment. 00064 /// 00065 /// \remarks 00066 /// The meaning behind this method is not guaranteed 00067 /// to be uniform between derived types or between implementations 00068 /// of this package. 00069 /// It may represent a computed value, an explicit attribute, or be true by definition. 00070 /// As a computed value, the result is typically from simply testing the starting and 00071 /// ending positions for exact equality. This is only reliable in floating 00072 /// point arithmetic if these data have identical origins. 00073 /// As an explicit attribute, it would be persisted with the Geometry and 00074 /// typically denoted by a parameter in the relevant factory method. 00075 /// Some Geometry types are closed by definition. 00076 /// 00077 /// \return 00078 /// Returns 'true' if the curve is closed, and false otherwise 00079 /// 00080 __property System::Boolean get_IsClosed(); 00081 00082 /// \brief 00083 /// Gets the type of the most-derived interface 00084 /// in the Geometry package for this object 00085 /// 00086 /// \return 00087 /// Returns the derived type 00088 /// 00089 __property NAMESPACE_OSGEO_COMMON::GeometryComponentType get_DerivedType(); 00090 00091 /// \brief 00092 /// Gets the dimensionality of ordinates in this object. 00093 /// 00094 /// \remarks 00095 /// Values are from the Dimensionality enumeration. 00096 /// A return type of "Int32" is used instead of the enumeration, catering to typical use with bit masking. 00097 /// 00098 /// \return 00099 /// Returns the ordinate dimensionality 00100 /// 00101 __property System::Int32 get_Dimensionality(); 00102 00103 }; 00104 00105 /// \brief 00106 /// The CurveSegmentCollection class represents a collection of CurveSegment objects. 00107 [System::Reflection::DefaultMemberAttribute("RealTypeItem")] 00108 public __gc __sealed class CurveSegmentCollection 00109 : public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList 00110 { 00111 public: 00112 /// \brief 00113 /// Constructs a CurveSegmentCollection managed object based on an unmanaged instance of the object 00114 /// 00115 /// \param unmanaged 00116 /// Input A Pointer to the unmanaged object. 00117 /// 00118 /// \param autoDelete 00119 /// Input Indicates if the constructed object should be automatically deleted 00120 /// once it no longer referenced. 00121 /// 00122 CurveSegmentCollection(System::IntPtr unmanaged, System::Boolean autoDelete); 00123 00124 public private: 00125 FdoCurveSegmentCollection *GetImpObj(); 00126 00127 /// \cond DOXYGEN-IGNORE 00128 protected: 00129 __sealed System::Void ReleaseUnmanagedObject(); 00130 00131 private: 00132 /// \brief 00133 /// A Nested class defined to provide enumeration of Dictionary elements 00134 /// 00135 /// Enumerators can be used to read the data in the collection, 00136 /// but they cannot be used to modify the underlying collection. 00137 /// 00138 /// An enumerator remains valid as long as the collection remains unchanged. 00139 /// If changes are made to the collection, such as adding, modifying, or deleting 00140 /// elements, the enumerator is irrecoverably invalidated and the next call to 00141 /// MoveNext or Reset throws an InvalidOperationException. If the collection is 00142 /// modified between MoveNext and Current, Current returns the element that it is 00143 /// set to, even if the enumerator is already invalidated. 00144 /// 00145 /// The enumerator does not have exclusive access to the collection; therefore, 00146 /// enumerating through a collection is intrinsically not a thread-safe procedure. 00147 /// Even when a collection is synchronized, other threads can still modify the 00148 /// collection, which causes the enumerator to throw an exception. To guarantee 00149 /// thread safety during enumeration, you can either lock the collection during 00150 /// the entire enumeration or catch the exceptions resulting from changes made 00151 /// by other threads. 00152 /// 00153 __gc class Enumerator : public System::Collections::IEnumerator 00154 { 00155 CurveSegmentCollection *m_pCol; 00156 System::Int32 m_nIdx; 00157 00158 public: 00159 /// \brief 00160 /// Constructs a new Collection Enumerator 00161 /// 00162 /// \param col 00163 /// Input The collection to enumerate. 00164 /// 00165 Enumerator(CurveSegmentCollection *col) 00166 : m_pCol(col), m_nIdx(-1) 00167 {} 00168 00169 /// \brief 00170 /// Retrieves the current object at the enumerator location 00171 /// 00172 /// \return 00173 /// Retuns the current object referenced by the enumerator 00174 /// 00175 __property System::Object *get_Current(); 00176 00177 /// \brief 00178 /// Initially, the enumerator is positioned before the first element in the collection. 00179 /// At this position, calling the Current property throws an exception. 00180 /// Therefore, you must call the MoveNext method to advance the enumerator 00181 /// to the first element of the collection before reading the value of Current. 00182 /// If MoveNext passes the end of the collection, the enumerator is positioned 00183 /// after the last element in the collection and MoveNext returns false. 00184 /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 00185 /// If the last call to MoveNext returned false, calling Current throws an exception. 00186 /// To set Current to the first element of the collection again, you can call Reset 00187 /// followed by MoveNext. 00188 /// 00189 /// \return 00190 /// Retuns true if the Enumerator is able to move to a valid element 00191 /// otherwise false. 00192 /// 00193 System::Boolean MoveNext(); 00194 00195 /// \brief 00196 /// Initially, the enumerator is positioned before the first element in the collection. 00197 /// The Reset method brings the enumerator back to this position. 00198 /// 00199 System::Void Reset(); 00200 }; 00201 /// \endcond 00202 00203 public: 00204 /// \brief 00205 /// Creates an instance of CurveSegmentCollection with no contained elements. 00206 /// 00207 /// \return 00208 /// Returns an empty collection 00209 /// 00210 CurveSegmentCollection(); 00211 00212 private: 00213 // System::Collections::ICollection interface properties 00214 __property System::Object* System::Collections::ICollection::get_SyncRoot(); 00215 __property System::Boolean System::Collections::ICollection::get_IsSynchronized(); 00216 00217 // System::Collections::ICollection interface methods 00218 System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index); 00219 00220 // System::Collections::IList interface properties 00221 __property System::Boolean System::Collections::IList::get_IsFixedSize(); 00222 __property System::Boolean System::Collections::IList::get_IsReadOnly(); 00223 __property Object* System::Collections::IList::get_Item(System::Int32 index); 00224 __property System::Void System::Collections::IList::set_Item(System::Int32 index, Object* value); 00225 00226 // System::Collections::IList interface methods 00227 System::Int32 System::Collections::IList::Add(Object* value); 00228 System::Boolean System::Collections::IList::Contains(Object* value); 00229 System::Int32 System::Collections::IList::IndexOf(Object* value); 00230 System::Void System::Collections::IList::Insert(System::Int32 index, Object* value); 00231 System::Void System::Collections::IList::Remove(Object* value); 00232 00233 public: 00234 /// \brief 00235 /// Gets the count of items in collection. 00236 /// 00237 /// \return 00238 /// Returns the number of items in the collection. 00239 /// 00240 __property System::Int32 get_Count(System::Void); 00241 00242 /// \brief 00243 /// Gets an enumerator that can iterate through a collection. 00244 /// 00245 /// \return 00246 /// Returns an enumerator on the dictionary. 00247 /// 00248 __sealed System::Collections::IEnumerator* GetEnumerator(System::Void); 00249 00250 /// \brief 00251 /// Removes the index-th ICurveSegmentAbstract from this collection. 00252 /// 00253 /// \param index 00254 /// Input index of the element to remove. 00255 /// 00256 System::Void RemoveAt(System::Int32 index); 00257 /// \brief 00258 /// Removes all elements from the collection. 00259 /// 00260 System::Void Clear(); 00261 00262 public: 00263 /// \brief 00264 /// Adds a ICurveSegmentAbstract object into the collection. 00265 /// 00266 /// \param value 00267 /// Input the ICurveSegmentAbstract object to add. 00268 /// 00269 /// \return 00270 /// The position into which the new element was inserted. 00271 /// 00272 System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value); 00273 00274 /// \brief 00275 /// Determines the index of a specific ICurveSegmentAbstract object. 00276 /// 00277 /// \param value 00278 /// Input the ICurveSegmentAbstract object to locate in the collection. 00279 /// 00280 /// \return 00281 /// The index of value if found in the collection; otherwise, -1. 00282 /// 00283 System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value); 00284 00285 /// \brief 00286 /// Inserts an ICurveSegmentAbstract object to the collection at the specified position. 00287 /// 00288 /// \param index 00289 /// Input the zero-based index at which value should be inserted. 00290 /// \param value 00291 /// Input the ICurveSegmentAbstract object to insert. 00292 /// 00293 System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value); 00294 00295 /// \brief 00296 /// Removes the first occurrence of a specific ICurveSegmentAbstract object. 00297 /// 00298 /// \param value 00299 /// Input the ICurveSegmentAbstract object to remove from the collection. 00300 /// 00301 System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value); 00302 00303 /// \brief 00304 /// Determines whether the collection contains a specific ICurveSegmentAbstract object. 00305 /// 00306 /// \param value 00307 /// Input The ICurveSegmentAbstract object to locate in the collection. 00308 /// 00309 /// \return 00310 /// True if the value is found in the collection; otherwise, false. 00311 /// 00312 System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value); 00313 00314 /// \brief 00315 /// Copies the elements of the collection to an array. 00316 /// 00317 /// \param array 00318 /// Output the one-dimensional Array that is the destination of the elements copied from this collection. 00319 /// \param startAt 00320 /// Input an integer that represents the index in array at which copying begins. 00321 /// 00322 System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* array[],System::Int32 startAt); 00323 00324 /// \brief 00325 /// Gets an ICurveSegmentAbstract in the collection. 00326 /// 00327 /// \param index 00328 /// Input index of the ICurveSegmentAbstract to retrieve 00329 /// 00330 __property NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract *get_RealTypeItem(System::Int32 index); 00331 00332 /// \brief 00333 /// Sets the value of the ICurveSegmentAbstract object at the specified index 00334 /// 00335 /// \param index 00336 /// Input index of the ICurveSegmentAbstract object to set. 00337 /// 00338 /// \param value 00339 /// Input the value of the ICurveSegmentAbstract object 00340 /// 00341 __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract *value); 00342 00343 /// \brief 00344 /// Gets an ICurveSegmentAbstract object in the collection. 00345 /// 00346 /// \param index 00347 /// Input index of the ICurveSegmentAbstract object to retrieve. 00348 /// 00349 /// \return 00350 /// Returns the ICurveSegmentAbstract object at the specified index. 00351 /// 00352 __property NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract *get_Item(System::Int32 index); 00353 00354 /// \brief 00355 /// Sets the value of the ICurveSegmentAbstract object at the specified index 00356 /// 00357 /// \param index 00358 /// Input index of the ICurveSegmentAbstract object to set. 00359 /// 00360 /// \param value 00361 /// Input the value of the ICurveSegmentAbstract object. 00362 /// 00363 __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract *value); 00364 }; 00365 00366 END_NAMESPACE_OSGEO_GEOMETRY 00367 00368
Comments or suggestions? Send us feedback. |