X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finput%2Fmouse.cpp;fp=source%2Finput%2Fmouse.cpp;h=931b204f8a2655805f18509259ffc5c3781587ea;hb=999ca92aa9ee10585c0b2094d84364159253982f;hp=0000000000000000000000000000000000000000;hpb=9049aa855a08bb8fdb36f6c7f51658f105d4d474;p=libs%2Fgui.git diff --git a/source/input/mouse.cpp b/source/input/mouse.cpp new file mode 100644 index 0000000..931b204 --- /dev/null +++ b/source/input/mouse.cpp @@ -0,0 +1,64 @@ +/* $Id$ + +This file is part of libmspgbase +Copyright © 2007 Mikko Rasa, Mikkosoft Productions +Distributed under the LGPL +*/ + +#include +#include "mouse.h" + +namespace Msp { +namespace Input { + +Mouse::Mouse(Graphics::Window &w): + window(w), + axis_scale(0.01) +{ + name="Mouse"; + + buttons.resize(3); + axes.resize(2); + + window.signal_button_press.connect(sigc::mem_fun(this, &Mouse::button_press)); + window.signal_button_release.connect(sigc::mem_fun(this, &Mouse::button_release)); + window.signal_pointer_motion.connect(sigc::mem_fun(this, &Mouse::pointer_motion)); +} + +std::string Mouse::get_button_name(unsigned btn) const +{ + switch(btn) + { + case 1: + return "Left"; + case 2: + return "Middle"; + case 3: + return "Right"; + case 4: + return "Wheel Up"; + case 5: + return "Wheel Down"; + default: + return format("Button %d", btn); + } +} + +void Mouse::button_press(int, int, unsigned btn, unsigned) +{ + set_button_state(btn, true, true); +} + +void Mouse::button_release(int, int, unsigned btn, unsigned) +{ + set_button_state(btn, false, true); +} + +void Mouse::pointer_motion(int x, int y) +{ + set_axis_value(0, x*axis_scale, true); + set_axis_value(1, y*axis_scale, true); +} + +} // namespace Input +} // namespace Msp