Remove .gitignore do nothing is ignored.
[synfig.git] / synfig-studio / trunk / src / synfigapp / actions / valuedescblinelink.cpp
index eea3514..6f15ccb 100644 (file)
@@ -55,7 +55,7 @@ using namespace Action;
 /* === M A C R O S ========================================================= */
 
 ACTION_INIT(Action::ValueDescBLineLink);
-ACTION_SET_NAME(Action::ValueDescBLineLink,"value_desc_bline_link");
+ACTION_SET_NAME(Action::ValueDescBLineLink,"ValueDescBLineLink");
 ACTION_SET_LOCAL_NAME(Action::ValueDescBLineLink,N_("Link to BLine"));
 ACTION_SET_TASK(Action::ValueDescBLineLink,"connect");
 ACTION_SET_CATEGORY(Action::ValueDescBLineLink,Action::CATEGORY_BEZIER);
@@ -165,12 +165,15 @@ Action::ValueDescBLineLink::prepare()
        ValueNode_DynamicList::Handle bline_value_node(ValueNode_DynamicList::Handle::cast_dynamic(value_desc.get_parent_value_node()));
        bool loop(bline_value_node->get_loop());
        int loop_adjust(loop ? 0 : -1);
-       const std::vector<ValueBase> bline((*bline_value_node)(time));
+       const std::vector<ValueBase> bline((*bline_value_node)(time).get_list());
        int size = bline.size();
        Real amount = (index + origin + loop_adjust) / (size + loop_adjust);
        LinkableValueNode::Handle calculated_value_node;
        Action::Handle action;
 
+       ValueNode::Handle loop_value_node(ValueNode_Const::create(loop));
+       ValueNode::Handle amount_value_node(ValueNode_Const::create(amount));
+
        for (std::list<ValueDesc>::iterator iter = value_desc_list.begin(); iter != value_desc_list.end(); ++iter)
        {
                ValueDesc& value_desc(*iter);
@@ -186,6 +189,8 @@ Action::ValueDescBLineLink::prepare()
                                calculated_value_node = ValueNode_BLineCalcTangent::create(ValueBase::TYPE_VECTOR);
                        else if (link_name == "width")
                                calculated_value_node = ValueNode_BLineCalcWidth::create(ValueBase::TYPE_REAL);
+                       else if (link_name == "point")
+                               calculated_value_node = ValueNode_BLineCalcVertex::create(ValueBase::TYPE_VECTOR);
                        else
                        {
                                synfig::warning("can't link '%s'", link_name.c_str());
@@ -240,6 +245,9 @@ Action::ValueDescBLineLink::prepare()
                        // REAL layer parameter
                        else if (value_desc.get_value_type() == ValueBase::TYPE_REAL)
                                calculated_value_node = ValueNode_BLineCalcWidth::create(ValueBase::TYPE_REAL);
+                       // ANGLE layer parameter
+                       else if (value_desc.get_value_type() == ValueBase::TYPE_ANGLE)
+                               calculated_value_node = ValueNode_BLineCalcTangent::create(ValueBase::TYPE_ANGLE);
                        else
                                continue;
 
@@ -250,9 +258,9 @@ Action::ValueDescBLineLink::prepare()
                else
                        continue;
 
-               calculated_value_node->set_link("bline",  bline_value_node);
-               calculated_value_node->set_link("loop",   ValueNode_Const::create(loop));
-               calculated_value_node->set_link("amount", ValueNode_Const::create(amount));
+               calculated_value_node->set_link("bline",  bline_value_node );
+               calculated_value_node->set_link("loop",   loop_value_node  );
+               calculated_value_node->set_link("amount", amount_value_node);
 
                action->set_param("canvas", get_canvas());
                action->set_param("canvas_interface", get_canvas_interface());