-/* $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_
struct MTrack
{
R2C2::Track *track;
- R2C2::Point pos;
+ R2C2::Vector pos;
float rot;
MTrack(R2C2::Track *);
private:
Designer &designer;
- Msp::Graphics::EventSource &event_source;
+ Msp::Input::Mouse &mouse;
Selection &selection;
std::vector<MTrack> tracks;
- R2C2::Point center;
+ R2C2::Vector center;
- R2C2::Point gpointer;
- int pointer_y;
+ R2C2::Vector pointer;
+ R2C2::Vector gpointer;
Mode mode;
- R2C2::Point move_origin;
+ R2C2::Vector move_origin;
float angle;
float rot_origin;
- int elev_origin;
+ float elev_origin;
std::set<R2C2::Track *> 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();
void start_elevate();
- void start_extend();
+ bool start_extend();
void duplicate();
void flatten();
void even_slope(bool =false);
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_neighbors();
void set_slope(TrackOrder &, float, float);
- std::vector<R2C2::Track *> create_straight(const R2C2::Point &, float, float, float);
+ std::vector<R2C2::Track *> create_straight(const R2C2::Vector &, float, float, float);
};
#endif