X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Fsrc%2Fsynfig%2Fvaluenode_pow.cpp;h=0072d1957a6f5145d7f8db550d97fd3e8df27c43;hb=2b2950e88fb6c4bfa36ec91eb86de33c6c27fafe;hp=fa00618cfcae5c195b5b1d06a8efbcbd72cd1d9e;hpb=a095981e18cc37a8ecc7cd237cc22b9c10329264;p=synfig.git diff --git a/synfig-core/src/synfig/valuenode_pow.cpp b/synfig-core/src/synfig/valuenode_pow.cpp index fa00618..0072d19 100644 --- a/synfig-core/src/synfig/valuenode_pow.cpp +++ b/synfig-core/src/synfig/valuenode_pow.cpp @@ -54,6 +54,8 @@ using namespace synfig; ValueNode_Pow::ValueNode_Pow(const ValueBase &x): LinkableValueNode(x.get_type()) { + Vocab ret(get_children_vocab()); + set_children_vocab(ret); Real value(x.get(Real())); Real infinity(999999.0); Real epsilon(0.000001); @@ -108,47 +110,6 @@ ValueNode_Pow::get_link_vfunc(int i)const return 0; } -int -ValueNode_Pow::link_count()const -{ - return 4; -} - -String -ValueNode_Pow::link_local_name(int i)const -{ - assert(i>=0 && i=0 && i 0) //0^x=0 return Real(0); else + { if ( ( ((int) power) % 2 != 0) && (base < 0) ) //(-0)^(-odd)=-inf return -infinite; else return infinite; - + } + } if (base <= epsilon && ((int) power) != power) //negative number to fractional power -> undefined power = ((int) power); //so round off power to nearest integer @@ -202,3 +166,34 @@ ValueNode_Pow::check_type(ValueBase::Type type) { return type==ValueBase::TYPE_REAL; } + +LinkableValueNode::Vocab +ValueNode_Pow::get_children_vocab_vfunc()const +{ + if(children_vocab.size()) + return children_vocab; + + LinkableValueNode::Vocab ret; + + ret.push_back(ParamDesc(ValueBase(),"base") + .set_local_name(_("Base")) + .set_description(_("The base to be raised to the power")) + ); + + ret.push_back(ParamDesc(ValueBase(),"power") + .set_local_name(_("Power")) + .set_description(_("The power used to raise the base")) + ); + + ret.push_back(ParamDesc(ValueBase(),"epsilon") + .set_local_name(_("Epsilon")) + .set_description(_("Value used to compare base or power with zero ")) + ); + + ret.push_back(ParamDesc(ValueBase(),"infinite") + .set_local_name(_("Infinite")) + .set_description(_("Returned value when result tends to infinite")) + ); + + return ret; +}