X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Fmeasure.h;h=84b1c832ea21a646052b05c432e07cdeb0c3da5f;hb=d0af7846e05691d65d8021e46c8f81e8ca05199a;hp=d7c7b7719ad3c6b079b2a5317bba01f472183a24;hpb=6c61179fe09af2f5366d50f10aadbf5f83438087;p=r2c2.git diff --git a/source/designer/measure.h b/source/designer/measure.h index d7c7b77..84b1c83 100644 --- a/source/designer/measure.h +++ b/source/designer/measure.h @@ -2,23 +2,12 @@ #define MEASURE_H_ #include +#include class Designer; -class Measure +class Measure: public Msp::GL::Renderable { -public: - sigc::signal signal_done; - sigc::signal signal_changed; - - Measure(Designer &); - 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(); private: enum State { @@ -27,16 +16,33 @@ private: ACTIVE }; +public: + sigc::signal signal_done; + sigc::signal signal_changed; + +private: Designer &designer; - Marklin::Point pointer; - Marklin::Point spoint; + R2C2::Vector pointer; + R2C2::Vector spoint; float sdir; float par_dist; float perp_dist; float adiff; State state; + Msp::GL::Mesh mesh; - void snap_to_tracks(Marklin::Point &, float &); +public: + Measure(Designer &); + 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(float, float, unsigned); + void pointer_motion(float, float); + virtual void render(Msp::GL::Renderer &, const Msp::GL::Tag &) const; +private: + void update_mesh(); + void snap_to_tracks(R2C2::Vector &, float &); }; #endif