Velvet 0.1a
A beginner-friendly C++ GUI framework built on SFML.
Loading...
Searching...
No Matches
Slider.hpp
Go to the documentation of this file.
1#pragma once
2#include <SFML/System/Vector2.hpp>
4#include <SFML/Graphics/Color.hpp>
5#include <functional>
6
12class Slider : public Widget {
13private:
14 sf::RectangleShape active_part;
15 sf::RectangleShape inactive_part;
16 sf::RectangleShape thumb;
17
18 float height, width;
19 float from, to;
20 float sliderValue;
21 float thickness = 20;
22 float length;
23
24 bool thumbBeingPressed;
25 bool hovered;
26
27 void draw(sf::RenderWindow &window) override;
28 void update(sf::RenderWindow &window) override;
29
30public:
34 std::function<void(float)> onchange;
35
37 void render(sf::RenderWindow &window) override;
39 void handleEvent(const sf::Event &event, sf::RenderWindow &window) override;
41 void setPosition(float x, float y) override;
43 sf::Vector2f getDimensions() override;
44
51 Slider(float size, float from = 0.0f, float to = 1.0f);
52
54 void changeValue(float value);
55
57 float getValue();
58};
Horizontal draggable slider widget.
Definition Slider.hpp:12
std::function< void(float)> onchange
Callback fired when value changes during dragging.
Definition Slider.hpp:34
void changeValue(float value)
Set internal value (no callback triggered).
void handleEvent(const sf::Event &event, sf::RenderWindow &window) override
Handle mouse press/release/move input for dragging.
void render(sf::RenderWindow &window) override
Render the slider.
float getValue()
Read current value.
sf::Vector2f getDimensions() override
Get slider dimensions (length x thickness).
void setPosition(float x, float y) override
Set top-left position of slider track.
Slider(float size, float from=0.0f, float to=1.0f)
Create slider.
Base class for all Velvet UI elements.
Definition Widget.hpp:16
float y
Definition Widget.hpp:31
float x
Definition Widget.hpp:31