X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Fmeasure.cpp;h=937856c55bcce61a5baaae44c21d33907d3a9947;hb=c1f45677ffbe9ded079df99f998d8e2abfe548de;hp=5c2d84938a1c19c3c3a50156f4ed3547eb9d190b;hpb=678982e7ddb22bb5fd44ce448d1c5cbf646b2573;p=r2c2.git diff --git a/source/designer/measure.cpp b/source/designer/measure.cpp index 5c2d849..937856c 100644 --- a/source/designer/measure.cpp +++ b/source/designer/measure.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include "designer.h" #include "3d/layout.h" @@ -10,8 +11,8 @@ using namespace std; using namespace R2C2; using namespace Msp; -Measure::Measure(Designer &d, Input::Mouse &m, const set &): - Tool(d, m), +Measure::Measure(Designer &d, Input::Keyboard &k, Input::Mouse &m): + Tool(d, k, m), start_pinned(false), mesh((GL::COLOR4_UBYTE, GL::VERTEX3)) { @@ -25,6 +26,25 @@ Measure::~Measure() designer.get_layout_3d().get_scene().remove(*this); } +void Measure::back() +{ + if(start_pinned) + { + start_pinned = false; + update_mesh(); + } + else + set_done(true); +} + +void Measure::key_press(unsigned key) +{ + if(key==Input::KEY_ESC) + back(); + else + Tool::key_press(key); +} + void Measure::button_press(unsigned btn) { if(btn==1) @@ -36,24 +56,11 @@ void Measure::button_press(unsigned btn) start_pinned = true; } else if(btn==3) - { - if(start_pinned) - { - start_pinned = false; - update_mesh(); - } - else - { - done = true; - signal_done.emit(); - } - } + back(); } -void Measure::axis_motion(unsigned axis, float x, float y) +void Measure::pointer_motion() { - Tool::axis_motion(axis, x, y); - Snap sn = start; sn.position = ground_pointer; snap_to_tracks(sn);