/* ui/slider.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_UI_SLIDER_H__ #define __INCLUDED_UI_SLIDER_H__ #include #include "ui/button.h" #include "ui/widget.h" namespace ui { /** * @brief a slider widget */ class Slider : public Widget { public: Slider(Widget *parent, const float minimum = 0.0f, const float maximum = 1.0f); ~Slider(); /** * @brief the current slider value */ inline const float value() const { return slider_value; } /** * @brief the minimum value */ inline const float minimum() const { return slider_minimum; } /** * @brief the maximum value */ inline const float maximum() const { return slider_maximum; } /** * @brief print widget description to console */ virtual void print(const size_t indent) const; /** * @brief set the current slider value * @see value */ void set_value(const float value); /** * @brief set the minimum slider value * @see minimum */ void set_minimum(const float minimum); /** * @brief set the maximum slider value * @see maximum */ void set_maximum(const float maximum); /** * @brief set the minimum and maximum slider values * @see minimum * @see maximum */ void set_range(const float minimum, const float maximum); /// show the widget virtual void show(); protected: /// resize event handler virtual void resize(); /// draw event handler virtual void draw(); /// emit event handler virtual bool on_emit(Widget *sender, const Event event, void *data=0); /// keypress event handler virtual bool on_keypress(const int key, const unsigned int modifier); /// keyrelease event handler virtual bool on_keyrelease(const int key, const unsigned int modifier); virtual void on_mouseover(const math::Vector2f &cursor); /// mouse movement handler virtual void on_mousemove(const math::Vector2f &cursor); private: /// validate slider value void validate(); float slider_minimum; float slider_maximum; float slider_value; bool slider_dragging; Button *slider_minbutton; Button *slider_decbutton; Button *slider_incbutton; Button *slider_maxbutton; }; } #endif // __INCLUDED_UI_SLIDER_H__