]> git.tdb.fi Git - r2c2.git/blobdiff - source/designer/manipulator.h
Split block allocation to a separate class
[r2c2.git] / source / designer / manipulator.h
index d8c3986a6161db02dd1bea7a84bd44a8e09d6841..1c46af6b6fd4c4eeae53bd197c87a198723f9acc 100644 (file)
@@ -1,14 +1,8 @@
-/* $Id$
-
-This file is part of R²C²
-Copyright © 2006-2008 Mikkosoft Productions, Mikko Rasa
-Distributed under the GPL
-*/
-
 #ifndef MANIPULATOR_H_
 #define MANIPULATOR_H_
 
 #include <sigc++/sigc++.h>
+#include "libr2c2/geometry.h"
 
 class Designer;
 class Selection;
@@ -25,13 +19,13 @@ private:
                EXTEND
        };
 
-       struct MTrack
+       struct MObject
        {
-               R2C2::Track *track;
+               R2C2::Object *object;
                R2C2::Vector pos;
-               float rot;
+               R2C2::Angle rot;
 
-               MTrack(R2C2::Track *);
+               MObject(R2C2::Object *);
        };
 
        struct TrackOrder
@@ -48,23 +42,23 @@ public:
 
 private:
        Designer &designer;
-       Msp::Graphics::EventSource &event_source;
+       Msp::Input::Mouse &mouse;
        Selection &selection;
-       std::vector<MTrack> tracks;
+       std::vector<MObject> objects;
        R2C2::Vector center;
 
+       R2C2::Vector pointer;
        R2C2::Vector gpointer;
-       int pointer_y;
        Mode mode;
        R2C2::Vector move_origin;
-       float angle;
-       float rot_origin;
-       int elev_origin;
-       std::set<R2C2::Track *> neighbors;
+       R2C2::Angle angle;
+       R2C2::Angle rot_origin;
+       float elev_origin;
+       std::set<R2C2::Object *> neighbors;
        std::vector<R2C2::Track *> extend_tracks;
 
 public:
-       Manipulator(Designer &, Msp::Graphics::EventSource &, Selection &);
+       Manipulator(Designer &, Msp::Input::Mouse &, Selection &);
 
        void start_move();
        void start_rotate();
@@ -76,13 +70,13 @@ public:
        void connect();
        void cancel();
 private:
-       void button_press(int, int, unsigned, unsigned);
-       void pointer_motion(int, int);
+       void button_press(unsigned);
+       void axis_motion(unsigned, float, float);
        void selection_changed();
-       void update_tracks();
+       void update_objects();
        void update_neighbors();
        void set_slope(TrackOrder &, float, float);
-       std::vector<R2C2::Track *> create_straight(const R2C2::Vector &, float, float, float);
+       std::vector<R2C2::Track *> create_straight(const R2C2::Vector &, const R2C2::Angle &, float, float);
 };
 
 #endif