X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Finput%2Fdevice.h;h=e7a779af3159fececfb53acc33f79ea86332500a;hb=d7686e3867e3c68cec0d3767a21f9d2408383085;hp=be708e2636a2ae88010c5d9ba79a31b0abf2835b;hpb=75a3f0fd4152a71aefec72cb053846646071af03;p=libs%2Fgui.git diff --git a/source/input/device.h b/source/input/device.h index be708e2..e7a779a 100644 --- a/source/input/device.h +++ b/source/input/device.h @@ -5,15 +5,16 @@ #include #include #include +#include +#include namespace Msp { namespace Input { -class device_not_available: public std::runtime_error +class MSPGUI_API device_not_available: public std::runtime_error { public: device_not_available(const std::string &w): std::runtime_error(w) { } - virtual ~device_not_available() throw() { } }; @@ -35,7 +36,7 @@ value nominally in the range [-1, 1]. Event handlers return a boolean indicating whether the event is considered processed. If a handler returns true, no further handlers are invoked. */ -class Device +class MSPGUI_API Device { protected: struct EventAccumulator @@ -57,7 +58,7 @@ public: sigc::signal::accumulated signal_axis_motion; protected: - DeviceType type; + DeviceType type = UNSPECIFIED; std::string name; std::vector buttons; std::vector axes; @@ -68,6 +69,8 @@ public: DeviceType get_type() const { return type; } const std::string &get_name() const { return name; } + virtual Device *find_subdevice(DeviceType, unsigned = 0); + virtual Device *find_subdevice(const std::string &); bool get_button_state(unsigned) const; float get_axis_value(unsigned) const; @@ -78,6 +81,10 @@ protected: void set_axis_value(unsigned, float, bool); }; + +MSPGUI_API void operator>>(const LexicalConverter &, DeviceType &); +MSPGUI_API void operator<<(LexicalConverter &, DeviceType); + } // namespace Input } // namespace Msp