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.
124 lines
4.0 KiB
124 lines
4.0 KiB
![]()
4 years ago
|
//=========== Copyright Valve Corporation, All rights reserved. ===============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//=============================================================================//
|
||
|
|
||
|
#ifndef PANORAMA_SLIDER_H
|
||
|
#define PANORAMA_SLIDER_H
|
||
|
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#include "panorama/controls/panel2d.h"
|
||
|
|
||
|
namespace panorama
|
||
|
{
|
||
|
|
||
|
DECLARE_PANEL_EVENT1( SliderValueChanged, float );
|
||
|
DECLARE_PANEL_EVENT1( SlottedSliderValueChanged, int );
|
||
|
DECLARE_PANEL_EVENT1( SliderFocusChanged, bool );
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Slider control which includes track, progress & thumb
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class CSlider: public CPanel2D
|
||
|
{
|
||
|
DECLARE_PANEL2D( CSlider, CPanel2D );
|
||
|
|
||
|
public:
|
||
|
CSlider( CPanel2D *pParent, const char *pchID );
|
||
|
virtual ~CSlider();
|
||
|
|
||
|
enum ESliderDirection
|
||
|
{
|
||
|
k_EDirectionVertical,
|
||
|
k_EDirectionHorizontal
|
||
|
};
|
||
|
|
||
|
void SetMin( float flMin ) { m_flMin = flMin; InvalidateSizeAndPosition(); }
|
||
|
void SetMax( float flMax ) { m_flMax = flMax; InvalidateSizeAndPosition(); }
|
||
|
void SetIncrement( float flValue ) { m_flIncrement = flValue; }
|
||
|
virtual void SetValue( float flValue );
|
||
|
float GetValue() { return m_flCur; }
|
||
|
float GetDefaultValue() { return m_flDefault; }
|
||
|
void SetDefaultValue ( float flValue ) { m_flDefault = flValue; }
|
||
|
void SetShowDefaultValue( bool bShow ) { m_bShowDefault = bShow; }
|
||
|
void SetDirection( ESliderDirection eValue );
|
||
|
|
||
|
virtual bool BSetProperty( CPanoramaSymbol symName, const char *pchValue );
|
||
|
|
||
|
virtual bool OnMouseButtonDown( const MouseData_t &code ) OVERRIDE;
|
||
|
virtual bool OnMouseButtonUp( const MouseData_t &code ) OVERRIDE;
|
||
|
virtual void OnMouseMove( float flMouseX, float flMouseY ) OVERRIDE;
|
||
|
virtual bool OnMoveUp( int nRepeats ) OVERRIDE;
|
||
|
virtual bool OnMoveRight( int nRepeats ) OVERRIDE;
|
||
|
virtual bool OnMoveDown( int nRepeats ) OVERRIDE;
|
||
|
virtual bool OnMoveLeft( int nRepeats ) OVERRIDE;
|
||
|
|
||
|
virtual bool OnActivate(panorama::EPanelEventSource_t eSource);
|
||
|
virtual bool OnCancel(panorama::EPanelEventSource_t eSource);
|
||
|
virtual void OnStyleFlagsChanged();
|
||
|
virtual void OnResetToDefaultValue();
|
||
|
|
||
|
void SetRequiresSelection( bool bRequireSelection ) { m_bRequiresSelection = bRequireSelection; }
|
||
|
|
||
|
protected:
|
||
|
bool EventPanelActivated( const CPanelPtr< IUIPanel > &pPanel, EPanelEventSource_t eSource );
|
||
|
virtual void OnLayoutTraverse( float flFinalWidth, float flFinalHeight );
|
||
|
void SetValueFromMouse( float x, float y );
|
||
|
float GetMin() { return m_flMin; }
|
||
|
float GetMax() { return m_flMax; }
|
||
|
ESliderDirection GetDirection() { return m_eDirection; }
|
||
|
|
||
|
CPanel2D *m_pThumb;
|
||
|
CPanel2D *m_pTrack;
|
||
|
CPanel2D *m_pProgress;
|
||
|
CPanel2D *m_pDefaultTick;
|
||
|
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 );
|
||
|
bool EventResetToDefault( const panorama::CPanelPtr< panorama::IUIPanel > &pPanel );
|
||
|
|
||
|
private:
|
||
|
bool AllowInteraction( void );
|
||
|
bool ShouldShowDefault( void ) { return m_bShowDefault; }
|
||
|
|
||
|
float m_flMin;
|
||
|
float m_flMax;
|
||
|
float m_flDefault;
|
||
|
float m_flCur;
|
||
|
float m_flLast;
|
||
|
float m_flIncrement;
|
||
|
bool m_bRequiresSelection;
|
||
|
bool m_bDraggingThumb;
|
||
|
bool m_bShowDefault;
|
||
|
ESliderDirection m_eDirection;
|
||
|
|
||
|
float m_flLastMouseX;
|
||
|
float m_flLastMouseY;
|
||
|
};
|
||
|
|
||
|
class CSlottedSlider : public CSlider
|
||
|
{
|
||
|
DECLARE_PANEL2D( CSlottedSlider, CSlider );
|
||
|
public:
|
||
|
CSlottedSlider( CPanel2D *pParent, const char *pchID );
|
||
|
virtual ~CSlottedSlider();
|
||
|
|
||
|
virtual bool BSetProperty( CPanoramaSymbol symName, const char *pchValue );
|
||
|
virtual void SetValue( float flValue );
|
||
|
void SetValue( int nValue );
|
||
|
virtual void OnLayoutTraverse( float flFinalWidth, float flFinalHeight );
|
||
|
int GetCurrentNotch() { return m_nCurNotch; }
|
||
|
|
||
|
private:
|
||
|
int m_nNumNotches;
|
||
|
int m_nCurNotch;
|
||
|
CUtlVector< CPanel2D* > m_pNotches;
|
||
|
};
|
||
|
|
||
|
} // namespace panorama
|
||
|
|
||
|
#endif // PANORAMA_SLIDER_H
|