X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Ftool.cpp;fp=source%2Fdesigner%2Ftool.cpp;h=a0419d04f8699018a6ac7c23998a4ea1c6b2f022;hb=678982e7ddb22bb5fd44ce448d1c5cbf646b2573;hp=0000000000000000000000000000000000000000;hpb=a5e1363ceac1ab552849640c9021fcda362c4416;p=r2c2.git diff --git a/source/designer/tool.cpp b/source/designer/tool.cpp new file mode 100644 index 0000000..a0419d0 --- /dev/null +++ b/source/designer/tool.cpp @@ -0,0 +1,38 @@ +#include +#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); +}