From: Nikita Kitaev Date: Wed, 2 Dec 2009 03:31:58 +0000 (-0800) Subject: Bugfixing X-Git-Url: https://git.pterodactylus.net/?p=synfig.git;a=commitdiff_plain;h=a44c4451669a006f55999726875e17db96efa7f5 Bugfixing * Stroke always renders on top of fill * Fix gradient strokes * Comment out unused parameters * Work on reducing the number of Paste Canvases --- diff --git a/synfig-core/src/modules/mod_svg/svg_parser.cpp b/synfig-core/src/modules/mod_svg/svg_parser.cpp index 968981c..f5021b6 100644 --- a/synfig-core/src/modules/mod_svg/svg_parser.cpp +++ b/synfig-core/src/modules/mod_svg/svg_parser.cpp @@ -279,18 +279,14 @@ Svg_parser::parser_graphics(const xmlpp::Node* node,xmlpp::Element* root,String typeStroke=2; //gradient } - xmlpp::Element* child_layer = nodeStartBasicLayer(root->add_child("layer")); - xmlpp::Element* child_fill = child_layer; - xmlpp::Element* child_stroke = child_layer; - if(typeFill==2){ - child_fill=nodeStartBasicLayer(child_fill->add_child("layer")); - } - if(typeStroke==2){ - child_stroke=nodeStartBasicLayer(child_stroke->add_child("layer")); - } + xmlpp::Element* child_layer = root; + xmlpp::Element* child_fill; + xmlpp::Element* child_stroke; //make simple fills if(nodename.compare("rect")==0 && typeFill!=0){ + if (mtx) child_layer = nodeStartBasicLayer(root->add_child("layer")); + child_fill=child_layer; parser_rect(nodeElement,child_fill,fill,fill_opacity,opacity); if(typeFill==2){ build_fill (child_fill,fill,NULL); @@ -298,7 +294,10 @@ Svg_parser::parser_graphics(const xmlpp::Node* node,xmlpp::Element* root,String parser_effects(nodeElement,child_layer,parent_style,mtx); return; } - + if ((!(SVG_RESOLVE_BLINE) && mtx) || typeFill==2 || typeStroke==2) + child_layer = nodeStartBasicLayer(root->add_child("layer")); + child_fill=child_layer; + child_stroke=child_layer; //======================================================================= @@ -324,6 +323,9 @@ Svg_parser::parser_graphics(const xmlpp::Node* node,xmlpp::Element* root,String //int n = k.size(); if(typeFill!=0){//region layer + /*if(typeFill==2){ + child_fill=nodeStartBasicLayer(child_fill->add_child("layer")); + }*/ for (aux = k.begin(); aux!=k.end(); aux++){ xmlpp::Element *child_region=child_fill->add_child("layer"); child_region->set_attribute("type","region"); @@ -353,6 +355,9 @@ Svg_parser::parser_graphics(const xmlpp::Node* node,xmlpp::Element* root,String } if(typeStroke!=0){//outline layer + if(typeStroke==2){ + child_stroke=nodeStartBasicLayer(child_stroke->add_child("layer")); + } for (aux=k.begin(); aux!=k.end(); aux++){ xmlpp::Element *child_outline=child_stroke->add_child("layer"); child_outline->set_attribute("type","outline"); @@ -391,9 +396,9 @@ Svg_parser::parser_graphics(const xmlpp::Node* node,xmlpp::Element* root,String if(typeStroke==2){ //gradient in onto mode (stroke) if (SVG_RESOLVE_BLINE) - build_fill(child_stroke,fill,mtx); + build_fill(child_stroke,stroke,mtx); else - build_fill(child_stroke,fill,NULL); + build_fill(child_stroke,stroke,NULL); } } @@ -848,7 +853,7 @@ Svg_parser::parser_path_d(String path_d,Matrix* mtx){ /* === EFFECTS PARSERS ===================================================== */ void -Svg_parser::parser_effects(const xmlpp::Element* nodeElement,xmlpp::Element* root,String parent_style,Matrix* mtx){ +Svg_parser::parser_effects(const xmlpp::Element* /*nodeElement*/,xmlpp::Element* root,String /*parent_style*/,Matrix* mtx){ build_transform(root, mtx); }