** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
** Copyright (c) 2008 Chris Moore
+** Copyright (c) 2009 Nikita Kitaev
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
#include <gtkmm/dialog.h>
#include <gtkmm/entry.h>
+#include <synfig/valuenode_blinecalcvertex.h>
+#include <synfig/valuenode_composite.h>
#include <synfig/valuenode_dynamiclist.h>
#include <synfigapp/action_system.h>
int i;
+ Time time(duckmatic->get_time());
+
// process vertex and position ducks first
for(i=0,iter=selected_ducks.begin();iter!=selected_ducks.end();++iter,i++)
{
dist=0;
last_[i]=vect*dist;
- (*iter)->set_trans_point(p+last_[i]);
+ (*iter)->set_trans_point(p+last_[i], time);
}
// then process non vertex and non position ducks
dist=0;
last_[i]=vect*dist;
- (*iter)->set_trans_point(p+last_[i]);
+ (*iter)->set_trans_point(p+last_[i], time);
}
+ // then patch up the tangents for the vertices we've moved
+ duckmatic->update_ducks();
+
last_translate_=vect;
//snap=Vector(0,0);
}
for(i=0,iter=selected_ducks.begin();iter!=selected_ducks.end();++iter,i++)
{
if(last_[i].mag()>0.0001)
- if(!(*iter)->signal_edited()((*iter)->get_point()))
{
- throw String("Bad Move");
+ if ((*iter)->get_type() == Duck::TYPE_ANGLE)
+ {
+ if(!(*iter)->signal_edited_angle()((*iter)->get_rotations()))
+ {
+ throw String("Bad edit");
+ }
+ }
+ else if (App::restrict_radius_ducks &&
+ (*iter)->is_radius())
+ {
+ Point point((*iter)->get_point());
+ bool changed = false;
+
+ if (point[0] < 0)
+ {
+ point[0] = 0;
+ changed = true;
+ }
+ if (point[1] < 0)
+ {
+ point[1] = 0;
+ changed = true;
+ }
+
+ if (changed) (*iter)->set_point(point);
+
+ if(!(*iter)->signal_edited()(point))
+ {
+ throw String("Bad edit");
+ }
+ }
+ else
+ {
+ if(!(*iter)->signal_edited()((*iter)->get_point()))
+ {
+ throw String("Bad edit");
+ }
+ }
}
}
//duckmatic->get_selected_ducks()=new_set;