From 1a6fe945e73b97b19df115829f801e860c81ad5d Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 29 Jan 2012 13:52:15 +0000 Subject: FS#79 Added the actual files for the ui::Scrollbar class. --- src/ui/scrollbar.h | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 src/ui/scrollbar.h (limited to 'src/ui/scrollbar.h') diff --git a/src/ui/scrollbar.h b/src/ui/scrollbar.h new file mode 100644 index 0000000..0689969 --- /dev/null +++ b/src/ui/scrollbar.h @@ -0,0 +1,121 @@ +/* + ui/scrollbar.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_SCROLLBAR_H__ +#define __INCLUDED_UI_SCROLLBAR_H__ + +#include +#include "ui/button.h" +#include "ui/widget.h" + +namespace ui +{ + +/** + * @brief a scrollbar widget + */ +class ScrollBar : public Widget +{ +public: + ScrollBar(Widget *parent, const float minimum = 0.0f, const float maximum = 1.0f); + + ~ScrollBar(); + + /** + * @brief the current slider value + */ + inline const float value() const { + return scrollbar_value; + } + + /** + * @brief the minimum value + */ + inline const float minimum() const { + return scrollbar_minimum; + } + + /** + * @brief the maximum value + */ + inline const float maximum() const { + return scrollbar_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 scrollbar_minimum; + float scrollbar_maximum; + float scrollbar_value; + bool scrollbar_dragging; + + Button *scrollbar_minbutton; + Button *scrollbar_decbutton; + Button *scrollbar_incbutton; + Button *scrollbar_maxbutton; +}; + +} + +#endif // __INCLUDED_UI_SCROLLBAR_H__ + -- cgit v1.2.3