]> git.tdb.fi Git - libs/gltk.git/blob - source/slider.h
a2395766a258d6182a04d69fef4a1ccd5ee7bcb7
[libs/gltk.git] / source / slider.h
1 #ifndef MSP_GLTK_SLIDER_H_
2 #define MSP_GLTK_SLIDER_H_
3
4 #include <sigc++/sigc++.h>
5 #include "widget.h"
6
7 namespace Msp {
8 namespace GLtk {
9
10 /**
11 Sliders are used to adjust numeric values visually.  This class provides the
12 common interface for sliders - see classes HSlider and VSlider for concrete
13 variations.
14 */
15 class Slider: public Widget
16 {
17 public:
18         class Loader: public DataFile::DerivedObjectLoader<Slider, Widget::Loader>
19         {
20         public:
21                 Loader(Slider &);
22         };
23
24         sigc::signal<void, double> signal_value_changed;
25
26 protected:
27         double min, max;
28         double value;
29         double step;
30
31         bool dragging;
32         double drag_start_pos;
33         double drag_start_value;
34         unsigned drag_area_size;
35         unsigned slider_size;
36
37         Slider();
38
39 public:
40         void set_value(double);
41         void set_range(double, double);
42         void set_step(double);
43         double get_value() const { return value; }
44
45 protected:
46         void click(int);
47         void start_drag(int);
48         void drag(int);
49         void end_drag();
50 };
51
52 } // namespace GLtk
53 } // namespace Msp
54
55 #endif