/* $Id$
This file is part of libmspgbase
-Copyright © 2007 Mikko Rasa, Mikkosoft Productions
+Copyright © 2007-2008, 2010 Mikko Rasa, Mikkosoft Productions
Distributed under the LGPL
*/
namespace Msp {
namespace Input {
-Mouse::Mouse(Graphics::Window &w):
- window(w),
- axis_scale(0.01)
+Mouse::Mouse(Graphics::EventSource &s):
+ source(s)
{
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));
+ source.signal_button_press.connect(sigc::mem_fun(this, &Mouse::button_press));
+ source.signal_button_release.connect(sigc::mem_fun(this, &Mouse::button_release));
+ source.signal_pointer_motion.connect(sigc::mem_fun(this, &Mouse::pointer_motion));
}
std::string Mouse::get_button_name(unsigned btn) const
}
}
+std::string Mouse::get_axis_name(unsigned axis) const
+{
+ switch(axis)
+ {
+ case 0:
+ return "X axis";
+ case 1:
+ return "Y axis";
+ default:
+ return format("Axis %d", axis);
+ };
+}
+
void Mouse::button_press(int, int, unsigned btn, unsigned)
{
set_button_state(btn, true, 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);
+ set_axis_value(0, x*2.0f/source.get_width()-1.0f, true);
+ set_axis_value(1, 1.0f-y*2.0f/source.get_height(), true);
}
} // namespace Input