X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fvaluenode_duplicate.cpp;h=540c3a99d26b65a3e0b98bf444ba17f8ea4223f0;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=61ca9eca10483674830b0d3db0c5f148840f4f78;hpb=03f9d7a946e2d2465f263349b2d6c60dd426d036;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/valuenode_duplicate.cpp b/synfig-core/trunk/src/synfig/valuenode_duplicate.cpp index 61ca9ec..540c3a9 100644 --- a/synfig-core/trunk/src/synfig/valuenode_duplicate.cpp +++ b/synfig-core/trunk/src/synfig/valuenode_duplicate.cpp @@ -6,7 +6,7 @@ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley -** Copyright (c) 2007 Chris Moore +** Copyright (c) 2007, 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 @@ -58,10 +58,10 @@ ValueNode_Duplicate::ValueNode_Duplicate(const ValueBase::Type &x): ValueNode_Duplicate::ValueNode_Duplicate(const ValueBase &x): LinkableValueNode(x.get_type()) { - set_link("from", ValueNode_Const::create(int(1))); - set_link("to", ValueNode_Const::create(x.get(int()))); - set_link("step", ValueNode_Const::create(int(1))); - index = 1; + set_link("from", ValueNode_Const::create(Real(1.0))); + set_link("to", ValueNode_Const::create(x.get(Real()))); + set_link("step", ValueNode_Const::create(Real(1.0))); + index = 1.0; } ValueNode_Duplicate* @@ -82,26 +82,24 @@ ValueNode_Duplicate::~ValueNode_Duplicate() } bool -ValueNode_Duplicate::set_link_vfunc(int i,ValueNode::Handle x) +ValueNode_Duplicate::set_link_vfunc(int i,ValueNode::Handle value) { - assert(i >= 0 && i < link_count()); + assert(i>=0 && i= 0 && i < link_count()); + assert(i>=0 && i= 0 && i < link_count()); + assert(i>=0 && i= 0 && i < link_count()); + assert(i>=0 && i= to; - } + if ((index -= step) >= to) return true; + + // at the end of the loop, leave the index at the last value that was used + index = prev; + return false; } int ValueNode_Duplicate::count_steps(Time t)const { - int from = (*from_)(t).get(int()); - int to = (*to_ )(t).get(int()); - int step = (*step_)(t).get(int()); + Real from = (*from_)(t).get(Real()); + Real to = (*to_ )(t).get(Real()); + Real step = (*step_)(t).get(Real()); if (step == 0) return 1; @@ -188,8 +189,11 @@ ValueNode_Duplicate::count_steps(Time t)const } ValueBase -ValueNode_Duplicate::operator()(Time t)const +ValueNode_Duplicate::operator()(Time t __attribute__ ((unused)))const { + if (getenv("SYNFIG_DEBUG_VALUENODE_OPERATORS")) + printf("%s:%d operator()\n", __FILE__, __LINE__); + return index; } @@ -206,7 +210,8 @@ ValueNode_Duplicate::get_local_name()const } bool -ValueNode_Duplicate::check_type(ValueBase::Type type) +ValueNode_Duplicate::check_type(ValueBase::Type type __attribute__ ((unused))) { - return type==ValueBase::TYPE_INTEGER; + // never offer this as a choice. it's used automatically by the 'Duplicate' layer. + return false; }