FDO API Reference Feature Data Objects

ICurveSegmentAbstract.h

Go to the documentation of this file.
00001 #ifndef _ICURVESEGMENTABSTRACT_H_
00002 #define _ICURVESEGMENTABSTRACT_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 <Common/Collection.h>
00029 #include <Geometry/IDirectPosition.h>
00030 #include <Geometry/IEnvelope.h>
00031 #include <Common/GeometryType.h>
00032 #include <Common/Dimensionality.h>
00033 
00034 /// \brief
00035 /// The FdoICurveSegmentAbstract class is an abstract geometric Curve Segment object.  
00036 /// This class is used strictly as a component of curves 
00037 /// and, thus, does not inherit from IGeometry.
00038 class FdoICurveSegmentAbstract : public FdoIDisposable
00039 {
00040 public:
00041 
00042     /// \brief
00043     /// Gets the envelope for the curve segment.
00044     /// 
00045     /// \return
00046     /// Returns the envelope
00047     /// 
00048     FDO_GEOM_API virtual FdoIEnvelope* GetEnvelope() const = 0;
00049 
00050     /// \brief
00051     /// Gets the starting position of this curve segment.
00052     /// 
00053     /// \return
00054     /// Returns the starting position
00055     /// 
00056     FDO_GEOM_API virtual FdoIDirectPosition* GetStartPosition() const = 0;
00057 
00058     /// \brief
00059     /// Gets the ending position of this curve segment.
00060     /// 
00061     /// \return
00062     /// Returns the ending position
00063     /// 
00064     FDO_GEOM_API virtual FdoIDirectPosition* GetEndPosition() const = 0;
00065 
00066     /// \brief
00067     /// Gets the closure state for the curve segment.
00068     /// 
00069     /// \remarks
00070     /// The meaning behind this method is not guaranteed
00071     /// to be uniform between derived types or between implementations
00072     /// of this package.
00073     /// It may represent a computed value, an explicit attribute, or be true by definition.
00074     /// As a computed value, the result is typically from simply testing the starting and 
00075     /// ending positions for exact equality.  This is only reliable in floating
00076     /// point arithmetic if these data have identical origins.
00077     /// As an explicit attribute, it would be persisted with the Geometry and 
00078     /// typically denoted by a parameter in the relevant factory method.  
00079     /// Some Geometry types are closed by definition.
00080     /// 
00081     /// \return
00082     /// Returns 'true' if the curve is closed, and false otherwise
00083     /// 
00084     FDO_GEOM_API virtual bool GetIsClosed() const = 0;
00085 
00086     /// \brief
00087     /// Gets the type of the most-derived interface 
00088     /// in the Geometry package for this object
00089     /// 
00090     /// \return
00091     /// Returns the derived type
00092     /// 
00093     FDO_GEOM_API virtual FdoGeometryComponentType GetDerivedType() const = 0;
00094 
00095     /// \brief
00096     /// Gets the dimensionality of ordinates in this object.
00097     /// 
00098     /// \remarks
00099     ///  Values are from the FdoDimensionality enumeration.
00100     /// A return type of "FdoInt32" is used instead of the enumeration, catering to typical use with bit masking.
00101     /// 
00102     /// \return
00103     /// Returns the ordinate dimensionality
00104     /// 
00105     FDO_GEOM_API virtual FdoInt32 GetDimensionality() const = 0;
00106 
00107 protected:
00108 
00109     /// \brief
00110     /// Default destructor.
00111     /// 
00112     /// \return
00113     /// Returns nothing
00114     /// 
00115     FDO_GEOM_API virtual ~FdoICurveSegmentAbstract() {};
00116 
00117 };
00118 
00119 
00120 /// \brief
00121 ///  The FdoCurveSegmentCollection class is a collection of CurveSegment objects.
00122 class FdoCurveSegmentCollection : public FdoCollection<FdoICurveSegmentAbstract, FdoException>
00123 {
00124 public:
00125     /// \brief
00126     ///  Creates an instance of FdoCurveSegmentCollection with no contained elements.
00127     /// 
00128     /// \return
00129     /// Returns an empty collection
00130     /// 
00131     static FdoCurveSegmentCollection* Create()
00132     {
00133         FdoCurveSegmentCollection* value = new FdoCurveSegmentCollection();
00134         if (NULL == value)
00135             throw FdoException::Create(FdoException::NLSGetMessage(FDO_NLSID(FDO_1_BADALLOC)));
00136 
00137         return value;
00138     }
00139 
00140 protected:
00141     void Dispose()
00142     {
00143         delete this;
00144     }
00145 };
00146 #endif
00147 
00148 

Comments or suggestions? Send us feedback.