X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finput%2Fdevice.cpp;h=b615cb7fb92fe870ede98effec9ed505db4ed848;hb=27356249e3607c78f5da9823c88703a6f4f7bed1;hp=194e999e935c25c8a38a1e41cf53a9b680a42d48;hpb=e00c4dcafe0cce456719cc340b3fc2ae8fa403c8;p=libs%2Fgui.git diff --git a/source/input/device.cpp b/source/input/device.cpp index 194e999..b615cb7 100644 --- a/source/input/device.cpp +++ b/source/input/device.cpp @@ -1,12 +1,31 @@ -#include #include "device.h" +#include + +using namespace std; namespace Msp { namespace Input { +Device::Device(DeviceType t): + type(t) +{ } + +Device::~Device() +{ } + +Device *Device::find_subdevice(const string &n) +{ + return (n==name ? this : nullptr); +} + +Device *Device::find_subdevice(DeviceType t, unsigned i) +{ + return (t==type && i==0 ? this : nullptr); +} + bool Device::get_button_state(unsigned btn) const { - if(btn>buttons.size()) + if(btn>=buttons.size()) return false; return buttons[btn]; @@ -14,18 +33,18 @@ bool Device::get_button_state(unsigned btn) const float Device::get_axis_value(unsigned axis) const { - if(axis>axes.size()) + if(axis>=axes.size()) return 0; return axes[axis]; } -std::string Device::get_button_name(unsigned btn) const +string Device::get_button_name(unsigned btn) const { return format("Button %d", btn); } -std::string Device::get_axis_name(unsigned axis) const +string Device::get_axis_name(unsigned axis) const { return format("Axis %d", axis); } @@ -64,5 +83,35 @@ void Device::set_axis_value(unsigned axis, float value, bool event) } } + +void operator>>(const LexicalConverter &conv, DeviceType &type) +{ + if(conv.get()=="UNSPECIFIED") + type = UNSPECIFIED; + else if(conv.get()=="KEYBOARD") + type = KEYBOARD; + else if(conv.get()=="MOUSE") + type = MOUSE; + else if(conv.get()=="TOUCH_SURFACE") + type = TOUCH_SURFACE; + else if(conv.get()=="GAME_CONTROLLER") + type = GAME_CONTROLLER; + else + throw lexical_error(format("conversion of '%s' to DeviceType", conv.get())); +} + +void operator<<(LexicalConverter &conv, DeviceType type) +{ + switch(type) + { + case UNSPECIFIED: conv.result("UNSPECIFIED"); break; + case KEYBOARD: conv.result("KEYBOARD"); break; + case MOUSE: conv.result("MOUSE"); break; + case TOUCH_SURFACE: conv.result("TOUCH_SURFACE"); break; + case GAME_CONTROLLER: conv.result("GAME_CONTROLLER"); break; + default: conv.result(format("DeviceType(%#x)", static_cast(type))); + } +} + } // namespace Input } // namespace Msp