X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Fmeasure.h;fp=source%2Fdesigner%2Fmeasure.h;h=e5f109181e379d92927f352ea06f20dd0e4a3dfa;hb=678982e7ddb22bb5fd44ce448d1c5cbf646b2573;hp=c5696984fc32aba12b20ca37cfae8103efddff65;hpb=a5e1363ceac1ab552849640c9021fcda362c4416;p=r2c2.git diff --git a/source/designer/measure.h b/source/designer/measure.h index c569698..e5f1091 100644 --- a/source/designer/measure.h +++ b/source/designer/measure.h @@ -4,41 +4,31 @@ #include #include #include "libr2c2/geometry.h" +#include "tool.h" class Designer; -class Measure: public Msp::GL::Renderable +class Measure: public Tool, public Msp::GL::Renderable { private: - enum State - { - NONE, - STARTING, - ACTIVE - }; - -public: - sigc::signal signal_done; - sigc::signal signal_changed; - -private: - Designer &designer; - R2C2::Vector pointer; - R2C2::Snap ssnap; + R2C2::Snap start; + bool start_pinned; float par_dist; float perp_dist; R2C2::Angle adiff; - State state; Msp::GL::Mesh mesh; public: - Measure(Designer &); + Measure(Designer &, Msp::Input::Mouse &, const std::set &); + virtual ~Measure(); + float get_parallel_distance() const { return par_dist; } float get_perpendicular_distance() const { return perp_dist; } const R2C2::Angle &get_angle_difference() const { return adiff; } - void start(); - void button_press(float, float, unsigned); - void pointer_motion(float, float); + + virtual void button_press(unsigned); + virtual void axis_motion(unsigned, float, float); + virtual void render(Msp::GL::Renderer &, const Msp::GL::Tag &) const; private: void update_mesh();