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