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__