4 #include <msp/graphics/window.h>
5 #include <msp/graphics/window_priv.h>
6 #include <msp/strings/format.h>
12 Mouse::Mouse(Graphics::Window &w):
20 window.signal_input_event.connect(sigc::mem_fun(this, &Mouse::input_event));
23 std::string Mouse::get_button_name(unsigned btn) const
38 return format("Button %d", btn);
42 std::string Mouse::get_axis_name(unsigned axis) const
51 return format("Axis %d", axis);
55 void Mouse::input_event(const Graphics::Window::Event &event)
62 set_button_state(1, event.msg==WM_LBUTTONDOWN, true);
66 set_button_state(2, event.msg==WM_LBUTTONDOWN, true);
70 set_button_state(3, event.msg==WM_LBUTTONDOWN, true);
74 unsigned btn = (HIWORD(event.wparam)&0x8000) ? 5 : 4;
75 set_button_state(btn, true, true);
76 set_button_state(btn, false, true);
80 set_axis_value(0, GET_X_LPARAM(event.lparam)*2.0/window.get_width()-1.0, true);
81 set_axis_value(1, 1.0-GET_Y_LPARAM(event.lparam)*2.0/window.get_height(), true);
85 switch(event.xevent.type)
89 set_button_state(event.xevent.xbutton.button, event.xevent.type==ButtonPress, true);
92 set_axis_value(0, event.xevent.xmotion.x*2.0/window.get_width()-1.0, true);
93 set_axis_value(1, 1.0-event.xevent.xmotion.y*2.0/window.get_height(), true);