X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fvaluenode_exp.cpp;h=05d4b6350629794973fda9f3d8de1a44f8602f1c;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=b553b1bca31ea037fe065aed4f35a47221d109ee;hpb=d8a0d032dc97e5c058ef37b79e245689b2ae7c10;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/valuenode_exp.cpp b/synfig-core/trunk/src/synfig/valuenode_exp.cpp index b553b1b..05d4b63 100644 --- a/synfig-core/trunk/src/synfig/valuenode_exp.cpp +++ b/synfig-core/trunk/src/synfig/valuenode_exp.cpp @@ -1,11 +1,12 @@ /* === S Y N F I G ========================================================= */ /*! \file valuenode_exp.cpp -** \brief Template File +** \brief Implementation of the "Exponential" valuenode conversion. ** ** $Id$ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2008 Chris Moore ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -55,11 +56,11 @@ ValueNode_Exp::ValueNode_Exp(const ValueBase &value): switch(value.get_type()) { case ValueBase::TYPE_REAL: - set_link("exp",ValueNode_Const::create(Real(1))); + set_link("exp",ValueNode_Const::create(Real(0))); set_link("scale",ValueNode_Const::create(value.get(Real()))); break; default: - throw Exception::BadType(ValueBase::type_name(value.get_type())); + throw Exception::BadType(ValueBase::type_local_name(value.get_type())); } DCAST_HACK_ENABLE(); @@ -85,6 +86,9 @@ ValueNode_Exp::~ValueNode_Exp() ValueBase ValueNode_Exp::operator()(Time t)const { + if (getenv("SYNFIG_DEBUG_VALUENODE_OPERATORS")) + printf("%s:%d operator()\n", __FILE__, __LINE__); + return (exp((*exp_)(t).get(Real())) * (*scale_)(t).get(Real())); } @@ -102,20 +106,14 @@ ValueNode_Exp::get_local_name()const } bool -ValueNode_Exp::set_link_vfunc(int i,ValueNode::Handle x) +ValueNode_Exp::set_link_vfunc(int i,ValueNode::Handle value) { - assert(i==0 || i==1); - if(i==0) - { - exp_=x; - signal_child_changed()(i);signal_value_changed()(); - return true; - } - if(i==1) + assert(i>=0 && i=0 && i=0 && i=0 && i