summaryrefslogtreecommitdiff
path: root/utils/hlfaceposer/mxexpressiontray.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/hlfaceposer/mxexpressiontray.h')
-rw-r--r--utils/hlfaceposer/mxexpressiontray.h161
1 files changed, 161 insertions, 0 deletions
diff --git a/utils/hlfaceposer/mxexpressiontray.h b/utils/hlfaceposer/mxexpressiontray.h
new file mode 100644
index 0000000..e59520c
--- /dev/null
+++ b/utils/hlfaceposer/mxexpressiontray.h
@@ -0,0 +1,161 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+#if !defined( MXEXPRESSIONTRAY_H )
+#define MXEXPRESSIONTRAY_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#define IDC_TRAYSCROLL 1001
+#define IDC_CONTEXT_NEWEXP 1002
+#define IDC_CONTEXT_EDITEXP 1003
+#define IDC_CONTEXT_SAVEEXP 1004
+#define IDC_CONTEXT_DELETEXP 1005
+#define IDC_CONTEXT_REVERT 1012
+#define IDC_AB 1014
+#define IDC_THUMBNAIL_INCREASE 1015
+#define IDC_THUMBNAIL_DECREASE 1016
+#define IDC_CONTEXT_CREATEBITMAP 1017
+
+#define COLOR_TRAYBACKGROUND RGB( 240, 240, 220 )
+
+class ControlPanel;
+class FlexPanel;
+class mxScrollbar;
+class mxCheckBox;
+class CChoreoView;
+class CExpression;
+class CExpClass;
+class mxButton;
+class CChoreoWidgetDrawHelper;
+
+#include "faceposertoolwindow.h"
+#include "mxbitmaptools.h"
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+class mxExpressionTray : public mxWindow, public IFacePoserToolWindow
+{
+public:
+ mxExpressionTray( mxWindow *parent, int id = 0 );
+ virtual ~mxExpressionTray ( void );
+
+ virtual void redraw ();
+ virtual bool PaintBackground( void );
+
+ virtual int handleEvent (mxEvent *event);
+
+ void ThumbnailIncrease( void );
+ void ThumbnailDecrease( void );
+ void RestoreThumbnailSize( void );
+
+ void AB( void );
+
+ void Select( int exp, bool deselect = true );
+ void Deselect( void );
+ int CountSelected( void );
+
+ void SetCellSize( int cellsize );
+
+ void ReloadBitmaps( void );
+ virtual void OnModelChanged();
+
+private: // Data structures
+
+ typedef void (mxExpressionTray::*ETMEMBERFUNC)( int cell );
+
+ class mxETButton
+ {
+ public:
+ mxETButton *next;
+ char m_szName[ 32 ];
+ bool m_bActive;
+ RECT m_rc;
+ char m_szToolTip[ 128 ];
+ mxbitmapdata_t *m_pImage;
+
+ ETMEMBERFUNC m_fnCallback;
+ };
+
+private: // Methods
+ void ChangeWeightOfExpressionInGroup( CExpClass *active, CExpression *exp, CExpression *group );
+ int GetCellUnderPosition( int x, int y );
+
+ bool ComputeRect( int cell, int& rcx, int& rcy, int& rcw, int& rch );
+ int ComputePixelsNeeded( void );
+
+ void RepositionSlider();
+ void SetClickedCell( int cell );
+ void ShowRightClickMenu( int mx, int my );
+
+ void DrawThumbNail( CExpClass *active, CExpression *current, CChoreoWidgetDrawHelper& helper,
+ int rcx, int rcy, int rcw, int rch, int c, int selected, bool updateselection );
+
+ void DrawDirtyFlag( CChoreoWidgetDrawHelper& helper, CExpression *current, int rcx, int rcy, int rcw, int rch );
+ void DrawExpressionFocusRect( CChoreoWidgetDrawHelper& helper, int x, int y, int w, int h, COLORREF clr );
+ void DrawExpressionDescription( CChoreoWidgetDrawHelper& helper, int x, int y, int w, int h, const char *expressionname, const char *description );
+
+ void CreateButtons( void );
+ void DeleteAllButtons( void );
+ void AddButton( const char *name, const char *tooltip, const char *bitmap,
+ ETMEMBERFUNC pfnCallback, bool active, int x, int y, int w, int h );
+ mxETButton *GetItemUnderCursor( int x, int y );
+ void DrawButton( CChoreoWidgetDrawHelper& helper, int cell, mxETButton *btn );
+ void ActivateButton( const char *name, bool active );
+ mxETButton *FindButton( const char *name );
+
+ void ET_Undo( int cell );
+ void ET_Redo( int cell );
+
+ void DrawFocusRect( void );
+
+private: // Data
+
+ mxETButton *m_pButtons;
+
+ mxScrollbar *slScrollbar;
+
+ int m_nTopOffset;
+
+ int m_nLastNumExpressions;
+
+ int m_nGranularity;
+
+ // For A/B
+ int m_nPrevCell;
+ int m_nCurCell;
+
+ // For context menu
+ int m_nClickedCell;
+
+ // Formatting
+ int m_nButtonSquare;
+
+ int m_nGap;
+ int m_nDescriptionHeight;
+ int m_nSnapshotWidth;
+ int m_nSnapshotHeight;
+
+ // For detecting that the slider thumbs need to be recomputed
+ int m_nPreviousExpressionCount;
+
+ bool m_bDragging;
+ RECT m_rcFocus;
+ RECT m_rcOrig;
+ int m_nDragCell;
+ int m_nXStart;
+ int m_nYStart;
+
+ mxButton *m_pABButton;
+ mxButton *m_pThumbnailIncreaseButton;
+ mxButton *m_pThumbnailDecreaseButton;
+};
+
+extern mxExpressionTray *g_pExpressionTrayTool;
+
+#endif // MXEXPRESSIONTRAY_H \ No newline at end of file