25#ifndef TGUI_SCROLLBAR_HPP
26#define TGUI_SCROLLBAR_HPP
28#include <TGUI/Widget.hpp>
29#include <TGUI/Renderers/ScrollbarRenderer.hpp>
30#include <TGUI/CopiedSharedPtr.hpp>
32#if !TGUI_EXPERIMENTAL_USE_STD_MODULE
38TGUI_MODULE_EXPORT
namespace tgui
47 using Ptr = std::shared_ptr<Scrollbar>;
48 using ConstPtr = std::shared_ptr<const Scrollbar>;
50 static constexpr const char StaticWidgetType[] =
"Scrollbar";
67 Scrollbar(
const char* typeName = StaticWidgetType,
bool initRenderer =
true);
107 using Widget::setSize;
189#ifndef TGUI_REMOVE_DEPRECATED_CODE
197 TGUI_DEPRECATED(
"Use setPolicy instead") void setAutoHide(
bool autoHide);
205 TGUI_DEPRECATED("Use getPolicy instead") TGUI_NODISCARD
bool getAutoHide() const;
244 TGUI_DEPRECATED(
"Use setOrientation instead") void setVerticalScroll(
bool vertical);
250 TGUI_DEPRECATED("Use getOrientation instead") TGUI_NODISCARD
bool getVerticalScroll() const;
275 TGUI_NODISCARD
float getDefaultWidth() const;
283 TGUI_NODISCARD
bool canGainFocus() const override;
290 TGUI_NODISCARD
bool isMouseOnWidget(
Vector2f pos) const override;
300 void leftMouseReleased(
Vector2f pos) override;
305 void mouseMoved(
Vector2f pos) override;
310 bool scrolled(
float delta,
Vector2f pos,
bool touch) override;
315 void leftMouseButtonNoLongerDown() override;
349 void rendererChanged(const
String& property) override;
354 TGUI_NODISCARD std::unique_ptr<DataIO::Node> save(SavingRenderersMap& renderers) const override;
359 void load(const std::unique_ptr<DataIO::Node>& node, const LoadingRenderersMap& renderers) override;
364 void updateThumbPosition();
388 Part m_mouseHoverOverPart = Part::Thumb;
391 bool m_mouseDownOnThumb =
false;
392 Vector2f m_mouseDownOnThumbPos;
394 unsigned int m_maximum = 10;
395 unsigned int m_value = 0;
398 unsigned int m_viewportSize = 1;
400 Orientation m_orientation = Orientation::Vertical;
401 Orientation m_imageOrientation = Orientation::Vertical;
402 bool m_orientationLocked =
false;
405 unsigned int m_scrollAmount = 1;
408 Scrollbar::Policy m_policy = Scrollbar::Policy::Automatic;
411 bool m_mouseDownOnArrow =
false;
413 bool m_sizeSet =
false;
415 std::chrono::steady_clock::time_point m_lastSuccessfulScrollTime;
416 Vector2f m_lastSuccessfulScrollPos;
421 FloatRect m_arrowDown;
423 Sprite m_spriteTrack;
424 Sprite m_spriteTrackHover;
425 Sprite m_spriteThumb;
426 Sprite m_spriteThumbHover;
427 Sprite m_spriteArrowUp;
428 Sprite m_spriteArrowUpHover;
429 Sprite m_spriteArrowDown;
430 Sprite m_spriteArrowDownHover;
433 Color m_thumbColorCached;
434 Color m_thumbColorHoverCached;
435 Color m_trackColorCached;
436 Color m_trackColorHoverCached;
437 Color m_arrowColorCached;
438 Color m_arrowColorHoverCached;
439 Color m_arrowBackgroundColorCached;
440 Color m_arrowBackgroundColorHoverCached;
489 std::function<
void()> valueChangedCallback,
490 std::function<
void()> policyChangedCallback,
491 std::function<
void()> scrollAmountChangedCallback);
573 std::function<void()> m_valueChangedCallback;
574 std::function<void()> m_policyChangedCallback;
575 std::function<void()> m_scrollAmountChangedCallback;
636 virtual
void scrollbarValueChanged();
641 virtual
void scrollbarPolicyChanged();
646 virtual
void scrollbarScrollAmountChanged();
651 void saveScrollbarPolicy(std::unique_ptr<DataIO::Node>& node) const;
656 void loadScrollbarPolicy(const std::unique_ptr<DataIO::Node>& node);
754 virtual
void scrollbarScrollAmountChanged(
Orientation orientation);
759 void saveScrollbarPolicies(std::unique_ptr<DataIO::Node>& node) const;
764 void loadScrollbarPolicies(const std::unique_ptr<DataIO::Node>& node);
Base class for render targets.
Definition BackendRenderTarget.hpp:46
Definition CopiedSharedPtr.hpp:42
Class to store the position or size of a widget.
Definition Layout.hpp:313
Signal to which the user can subscribe to get callbacks from.
Definition Signal.hpp:61
Wrapper class to store strings.
Definition String.hpp:96
Namespace that contains all TGUI functions and classes.
Definition AbsoluteOrRelativeValue.hpp:38
Orientation
Orientation of the object.
Definition Layout.hpp:51
States used for drawing.
Definition RenderStates.hpp:38