Rose
Slider.h
Go to the documentation of this file.
1 
7 #pragma once
8 
9 #include "Border.h"
10 #include "Frame.h"
11 #include "ImageView.h"
12 #include "LinearScale.h"
13 
14 namespace rose {
15 
21  class Slider : public LinearScale {
22  protected:
23  bool mDrag{false};
24  int mSliderOffset{0};
25  float mValue{};
26  uint32_t mLastScrollTick{0};
27 
28  public:
29  ~Slider() override = default;
30  Slider(const Slider &) = delete;
31  Slider& operator=(const Slider &) = delete;
32  Slider(Slider &&) = delete;
33  Slider& operator=(Slider &&) = delete;
34 
35  explicit Slider(float value);
36 
41  explicit Slider(ImageId imageId = BevelOutRoundCorners);
42 
44  void initializeComposite() override;
45 
53  Slider(float lowerBound, float upperBound, float value, ImageId imageId = RoseImageInvalid);
54 
56  bool mouseEnterEvent(const Position &p, bool enter) override;
57 
59  bool mouseButtonEvent(const Position &mousePos, int button, bool down, int modifiers) override;
60 
62  bool mouseMotionEvent(const Position &cursorPosition, const Position &rel, int button, int modifiers) override;
63 
65  bool mouseDragEvent(const Position &p, const Position &rel, int button, int modifiers) override;
66 
68  bool scrollEvent(const Position &p, int32_t x, int32_t y) override;
69 
70 // /// Handle a keyboard event (default implementation: do nothing)
71 // bool keyboardEvent(int key, int scancode, int action, int modifiers) override;
72 
74  bool keyboardCharacterEvent(unsigned int codepoint) override;
75 
81  void setValue(float value, bool final, bool transmit = false);
82 
88  using SignalType = std::pair<bool,float>;
90  };
91 }
Invalid image ID.
Definition: Constants.h:172
bool keyboardCharacterEvent(unsigned int codepoint) override
Handle text input (UTF-32 format) (default implementation: do nothing)
Definition: Slider.cpp:109
int mSliderOffset
The offset of the thumb from the position of lower bound.
Definition: Slider.h:24
void setValue(float value, bool final, bool transmit=false)
Set the value for the slider thumb, and optionally transmit it.
Definition: Slider.cpp:113
bool mouseButtonEvent(const Position &mousePos, int button, bool down, int modifiers) override
Handle a mouse button event (default implementation: propagate to children)
Definition: Slider.cpp:42
bool mDrag
True if the thumb is being dragged.
Definition: Slider.h:23
float mValue
The value last set.
Definition: Slider.h:25
Sheet of round corners beveled out.
Definition: Constants.h:209
A position in integer (x, y) co-ordinates.
Definition: Types.h:95
bool mouseMotionEvent(const Position &cursorPosition, const Position &rel, int button, int modifiers) override
Handle a mouse motion event (default implementation: propagate to children)
Definition: Slider.cpp:52
Signal< SignalType > valueTx
The Signal that transmits the thumb position.
Definition: Slider.h:89
bool mouseDragEvent(const Position &p, const Position &rel, int button, int modifiers) override
Handle a mouse drag event (default implementation: do nothing)
Definition: Slider.cpp:56
std::pair< bool, float > SignalType
The type of the signal transmitted by the thumb when moved.
Definition: Slider.h:88
A base class for Widgets that are base on a linear value input or output eg) Slider and Gauge...
Definition: LinearScale.h:33
void initializeComposite() override
See Widget::initializeComposite()
Definition: Slider.cpp:32
An image view Widget.
ToDo: There is an issue that the initial scroll interaction is lost if the click/press lands on a Wid...
Definition: CelestialOverlay.cpp:13
uint32_t mLastScrollTick
The last interaction tick.
Definition: Slider.h:26
An analog input Widget.
Definition: Slider.h:21
bool scrollEvent(const Position &p, int32_t x, int32_t y) override
Handle a mouse scroll event (default implementation: propagate to children)
Definition: Slider.cpp:76
bool mouseEnterEvent(const Position &p, bool enter) override
Handle a mouse enter event.
Definition: Slider.cpp:38