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.
86 lines
2.5 KiB
86 lines
2.5 KiB
//=========== Copyright Valve Corporation, All rights reserved. ===============// |
|
// |
|
// Purpose: |
|
//=============================================================================// |
|
|
|
#ifndef VUMETER_H |
|
#define VUMETER_H |
|
|
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "panorama/controls/panel2d.h" |
|
|
|
namespace panorama |
|
{ |
|
|
|
DECLARE_PANEL_EVENT1( VUMeterBarsChanged, int ); |
|
|
|
////////////////////////////////////////////////////////////////////////// |
|
// |
|
// volume bars control for volume/mic levels |
|
// |
|
class CVUMeter: public panorama::CPanel2D |
|
{ |
|
DECLARE_PANEL2D( CVUMeter, panorama::CPanel2D ); |
|
public: |
|
CVUMeter( panorama::CPanel2D *pParent, const char *pchID ); |
|
virtual ~CVUMeter(); |
|
|
|
virtual bool BSetProperty( CPanoramaSymbol symName, const char *pchValue ) OVERRIDE; |
|
|
|
virtual void OnInitializedFromLayout(); |
|
|
|
int GetNumActiveBars() const { return m_numActive; } |
|
void SetNumActiveBars( int numActive ); |
|
|
|
int GetNumBarsTotal() const { return m_numBars; } |
|
|
|
virtual bool OnMoveLeft( int cRepeats ); |
|
virtual bool OnMoveRight( int cRepeats ); |
|
|
|
// Override these to avoid focus slipping away when setting with analog |
|
virtual bool OnMoveUp( int nRepeats ); |
|
virtual bool OnMoveDown( int nRepeats ); |
|
|
|
virtual bool OnMouseButtonUp(const MouseData_t &code); |
|
virtual bool OnMouseWheel(const MouseData_t &code); |
|
virtual void OnMouseMove(float flMouseX, float flMouseY); |
|
|
|
virtual bool OnActivate(panorama::EPanelEventSource_t eSource); |
|
virtual bool OnCancel(panorama::EPanelEventSource_t eSource); |
|
virtual void OnStyleFlagsChanged(); |
|
|
|
// if VU meter is "writable," it will be a tab stop, and be focusable. when activated |
|
// it will enter a mode where you can set the bar with the dpad. if VU meter is not |
|
// writable, it just displays a value. |
|
void SetWritable( bool bWritable ); |
|
|
|
bool EventActivated( const panorama::CPanelPtr< panorama::IUIPanel > &pPanel, panorama::EPanelEventSource_t eSource ); |
|
bool EventCancelled( const panorama::CPanelPtr< panorama::IUIPanel > &pPanel, panorama::EPanelEventSource_t eSource ); |
|
bool EventStyleFlagsChanged( const panorama::CPanelPtr< panorama::IUIPanel > &pPanel ); |
|
|
|
#ifdef DBGFLAG_VALIDATE |
|
virtual void ValidateClientPanel( CValidator &validator, const tchar *pchName ) OVERRIDE; |
|
#endif |
|
|
|
protected: |
|
bool OnLeftRight( int dx ); |
|
|
|
bool m_bWritable; |
|
int m_numBars, m_numActive; |
|
CPanoramaSymbol m_symBarPanelType; |
|
CPanoramaSymbol m_symBarPanelAddClass; |
|
CPanoramaSymbol m_symBarPanelActiveClass; |
|
CUtlVector< panorama::CPanel2D * > m_arrBars; |
|
|
|
float m_flLastMouseX; |
|
float m_flLastMouseY; |
|
}; |
|
|
|
} // namespace panorama |
|
|
|
#endif // VUMETER_H |
|
|
|
|
|
|