]> git.tdb.fi Git - r2c2.git/blob - source/designer/measure.h
Initial revision
[r2c2.git] / source / designer / measure.h
1 #ifndef MEASURE_H_
2 #define MEASURE_H_
3
4 #include <sigc++/sigc++.h>
5
6 class Designer;
7
8 class Measure
9 {
10 public:
11         sigc::signal<void> signal_done;
12         sigc::signal<void> signal_changed;
13
14         Measure(Designer &);
15         float get_parallel_distance() const      { return par_dist; }
16         float get_perpendicular_distance() const { return perp_dist; }
17         float get_angle_difference() const       { return adiff; }
18         void start();
19         void button_press(int, int, float, float, unsigned);
20         void pointer_motion(int, int, float, float);
21         void render();
22 private:
23         enum State
24         {
25                 NONE,
26                 STARTING,
27                 ACTIVE
28         };
29
30         Designer &designer;
31         Marklin::Point pointer;
32         Marklin::Point spoint;
33         float sdir;
34         float par_dist;
35         float perp_dist;
36         float adiff;
37         State state;
38
39         void snap_to_tracks(Marklin::Point &, float &);
40 };
41
42 #endif