//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // //============================================================================= #ifndef DMETIMESELECTION_H #define DMETIMESELECTION_H #ifdef _WIN32 #pragma once #endif #include "datamodel/dmelement.h" #include "movieobjects/timeutils.h" #include "movieobjects/dmetimeselectiontimes.h" enum RecordingState_t; class CDmeTimeSelection : public CDmElement { DEFINE_ELEMENT( CDmeTimeSelection, CDmElement ); public: bool IsEnabled() const; void SetEnabled( bool state ); bool IsRelative() const; void SetRelative( DmeTime_t time, bool state ); DmeTime_t GetAbsFalloff( DmeTime_t time, int side ); DmeTime_t GetAbsHold( DmeTime_t time, int side ); DmeTime_t GetRelativeFalloff( DmeTime_t time, int side ); DmeTime_t GetRelativeHold( DmeTime_t time, int side ); void SetAbsFalloff( DmeTime_t time, int side, DmeTime_t absfallofftime ); void SetAbsHold ( DmeTime_t time, int side, DmeTime_t absholdtime ); int GetFalloffInterpolatorType( int side ); void SetFalloffInterpolatorType( int side, int interpolatorType ); void GetAlphaForTime( DmeTime_t t, DmeTime_t curtime, byte &alpha ); float GetAmountForTime( DmeTime_t t, DmeTime_t curtime ); float AdjustFactorForInterpolatorType( float factor, int side ); void CopyFrom( const CDmeTimeSelection &src ); void GetCurrent( DmeTime_t pTimes[TS_TIME_COUNT] ); void SetCurrent( DmeTime_t* pTimes ); float GetThreshold(); void SetRecordingState( RecordingState_t state ); RecordingState_t GetRecordingState() const; private: CDmeTimeSelection & operator =( const CDmeTimeSelection& src ); void ConvertToRelative( DmeTime_t time ); void ConvertToAbsolute( DmeTime_t time ); CDmaVar< bool > m_bEnabled; CDmaVar< bool > m_bRelative; // These are all offsets from the "current" head position in seconds, or they are absolute times if not using relative mode CDmaVar< int > m_falloff[ 2 ]; CDmaVar< int > m_hold[ 2 ]; CDmaVar< int > m_nFalloffInterpolatorType[ 2 ]; CDmaVar< float > m_threshold; CDmaVar< int > m_nRecordingState; }; #endif // DMETIMESELECTION_H