diff options
Diffstat (limited to 'utils/hlfaceposer/choreoactorwidget.h')
| -rw-r--r-- | utils/hlfaceposer/choreoactorwidget.h | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/utils/hlfaceposer/choreoactorwidget.h b/utils/hlfaceposer/choreoactorwidget.h new file mode 100644 index 0000000..b3cfb72 --- /dev/null +++ b/utils/hlfaceposer/choreoactorwidget.h @@ -0,0 +1,118 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// +#ifndef CHOREOACTORWIDGET_H +#define CHOREOACTORWIDGET_H +#ifdef _WIN32 +#pragma once +#endif + +#include "studio.h" +#include "choreowidget.h" +#include "utlvector.h" +#include "mxBitmapButton.h" +#include "expressions.h" + +class CChoreoActor; +class CChoreoChannelWidget; +class mxCheckBox; +class CChoreoActorWidget; + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +class CActorBitmapButton : public mxBitmapButton +{ +public: + CActorBitmapButton( CChoreoActorWidget *actor, mxWindow *parent, int x, int y, int w, int h, int id = 0, const char *bitmap = 0 ); + + CChoreoActorWidget *GetActor( void ); +private: + + CChoreoActorWidget *m_pActor; +}; + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +class CActorActiveCheckBox : public mxCheckBox +{ +public: + CActorActiveCheckBox( CChoreoActorWidget *actor, mxWindow *parent, int x, int y, int w, int h, const char *label = 0, int id = 0); + + CChoreoActorWidget *GetActor( void ); +private: + + CChoreoActorWidget *m_pActor; +}; + +//----------------------------------------------------------------------------- +// Purpose: The base actor ui widget. Owns the channels +//----------------------------------------------------------------------------- +class CChoreoActorWidget : public CChoreoWidget +{ +public: + typedef CChoreoWidget BaseClass; + + // Construction / destruction + CChoreoActorWidget( CChoreoWidget *parent ); + virtual ~CChoreoActorWidget( void ); + + virtual void Create( void ); + virtual void Layout( RECT& rc ); + + virtual void redraw(CChoreoWidgetDrawHelper& drawHelper); + + // Accessors + CChoreoActor *GetActor( void ); + void SetActor( CChoreoActor *actor ); + + // Manipulate channels + void AddChannel( CChoreoChannelWidget *channel ); + void RemoveChannel( CChoreoChannelWidget *channel ); + CChoreoChannelWidget *GetChannel( int num ); + int GetNumChannels( void ); + + // Override height because we can be open/collapsed and we contain the channels + virtual int GetItemHeight( void ); + + // UI interactions + void DeleteChannel( void ); + void NewChannel( void ); + void MoveChannelUp( void ); + void MoveChannelDown( void ); + + // Expanded view or contracted view + void ShowChannels( bool show ); + bool GetShowChannels( void ); + + float *GetSettings( void ); + + void ResetSettings( void ); + +private: + // Context menu handler + void ShowRightClickMenu( int mx, int my ); + + // The underlying actor + CChoreoActor *m_pActor; + + // Children + CUtlVector < CChoreoChannelWidget * > m_Channels; + + // Expanded mode? + bool m_bShowChannels; + + // Expand/collapse buttons + CActorBitmapButton *m_btnOpen; + CActorBitmapButton *m_btnClose; + + CActorActiveCheckBox *m_cbActive; + + float m_rgCurrentSetting[ GLOBAL_STUDIO_FLEX_CONTROL_COUNT ]; +}; + +#endif // CHOREOACTORWIDGET_H |