X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Floadcanvas.cpp;h=8c93e1e3012c4dcc6479baa536227c885aefbe6f;hb=6876a54bece1d54df8ae3d0c9899ad8fef053ef1;hp=00cbfc239e184a9a6bf54ff21db8fe7ecac1ad0c;hpb=42f7fccb005cc4a4ab985e01398ab6479bb62199;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/loadcanvas.cpp b/synfig-core/trunk/src/synfig/loadcanvas.cpp index 00cbfc2..8c93e1e 100644 --- a/synfig-core/trunk/src/synfig/loadcanvas.cpp +++ b/synfig-core/trunk/src/synfig/loadcanvas.cpp @@ -6,7 +6,7 @@ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley -** Copyright (c) 2007 Chris Moore +** Copyright (c) 2007, 2008 Chris Moore ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -995,7 +995,7 @@ CanvasParser::parse_animated(xmlpp::Element *element,Canvas::Handle canvas) if(child->get_attribute("temporal-tension")) { synfig::String str(child->get_attribute("temporal-tension")->get_value()); - waypoint->set_time_tension(atof(str.c_str())); + waypoint->set_temporal_tension(atof(str.c_str())); } if(child->get_attribute("continuity")) { @@ -1275,12 +1275,35 @@ CanvasParser::parse_linkable_value_node(xmlpp::Element *element,Canvas::Handle c } } + String version(canvas->get_version()); for (int i = 0; i < value_node->link_count(); i++) { - if (!c[i] && - // the 'width' parameter of wasn't always present, so it won't be in old .sif files - !(element->get_name() == "stripes" && value_node->link_name(i) == "width")) + if (!c[i]) { + // the 'width' parameter of wasn't always present in version 0.1 canvases + if (version == "0.1" && element->get_name() == "stripes" && value_node->link_name(i) == "width") + continue; + + // these 3 blinecalctangent parameters didn't appear until canvas version 0.5 + if ((version == "0.1" || version == "0.2" || version == "0.3" || version == "0.4") && + element->get_name() == "blinecalctangent" && + (value_node->link_name(i) == "offset" || + value_node->link_name(i) == "scale" || + value_node->link_name(i) == "fixed_length")) + continue; + + // 'scale' was added while canvas version 0.5 was in use + if ((version == "0.3" || version == "0.4" || version == "0.5") && + element->get_name() == "blinecalcwidth" && + value_node->link_name(i) == "scale") + continue; + + // 'loop' was added while canvas version 0.5 was in use, as was the 'gradientcolor' node type + if (version == "0.5" && + element->get_name() == "gradientcolor" && + value_node->link_name(i) == "loop") + continue; + error(element, strprintf(_("<%s> is missing link %d (%s)"), element->get_name().c_str(), i, @@ -1289,6 +1312,18 @@ CanvasParser::parse_linkable_value_node(xmlpp::Element *element,Canvas::Handle c } } + // pre 0.4 canvases had *calctangent outputs scaled down by 0.5 for some reason + if (element->get_name() == "blinecalctangent" || element->get_name() == "segcalctangent") + { + if (version == "0.1" || version == "0.2" || version == "0.3") + { + handle scale_value_node=LinkableValueNode::create("scale",type); + scale_value_node->set_link(scale_value_node->get_link_index_from_name("link"), value_node); + scale_value_node->set_link(scale_value_node->get_link_index_from_name("scalar"), ValueNode_Const::create(Real(0.5))); + value_node = scale_value_node; + } + } + return value_node; } @@ -1707,6 +1742,12 @@ CanvasParser::parse_layer(xmlpp::Element *element,Canvas::Handle canvas) handle value_node=canvas->surefind_value_node(str); // Assign the value_node to the dynamic parameter list + if (param_name == "segment_list" && (layer->get_name() == "region" || layer->get_name() == "outline")) + { + synfig::warning("%s: Updated valuenode connection to use the \"bline\" parameter instead of \"segment_list\".", + layer->get_name().c_str()); + param_name = "bline"; + } layer->connect_dynamic_param(param_name,value_node); } catch(Exception::IDNotFound) @@ -1747,7 +1788,9 @@ CanvasParser::parse_layer(xmlpp::Element *element,Canvas::Handle canvas) // the layer liked it if(!layer->set_param(param_name,data)) { - warning((*iter),_("Layer rejected value for ")); + warning((*iter),strprintf(_("Layer '%s' rejected value for parameter '%s'"), + element->get_attribute("type")->get_value().c_str(), + param_name.c_str())); continue; } }