]> git.tdb.fi Git - r2c2.git/blob - source/designer/measure.h
Further adjustments to changes in GLtk
[r2c2.git] / source / designer / measure.h
1 #ifndef MEASURE_H_
2 #define MEASURE_H_
3
4 #include <sigc++/sigc++.h>
5 #include <msp/gl/renderable.h>
6 #include "libr2c2/geometry.h"
7
8 class Designer;
9
10 class Measure: public Msp::GL::Renderable
11 {
12 private:
13         enum State
14         {
15                 NONE,
16                 STARTING,
17                 ACTIVE
18         };
19
20 public:
21         sigc::signal<void> signal_done;
22         sigc::signal<void> signal_changed;
23
24 private:
25         Designer &designer;
26         R2C2::Vector pointer;
27         R2C2::Snap ssnap;
28         float par_dist;
29         float perp_dist;
30         R2C2::Angle adiff;
31         State state;
32         Msp::GL::Mesh mesh;
33
34 public:
35         Measure(Designer &);
36         float get_parallel_distance() const { return par_dist; }
37         float get_perpendicular_distance() const { return perp_dist; }
38         const R2C2::Angle &get_angle_difference() const { return adiff; }
39         void start();
40         void button_press(float, float, unsigned);
41         void pointer_motion(float, float);
42         virtual void render(Msp::GL::Renderer &, const Msp::GL::Tag &) const;
43 private:
44         void update_mesh();
45         void snap_to_tracks(R2C2::Snap &);
46 };
47
48 #endif