**
** \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
/* === G L O B A L S ======================================================= */
SYNFIG_LAYER_INIT(Layer_PasteCanvas);
-SYNFIG_LAYER_SET_NAME(Layer_PasteCanvas,"PasteCanvas");
+SYNFIG_LAYER_SET_NAME(Layer_PasteCanvas,"PasteCanvas"); // todo: use paste_canvas
SYNFIG_LAYER_SET_LOCAL_NAME(Layer_PasteCanvas,_("Paste Canvas"));
SYNFIG_LAYER_SET_CATEGORY(Layer_PasteCanvas,_("Other"));
SYNFIG_LAYER_SET_VERSION(Layer_PasteCanvas,"0.1");
{
IMPORT(origin);
+ // IMPORT(canvas);
if(param=="canvas" && value.same_type_as(Canvas::Handle()))
{
set_sub_canvas(value.get(Canvas::Handle()));
return true;
}
-// IMPORT(canvas);
+ // IMPORT(time_offset);
+ if (param=="time_offset" && value.same_type_as(time_offset))
+ {
+ if (time_offset != value.get(Time()))
+ {
+ value.put(&time_offset);
+ // notify that the time_offset has changed so we can update the
+ // waypoint positions in parent layers
+ changed();
+ }
+ return true;
+ }
+
IMPORT(children_lock);
IMPORT(zoom);
- IMPORT(time_offset);
return Layer_Composite::set_param(param,value);
}
context.set_time(time);
if(canvas)
{
- canvas->set_time(time);
+ canvas->set_time(time+time_offset);
bounds=(canvas->get_context().get_full_bounding_rect()-canvas->rend_desc().get_focus())*exp(zoom)+origin+canvas->rend_desc().get_focus();
}
Surface pastesurface;
- if(area.area()<=0.000001 || desc.get_w()==0 || desc.get_h()==0)
+ // \todo this used to also have "area.area()<=0.000001 || " - is it useful?
+ // it was causing bug #1809480 (Zoom in beyond 8.75 in nested canvases fails)
+ if(desc.get_w()==0 || desc.get_h()==0)
{
if(cb && !cb->amount_complete(10000,10000)) return false;
Node::time_set tset;
if(canvas) tset = canvas->get_times();
- Node::time_set::iterator i = tset.begin(),
- end = tset.end();
+ Node::time_set::iterator i = tset.begin(), end = tset.end();
//Make sure we offset the time...
- //TODO: SOMETHING STILL HAS TO BE DONE WITH THE OTHER DIRECTION
- // (recursing down the tree needs to take this into account too...)
+ //! \todo: SOMETHING STILL HAS TO BE DONE WITH THE OTHER DIRECTION
+ // (recursing down the tree needs to take this into account too...)
for(; i != end; ++i)
- {
- set.insert(*i + time_offset);
- }
+ set.insert(*i
+#ifdef ADJUST_WAYPOINTS_FOR_TIME_OFFSET // see node.h
+ - time_offset
+#endif
+ );
Layer::get_times_vfunc(set);
}