X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fcanvas.cpp;h=2997ff4b358f593eca972ba71b996fd80b8ea912;hb=c0a582461a1c9aea914baf7889534aaf9ff4434c;hp=b521efad83893187251d513d3af2e0515f6ed61a;hpb=b0903893f1eb9b330be66e3eb98e799054bacca0;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/canvas.cpp b/synfig-core/trunk/src/synfig/canvas.cpp index b521efa..2997ff4 100644 --- a/synfig-core/trunk/src/synfig/canvas.cpp +++ b/synfig-core/trunk/src/synfig/canvas.cpp @@ -47,7 +47,7 @@ using namespace synfig; using namespace etl; using namespace std; -namespace synfig { extern Canvas::Handle open_canvas(const String &filename); }; +namespace synfig { extern Canvas::Handle open_canvas(const String &filename, String &errors); }; /* === M A C R O S ========================================================= */ @@ -537,13 +537,14 @@ Canvas::surefind_canvas(const String &id) external_canvas=externals_[file_name]; else { + String errors; if(is_absolute_path(file_name)) - external_canvas=open_canvas(file_name); + external_canvas=open_canvas(file_name, errors); else - external_canvas=open_canvas(get_file_path()+ETL_DIRECTORY_SEPARATOR+file_name); + external_canvas=open_canvas(get_file_path()+ETL_DIRECTORY_SEPARATOR+file_name, errors); if(!external_canvas) - throw Exception::FileNotFound(file_name); + throw runtime_error(errors); externals_[file_name]=external_canvas; } @@ -595,7 +596,8 @@ Canvas::find_canvas(const String &id) Canvas::ConstHandle Canvas::find_canvas(const String &id)const { - if(is_inline() && parent_)return parent_->find_canvas(id); + if(is_inline() && parent_) + return parent_->find_canvas(id); if(id.empty()) return this; @@ -622,13 +624,14 @@ Canvas::find_canvas(const String &id)const external_canvas=externals_[file_name]; else { + String errors; if(is_absolute_path(file_name)) - external_canvas=open_canvas(file_name); + external_canvas=open_canvas(file_name, errors); else - external_canvas=open_canvas(get_file_path()+ETL_DIRECTORY_SEPARATOR+file_name); + external_canvas=open_canvas(get_file_path()+ETL_DIRECTORY_SEPARATOR+file_name, errors); if(!external_canvas) - throw Exception::FileNotFound(file_name); + throw runtime_error(errors); externals_[file_name]=external_canvas; } @@ -652,7 +655,7 @@ Canvas::find_canvas(const String &id)const // If the first character is the separator, then // this references the root canvas. - if(id.find_first_of(':')==0) + if(id[0]==':') return get_root()->find_canvas(string(id,1)); // Now we know that the requested Canvas is in a child @@ -788,6 +791,7 @@ Canvas::clone(const GUID& deriv_guid)const // it was failing to ascertain the absolute pathname of the imported image, since it needs the pathname // of the canvas to get that, which is stored in the parent canvas canvas->parent_=parent(); + canvas->rend_desc() = rend_desc(); //canvas->set_inline(parent()); }