X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fcanvas.cpp;h=2e0144bd686472d70d933cbb8908e4d16338e632;hb=71d498a6e0600d4a46b5416cfc765342f869cd34;hp=303cdce0047fe715156cd6124e8a027d6e59d6c1;hpb=fed432fb09efa7eaecf220c494feb4f3b59b922c;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/canvas.cpp b/synfig-core/trunk/src/synfig/canvas.cpp index 303cdce..2e0144b 100644 --- a/synfig-core/trunk/src/synfig/canvas.cpp +++ b/synfig-core/trunk/src/synfig/canvas.cpp @@ -52,6 +52,8 @@ namespace synfig { extern Canvas::Handle open_canvas(const String &filename, Str /* === M A C R O S ========================================================= */ +#define ALLOW_CLONE_NON_INLINE_CANVASES + struct _CanvasCounter { static int counter; @@ -781,7 +783,9 @@ Canvas::clone(const GUID& deriv_guid)const { name=get_id()+"_CLONE"; +#ifndef ALLOW_CLONE_NON_INLINE_CANVASES throw runtime_error("Cloning of non-inline canvases is not yet supported"); +#endif // ALLOW_CLONE_NON_INLINE_CANVASES } Handle canvas(new Canvas(name)); @@ -1232,7 +1236,8 @@ synfig::optimize_layers(Time time, Context context, Canvas::Handle op_canvas, bo !composite->reads_context()) { Canvas::Handle sub_canvas(Canvas::create_inline(op_canvas)); - sub_canvas->push_back(composite = composite->clone()); + // don't use clone() because it re-randomizes the seeds of any random valuenodes + sub_canvas->push_back(composite = composite->simple_clone()); layer = Layer::create("PasteCanvas"); composite->set_description(strprintf("Wrapped clone of '%s'", composite->get_non_empty_description().c_str())); layer->set_description(strprintf("PasteCanvas wrapper for '%s'", composite->get_non_empty_description().c_str())); @@ -1380,3 +1385,10 @@ Canvas::rename_group(const String&old_name,const String&new_name) (*iter)->add_to_group(new_name); } } + +void +Canvas::register_external_canvas(String file_name, Handle canvas) +{ + if(!is_absolute_path(file_name)) file_name = get_file_path()+ETL_DIRECTORY_SEPARATOR+file_name; + externals_[file_name] = canvas; +}