|
Carlos Lopez |
a09598 |
/* === S Y N F I G ========================================================= */
|
|
Carlos Lopez |
a09598 |
/*! \file timepointsmove.cpp
|
|
Carlos Lopez |
a09598 |
** \brief Move the Time Points File
|
|
Carlos Lopez |
a09598 |
**
|
|
Carlos Lopez |
a09598 |
** $Id$
|
|
Carlos Lopez |
a09598 |
**
|
|
Carlos Lopez |
a09598 |
** \legal
|
|
Carlos Lopez |
a09598 |
** Copyright (c) 2004 Adrian Bentley
|
|
Carlos Lopez |
a09598 |
**
|
|
Carlos Lopez |
a09598 |
** This package is free software; you can redistribute it and/or
|
|
Carlos Lopez |
a09598 |
** modify it under the terms of the GNU General Public License as
|
|
Carlos Lopez |
a09598 |
** published by the Free Software Foundation; either version 2 of
|
|
Carlos Lopez |
a09598 |
** the License, or (at your option) any later version.
|
|
Carlos Lopez |
a09598 |
**
|
|
Carlos Lopez |
a09598 |
** This package is distributed in the hope that it will be useful,
|
|
Carlos Lopez |
a09598 |
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Carlos Lopez |
a09598 |
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Carlos Lopez |
a09598 |
** General Public License for more details.
|
|
Carlos Lopez |
a09598 |
** \endlegal
|
|
Carlos Lopez |
a09598 |
*/
|
|
Carlos Lopez |
a09598 |
/* ========================================================================= */
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
/* === H E A D E R S ======================================================= */
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
#ifdef USING_PCH
|
|
Carlos Lopez |
a09598 |
# include "pch.h"
|
|
Carlos Lopez |
a09598 |
#else
|
|
Carlos Lopez |
a09598 |
#ifdef HAVE_CONFIG_H
|
|
Carlos Lopez |
a09598 |
# include <config.h></config.h>
|
|
Carlos Lopez |
a09598 |
#endif
|
|
Carlos Lopez |
a09598 |
|
|
bw |
94d8a6 |
#include <synfig general.h=""></synfig>
|
|
bw |
94d8a6 |
|
|
Carlos Lopez |
a09598 |
#include "timepointsmove.h"
|
|
Diego Barrios Romero |
dcc14d |
#include <synfig layer_pastecanvas.h="" layers=""></synfig>
|
|
Carlos Lopez |
a09598 |
#include <synfigapp canvasinterface.h=""></synfigapp>
|
|
Diego Barrios Romero |
07d34c |
#include <synfig valuenode_dynamiclist.h="" valuenodes=""></synfig>
|
|
Diego Barrios Romero |
07d34c |
#include <synfig valuenode_animated.h="" valuenodes=""></synfig>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
#include "activepointset.h"
|
|
Carlos Lopez |
a09598 |
#include "waypointset.h"
|
|
Carlos Lopez |
a09598 |
#include <synfigapp timegather.h=""></synfigapp>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
#include <typeinfo></typeinfo>
|
|
Carlos Lopez |
a09598 |
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?d=retro&s=16) |
abdbf2 |
#include <synfigapp localization.h=""></synfigapp>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
#endif
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
using namespace std;
|
|
Carlos Lopez |
a09598 |
using namespace etl;
|
|
Carlos Lopez |
a09598 |
using namespace synfig;
|
|
Carlos Lopez |
a09598 |
using namespace synfigapp;
|
|
Carlos Lopez |
a09598 |
using namespace Action;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
/* === M A C R O S ========================================================= */
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
ACTION_INIT(Action::TimepointsMove);
|
|
Carlos Lopez |
a09598 |
ACTION_SET_NAME(Action::TimepointsMove,"TimepointsMove");
|
|
Carlos Lopez |
a09598 |
ACTION_SET_LOCAL_NAME(Action::TimepointsMove,N_("Move Time Points"));
|
|
Carlos Lopez |
a09598 |
ACTION_SET_TASK(Action::TimepointsMove,"move");
|
|
Carlos Lopez |
a09598 |
ACTION_SET_CATEGORY(Action::TimepointsMove,Action::CATEGORY_WAYPOINT|Action::CATEGORY_ACTIVEPOINT);
|
|
Carlos Lopez |
a09598 |
ACTION_SET_PRIORITY(Action::TimepointsMove,0);
|
|
Carlos Lopez |
a09598 |
ACTION_SET_VERSION(Action::TimepointsMove,"0.0");
|
|
Carlos Lopez |
a09598 |
ACTION_SET_CVS_ID(Action::TimepointsMove,"$Id$");
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
/* === G L O B A L S ======================================================= */
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
/* === P R O C E D U R E S ================================================= */
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
/* === M E T H O D S ======================================================= */
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Action::TimepointsMove::TimepointsMove()
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
timemove = 0;
|
|
Carlos Lopez |
a09598 |
set_dirty(false);
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Action::ParamVocab
|
|
Carlos Lopez |
a09598 |
Action::TimepointsMove::get_param_vocab()
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
ParamVocab ret(Action::CanvasSpecific::get_param_vocab());
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
ret.push_back(ParamDesc("addlayer",Param::TYPE_VALUE)
|
|
Carlos Lopez |
a09598 |
.set_local_name(_("New Selected Layer"))
|
|
Carlos Lopez |
a09598 |
.set_desc(_("A layer to add to our selected list"))
|
|
Carlos Lopez |
a09598 |
.set_supports_multiple()
|
|
Carlos Lopez |
a09598 |
.set_optional()
|
|
Carlos Lopez |
a09598 |
);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
ret.push_back(ParamDesc("addcanvas",Param::TYPE_CANVAS)
|
|
Carlos Lopez |
a09598 |
.set_local_name(_("New Selected Canvas"))
|
|
Carlos Lopez |
a09598 |
.set_desc(_("A canvas to add to our selected list"))
|
|
Carlos Lopez |
a09598 |
.set_supports_multiple()
|
|
Carlos Lopez |
a09598 |
.set_optional()
|
|
Carlos Lopez |
a09598 |
);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
ret.push_back(ParamDesc("addvaluedesc",Param::TYPE_VALUEDESC)
|
|
Carlos Lopez |
a09598 |
.set_local_name(_("New Selected ValueBase"))
|
|
Carlos Lopez |
a09598 |
.set_desc(_("A valuenode's description to add to our selected list"))
|
|
Carlos Lopez |
a09598 |
.set_supports_multiple()
|
|
Carlos Lopez |
a09598 |
.set_optional()
|
|
Carlos Lopez |
a09598 |
);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
ret.push_back(ParamDesc("addtime",Param::TYPE_TIME)
|
|
Carlos Lopez |
a09598 |
.set_local_name(_("New Selected Time Point"))
|
|
Carlos Lopez |
a09598 |
.set_desc(_("A time point to add to our selected list"))
|
|
Carlos Lopez |
a09598 |
.set_supports_multiple()
|
|
Carlos Lopez |
a09598 |
);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
ret.push_back(ParamDesc("deltatime",Param::TYPE_TIME)
|
|
Carlos Lopez |
a09598 |
.set_local_name(_("Time adjustment"))
|
|
Carlos Lopez |
a09598 |
.set_desc(_("The amount of time to adjust all the selected points"))
|
|
Carlos Lopez |
a09598 |
);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
return ret;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
bool
|
|
Carlos Lopez |
a09598 |
Action::TimepointsMove::is_candidate(const ParamList &x)
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
if(!candidate_check(get_param_vocab(),x))
|
|
Carlos Lopez |
a09598 |
return false;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
if( x.find("addlayer") == x.end() &&
|
|
Carlos Lopez |
a09598 |
x.find("addcanvas") == x.end() &&
|
|
Carlos Lopez |
a09598 |
x.find("addvaluedesc") == x.end())
|
|
Carlos Lopez |
a09598 |
return false;
|
|
Carlos Lopez |
a09598 |
return true;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
bool
|
|
Carlos Lopez |
a09598 |
Action::TimepointsMove::set_param(const synfig::String& name, const Action::Param ¶m)
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
if(name=="addlayer" && param.get_type()==Param::TYPE_LAYER)
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
//add a layer to the list
|
|
Carlos Lopez |
a09598 |
sel_layers.push_back(param.get_layer());
|
|
Carlos Lopez |
a09598 |
//synfig::info("action got layer");
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
return true;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
if(name=="addcanvas" && param.get_type()==Param::TYPE_CANVAS)
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
//add a layer to the list
|
|
Carlos Lopez |
a09598 |
sel_canvases.push_back(param.get_canvas());
|
|
Carlos Lopez |
a09598 |
//synfig::info("action got canvas");
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
return true;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
if(name=="addvaluedesc" && param.get_type()==Param::TYPE_VALUEDESC)
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
//add a layer to the list
|
|
Carlos Lopez |
a09598 |
sel_values.push_back(param.get_value_desc());
|
|
Carlos Lopez |
a09598 |
//synfig::info("action got valuedesc");
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
return true;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
if(name=="addtime" && param.get_type()==Param::TYPE_TIME)
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
//add a layer to the list
|
|
Carlos Lopez |
a09598 |
sel_times.insert(param.get_time());
|
|
Carlos Lopez |
a09598 |
//synfig::info("action got time");
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
return true;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
if(name=="deltatime" && param.get_type()==Param::TYPE_TIME)
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
timemove = param.get_time();
|
|
Carlos Lopez |
a09598 |
//synfig::info("action got time to move");
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
return true;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
return Action::CanvasSpecific::set_param(name,param);
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
bool
|
|
Carlos Lopez |
a09598 |
Action::TimepointsMove::is_ready()const
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
if((sel_layers.empty() && sel_canvases.empty() && sel_values.empty()) || sel_times.empty())
|
|
Carlos Lopez |
a09598 |
return false;
|
|
Carlos Lopez |
a09598 |
return Action::CanvasSpecific::is_ready();
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
void
|
|
Carlos Lopez |
a09598 |
Action::TimepointsMove::prepare()
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
clear();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//synfig::info("Preparing TimepointsMove by %f secs",(float)timemove);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
if(sel_times.empty()) return;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//all our lists should be set correctly...
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
/*{
|
|
Carlos Lopez |
a09598 |
std::set<synfig::time>::iterator i = sel_times.begin(), end = sel_times.end();</synfig::time>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
for(; i != end; ++i)
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
synfig::info("Time %f", (float)*i);
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
}*/
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//build our sub-action list
|
|
Carlos Lopez |
a09598 |
// and yes we do need to store it temporarily so we don't duplicate
|
|
Carlos Lopez |
a09598 |
// an operation on a specific valuenode, etc....
|
|
Carlos Lopez |
a09598 |
timepoints_ref match;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Time fps = get_canvas()->rend_desc().get_frame_rate();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//std::vector<synfig::layer::handle></synfig::layer::handle>
|
|
Carlos Lopez |
a09598 |
//synfig::info("Layers %d", sel_layers.size());
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
std::vector<synfig::layer::handle>::iterator i = sel_layers.begin(),</synfig::layer::handle>
|
|
Carlos Lopez |
a09598 |
end = sel_layers.end();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
for(; i != end; ++i)
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
//synfig::info("Recurse through a layer");
|
|
Carlos Lopez |
a09598 |
recurse_layer(*i,sel_times,match);
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//std::vector<synfig::canvas::handle> sel_canvases;</synfig::canvas::handle>
|
|
Carlos Lopez |
a09598 |
//synfig::info("Canvases %d", sel_canvases.size());
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
std::vector<synfig::canvas::handle>::iterator i = sel_canvases.begin(),</synfig::canvas::handle>
|
|
Carlos Lopez |
a09598 |
end = sel_canvases.end();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
for(; i != end; ++i)
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
//synfig::info("Recurse through a canvas");
|
|
Carlos Lopez |
a09598 |
recurse_canvas(*i,sel_times,match);
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//std::vector<synfigapp::valuedesc></synfigapp::valuedesc>
|
|
Carlos Lopez |
a09598 |
//synfig::info("ValueBasedescs %d", sel_values.size());
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
std::vector<synfigapp::valuedesc>::iterator i = sel_values.begin(),</synfigapp::valuedesc>
|
|
Carlos Lopez |
a09598 |
end = sel_values.end();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
for(; i != end; ++i)
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
//synfig::info("Recurse through a valuedesc");
|
|
Carlos Lopez |
a09598 |
recurse_valuedesc(*i,sel_times,match);
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//synfig::info("built list of waypoints/activepoints to modify");
|
|
Carlos Lopez |
a09598 |
//synfig::info("\t There are %d waypoint sets and %d activepointsets",
|
|
Carlos Lopez |
a09598 |
// match.waypointbiglist.size(), match.actpointbiglist.size());
|
|
Carlos Lopez |
a09598 |
//process them...
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
//must build from both lists
|
|
Carlos Lopez |
a09598 |
timepoints_ref::waytracker::const_iterator i = match.waypointbiglist.begin(),
|
|
![](https://seccdn.libravatar.org/avatar/41f7be7efd9c6a5e79c9949b62f1e9b1c95ddbe097b5368ec4c9383d10210602?d=retro&s=16) |
db9c0e |
iend = match.waypointbiglist.end();
|
|
![](https://seccdn.libravatar.org/avatar/41f7be7efd9c6a5e79c9949b62f1e9b1c95ddbe097b5368ec4c9383d10210602?d=retro&s=16) |
db9c0e |
for(; i != iend; ++i)
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
Action::Handle action(WaypointSet::create());
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
action->set_param("canvas",get_canvas());
|
|
Carlos Lopez |
a09598 |
action->set_param("canvas_interface",get_canvas_interface());
|
|
Carlos Lopez |
a09598 |
action->set_param("value_node",ValueNode::Handle(i->val));
|
|
Carlos Lopez |
a09598 |
|
|
Max May |
98aca7 |
synfig::Time dilated_timemove(timemove * i->time_dilation);
|
|
Max May |
98aca7 |
|
|
Carlos Lopez |
a09598 |
//iterate through each waypoint for this specific valuenode
|
|
Carlos Lopez |
a09598 |
std::set<synfig::waypoint>::const_iterator j = i->waypoints.begin(),</synfig::waypoint>
|
|
![](https://seccdn.libravatar.org/avatar/41f7be7efd9c6a5e79c9949b62f1e9b1c95ddbe097b5368ec4c9383d10210602?d=retro&s=16) |
db9c0e |
jend = i->waypoints.end();
|
|
![](https://seccdn.libravatar.org/avatar/41f7be7efd9c6a5e79c9949b62f1e9b1c95ddbe097b5368ec4c9383d10210602?d=retro&s=16) |
db9c0e |
for(; j != jend; ++j)
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
//synfig::info("add waypoint mod...");
|
|
Carlos Lopez |
a09598 |
//NOTE: We may want to store the old time for undoing the action...
|
|
Carlos Lopez |
a09598 |
Waypoint w = *j;
|
|
Max May |
98aca7 |
w.set_time((w.get_time() + dilated_timemove).round(fps));
|
|
Carlos Lopez |
a09598 |
action->set_param("waypoint",w);
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//run the action now that we've added everything
|
|
Carlos Lopez |
a09598 |
assert(action->is_ready());
|
|
Carlos Lopez |
a09598 |
if(!action->is_ready())
|
|
Carlos Lopez |
a09598 |
throw Error(Error::TYPE_NOTREADY);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
add_action_front(action);
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
//must build from both lists
|
|
Carlos Lopez |
a09598 |
timepoints_ref::acttracker::const_iterator i = match.actpointbiglist.begin(),
|
|
Carlos Lopez |
a09598 |
end = match.actpointbiglist.end();
|
|
Carlos Lopez |
a09598 |
for(; i != end; ++i)
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
Action::Handle action(ActivepointSet::create());
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
action->set_param("canvas",get_canvas());
|
|
Carlos Lopez |
a09598 |
action->set_param("canvas_interface",get_canvas_interface());
|
|
Carlos Lopez |
a09598 |
action->set_param("value_desc",i->val);
|
|
Carlos Lopez |
a09598 |
|
|
Max May |
98aca7 |
synfig::Time dilated_timemove(timemove * i->time_dilation);
|
|
Max May |
98aca7 |
|
|
Carlos Lopez |
a09598 |
//iterate through each activepoint for this specific valuenode
|
|
Carlos Lopez |
a09598 |
std::set<synfig::activepoint>::const_iterator j = i->activepoints.begin(),</synfig::activepoint>
|
|
Carlos Lopez |
a09598 |
jend = i->activepoints.end();
|
|
Carlos Lopez |
a09598 |
for(; j != jend; ++j)
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
//synfig::info("add activepoint mod...");
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//NOTE: We may want to store the old time for undoing the action...
|
|
Carlos Lopez |
a09598 |
Activepoint a = *j;
|
|
Max May |
98aca7 |
a.set_time((a.get_time() + dilated_timemove).round(fps));
|
|
Carlos Lopez |
a09598 |
action->set_param("activepoint",a);
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
assert(action->is_ready());
|
|
Carlos Lopez |
a09598 |
if(!action->is_ready())
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
throw Error(Error::TYPE_NOTREADY);
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
add_action_front(action);
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
void
|
|
Carlos Lopez |
a09598 |
Action::TimepointsMove::perform()
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
Action::Super::perform();
|
|
Carlos Lopez |
a09598 |
}
|