bullet3/btgui/Gwen/Controls/Slider.h
2013-03-12 23:52:31 -07:00

81 lines
2.0 KiB
C++

/*
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