diff options
Diffstat (limited to 'utils/hlfaceposer/flexpanel.h')
| -rw-r--r-- | utils/hlfaceposer/flexpanel.h | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/utils/hlfaceposer/flexpanel.h b/utils/hlfaceposer/flexpanel.h new file mode 100644 index 0000000..015a5de --- /dev/null +++ b/utils/hlfaceposer/flexpanel.h @@ -0,0 +1,144 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#ifndef FLEXPANEL_H +#define FLEXPANEL_H +#ifdef _WIN32 +#pragma once +#endif + +#ifndef INCLUDED_MXWINDOW +#include <mxtk/mxWindow.h> +#endif + +#define IDC_FLEX 7001 +#define IDC_FLEXSCROLL 7101 +#define IDC_EXPRESSIONRESET 7102 + +// NOTE THIS THIS TAKES UP 4 * 96 entries (384) +// #define NEXT_AVAIL 7457 ...etc. +#define IDC_FLEXSCALE 7200 + +#define IDC_FLEXSCALE_LAST 7584 + +#define IDC_FP_UNCHECK_ALL 7800 +#define IDC_FP_CHECK_ALL 7801 +#define IDC_FP_INVERT 7802 +#define IDC_FP_MENU 7803 + +#include "studio.h" + +class mxTab; +class mxChoice; +class mxCheckBox; +class mxSlider; +class mxScrollbar; +class mxLineEdit; +class mxLabel; +class mxButton; +class MatSysWindow; +class TextureWindow; +class mxExpressionSlider; + + +#include "expressions.h" +#include "faceposertoolwindow.h" + +/* + int nameindex; + int numkeys; + int keyindex; + { char key, char weight } +*/ + +class ControlPanel; + +class FlexPanel : public mxWindow, public IFacePoserToolWindow +{ + typedef mxWindow BaseClass; + + mxExpressionSlider *slFlexScale[ GLOBAL_STUDIO_FLEX_CONTROL_COUNT ]; + + mxScrollbar *slScrollbar; + + mxButton *btnResetSliders; + mxButton *btnCopyToSliders; + mxButton *btnCopyFromSliders; + mxButton *btnMenu; + + +public: + // CREATORS + FlexPanel (mxWindow *parent); + virtual ~FlexPanel (); + + virtual void redraw(); + virtual bool PaintBackground( void ); + + void SetEvent( CChoreoEvent *event ); + virtual void OnModelChanged(); + + // MANIPULATORS + int handleEvent (mxEvent *event); + + void initFlexes (); + + bool IsValidSlider( int iFlexController ) const; + + float GetSlider( int iFlexController ); + float GetSliderRawValue( int iFlexController ); + void GetSliderRange( int iFlexController, float& minvalue, float& maxvalue ); + + void SetSlider( int iFlexController, float value ); + float GetInfluence( int iFlexController ); + void SetInfluence( int iFlexController, float value ); + void SetEdited( int iFlexController, bool isEdited ); + bool IsEdited( int iFlexController ); + int LookupFlex( int iSlider, int barnum ); + int LookupPairedFlex( int iFlexController ); + + // maps global flex_controller index to UI slider + int nFlexSliderIndex[ GLOBAL_STUDIO_FLEX_CONTROL_COUNT ]; + int nFlexSliderBarnum[ GLOBAL_STUDIO_FLEX_CONTROL_COUNT ]; + + void PositionSliders( int sboffset ); + void PositionControls( int width, int height ); + + void EditExpression( void ); + void NewExpression( void ); + + void setExpression( int index ); + void DeleteExpression( int index ); + void SaveExpression( int index ); + void RevertExpression( int index ); + + void CopyControllerSettings( void ); + void PasteControllerSettings( void ); + + void ResetSliders( bool preserveundo, bool bDirtyClass ); + + void CopyControllerSettingsToStructure( CExpression *exp ); + +private: + enum + { + FP_STATE_UNCHECK = 0, + FP_STATE_CHECK, + FP_STATE_INVERT + }; + + void OnSetAll( int state ); + void OnMenu(); + + bool m_bNewExpressionMode; + + // Since we combine left/right into one, this will be less than hdr->numflexcontrollers + int m_nViewableFlexControllerCount; +}; + +extern FlexPanel *g_pFlexPanel; + +#endif // FLEXPANEL_H |