X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fsynfigapp%2Factions%2Fvaluedescblinelink.cpp;h=6f15ccb8da26e91cfcce02812e4c559347047033;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=eea351432efb5008c15336d12d3fd9e93a349f09;hpb=d90725573fe75f2819c67a5bacf00856bc800472;p=synfig.git diff --git a/synfig-studio/trunk/src/synfigapp/actions/valuedescblinelink.cpp b/synfig-studio/trunk/src/synfigapp/actions/valuedescblinelink.cpp index eea3514..6f15ccb 100644 --- a/synfig-studio/trunk/src/synfigapp/actions/valuedescblinelink.cpp +++ b/synfig-studio/trunk/src/synfigapp/actions/valuedescblinelink.cpp @@ -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 bline((*bline_value_node)(time)); + const std::vector 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::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());