X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fvaluenode_range.cpp;h=c45f369aba1eff6a935ce37ed234237e3f58c5fd;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=40104d034196636f1b9b3cb1d4a839110f511b3e;hpb=2996b84ecd9cd8776441ac0388dc30257cd21929;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/valuenode_range.cpp b/synfig-core/trunk/src/synfig/valuenode_range.cpp index 40104d0..c45f369 100644 --- a/synfig-core/trunk/src/synfig/valuenode_range.cpp +++ b/synfig-core/trunk/src/synfig/valuenode_range.cpp @@ -1,11 +1,12 @@ /* === S Y N F I G ========================================================= */ /*! \file valuenode_range.cpp -** \brief Template File +** \brief Implementation of the "Range" valuenode conversion. ** ** $Id$ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** 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 @@ -82,7 +83,7 @@ synfig::ValueNode_Range::ValueNode_Range(const ValueBase &value): break; default: assert(0); - throw runtime_error("synfig::ValueNode_Range:Bad type "+ValueBase::type_name(id)); + throw runtime_error(get_local_name()+_(":Bad type ")+ValueBase::type_local_name(id)); } assert(min_->get_type()==id); @@ -110,13 +111,12 @@ synfig::ValueNode_Range::~ValueNode_Range() unlink_all(); } -#define min(x,y) (x>y ? y : x) -#define max(x,y) (x>y ? x : y) -#define range(low,high,input) (min(high,max(low,input))) - synfig::ValueBase synfig::ValueNode_Range::operator()(Time t)const { + if (getenv("SYNFIG_DEBUG_VALUENODE_OPERATORS")) + printf("%s:%d operator()\n", __FILE__, __LINE__); + if(!min_ || !max_ || !link_) throw runtime_error(strprintf("ValueNode_Range: %s",_("Some of my parameters aren't set!"))); @@ -138,11 +138,11 @@ synfig::ValueNode_Range::operator()(Time t)const return maximum; } case ValueBase::TYPE_INTEGER: - return range((*min_)(t).get(int()), (*max_)(t).get(int()), (*link_)(t).get(int())); + return std::max((*min_)(t).get(int()), std::min((*max_)(t).get(int()), (*link_)(t).get(int()))); case ValueBase::TYPE_REAL: - return range((*min_)(t).get(Real()), (*max_)(t).get(Real()), (*link_)(t).get(Real())); + return std::max((*min_)(t).get(Real()), std::min((*max_)(t).get(Real()), (*link_)(t).get(Real()))); case ValueBase::TYPE_TIME: - return range((*min_)(t).get(Time()), (*max_)(t).get(Time()), (*link_)(t).get(Time())); + return std::max((*min_)(t).get(Time()), std::min((*max_)(t).get(Time()), (*link_)(t).get(Time()))); default: assert(0); break; @@ -153,30 +153,22 @@ synfig::ValueNode_Range::operator()(Time t)const bool ValueNode_Range::set_link_vfunc(int i,ValueNode::Handle value) { - assert(i>=0 && i<3); + assert(i>=0 && i=0 && i<3); + assert(i>=0 && i=0 && i<3); + assert(i>=0 && i=0 && i<3); + assert(i>=0 && i