]> git.tdb.fi Git - r2c2.git/blobdiff - source/designer/measure.cpp
Store zone blocks in order and use add_tracks to load them
[r2c2.git] / source / designer / measure.cpp
index 5c2d84938a1c19c3c3a50156f4ed3547eb9d190b..937856c55bcce61a5baaae44c21d33907d3a9947 100644 (file)
@@ -1,6 +1,7 @@
 #include <cmath>
 #include <msp/gl/meshbuilder.h>
 #include <msp/gl/renderer.h>
+#include <msp/input/keys.h>
 #include <msp/strings/format.h>
 #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<Object *> &):
-       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);