]> git.tdb.fi Git - r2c2.git/blob - source/designer/tool.cpp
Split the Manipulator class into several Tools
[r2c2.git] / source / designer / tool.cpp
1 #include <sigc++/bind.h>
2 #include "designer.h"
3 #include "tool.h"
4
5 using namespace Msp;
6
7 Tool::Tool(Designer &d, Input::Mouse &mouse):
8         designer(d),
9         done(false)
10 {
11         mouse.signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Tool::button_press), false));
12         mouse.signal_axis_motion.connect(sigc::bind_return(sigc::mem_fun(this, &Tool::axis_motion), false));
13
14         pointer.x = mouse.get_axis_value(0);
15         pointer.y = mouse.get_axis_value(1);
16         ground_pointer = designer.map_pointer_to_ground(pointer);
17 }
18
19 void Tool::set_status(const std::string &s)
20 {
21         status = s;
22         signal_status.emit(status);
23 }
24
25 void Tool::set_done()
26 {
27         done = true;
28         signal_done.emit();
29 }
30
31 void Tool::axis_motion(unsigned axis, float value, float)
32 {
33         if(axis==0)
34                 pointer.x = value;
35         else if(axis==1)
36                 pointer.y = value;
37         ground_pointer = designer.map_pointer_to_ground(pointer);
38 }