mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-16 21:53:01 +00:00
1
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user