X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fcanvas.cpp;h=2997ff4b358f593eca972ba71b996fd80b8ea912;hb=c908449698409cf3807942ee12c9f4f2da3daaa8;hp=c50b901e73e2656ecb3d6b2a878bd9adda34194e;hpb=756c0d29ac1742f231e6615f9a577e574e35a4af;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/canvas.cpp b/synfig-core/trunk/src/synfig/canvas.cpp index c50b901..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 ========================================================= */ @@ -369,7 +369,6 @@ Canvas::_get_relative_id(etl::loose_handle x)const return id; } - ValueNode::Handle Canvas::find_value_node(const String &id) { @@ -507,7 +506,6 @@ Canvas::remove_value_node(ValueNode::Handle x) x->set_id(""); } - etl::handle Canvas::surefind_canvas(const String &id) { @@ -539,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; } @@ -597,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; @@ -624,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; } @@ -654,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 @@ -668,7 +669,6 @@ Canvas::find_canvas(const String &id)const return child_canvas->find_canvas(string(id,id.find_first_of(':')+1)); } - Canvas::Handle Canvas::create() { @@ -706,10 +706,8 @@ Canvas::insert(iterator iter,etl::handle x) x->set_canvas(this); - add_child(x.get()); - LooseHandle correct_canvas(this); //while(correct_canvas->is_inline())correct_canvas=correct_canvas->parent(); Layer::LooseHandle loose_layer(x); @@ -731,11 +729,9 @@ Canvas::insert(iterator iter,etl::handle x) &Canvas::remove_group_pair), loose_layer)))); - if(!x->get_group().empty()) add_group_pair(x->get_group(),x); - changed(); } @@ -795,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()); } @@ -986,7 +983,6 @@ Canvas::get_file_path()const return dirname(file_name_); } - String Canvas::get_meta_data(const String& key)const {