X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Fmeasure.h;h=31f5f2a7b9323574ce3a01ba374e3a95d48ed84a;hb=28947c087bd2d05c1850e320844f2e33fc0fc253;hp=d7c7b7719ad3c6b079b2a5317bba01f472183a24;hpb=6c61179fe09af2f5366d50f10aadbf5f83438087;p=r2c2.git diff --git a/source/designer/measure.h b/source/designer/measure.h index d7c7b77..31f5f2a 100644 --- a/source/designer/measure.h +++ b/source/designer/measure.h @@ -2,41 +2,41 @@ #define MEASURE_H_ #include +#include +#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 signal_done; - sigc::signal 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