X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Fsrc%2Fsynfig%2Floadcanvas.cpp;h=1e715c3e7fd5b62d4dcb37d23bcdad665b50ebb2;hb=6612ced05a48e176c5bc9e291152b5d8ae4fbf38;hp=63f98c11f7f136a995bd00030adf4e8a90ada64d;hpb=e293ff00bc3304a09b1a5b17852c7f1a93a34f12;p=synfig.git diff --git a/synfig-core/src/synfig/loadcanvas.cpp b/synfig-core/src/synfig/loadcanvas.cpp index 63f98c1..1e715c3 100644 --- a/synfig-core/src/synfig/loadcanvas.cpp +++ b/synfig-core/src/synfig/loadcanvas.cpp @@ -44,7 +44,6 @@ #include "layer_pastecanvas.h" #include "loadcanvas.h" #include "valuenode.h" -#include "valuenode_subtract.h" #include "valuenode_animated.h" #include "valuenode_composite.h" #include "valuenode_const.h" @@ -825,11 +824,35 @@ CanvasParser::parse_angle(xmlpp::Element *element) return Angle::deg(atof(val.c_str())); } +bool +CanvasParser::parse_static(xmlpp::Element *element) +{ + if(!element->get_attribute("static")) + return false; + + string val=element->get_attribute("static")->get_value(); + + if(val=="true" || val=="1") + return true; + if(val=="false" || val=="0") + return false; + + error(element,strprintf(_("Bad value \"%s\" in <%s>"),val.c_str(),"bool")); + + return false; +} + + ValueBase CanvasParser::parse_value(xmlpp::Element *element,Canvas::Handle canvas) { if(element->get_name()=="real") - return parse_real(element); + { + ValueBase ret; + ret.set(parse_real(element)); + ret.set_static(parse_static(element)); + return ret; + } else if(element->get_name()=="time") return parse_time(element,canvas); @@ -868,7 +891,12 @@ CanvasParser::parse_value(xmlpp::Element *element,Canvas::Handle canvas) return parse_bline_point(element); else if(element->get_name()=="canvas") - return ValueBase(parse_canvas(element,canvas,true)); + { + ValueBase ret; + ret.set(parse_canvas(element,canvas,true)); + ret.set_static(parse_static(element)); + return ret; + } else { error_unexpected_element(element,element->get_name()); @@ -1767,6 +1795,8 @@ CanvasParser::parse_layer(xmlpp::Element *element,Canvas::Handle canvas) if(!c) error((*iter),strprintf(_("Failed to load subcanvas '%s'"), str.c_str())); if(!layer->set_param(param_name,c)) error((*iter),_("Layer rejected canvas link")); + //Parse the static option and sets it to the canvas ValueBase + layer->set_param_static(param_name, parse_static(child)); } else try