-/* === S Y N F I G ========================================================= */
-/*! \file timepointcollect.cpp
-** \brief Template File
-**
-** $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
-** published by the Free Software Foundation; either version 2 of
-** the License, or (at your option) any later version.
-**
-** This package is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-** General Public License for more details.
-** \endlegal
-*/
-/* ========================================================================= */
-
-/* === H E A D E R S ======================================================= */
-
-#ifdef USING_PCH
-# include "pch.h"
-#else
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "timepointcollect.h"
-#include "valuenode_animated.h"
-#include "layer_pastecanvas.h"
-#include "layer.h"
-#include "canvas.h"
-#include "value.h"
-
-#endif
-
-/* === U S I N G =========================================================== */
-
-using namespace std;
-using namespace etl;
-using namespace synfig;
-
-/* === M A C R O S ========================================================= */
-
-/* === G L O B A L S ======================================================= */
-
-/* === P R O C E D U R E S ================================================= */
-
-/* === M E T H O D S ======================================================= */
-
-//! \writeme
-int
-synfig::waypoint_collect(set<Waypoint, std::less<UniqueID> > &waypoint_set,
- const Time &time,
- const etl::handle<Node> &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())
- return 0;
-
- // Check if we are a linkable value node
- LinkableValueNode::Handle linkable_value_node;
- linkable_value_node=linkable_value_node.cast_dynamic(node);
- if(linkable_value_node)
- {
- const int link_count(linkable_value_node->link_count());
- int i,ret(0);
- for(i=0;i<link_count;i++)
- ret+=waypoint_collect(waypoint_set,time,linkable_value_node->get_link(i).get());
-
- return ret;
- }
-
- // Check if we are a layer
- Layer::Handle layer;
- layer=layer.cast_dynamic(node);
- if(layer)
- {
- const Layer::DynamicParamList& dyn_param_list(layer->dynamic_param_list());
- 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)
- {
- etl::handle<Layer_PasteCanvas> p = etl::handle<Layer_PasteCanvas>::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;
- }
-
- // Check if we are a canvas
- Canvas::Handle canvas;
- canvas=canvas.cast_dynamic(node);
- if(canvas)
- {
- Canvas::const_iterator iter;
- int ret(0);
- for(iter=canvas->begin();iter!=canvas->end();++iter)
- ret+=waypoint_collect(waypoint_set,time,*iter);
- return ret;
- }
-
- // Check if we are an animated value node
- ValueNode_Animated::Handle value_node_animated;
- value_node_animated=value_node_animated.cast_dynamic(node);
- if(value_node_animated)
- {
- 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(...)
- {
- return 0;
- }
- }
-
- return 0;
-}
-
-//! \writeme
-int
-synfig::activepoint_collect(set<Activepoint, std::less<UniqueID> >& /*activepoint_set*/,const Time& time, const etl::handle<Node>& 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())
- return 0;
-
- return 0;
-}