00001 //***************************************************************************** 00011 //***************************************************************************** 00012 00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER) 00014 #pragma once 00015 #endif 00016 00017 #ifndef __XSIFCURVEKEY_H__ 00018 #define __XSIFCURVEKEY_H__ 00019 00020 #include <xsi_siobject.h> 00021 #include <xsi_value.h> 00022 #include <xsi_time.h> 00023 00024 namespace XSI { 00025 00026 class CFCurveKeyRefArray; 00027 00028 //***************************************************************************** 00069 //***************************************************************************** 00070 00071 class SICPPSDKDECL FCurveKey : public SIObject 00072 { 00073 public: 00075 FCurveKey(); 00076 00078 ~FCurveKey(); 00079 00083 FCurveKey(const CRef& in_ref); 00084 00088 FCurveKey(const FCurveKey& in_obj); 00089 00094 bool IsA( siClassID in_ClassID) const; 00095 00099 siClassID GetClassID() const; 00100 00106 FCurveKey& operator=(const FCurveKey& in_obj); 00107 00113 FCurveKey& operator=(const CRef& in_ref); 00114 00118 CValue::DataType GetValueType() const; 00119 00123 CValue GetValue(void) const; 00124 00130 CStatus PutValue(const CValue& in_value); 00131 00135 CTime GetTime(void) const; 00136 00142 CStatus PutTime(const CTime& in_time); 00143 00147 bool GetLocked(void) const; 00148 00154 CStatus PutLocked(bool in_bFlag); 00155 00160 bool GetSelected(void) const; 00161 00165 CValue GetLeft() const; 00166 00172 CStatus PutLeft(const CValue& in_value); 00173 00177 CValue GetRight(void) const; 00178 00184 CStatus PutRight(const CValue& in_value); 00185 00189 double GetLeftTanY(void) const; 00190 00196 CStatus PutLeftTanY(double in_value); 00197 00201 double GetRightTanY(void) const; 00202 00208 CStatus PutRightTanY(double in_value); 00209 00213 CTime GetLeftTanX(void) const; 00214 00220 CStatus PutLeftTanX(const CTime& in_value); 00221 00225 CTime GetRightTanX(void) const; 00226 00232 CStatus PutRightTanX(const CTime& in_value); 00233 00238 siFCurveKeyInterpolation GetInterpolation(void) const; 00239 00246 CStatus PutInterpolation(siFCurveKeyInterpolation in_value); 00247 00252 bool GetConstraint(siFCurveKeyConstraint in_eKC) const; 00253 00260 CStatus PutConstraint(siFCurveKeyConstraint in_eKC, bool in_bSet ); 00261 00269 CStatus Set( const CTime& in_frame, const CValue& in_value, bool in_overridekeylock=false ); 00270 00275 LONG GetIndex(void) const; 00276 00277 private: 00278 FCurveKey * operator&() const; 00279 FCurveKey * operator&(); 00280 friend void * FCurveKeyPtr(const FCurveKey &); 00281 }; 00282 00283 //***************************************************************************** 00319 //***************************************************************************** 00320 class SICPPSDKDECL CFCurveKeyRefArray : public CRefArray 00321 { 00322 public: 00323 00325 CFCurveKeyRefArray(); 00326 00330 CFCurveKeyRefArray( const CFCurveKeyRefArray& ); 00331 00333 ~CFCurveKeyRefArray(); 00334 00340 CFCurveKeyRefArray& operator=( const CFCurveKeyRefArray& in_refArray ); 00341 00346 CFCurveKeyRefArray& operator+=( const CFCurveKeyRefArray& in_refArray ); 00347 00354 virtual void Add( const CRef& in_item ); 00355 00364 void AddItems( const CFCurveKeyRefArray& in_keys ); 00365 00370 void RemoveAt( LONG in_index ); 00371 00377 CTime GetMinKeyFrame(void) const; 00378 00384 CTime GetMidKeyFrame(void) const; 00385 00391 CTime GetMaxKeyFrame(void) const; 00392 00398 CValue GetMinKeyValue(void) const; 00399 00405 CValue GetMidKeyValue(void) const; 00406 00412 CValue GetMaxKeyValue(void) const; 00413 }; 00414 00415 }; // namespace XSI 00416 00417 #endif // __XSIFCURVEKEY_H__