**
** \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
// waypoint's value
if (type == ValueBase::TYPE_ANGLE)
{
- Canvas::Handle parent = canvas;
- while (!parent->is_root())
- parent = parent->parent();
-
- if (parent->get_version() == "0.1")
+ if (canvas->get_version() == "0.1")
{
bool first = true;
Real angle, prev = 0;
if (first)
first = false;
else if (iter->get_value_node()->get_name() == "constant")
+ {
if (angle - prev > 180)
{
while (angle - prev > 180) angle -= 360;
while (prev - angle > 180) angle += 360;
iter->set_value(Angle::deg(angle));
}
+ }
prev = angle;
}
}
}
}
+ // pre 0.4 canvases had *calctangent outputs scaled down by 0.5 for some reason
+ if (element->get_name() == "blinecalctangent" || element->get_name() == "segcalctangent")
+ {
+ String version(canvas->get_version());
+ 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 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"));