- value_node->changed();
- return value_node;
-}
-
-// This function is a phase-out hack for the timed swap value node
-etl::handle<ValueNode_Animated>
-CanvasParser::parse_timedswap(xmlpp::Element *node,Canvas::Handle canvas)
-{
- ValueNode_TimedSwap::Handle timed_swap(parse_linkable_value_node(node,canvas));
-
- assert(timed_swap);
-
- ValueNode_Animated::Handle animated(ValueNode_Animated::create(timed_swap->get_type()));
-
- animated->set_root_canvas(canvas->get_root());
-
- assert(animated);
-
- Time swap_time, swap_length;
- (*timed_swap->get_swap_time())(0).put(&swap_time);
- (*timed_swap->get_swap_length())(0).put(&swap_length);
-
- animated->new_waypoint(swap_time-swap_length,timed_swap->get_before());
- animated->new_waypoint(swap_time,timed_swap->get_after());
-
- return animated;
-}
-
-
-handle<ValueNode_Subtract>
-CanvasParser::parse_subtract(xmlpp::Element *element,Canvas::Handle canvas)
-{
- assert(element->get_name()=="subtract");
-
- handle<ValueNode_Subtract> value_node;
- handle<ValueNode> lhs,rhs,scalar;
-
- if(element->get_attribute("type"))
- {
- ValueBase::Type type=ValueBase::ident_type(element->get_attribute("type")->get_value());
-
- if(!type)
- {
- error(element,"Bad type in <subtract>");
- return ValueNode_Subtract::Handle();
- }
- value_node=ValueNode_Subtract::create(type);
- }
- else
- value_node=ValueNode_Subtract::create();
-
- if(!value_node)
- {
- error(element,strprintf(_("Unable to create <subtract>")));
- return handle<ValueNode_Subtract>();
- }
-
- //if(element->get_attribute("scalar"))
- //{
- // value_node->set_scalar(atof(element->get_attribute("scalar")->get_value().c_str()));
- //}
-
- try
- {
- if(element->get_attribute("scalar"))
- {
- // This is for compatibility with older versions of the file format
- String value(element->get_attribute("scalar")->get_value());
- if((value[0]<='9' && value[0]>='0') || value[0]=='-')
- {
- warning(element, _("Use of a real value where the ID should be is deprecated"));
- value_node->set_scalar(atof(value.c_str()));
- }
- else
- value_node->set_scalar(canvas->surefind_value_node(value));
- scalar=value_node->get_scalar();
- }
-
- if(element->get_attribute("lhs"))
- {
- lhs=canvas->surefind_value_node(element->get_attribute("lhs")->get_value());
- value_node->set_lhs(lhs);
- }