You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
3.3 KiB
120 lines
3.3 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
#ifndef CHOREOCHANNELWIDGET_H |
|
#define CHOREOCHANNELWIDGET_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "choreowidget.h" |
|
#include "utlvector.h" |
|
|
|
class CChoreoEventWidget; |
|
class CChoreoActorWidget; |
|
class CChoreoChannel; |
|
class CChoreoChannelWidget; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: The channel container |
|
//----------------------------------------------------------------------------- |
|
class CChoreoChannelWidget : public CChoreoWidget |
|
{ |
|
public: |
|
typedef CChoreoWidget BaseClass; |
|
|
|
enum |
|
{ |
|
FULLMENU = 0, |
|
NEWEVENTMENU |
|
}; |
|
|
|
enum |
|
{ |
|
CLOSECAPTION_NONE = 0, |
|
CLOSECAPTION_EXPANDCOLLAPSE, |
|
CLOSECAPTION_PREVLANGUAGE, |
|
CLOSECAPTION_NEXTLANGUAGE, |
|
CLOSECAPTION_SELECTOR, |
|
CLOSECAPTION_CAPTION, |
|
}; |
|
|
|
// Construction |
|
CChoreoChannelWidget( CChoreoActorWidget *parent ); |
|
virtual ~CChoreoChannelWidget( void ); |
|
|
|
virtual void Create( void ); |
|
virtual void Layout( RECT& rc ); |
|
|
|
virtual int GetItemHeight( void ); |
|
|
|
virtual void redraw(CChoreoWidgetDrawHelper& drawHelper); |
|
virtual void redrawStatus( CChoreoWidgetDrawHelper& drawHelper, RECT& rcClient, int areaUnderMouse ); |
|
|
|
// Accessors |
|
CChoreoChannel *GetChannel( void ); |
|
void SetChannel( CChoreoChannel *channel ); |
|
|
|
// Manipulate child events |
|
void AddEvent( CChoreoEventWidget *event ); |
|
void RemoveEvent( CChoreoEventWidget *event ); |
|
|
|
void MoveEventToTail( CChoreoEventWidget *event ); |
|
|
|
CChoreoEventWidget *GetEvent( int num ); |
|
int GetNumEvents( void ); |
|
|
|
// Determine time for click position |
|
float GetTimeForMousePosition( int mx ); |
|
|
|
int GetChannelItemUnderMouse( int mx, int my ); |
|
|
|
CChoreoEvent *GetCaptionClickedEvent(); |
|
void GetMasterAndSlaves( CChoreoEvent *master, CUtlVector< CChoreoEvent * >& fulllist ); |
|
|
|
void HandleSelectorClicked(); |
|
|
|
private: |
|
|
|
struct CloseCaptionInfo |
|
{ |
|
bool isSelector; |
|
RECT rcSelector; |
|
RECT rcCaption; |
|
int eventindex; |
|
}; |
|
|
|
void GetCloseCaptionExpandCollapseRect( RECT& rc ); |
|
void GetCloseCaptionLanguageRect( RECT& rc, bool previous ); |
|
void GetCloseCaptions( CUtlVector< CloseCaptionInfo >& selectors ); |
|
|
|
int GetVerticalStackingCount( bool dolayout, RECT* rc ); |
|
void LayoutEventInRow( CChoreoEventWidget *event, int row, RECT& rc ); |
|
|
|
void RenderCloseCaptionInfo( CChoreoWidgetDrawHelper& drawHelper, RECT& rcEventArea ); |
|
void RenderCloseCaptions( CChoreoWidgetDrawHelper& drawHelper, RECT& rcEventArea ); |
|
void RenderCloseCaptionExpandCollapseRect( CChoreoWidgetDrawHelper& drawHelper, RECT& rcEventArea ); |
|
void RenderCloseCaptionSelectors( CChoreoWidgetDrawHelper& drawHelper, RECT& rcEventArea ); |
|
|
|
void SetUsingCombinedFieldByTokenName( char const *token, bool usingcombinedfile ); |
|
|
|
bool CheckHasAudio(); |
|
|
|
// The actor to whom we belong |
|
CChoreoActorWidget *m_pParent; |
|
|
|
// The underlying scene object |
|
CChoreoChannel *m_pChannel; |
|
|
|
// Children |
|
CUtlVector < CChoreoEventWidget * > m_Events; |
|
bool m_bHasAudio; |
|
int m_nBaseHeight; |
|
|
|
int m_nSelectorEventIndex; |
|
}; |
|
|
|
#endif // CHOREOCHANNELWIDGET_H
|
|
|