]> git.tdb.fi Git - r2c2.git/blobdiff - source/designer/tool.cpp
Split the Manipulator class into several Tools
[r2c2.git] / source / designer / tool.cpp
diff --git a/source/designer/tool.cpp b/source/designer/tool.cpp
new file mode 100644 (file)
index 0000000..a0419d0
--- /dev/null
@@ -0,0 +1,38 @@
+#include <sigc++/bind.h>
+#include "designer.h"
+#include "tool.h"
+
+using namespace Msp;
+
+Tool::Tool(Designer &d, Input::Mouse &mouse):
+       designer(d),
+       done(false)
+{
+       mouse.signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Tool::button_press), false));
+       mouse.signal_axis_motion.connect(sigc::bind_return(sigc::mem_fun(this, &Tool::axis_motion), false));
+
+       pointer.x = mouse.get_axis_value(0);
+       pointer.y = mouse.get_axis_value(1);
+       ground_pointer = designer.map_pointer_to_ground(pointer);
+}
+
+void Tool::set_status(const std::string &s)
+{
+       status = s;
+       signal_status.emit(status);
+}
+
+void Tool::set_done()
+{
+       done = true;
+       signal_done.emit();
+}
+
+void Tool::axis_motion(unsigned axis, float value, float)
+{
+       if(axis==0)
+               pointer.x = value;
+       else if(axis==1)
+               pointer.y = value;
+       ground_pointer = designer.map_pointer_to_ground(pointer);
+}