1 #ifndef GUI2_SLIDER_H
2 #define GUI2_SLIDER_H
3 
4 #include "gui2_element.h"
5 #include "gui2_label.h"
6 
7 class GuiBasicSlider : public GuiElement
8 {
9 public:
10     typedef std::function<void(float value)> func_t;
11 protected:
12     float min_value;
13     float max_value;
14     float value;
15     func_t func;
16 public:
17     GuiBasicSlider(GuiContainer* owner, string id, float min_value, float max_value, float start_value, func_t func);
18 
19     virtual void onDraw(sf::RenderTarget& window);
20     virtual bool onMouseDown(sf::Vector2f position);
21     virtual void onMouseDrag(sf::Vector2f position);
22     virtual void onMouseUp(sf::Vector2f position);
23 
24     GuiBasicSlider* setValue(float value);
25     GuiBasicSlider* setRange(float min, float max);
26     float getValue() const;
27 };
28 
29 class GuiSlider : public GuiBasicSlider
30 {
31 public:
32     typedef std::function<void(float value)> func_t;
33 protected:
34     struct TSnapPoint
35     {
36         float value;
37         float range;
38     };
39     std::vector<TSnapPoint> snap_points;
40     GuiLabel* overlay_label;
41 public:
42     GuiSlider(GuiContainer* owner, string id, float min_value, float max_value, float start_value, func_t func);
43 
44     virtual void onDraw(sf::RenderTarget& window);
45     virtual bool onMouseDown(sf::Vector2f position);
46     virtual void onMouseDrag(sf::Vector2f position);
47     virtual void onMouseUp(sf::Vector2f position);
48 
49     GuiSlider* setValueSnapped(float value);
50     GuiSlider* clearSnapValues();
51     GuiSlider* addSnapValue(float value, float range);
52     GuiSlider* addOverlay();
53 };
54 
55 class GuiSlider2D : public GuiElement
56 {
57 public:
58 public:
59     typedef std::function<void(sf::Vector2f value)> func_t;
60 protected:
61     struct TSnapPoint
62     {
63         sf::Vector2f value;
64         sf::Vector2f range;
65     };
66     sf::Vector2f min_value;
67     sf::Vector2f max_value;
68     sf::Vector2f value;
69     std::vector<TSnapPoint> snap_points;
70     func_t func;
71 public:
72     GuiSlider2D(GuiContainer* owner, string id, sf::Vector2f min_value, sf::Vector2f max_value, sf::Vector2f start_value, func_t func);
73 
74     virtual void onDraw(sf::RenderTarget& window);
75     virtual bool onMouseDown(sf::Vector2f position);
76     virtual void onMouseDrag(sf::Vector2f position);
77     virtual void onMouseUp(sf::Vector2f position);
78 
79     GuiSlider2D* clearSnapValues();
80     GuiSlider2D* addSnapValue(sf::Vector2f value, sf::Vector2f range);
81     GuiSlider2D* setValue(sf::Vector2f value);
82     sf::Vector2f getValue();
83 };
84 
85 #endif//GUI2_SLIDER_H
86