xsi_nurbsdata.h
Go to the documentation of this file.
00001 //*****************************************************************************
00014 //*****************************************************************************
00015 
00016 #if (_MSC_VER > 1000) || defined(SGI_COMPILER)
00017 #pragma once
00018 #endif
00019 
00020 #ifndef __XSINURBSDATA_H__
00021 #define __XSINURBSDATA_H__
00022 
00023 #include <xsi_decl.h>
00024 #include <xsi_vector4.h>
00025 #include <xsi_doublearray.h>
00026 #include <xsi_longarray.h>
00027 
00028 namespace XSI {
00029 
00030 class CStatus;
00031 
00032 //*************************************************************************
00039 //*************************************************************************
00040 struct CNurbsCurveData
00041 {
00043     CNurbsCurveData()
00044         : m_bClosed(false),
00045           m_lDegree(3),
00046           m_siParameterization(siNonUniformParameterization){}
00047 
00052     bool operator==(const CNurbsCurveData& in_curveData)const
00053     {
00054         return ((m_aControlPoints == in_curveData.m_aControlPoints) &&
00055                 (m_aKnots == in_curveData.m_aKnots) &&
00056                 (m_bClosed == in_curveData.m_bClosed) &&
00057                 (m_lDegree == in_curveData.m_lDegree) &&
00058                 (m_siParameterization == in_curveData.m_siParameterization));
00059     }
00060 
00065     bool operator!=(const CNurbsCurveData& in_curveData)const
00066     {
00067         return !operator==(in_curveData);
00068     }
00069 
00071     MATH::CVector4Array            m_aControlPoints;
00072 
00074     CDoubleArray               m_aKnots;
00076     bool                       m_bClosed;
00078     LONG                       m_lDegree;
00079 
00081     siKnotParameterization     m_siParameterization;
00082 };
00083 
00084 //*************************************************************************
00094 //*************************************************************************
00095 class SICPPSDKDECL CNurbsCurveDataArray
00096 {
00097 public:
00102     CNurbsCurveDataArray( LONG in_size=0);
00103 
00108     CNurbsCurveDataArray(const CNurbsCurveDataArray& in_array);
00109 
00111     ~CNurbsCurveDataArray();
00112 
00117     CNurbsCurveDataArray& operator=( const CNurbsCurveDataArray& in_array );
00118 
00122     LONG GetCount() const;
00123 
00128     CStatus Add( const CNurbsCurveData& in_item );
00129 
00133     CStatus Clear();
00134 
00141     CStatus Resize( LONG in_size);
00142 
00149     const CNurbsCurveData& operator[]( LONG in_index ) const;
00150 
00156     CNurbsCurveData& operator[]( LONG in_index );
00157 
00163     bool operator==(const CNurbsCurveDataArray& in_array) const;
00164 
00170     bool operator!=(const CNurbsCurveDataArray& in_array) const;
00171 
00172 private:
00173     void* m_ptr;
00174 };
00175 
00176 //*************************************************************************
00182 //*************************************************************************
00183 struct CTrimCurveData
00184 {
00186     CTrimCurveData()
00187         : m_bIsBoundary(false),
00188           m_lProjectionType(0){}
00189 
00194     bool operator==(const CTrimCurveData& in_trimData)const
00195     {
00196         return ((m_bIsBoundary == in_trimData.m_bIsBoundary) &&
00197                 (m_lProjectionType == in_trimData.m_lProjectionType) &&
00198                 (m_aCurvesData == in_trimData.m_aCurvesData));
00199     }
00200 
00205     bool operator!=(const CTrimCurveData& in_trimData)const
00206     {
00207         return ! operator==(in_trimData);
00208     }
00209 
00211     bool            m_bIsBoundary;
00213     LONG            m_lProjectionType;
00214 
00216     CNurbsCurveDataArray   m_aCurvesData;
00217 };
00218 
00219 //*************************************************************************
00228 //*************************************************************************
00229 class SICPPSDKDECL CTrimCurveDataArray
00230 {
00231 public:
00236     CTrimCurveDataArray( LONG in_size=0);
00237 
00241     CTrimCurveDataArray(const CTrimCurveDataArray& in_array);
00242 
00244     ~CTrimCurveDataArray();
00245 
00250     CTrimCurveDataArray& operator=( const CTrimCurveDataArray& in_array );
00251 
00255     LONG GetCount() const;
00256 
00261     CStatus Add( const CTrimCurveData& in_item );
00262 
00266     CStatus Clear();
00267 
00274     CStatus Resize( LONG in_size);
00275 
00282     const CTrimCurveData& operator[]( LONG in_index ) const;
00283 
00289     CTrimCurveData& operator[]( LONG in_index );
00290 
00296     bool operator==(const CTrimCurveDataArray& in_array) const;
00297 
00303     bool operator!=(const CTrimCurveDataArray& in_array) const;
00304 
00305 private:
00306 
00307     void* m_ptr;
00308 };
00309 
00310 
00311 //*************************************************************************
00317 //*************************************************************************
00318 struct CNurbsSurfaceData
00319 {
00321     CNurbsSurfaceData()
00322         :   m_bUClosed(false),
00323             m_bVClosed(false),
00324             m_lUDegree(3),
00325             m_lVDegree(3),
00326             m_siUParameterization(siNonUniformParameterization),
00327             m_siVParameterization(siNonUniformParameterization){}
00328 
00333     bool operator==(const CNurbsSurfaceData& in_surfaceData)const
00334     {
00335         return ((m_aControlPoints == in_surfaceData.m_aControlPoints) &&
00336                 (m_lNbUControlPoints == in_surfaceData.m_lNbUControlPoints) &&
00337                 (m_lNbVControlPoints == in_surfaceData.m_lNbVControlPoints) &&
00338                 (m_aUKnots == in_surfaceData.m_aUKnots) &&
00339                 (m_aVKnots == in_surfaceData.m_aVKnots) &&
00340                 (m_bUClosed == in_surfaceData.m_bUClosed) &&
00341                 (m_bVClosed == in_surfaceData.m_bVClosed) &&
00342                 (m_lUDegree == in_surfaceData.m_lUDegree) &&
00343                 (m_lVDegree == in_surfaceData.m_lVDegree) &&
00344                 (m_siUParameterization == in_surfaceData.m_siUParameterization) &&
00345                 (m_siVParameterization == in_surfaceData.m_siVParameterization));
00346     }
00347 
00352     bool operator!=(const CNurbsSurfaceData& in_surfaceData)const
00353     {
00354         return ! operator==(in_surfaceData);
00355     }
00356 
00371     MATH::CVector4Array       m_aControlPoints;
00373     LONG                      m_lNbUControlPoints;
00375     LONG                      m_lNbVControlPoints;
00377     CDoubleArray              m_aUKnots;
00379     CDoubleArray              m_aVKnots;
00381     bool                      m_bUClosed;
00383     bool                      m_bVClosed;
00385     LONG                      m_lUDegree;
00387     LONG                      m_lVDegree;
00389     siKnotParameterization    m_siUParameterization;
00391     siKnotParameterization    m_siVParameterization;
00392 };
00393 
00394 
00395 //*************************************************************************
00404 //*************************************************************************
00405 class SICPPSDKDECL CNurbsSurfaceDataArray
00406 {
00407 public:
00411     CNurbsSurfaceDataArray( LONG in_size=0);
00412 
00416     CNurbsSurfaceDataArray(const CNurbsSurfaceDataArray& in_array);
00417 
00419     ~CNurbsSurfaceDataArray();
00420 
00425     CNurbsSurfaceDataArray& operator=( const CNurbsSurfaceDataArray& in_array );
00426 
00430     LONG GetCount() const;
00431 
00436     CStatus Add( const CNurbsSurfaceData& in_item );
00437 
00441     CStatus Clear();
00442 
00448     CStatus Resize( LONG in_size);
00449 
00456     const CNurbsSurfaceData& operator[]( LONG  in_index ) const;
00457 
00463     CNurbsSurfaceData& operator[](LONG in_index );
00464 
00470     bool operator==(const CNurbsSurfaceDataArray& in_array) const;
00471 
00477     bool operator!=(const CNurbsSurfaceDataArray& in_array) const;
00478 
00479 private:
00480 
00481     void* m_ptr;
00482 };
00483 
00484 
00485 
00486 };
00487 
00488 #endif