]> git.tdb.fi Git - libs/gui.git/blob - source/input/binarycontrol.h
Normalize device axis ranges to [-1, 1]
[libs/gui.git] / source / input / binarycontrol.h
1 /* $Id$
2
3 This file is part of libmspgbase
4 Copyright © 2007 Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
6 */
7
8 #ifndef MSP_GBASE_BINARYCONTROL_H_
9 #define MSP_GBASE_BINARYCONTROL_H_
10
11 #include "control.h"
12
13 namespace Msp {
14 namespace Input {
15
16 /**
17 A control with two possible states.  Button state is mapped directly.  An axis
18 is considered to be active when its value is within 10% of the end of the axis.
19 */
20 class BinaryControl: public Control
21 {
22 public:
23         sigc::signal<void> signal_press;
24         sigc::signal<void> signal_release;
25
26 private:
27         bool state;
28         float threshold;
29
30 public:
31         BinaryControl();
32         BinaryControl(const ControlSource &);
33         BinaryControl(Device &, ControlSrcType, unsigned);
34
35         /**
36         Sets the threshold between states for axis sources.  No effect on button
37         sources
38         */
39         void set_threshold(float);
40
41         bool get_state() const { return state; }
42
43 private:
44         virtual void on_press();
45         virtual void on_release();
46         virtual void on_motion(float, float);
47 };
48
49 } // namespace Input
50 } // namespace Msp
51
52 #endif