X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Fmanipulator.h;h=cb4759ac7ad1a671e757b598cc67945199ccbba0;hb=f950f5a77714a155e57c868101911e181a617818;hp=fa8598db186f7ebb55126777cd4a3cf375902720;hpb=897f9bae5f647bae43e9786796eb9ea18325ec17;p=r2c2.git diff --git a/source/designer/manipulator.h b/source/designer/manipulator.h index fa8598d..cb4759a 100644 --- a/source/designer/manipulator.h +++ b/source/designer/manipulator.h @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of the MSP Märklin suite -Copyright © 2006-2008 Mikkosoft Productions, Mikko Rasa -Distributed under the GPL -*/ - #ifndef MANIPULATOR_H_ #define MANIPULATOR_H_ @@ -21,24 +14,25 @@ private: NONE, MOVE, ROTATE, - ELEVATE + ELEVATE, + EXTEND }; - struct MTrack + struct MObject { - Marklin::Track *track; - Marklin::Point pos; + R2C2::Object *object; + R2C2::Vector pos; float rot; - MTrack(Marklin::Track *); + MObject(R2C2::Object *); }; struct TrackOrder { - Marklin::Track *track; + R2C2::Track *track; bool rev; - TrackOrder(Marklin::Track *t, bool r): track(t), rev(r) { } + TrackOrder(R2C2::Track *t, bool r): track(t), rev(r) { } }; public: @@ -47,36 +41,41 @@ public: private: Designer &designer; + Msp::Input::Mouse &mouse; Selection &selection; - std::vector tracks; - Marklin::Point center; + std::vector objects; + R2C2::Vector center; - Marklin::Point gpointer; - int pointer_y; + R2C2::Vector pointer; + R2C2::Vector gpointer; Mode mode; - Marklin::Point move_origin; + R2C2::Vector move_origin; float angle; float rot_origin; - int elev_origin; - std::set neighbors; + float elev_origin; + std::set neighbors; + std::vector extend_tracks; public: - Manipulator(Designer &, Selection &); + Manipulator(Designer &, Msp::Input::Mouse &, Selection &); void start_move(); void start_rotate(); void start_elevate(); + bool start_extend(); void duplicate(); void flatten(); void even_slope(bool =false); + void connect(); void cancel(); - void button_press(int, int, float, float, unsigned); - void pointer_motion(int, int, float, float); private: + 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 create_straight(const R2C2::Vector &, float, float, float); }; #endif