]> git.tdb.fi Git - libs/gui.git/blob - source/mouse.cpp
931b204f8a2655805f18509259ffc5c3781587ea
[libs/gui.git] / source / mouse.cpp
1 /* $Id$
2
3 This file is part of libmspgbase
4 Copyright © 2007 Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
6 */
7
8 #include <msp/strings/formatter.h>
9 #include "mouse.h"
10
11 namespace Msp {
12 namespace Input {
13
14 Mouse::Mouse(Graphics::Window &w):
15         window(w),
16         axis_scale(0.01)
17 {
18         name="Mouse";
19
20         buttons.resize(3);
21         axes.resize(2);
22
23         window.signal_button_press.connect(sigc::mem_fun(this, &Mouse::button_press));
24         window.signal_button_release.connect(sigc::mem_fun(this, &Mouse::button_release));
25         window.signal_pointer_motion.connect(sigc::mem_fun(this, &Mouse::pointer_motion));
26 }
27
28 std::string Mouse::get_button_name(unsigned btn) const
29 {
30         switch(btn)
31         {
32         case 1:
33                 return "Left";
34         case 2:
35                 return "Middle";
36         case 3:
37                 return "Right";
38         case 4:
39                 return "Wheel Up";
40         case 5:
41                 return "Wheel Down";
42         default:
43                 return format("Button %d", btn);
44         }
45 }
46
47 void Mouse::button_press(int, int, unsigned btn, unsigned)
48 {
49         set_button_state(btn, true, true);
50 }
51
52 void Mouse::button_release(int, int, unsigned btn, unsigned)
53 {
54         set_button_state(btn, false, true);
55 }
56
57 void Mouse::pointer_motion(int x, int y)
58 {
59         set_axis_value(0, x*axis_scale, true);
60         set_axis_value(1, y*axis_scale, true);
61 }
62
63 } // namespace Input
64 } // namespace Msp