]> git.tdb.fi Git - libs/gui.git/blob - source/input/binarycontrol.h
Comment changes
[libs/gui.git] / source / input / binarycontrol.h
1 #ifndef MSP_GBASE_BINARYCONTROL_H_
2 #define MSP_GBASE_BINARYCONTROL_H_
3
4 #include "control.h"
5
6 namespace Msp {
7 namespace Input {
8
9 /**
10 A control with two possible states.  Button state is mapped directly.  An axis
11 is considered to be active when its value is above a threshold (0.5 by
12 default).
13 */
14 class BinaryControl: public Control
15 {
16 public:
17         sigc::signal<void> signal_press;
18         sigc::signal<void> signal_release;
19
20 private:
21         bool state;
22         float threshold;
23
24 public:
25         BinaryControl();
26         BinaryControl(const ControlSource &);
27         BinaryControl(Device &, ControlSrcType, unsigned);
28
29         /** Sets the threshold between states for axis sources.  No effect on button
30         sources */
31         void set_threshold(float);
32
33         bool get_state() const { return state; }
34
35 private:
36         virtual void on_press();
37         virtual void on_release();
38         virtual void on_motion(float, float);
39 };
40
41 } // namespace Input
42 } // namespace Msp
43
44 #endif