**
** \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
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"))
{
}
}
+ String version(canvas->get_version());
for (int i = 0; i < value_node->link_count(); i++)
{
- if (!c[i] &&
- // the 'width' parameter of <stripes> 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 <stripes> 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,
}
}
+ // 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<LinkableValueNode> 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;
}
String param_name=child->get_attribute("name")->get_value();
+ // SVN r2013 and r2014 renamed all 'pos' and 'offset' parameters to 'origin'
+ // 'pos' and 'offset' will appear in old .sif files; handle them correctly
+ if (param_name == "pos" || param_name == "offset")
+ param_name = "origin";
+
if(child->get_attribute("use"))
{
// If the "use" attribute is used, then the
String str= child->get_attribute("use")->get_value();
- if(layer->get_param(param_name).get_type()==ValueBase::TYPE_CANVAS)
+ if (str.empty())
+ error(child,_("Empty use=\"\" value in <param>"));
+ else if(layer->get_param(param_name).get_type()==ValueBase::TYPE_CANVAS)
{
if(!layer->set_param(param_name,canvas->surefind_canvas(str)))
error((*iter),_("Layer rejected canvas link"));
handle<ValueNode> 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)
// the layer liked it
if(!layer->set_param(param_name,data))
{
- warning((*iter),_("Layer rejected value for <param>"));
+ warning((*iter),strprintf(_("Layer '%s' rejected value for parameter '%s'"),
+ element->get_attribute("type")->get_value().c_str(),
+ param_name.c_str()));
continue;
}
}