25#ifndef TGUI_SLIDER_HPP
26#define TGUI_SLIDER_HPP
28#include <TGUI/Renderers/SliderRenderer.hpp>
29#include <TGUI/Widget.hpp>
38 class TGUI_API Slider :
public Widget
41 using Ptr = std::shared_ptr<Slider>;
42 using ConstPtr = std::shared_ptr<const Slider>;
53 explicit Slider(
const char* typeName =
StaticWidgetType,
bool initRenderer =
true);
266 void leftMouseReleased(Vector2f pos) override;
271 void mouseMoved(Vector2f pos) override;
276 bool scrolled(
float delta, Vector2f pos,
bool touch) override;
281 void leftMouseButtonNoLongerDown() override;
315 [[nodiscard]] std::unique_ptr<DataIO::Node>
save(SavingRenderersMap& renderers) const override;
320 void load(const std::unique_ptr<DataIO::Node>& node, const LoadingRenderersMap& renderers) override;
325 [[nodiscard]] Vector2f getInnerSize() const;
330 void updateThumbPosition();
348 bool m_mouseDownOnThumb =
false;
349 Vector2f m_mouseDownOnThumbPos;
352 float m_maximum = 10;
356 bool m_invertedDirection =
false;
357 bool m_changeValueOnScroll =
true;
361 bool m_orientationLocked =
false;
364 Sprite m_spriteTrackHover;
366 Sprite m_spriteThumbHover;
369 Borders m_bordersCached;
370 Color m_borderColorCached;
371 Color m_borderColorHoverCached;
372 Color m_thumbColorCached;
373 Color m_thumbColorHoverCached;
374 Color m_trackColorCached;
375 Color m_trackColorHoverCached;
376 bool m_thumbWithinTrackCached =
false;
Base class for render targets.
Definition BackendRenderTarget.hpp:46
Wrapper for colors.
Definition Color.hpp:63
Class to store the position or size of a widget.
Definition Layout.hpp:320
Signal to which the user can subscribe to get callbacks from.
Definition Signal.hpp:59
Definition SliderRenderer.hpp:35
bool scrolled(float delta, Vector2f pos, bool touch) override
Called by the parent on scroll event (either from mouse wheel of from two finger scrolling on a touch...
std::unique_ptr< DataIO::Node > save(SavingRenderersMap &renderers) const override
Saves the widget as a tree node in order to save it to a file.
void draw(BackendRenderTarget &target, RenderStates states) const override
Draw the widget to a render target.
bool getVerticalScroll() const
Returns whether the slider lies horizontally or vertically.
bool leftMousePressed(Vector2f pos) override
Called by the parent when the left mouse button goes down on top of the widget.
Vector2f getWidgetOffset() const override
Returns the distance between the position where the widget is drawn and where the widget is placed.
Orientation getOrientation() const
Returns whether the slider lies horizontally or vertically.
static Slider::Ptr copy(const Slider::ConstPtr &slider)
Makes a copy of another slider.
bool getChangeValueOnScroll() const
Returns whether the mouse wheel can be used to change the value of the slider.
static constexpr char StaticWidgetType[]
Type name of the widget.
Definition Slider.hpp:44
SliderRenderer * getSharedRenderer() override
Returns the renderer, which gives access to functions that determine how the widget is displayed.
bool getInvertedDirection() const
Returns whether the side of the slider that is the minimum and maximum is inverted.
Widget::Ptr clone() const override
Makes a copy of the widget if you don't know its exact type.
float getStep() const
Returns the number of positions the thumb advances with each move.
bool isMouseOnWidget(Vector2f pos) const override
Returns whether the mouse position (which is relative to the parent widget) lies on top of the widget...
Signal & getSignal(String signalName) override
Retrieves a signal based on its name.
void load(const std::unique_ptr< DataIO::Node > &node, const LoadingRenderersMap &renderers) override
Loads the widget from a tree of nodes.
void setVerticalScroll(bool vertical)
Changes whether the slider lies horizontally or vertically.
void setMinimum(float minimum)
Sets a minimum value.
Vector2f getFullSize() const override
Returns the full size of the slider.
void setStep(float step)
Changes the number of positions the thumb advances with each move.
std::shared_ptr< Slider > Ptr
Shared widget pointer.
Definition Slider.hpp:41
SignalFloat onValueChange
Value of the slider changed. Optional parameter: new value.
Definition Slider.hpp:340
void setChangeValueOnScroll(bool changeValueOnScroll)
Changes whether the mouse wheel can be used to change the value of the slider.
void rendererChanged(const String &property) override
Function called when one of the properties of the renderer is changed.
SliderRenderer * getRenderer() override
Returns the renderer, which gives access to functions that determine how the widget is displayed.
void setOrientation(Orientation orientation)
Changes whether the slider lies horizontally or vertically.
void setSize(const Layout2d &size) override
Changes the size of the slider.
static Slider::Ptr create(float minimum=0, float maximum=10)
Creates a new slider widget.
float getValue() const
Returns the current value.
float getMinimum() const
Returns the minimum value.
float getMaximum() const
Returns the maximum value.
void setValue(float value)
Changes the current value.
std::shared_ptr< const Slider > ConstPtr
Shared constant widget pointer.
Definition Slider.hpp:42
void setInvertedDirection(bool invertedDirection)
Changes whether the side of the slider that is the minimum and maximum should be inverted.
void setMaximum(float maximum)
Sets a maximum value.
Wrapper class to store strings.
Definition String.hpp:94
Namespace that contains all TGUI functions and classes.
Definition AbsoluteOrRelativeValue.hpp:37
Orientation
Orientation of the object.
Definition Layout.hpp:50
@ Horizontal
Horizontal orientation.
Definition Layout.hpp:52
SignalTyped< float > SignalFloat
Signal with one "float" as optional unbound parameter.
Definition Signal.hpp:411
States used for drawing.
Definition RenderStates.hpp:38