X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fstate_scale.cpp;h=300ff4b1824bb1d21a715011bdb0ec0677af113c;hb=7c3682a6d1bb940fd74e9e327bbc2dd3a8fdb504;hp=35aca82f59e0d26a2a27d6d8cbc2ce3a12580451;hpb=ce408de81ca266b1f334ee9bc6c8fb7ba1492ed4;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/state_scale.cpp b/synfig-studio/trunk/src/gtkmm/state_scale.cpp index 35aca82..300ff4b 100644 --- a/synfig-studio/trunk/src/gtkmm/state_scale.cpp +++ b/synfig-studio/trunk/src/gtkmm/state_scale.cpp @@ -2,10 +2,11 @@ /*! \file state_scale.cpp ** \brief Template File ** -** $Id: state_scale.cpp,v 1.1.1.1 2005/01/07 03:34:37 darco Exp $ +** $Id$ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2008 Chris Moore ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -49,6 +50,8 @@ #include "duck.h" #include +#include "general.h" + #endif /* === U S I N G =========================================================== */ @@ -77,7 +80,7 @@ class DuckDrag_Scale : public DuckDrag_Base std::vector positions; bool move_only; - + bool bad_drag; public: bool lock_aspect; @@ -91,16 +94,16 @@ public: class studio::StateScale_Context : public sigc::trackable { etl::handle canvas_view_; - + synfigapp::Settings& settings; etl::handle duck_dragger_; Gtk::Table options_table; - - + + Gtk::CheckButton checkbutton_aspect_lock; - + public: bool get_aspect_lock_flag()const { return checkbutton_aspect_lock.get_active(); } @@ -120,7 +123,7 @@ public: etl::handle get_canvas_interface()const{return canvas_view_->canvas_interface();} synfig::Canvas::Handle get_canvas()const{return canvas_view_->get_canvas();} WorkArea * get_work_area()const{return canvas_view_->get_work_area();} - + void load_settings(); void save_settings(); }; // END of class StateScale_Context @@ -131,7 +134,7 @@ StateScale::StateScale(): Smach::state("scale") { insert(event_def(EVENT_REFRESH_TOOL_OPTIONS,&StateScale_Context::event_refresh_tool_options)); -} +} StateScale::~StateScale() { @@ -139,7 +142,7 @@ StateScale::~StateScale() void StateScale_Context::load_settings() -{ +{ String value; if(settings.get_value("scale.lock_aspect",value) && value=="0") @@ -150,7 +153,7 @@ StateScale_Context::load_settings() void StateScale_Context::save_settings() -{ +{ settings.set_value("scale.lock_aspect",get_aspect_lock_flag()?"1":"0"); } @@ -159,18 +162,18 @@ StateScale_Context::StateScale_Context(CanvasView* canvas_view): settings(synfigapp::Main::get_selected_input_device()->settings()), duck_dragger_(new DuckDrag_Scale()), checkbutton_aspect_lock(_("Lock Aspect Ratio")) -{ +{ // Set up the tool options dialog - //options_table.attach(*manage(new Gtk::Label(_("Scale Tool"))), 0, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0); - options_table.attach(checkbutton_aspect_lock, 0, 2, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0); + options_table.attach(*manage(new Gtk::Label(_("Scale Tool"))), 0, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0); + options_table.attach(checkbutton_aspect_lock, 0, 2, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0); checkbutton_aspect_lock.signal_toggled().connect(sigc::mem_fun(*this,&StateScale_Context::refresh_aspect_lock_flag)); - + options_table.show_all(); refresh_tool_options(); App::dialog_tool_options->present(); - - get_work_area()->allow_layer_clicks=true; + + get_work_area()->set_allow_layer_clicks(true); get_work_area()->set_duck_dragger(duck_dragger_); // get_canvas_view()->work_area->set_cursor(Gdk::CROSSHAIR); @@ -192,7 +195,7 @@ StateScale_Context::refresh_tool_options() } Smach::event_result -StateScale_Context::event_refresh_tool_options(const Smach::event& x) +StateScale_Context::event_refresh_tool_options(const Smach::event& /*x*/) { refresh_tool_options(); return Smach::RESULT_ACCEPT; @@ -228,14 +231,14 @@ DuckDrag_Scale::begin_duck_drag(Duckmatic* duckmatic, const synfig::Vector& offs last_scale=Vector(1,1); const DuckList selected_ducks(duckmatic->get_selected_ducks()); DuckList::const_iterator iter; - + //if(duckmatic->get_selected_ducks().size()<2) //{ // bad_drag=true; // return; // } bad_drag=false; - + drag_offset=duckmatic->find_duck(offset)->get_trans_point(); //snap=drag_offset-duckmatic->snap_point_to_grid(drag_offset); @@ -261,7 +264,7 @@ DuckDrag_Scale::begin_duck_drag(Duckmatic* duckmatic, const synfig::Vector& offs move_only=true; else move_only=false; - + center=(vmin+vmax)*0.5; } @@ -274,7 +277,7 @@ DuckDrag_Scale::duck_drag(Duckmatic* duckmatic, const synfig::Vector& vector) if(bad_drag) return; - + //std::set >::iterator iter; synfig::Vector vect(duckmatic->snap_point_to_grid(vector)-center); last_scale=vect; @@ -285,9 +288,9 @@ DuckDrag_Scale::duck_drag(Duckmatic* duckmatic, const synfig::Vector& vector) for(i=0,iter=selected_ducks.begin();iter!=selected_ducks.end();++iter,i++) { if(((*iter)->get_type()!=Duck::TYPE_VERTEX&&(*iter)->get_type()!=Duck::TYPE_POSITION))continue; - + Vector p(positions[i]); - + p[0]+=vect[0]; p[1]+=vect[1]; (*iter)->set_trans_point(p); @@ -295,16 +298,16 @@ DuckDrag_Scale::duck_drag(Duckmatic* duckmatic, const synfig::Vector& vector) for(i=0,iter=selected_ducks.begin();iter!=selected_ducks.end();++iter,i++) { if(!((*iter)->get_type()!=Duck::TYPE_VERTEX&&(*iter)->get_type()!=Duck::TYPE_POSITION))continue; - + Vector p(positions[i]); - + p[0]+=vect[0]; p[1]+=vect[1]; (*iter)->set_trans_point(p); } return; } - + if(!lock_aspect) { if(abs(drag_offset[0]-center[0])>EPSILON) @@ -327,12 +330,12 @@ DuckDrag_Scale::duck_drag(Duckmatic* duckmatic, const synfig::Vector& vector) vect[0]=1; if(vect[1]-EPSILON) vect[1]=1; - + int i; for(i=0,iter=selected_ducks.begin();iter!=selected_ducks.end();++iter,i++) { if(((*iter)->get_type()!=Duck::TYPE_VERTEX&&(*iter)->get_type()!=Duck::TYPE_POSITION))continue; - + Vector p(positions[i]-center); p[0]*=vect[0]; @@ -343,7 +346,7 @@ DuckDrag_Scale::duck_drag(Duckmatic* duckmatic, const synfig::Vector& vector) for(i=0,iter=selected_ducks.begin();iter!=selected_ducks.end();++iter,i++) { if(!((*iter)->get_type()!=Duck::TYPE_VERTEX&&(*iter)->get_type()!=Duck::TYPE_POSITION))continue; - + Vector p(positions[i]-center); p[0]*=vect[0]; @@ -351,7 +354,7 @@ DuckDrag_Scale::duck_drag(Duckmatic* duckmatic, const synfig::Vector& vector) p+=center; (*iter)->set_trans_point(p); } - + last_scale=vect; //snap=Vector(0,0); } @@ -360,7 +363,7 @@ bool DuckDrag_Scale::end_duck_drag(Duckmatic* duckmatic) { if(bad_drag)return false; - + if((last_scale-Vector(1,1)).mag()>0.0001) { duckmatic->signal_edited_selected_ducks();