-#ifdef WIN32
-#include <windowsx.h>
-#endif
-#include <msp/graphics/window.h>
-#include <msp/graphics/window_priv.h>
#include "mouse.h"
+#include <msp/graphics/window.h>
+#include "keys.h"
namespace Msp {
namespace Input {
Mouse::Mouse(Graphics::Window &w):
+ Device(MOUSE),
window(w)
{
name = "Mouse";
{
switch(btn)
{
- case 1:
+ case MOUSE_LEFT:
return "Left";
- case 2:
+ case MOUSE_MIDDLE:
return "Middle";
- case 3:
+ case MOUSE_RIGHT:
return "Right";
- case 4:
+ case MOUSE_WHEEL_UP:
return "Wheel Up";
- case 5:
+ case MOUSE_WHEEL_DOWN:
return "Wheel Down";
default:
return Device::get_button_name(btn);
{
switch(axis)
{
- case 0:
+ case MOUSE_X_AXIS:
return "X axis";
- case 1:
+ case MOUSE_Y_AXIS:
return "Y axis";
default:
return Device::get_axis_name(axis);
};
}
-void Mouse::input_event(const Graphics::Window::Event &event)
-{
-#ifdef WIN32
- switch(event.msg)
- {
- case WM_LBUTTONDOWN:
- case WM_LBUTTONUP:
- set_button_state(1, event.msg==WM_LBUTTONDOWN, true);
- break;
- case WM_MBUTTONDOWN:
- case WM_MBUTTONUP:
- set_button_state(2, event.msg==WM_LBUTTONDOWN, true);
- break;
- case WM_RBUTTONDOWN:
- case WM_RBUTTONUP:
- set_button_state(3, event.msg==WM_LBUTTONDOWN, true);
- break;
- case WM_MOUSEWHEEL:
- {
- unsigned btn = (HIWORD(event.wparam)&0x8000) ? 5 : 4;
- set_button_state(btn, true, true);
- set_button_state(btn, false, true);
- }
- break;
- case WM_MOUSEMOVE:
- set_axis_value(0, GET_X_LPARAM(event.lparam)*2.0/window.get_width()-1.0, true);
- set_axis_value(1, 1.0-GET_Y_LPARAM(event.lparam)*2.0/window.get_height(), true);
- break;
- }
-#else
- switch(event.xevent.type)
- {
- case ButtonPress:
- case ButtonRelease:
- set_button_state(event.xevent.xbutton.button, event.xevent.type==ButtonPress, true);
- break;
- case MotionNotify:
- set_axis_value(0, event.xevent.xmotion.x*2.0/window.get_width()-1.0, true);
- set_axis_value(1, 1.0-event.xevent.xmotion.y*2.0/window.get_height(), true);
- break;
- }
-#endif
-}
-
} // namespace Input
} // namespace Msp