libwtk-sdl2  0.0.1
slider.hpp
1 #ifndef LIBWTK_SDL2_SLIDER_HPP
2 #define LIBWTK_SDL2_SLIDER_HPP
3 
4 #include <functional>
5 
6 #include "selectable.hpp"
7 
8 struct slider : selectable
9 {
18  slider(int start, int end, int num_steps, std::function<void(int)> value_callback);
19 
25  slider(int start, int end, std::function<void(int)> value_callback);
26  ~slider() override;
27 
28  void on_draw(draw_context & dc, selection_context const & sc) const override;
29  void on_mouse_up_event(mouse_up_event const & e) override;
30  void on_mouse_down_event(mouse_down_event const & e) override;
31  void on_mouse_move_event(mouse_move_event const & e) override;
32  void on_key_event(key_event const & e) override;
33 
34  void on_box_allocated() override;
35 
36  size_hint get_size_hint(int width, int height) const override;
37 
46  void set_step_interval(int n);
47  int get_step_interval() const;
48 
52  int get_value() const;
53 
56  private:
57 
58  void refresh_knob_box();
59  int get_step_with_abs_pos(int abs_pos);
60  void set_step(int step);
61  void emit_value_callback(int step);
62 
63  int _start;
64  int _end;
65  int _step;
66 
67  int _num_steps;
68 
69  int _current_step;
70 
71  int _pressed_step;
72 
73  SDL_Rect _knob_box;
74  int _step_width;
75  int _step_width_rems;
76 
77  std::function<void(int)> _value_callback;
78 };
79 
80 #endif
81 
Definition: slider.hpp:8
slider(int start, int end, int num_steps, std::function< void(int)> value_callback)
Definition: mouse_event.hpp:19
Definition: mouse_event.hpp:8
void set_step_interval(int n)
void on_box_allocated() override
void on_draw(draw_context &dc, selection_context const &sc) const override
int get_value() const
Definition: selectable.hpp:6
size_hint get_size_hint(int width, int height) const override
Definition: draw_context.hpp:126
Definition: key_event.hpp:4
Definition: selection_context.hpp:18
Definition: mouse_event.hpp:26
Definition: widget.hpp:35