00001
00011
00012
00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER)
00014 #pragma once
00015 #endif
00016
00017 #ifndef __XSICONTROLPOINT_H__
00018 #define __XSICONTROLPOINT_H__
00019
00020 #include <xsi_point.h>
00021
00022 namespace XSI {
00023
00024 class CKnotArray;
00025 class CControlPointRefArray;
00026 class CNurbsSampleRefArray;
00027
00028
00029
00067
00068
00069 class SICPPSDKDECL ControlPoint : public Point
00070 {
00071 public:
00073 ControlPoint();
00074
00076 ~ControlPoint();
00077
00081 ControlPoint(const CRef& in_ref);
00082
00086 ControlPoint(const ControlPoint& in_obj);
00087
00092 bool IsA( siClassID in_ClassID) const;
00093
00097 siClassID GetClassID() const;
00098
00104 ControlPoint& operator=(const ControlPoint& in_obj);
00105
00111 ControlPoint& operator=(const CRef& in_ref);
00112
00113
00117 double GetX()const;
00118
00125 CStatus PutX(double in_dX);
00126
00130 double GetY()const;
00131
00138 CStatus PutY(double in_dY);
00139
00143 double GetZ()const;
00144
00151 CStatus PutZ(double in_dZ);
00152
00156 double GetW()const;
00157
00164 CStatus PutW(double in_dW);
00165
00170 bool GetIsBoundary()const;
00171
00172 private:
00173 ControlPoint* operator&() const;
00174 ControlPoint* operator&();
00175 };
00176
00177
00211
00212 class SICPPSDKDECL CControlPointRefArray : public CPointRefArray
00213 {
00214 public:
00216 CControlPointRefArray();
00217
00219 ~CControlPointRefArray();
00220
00224 CControlPointRefArray( const CControlPointRefArray& in_array );
00225
00230 CRef GetItem( LONG in_index ) const;
00231
00236 CRef GetItem( const CString& in_name ) const;
00237
00241 LONG GetCount() const;
00242
00246 bool IsValid() const;
00247
00253 CStatus GetArray(MATH::CVector4Array& out_vPositions)const;
00254
00261 CStatus PutArray(MATH::CVector4Array& in_vPositions);
00262
00270 CStatus Dimension
00271 (
00272 siNurbsDirection in_siDirection,
00273 LONG& out_lDimension
00274 )const;
00275
00276 private:
00277 void* m_ptr;
00278 };
00279
00280 };
00281
00282 #endif // __XSICONTROLPOINT_H__