X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fvaluenode_bline.cpp;h=55b19bbcf19f2f0b6814ca560248b1e1a791e917;hb=843ac7146b30c389db9123564d0727b71c64def2;hp=a5dc1def09180ed3f4ce338b5b049bdf26568ade;hpb=f444974043946c071373c9caf7e7c85f9e1f9354;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/valuenode_bline.cpp b/synfig-core/trunk/src/synfig/valuenode_bline.cpp index a5dc1de..55b19bb 100644 --- a/synfig-core/trunk/src/synfig/valuenode_bline.cpp +++ b/synfig-core/trunk/src/synfig/valuenode_bline.cpp @@ -79,7 +79,12 @@ radial_interpolation(const Vector& a, const Vector& b, float c) affine_combo ang_combo; Real mag(mag_combo(a.mag(),b.mag(),c)); - Angle ang(ang_combo(Angle::tan(a[1],a[0]),Angle::tan(b[1],b[0]),c)); + Angle angle_a(Angle::tan(a[1],a[0])); + Angle angle_b(Angle::tan(b[1],b[0])); + float diff = Angle::deg(angle_b - angle_a).get(); + if (diff < -180) angle_b += Angle::deg(360); + else if (diff > 180) angle_a += Angle::deg(360); + Angle ang(ang_combo(angle_a, angle_b, c)); return Point( mag*Angle::cos(ang).get(),mag*Angle::sin(ang).get() ); } @@ -809,35 +814,6 @@ ValueNode_BLine::link_local_name(int i)const return etl::strprintf(_("Vertex %03d"),i+1); } -ValueNode* -ValueNode_BLine::clone(const GUID& deriv_guid)const -{ - { ValueNode* x(find_value_node(get_guid()^deriv_guid).get()); if(x)return x; } - - ValueNode_BLine* ret=new ValueNode_BLine(); - ret->set_guid(get_guid()^deriv_guid); - - std::vector::const_iterator iter; - - for(iter=list.begin();iter!=list.end();++iter) - { - if(iter->value_node->is_exported()) - ret->add(*iter); - else - { - ListEntry list_entry(*iter); - //list_entry.value_node=find_value_node(iter->value_node->get_guid()^deriv_guid).get(); - //if(!list_entry.value_node) - list_entry.value_node=iter->value_node->clone(deriv_guid); - ret->add(list_entry); - //ret->list.back().value_node=iter->value_node.clone(); - } - } - ret->set_loop(get_loop()); - - return ret; -} - String ValueNode_BLine::get_name()const { @@ -853,8 +829,7 @@ ValueNode_BLine::get_local_name()const LinkableValueNode* ValueNode_BLine::create_new()const { - assert(0); - return 0; + return new ValueNode_BLine(); } bool