]> git.tdb.fi Git - r2c2.git/blobdiff - source/designer/measure.h
Use skylight for nicer lighting
[r2c2.git] / source / designer / measure.h
index d7c7b7719ad3c6b079b2a5317bba01f472183a24..31f5f2a7b9323574ce3a01ba374e3a95d48ed84a 100644 (file)
@@ -2,41 +2,41 @@
 #define MEASURE_H_
 
 #include <sigc++/sigc++.h>
+#include <msp/gl/renderable.h>
+#include "libr2c2/geometry.h"
+#include "tool.h"
 
 class Designer;
 
-class Measure
+class Measure: public Tool, public Msp::GL::Renderable
 {
+private:
+       R2C2::Snap start;
+       bool start_pinned;
+       float par_dist;
+       float perp_dist;
+       R2C2::Angle adiff;
+       Msp::GL::Mesh mesh;
+
 public:
-       sigc::signal<void> signal_done;
-       sigc::signal<void> signal_changed;
+       Measure(Designer &, Msp::Input::Keyboard &, Msp::Input::Mouse &);
+       virtual ~Measure();
 
-       Measure(Designer &);
-       float get_parallel_distance() const      { return par_dist; }
+       float get_parallel_distance() const { return par_dist; }
        float get_perpendicular_distance() const { return perp_dist; }
-       float get_angle_difference() const       { return adiff; }
-       void start();
-       void button_press(int, int, float, float, unsigned);
-       void pointer_motion(int, int, float, float);
-       void render();
+       const R2C2::Angle &get_angle_difference() const { return adiff; }
+
 private:
-       enum State
-       {
-               NONE,
-               STARTING,
-               ACTIVE
-       };
-
-       Designer &designer;
-       Marklin::Point pointer;
-       Marklin::Point spoint;
-       float sdir;
-       float par_dist;
-       float perp_dist;
-       float adiff;
-       State state;
+       void back();
+       virtual void key_press(unsigned);
+       virtual void button_press(unsigned);
+       virtual void pointer_motion();
 
-       void snap_to_tracks(Marklin::Point &, float &);
+public:
+       virtual void render(Msp::GL::Renderer &, const Msp::GL::Tag &) const;
+private:
+       void update_mesh();
+       void snap_to_tracks(R2C2::Snap &);
 };
 
 #endif