+ // if the new line's end didn't extend an existing line,
+ // check whether it needs to be linked to an existing duck
+ if(!extend_finish&&finish_duck&&finish_duck_value_desc)
+ switch(finish_duck_value_desc.get_value_type())
+ {
+ case synfig::ValueBase::TYPE_BLINEPOINT:
+ finish_duck_value_desc=synfigapp::ValueDesc(LinkableValueNode::Handle::cast_dynamic(finish_duck_value_desc.get_value_node()),0);
+ // fall through
+ case synfig::ValueBase::TYPE_VECTOR:
+ get_canvas_interface()->auto_export(finish_duck_value_desc);
+ if(extend_start)
+ if(finish_duck_value_node_bline&&start_duck_value_node_bline==finish_duck_value_node_bline)
+ extend_start_join_same=true;
+ else
+ extend_start_join_different=true;
+ else
+ LinkableValueNode::Handle::cast_dynamic(value_node->list.back().value_node)->
+ set_link(0,finish_duck_value_desc.get_value_node());
+ // fall through
+ default:break;
+ }