xsi_nurbsdata.h Source File
 
 
 
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