X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fcanvas.cpp;h=9322d79c683ea75cf12f692dec8ba76fb10fa11b;hb=fc62d51d61bc6ca78c9e96eb2974e3adfcc4468d;hp=c0763b53b68cfb2b39f99307ba05859f5e652658;hpb=24168ac9a1e41031ddd3dea2f394db72e10b6ae0;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/canvas.cpp b/synfig-core/trunk/src/synfig/canvas.cpp index c0763b5..9322d79 100644 --- a/synfig-core/trunk/src/synfig/canvas.cpp +++ b/synfig-core/trunk/src/synfig/canvas.cpp @@ -69,8 +69,9 @@ int _CanvasCounter::counter(0); /* === M E T H O D S ======================================================= */ -Canvas::Canvas(const string &id): +Canvas::Canvas(const String &id): id_ (id), + version_ (CURRENT_CANVAS_VERSION), cur_time_ (0), is_inline_ (false), is_dirty_ (true), @@ -734,7 +735,7 @@ Canvas::push_back_simple(etl::handle x) } void -Canvas::erase(Canvas::iterator iter) +Canvas::erase(iterator iter) { if(!(*iter)->get_group().empty()) remove_group_pair((*iter)->get_group(),(*iter)); @@ -1017,6 +1018,11 @@ Canvas::get_meta_data_keys()const return ret; } +/* note - the "Motion Blur" and "Duplicate" layers need the dynamic + parameters of any PasteCanvas layers they loop over to be + maintained. When the variables in the following function + refer to "motion blur", they mean either of these two + layers. */ void synfig::optimize_layers(Context context, Canvas::Handle op_canvas, bool seen_motion_blur_in_parent) { @@ -1045,7 +1051,7 @@ synfig::optimize_layers(Context context, Canvas::Handle op_canvas, bool seen_mot if(value.get_type()==ValueBase::TYPE_REAL && value.get(Real())==0) continue; - if(layer->get_name()=="MotionBlur") + if(layer->get_name()=="MotionBlur" || layer->get_name()=="duplicate") { float z_depth(layer->get_z_depth()*1.0001+i); @@ -1258,13 +1264,13 @@ Canvas::remove_group_pair(String group, etl::handle layer) } void -Canvas::add_connection(Layer::LooseHandle layer, sigc::connection connection) +Canvas::add_connection(etl::loose_handle layer, sigc::connection connection) { connections_[layer].push_back(connection); } void -Canvas::disconnect_connections(Layer::LooseHandle layer) +Canvas::disconnect_connections(etl::loose_handle layer) { std::vector::iterator iter; for(iter=connections_[layer].begin();iter!=connections_[layer].end();++iter)