]> git.tdb.fi Git - libs/gui.git/blobdiff - source/inputdevice.h
Initial revision
[libs/gui.git] / source / inputdevice.h
diff --git a/source/inputdevice.h b/source/inputdevice.h
new file mode 100644 (file)
index 0000000..60b25e9
--- /dev/null
@@ -0,0 +1,45 @@
+/* $Id$
+
+This file is part of libmspgbase
+Copyright © 2007 Mikko Rasa, Mikkosoft Productions
+Distributed under the LGPL
+*/
+
+#ifndef MSP_GBASE_INPUTDEVICE_H_
+#define MSP_GBASE_INPUTDEVICE_H_
+
+#include <vector>
+#include <sigc++/signal.h>
+
+namespace Msp {
+namespace Input {
+
+/**
+Base class for input devices.  Input devices have two types of controls:
+buttons and axes.  Buttons are either on or off.  Axes have a floating-point
+value, with range depending on the device.
+*/
+class Device
+{
+public:
+       sigc::signal<void, unsigned> signal_button_press;
+       sigc::signal<void, unsigned> signal_button_release;
+       sigc::signal<void, unsigned, float, float> signal_axis_motion;
+
+protected:
+       std::vector<char>  buttons;
+       std::vector<float> axes;
+
+public:
+       virtual ~Device() { }
+       bool  get_button_state(unsigned);
+       float get_axis_value(unsigned);
+protected:
+       void set_button_state(unsigned, bool, bool);
+       void set_axis_value(unsigned, float, bool);
+};
+
+} // namespace Input
+} // namespace Msp
+
+#endif