WidgetSlider.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef ROCKETCOREWIDGETSLIDER_H
00029 #define ROCKETCOREWIDGETSLIDER_H
00030
00031 #include <Rocket/Core/EventListener.h>
00032
00033 namespace Rocket {
00034 namespace Core {
00035
00036 class Element;
00037
00044 class WidgetSlider : public EventListener
00045 {
00046 public:
00047 enum Orientation
00048 {
00049 UNKNOWN,
00050 VERTICAL,
00051 HORIZONTAL
00052 };
00053
00054 WidgetSlider(Element* parent);
00055 virtual ~WidgetSlider();
00056
00058 bool Initialise(Orientation orientation);
00059
00061 void Update();
00062
00065 void SetBarPosition(float bar_position);
00068 float GetBarPosition();
00069
00072 Orientation GetOrientation() const;
00073
00076 void GetDimensions(Vector2f& dimensions) const;
00077
00078 protected:
00084 void FormatElements(const Vector2f& containing_block, bool resize_element, float slider_length, float bar_length = -1);
00087 void FormatBar(float bar_length = -1);
00088
00090 Element* GetParent() const;
00091
00093 virtual void ProcessEvent(Event& event);
00094
00098 virtual float OnBarChange(float bar_position) = 0;
00102 virtual float OnLineIncrement() = 0;
00106 virtual float OnLineDecrement() = 0;
00111 virtual float OnPageIncrement(float click_position) = 0;
00116 virtual float OnPageDecrement(float click_position) = 0;
00117
00118 private:
00119 void PositionBar();
00120
00121 Element* parent;
00122
00123 Orientation orientation;
00124
00125
00126 Element* track;
00127
00128 Element* bar;
00129
00130 Element* arrows[2];
00131
00132
00133 float bar_position;
00134
00135 int bar_drag_anchor;
00136
00137
00138 float arrow_timers[2];
00139 float last_update_time;
00140 };
00141
00142 }
00143 }
00144
00145 #endif