/* GWEN Copyright (c) 2010 Facepunch Studios See license in Gwen.h */ #pragma once #ifndef GWEN_CONTROLS_SLIDER_H #define GWEN_CONTROLS_SLIDER_H #include "Gwen/Controls/Base.h" #include "Gwen/Controls/Button.h" #include "Gwen/Controls/Dragger.h" #include "Gwen/Gwen.h" #include "Gwen/Skin.h" namespace Gwen { namespace ControlsInternal { class GWEN_EXPORT SliderBar : public ControlsInternal::Dragger { GWEN_CONTROL( SliderBar, ControlsInternal::Dragger ); virtual void Render( Skin::Base* skin ); }; } namespace Controls { class GWEN_EXPORT Slider : public Base { GWEN_CONTROL( Slider, Base ); virtual void Render( Skin::Base* skin ) = 0; virtual void Layout( Skin::Base* skin ); virtual void SetClampToNotches( bool bClamp ) { m_bClampToNotches = bClamp; } virtual void SetNotchCount( int num ) { m_iNumNotches = num; } virtual int GetNotchCount() { return m_iNumNotches; } virtual void SetRange( float fMin, float fMax ); virtual float GetValue(); virtual void SetValue( float val, bool forceUpdate = true ); virtual float CalculateValue(); virtual void OnMoved( Controls::Base * control ); virtual void OnMouseClickLeft( int /*x*/, int /*y*/, bool /*bDown*/ ){}; virtual bool OnKeyRight( bool bDown ) { if ( bDown ) SetValue( GetValue() + 1, true ); return true; } virtual bool OnKeyLeft( bool bDown ) { if ( bDown ) SetValue( GetValue() - 1, true ); return true; } virtual bool OnKeyUp( bool bDown ) { if ( bDown ) SetValue( GetValue() + 1, true ); return true; } virtual bool OnKeyDown( bool bDown ) { if ( bDown ) SetValue( GetValue() - 1, true ); return true; } virtual void RenderFocus( Gwen::Skin::Base* skin); Gwen::Event::Caller onValueChanged; protected: virtual void SetValueInternal( float fVal ); virtual void UpdateBarFromValue() = 0; ControlsInternal::SliderBar * m_SliderBar; bool m_bClampToNotches; int m_iNumNotches; float m_fValue; float m_fMin; float m_fMax; }; } } #endif