- Main Page
- Related Pages
- Modules
- Classes
- Files

# IGeometry.h

Go to the documentation of this file.

    00001 #ifndef _IGEOMETRY_H_
    00002 #define _IGEOMETRY_H_
    00003
    00004 //
    00005 // Copyright (C) 2004-2006  Autodesk, Inc.
    00006 //
    00007 // This library is free software; you can redistribute it and/or
    00008 // modify it under the terms of version 2.1 of the GNU Lesser
    00009 // General Public License as published by the Free Software Foundation.
    00010 //
    00011 // This library is distributed in the hope that it will be useful,
    00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
    00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00014 // Lesser General Public License for more details.
    00015 //
    00016 // You should have received a copy of the GNU Lesser General Public
    00017 // License along with this library; if not, write to the Free Software
    00018 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
    00019 //
    00020
    00021
    00022
    00023 #ifdef _WIN32
    00024 #pragma once
    00025 #endif
    00026
    00027 #include <FdoCommon.h>
    00028 #include <Geometry/IEnvelope.h>
    00029 #include <Common/Dimensionality.h>
    00030 #include <Common/GeometryType.h>
    00031 #include <Common/Collection.h>
    00032
    00033 /// \brief
    00034 /// The FdoIGeometry class defines the properties and methods common to all geometric
    00035 /// types.  FdoIGeometry is an abstract type.
    00036 class FdoIGeometry : public FdoIDisposable
    00037 {
    00038 public:
    00039
    00040     /// \brief
    00041     /// Gets the envelope for the Geometry.
    00042     ///
    00043     /// \return
    00044     /// Returns the envelope
    00045     ///
    00046     FDO_GEOM_API virtual FdoIEnvelope* GetEnvelope() const = 0;
    00047
    00048     /// \brief
    00049     /// Gets the dimensionality of ordinates in this object.
    00050     ///
    00051     /// \remarks
    00052     ///  Values are from the FdoDimensionality enumeration.
    00053     /// A return type of "FdoInt32" is used instead of the enumeration, catering to typical use with bit masking.
    00054     ///
    00055     /// \return
    00056     /// Returns the ordinate dimensionality
    00057     ///
    00058     FDO_GEOM_API virtual FdoInt32 GetDimensionality() const = 0;
    00059
    00060     /// \brief
    00061     /// Gets the type of the most-derived interface
    00062     /// in the Geometry package for this object
    00063     ///
    00064     /// \remarks
    00065     ///  The derived type indicates to what class the object may safely be cast.
    00066     ///
    00067     /// \return
    00068     /// Returns the derived type
    00069     ///
    00070     FDO_GEOM_API virtual FdoGeometryType GetDerivedType() const = 0;
    00071
    00072     /// \brief
    00073     /// Gets the text string representation of this Geometry.
    00074     ///
    00075     /// \remarks
    00076     /// This object retains ownership of the string.
    00077     /// The caller should NOT attempt to free it.
    00078     /// The text string may be retained in memory by the object indefinitely.
    00079     /// Calling this method on a large number of Geometries that are retained
    00080     /// in memory may cause a noticable increase in memory consumption.
    00081     ///
    00082     /// \return
    00083     /// Returns the text string
    00084     ///
    00085     FDO_GEOM_API virtual FdoString* GetText() = 0;
    00086
    00087 protected:
    00088
    00089     /// \brief
    00090     /// Constructs a default instance.
    00091     ///
    00092     /// \return
    00093     /// Returns nothing
    00094     ///
    00095     FDO_GEOM_API FdoIGeometry() {};
    00096
    00097     /// \brief
    00098     /// Default destructor.
    00099     ///
    00100     /// \return
    00101     /// Returns nothing
    00102     ///
    00103     FDO_GEOM_API virtual ~FdoIGeometry() {};
    00104 };
    00105
    00106
    00107 /// \brief
    00108 ///  Collection of CurvePolygon objects.
    00109 class FdoGeometryCollection : public FdoCollection<FdoIGeometry, FdoException>
    00110 {
    00111 public:
    00112     /// \brief
    00113     ///  Creates an instance of FdoGeometryCollection with no contained elements.
    00114     ///
    00115     /// \return
    00116     /// Returns an empty collection
    00117     ///
    00118     static FdoGeometryCollection* Create()
    00119     {
    00120         FdoGeometryCollection* value = new FdoGeometryCollection();
    00121         if (NULL == value)
    00122             throw FdoException::Create(FdoException::NLSGetMessage(FDO_NLSID(FDO_1_BADALLOC)));
    00123
    00124         return value;
    00125     }
    00126
    00127 protected:
    00128     void Dispose()
    00129     {
    00130         delete this;
    00131     }
    00132 };
    00133 #endif
    00134
    00135

Please send us your comment about this page