X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Ftimepointcollect.cpp;h=c395dfd06e2697f7b002cc9287eede2c4f98ec84;hb=334e15ce6c4d9b1f30a168a55e7ef4d31320d568;hp=1b2d64574408b87170a2dbb2a6af004390b25cca;hpb=e8a065f2385c219c511b57dac52786120bfa097d;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/timepointcollect.cpp b/synfig-core/trunk/src/synfig/timepointcollect.cpp index 1b2d645..c395dfd 100644 --- a/synfig-core/trunk/src/synfig/timepointcollect.cpp +++ b/synfig-core/trunk/src/synfig/timepointcollect.cpp @@ -1,11 +1,12 @@ /* === S Y N F I G ========================================================= */ -/*! \file template.cpp +/*! \file timepointcollect.cpp ** \brief Template File ** -** $Id: timepointcollect.cpp,v 1.1.1.1 2005/01/04 01:23:15 darco Exp $ +** $Id$ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2007 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 @@ -31,6 +32,7 @@ #include "timepointcollect.h" #include "valuenode_animated.h" +#include "layer_pastecanvas.h" #include "layer.h" #include "canvas.h" #include "value.h" @@ -53,8 +55,10 @@ using namespace synfig; //! \writeme int -synfig::waypoint_collect(set >& waypoint_set,const Time& time, const etl::handle& node) -{ +synfig::waypoint_collect(set > &waypoint_set, + const Time &time, + const etl::handle &node) +{ const TimePointSet& timepoint_set(node->get_times()); // Check to see if there is anything in here at the given time @@ -69,9 +73,8 @@ synfig::waypoint_collect(set >& waypoint_set,const const int link_count(linkable_value_node->link_count()); int i,ret(0); for(i=0;iget_link(i).get()); - } + return ret; } @@ -84,13 +87,18 @@ synfig::waypoint_collect(set >& waypoint_set,const Layer::DynamicParamList::const_iterator iter; int ret(0); for(iter=dyn_param_list.begin();iter!=dyn_param_list.end();++iter) - { ret+=waypoint_collect(waypoint_set,time,iter->second); - } + ValueBase canvas_value(layer->get_param("canvas")); if(canvas_value.get_type()==ValueBase::TYPE_CANVAS) { - ret+=waypoint_collect(waypoint_set,time,Canvas::Handle(canvas_value.get(Canvas::Handle()))); + etl::handle p = etl::handle::cast_dynamic(layer); + if (p) + ret+=waypoint_collect(waypoint_set, time + p->get_time_offset(), + Canvas::Handle(canvas_value.get(Canvas::Handle()))); + else + ret+=waypoint_collect(waypoint_set, time, + Canvas::Handle(canvas_value.get(Canvas::Handle()))); } return ret; } @@ -114,13 +122,12 @@ synfig::waypoint_collect(set >& waypoint_set,const { try{ Waypoint waypoint=*value_node_animated->find(time); - + // If it is already in the waypoint set, then // don't bother adding it again if(waypoint_set.find(waypoint)!=waypoint_set.end()) - { return 0; - } + waypoint_set.insert(waypoint); return 1; }catch(...) @@ -134,12 +141,12 @@ synfig::waypoint_collect(set >& waypoint_set,const //! \writeme int -synfig::activepoint_collect(set >& activepoint_set,const Time& time, const etl::handle& node) +synfig::activepoint_collect(set >& /*activepoint_set*/,const Time& time, const etl::handle& node) { const TimePointSet& timepoint_set(node->get_times()); // Check to see if there is anything in here at the given time - if(timepoint_set.find(time)==timepoint_set.end()); + if(timepoint_set.find(time)==timepoint_set.end()) return 0; return 0;