X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fvaluenode_composite.cpp;h=7e18ea026d6f301f221b77afa1a9a50ef325b456;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=327ed9ad04c074914cf639b3f39ce2f2739736a5;hpb=32eae841146d952cb5b2027dc918341b1dd262c3;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/valuenode_composite.cpp b/synfig-core/trunk/src/synfig/valuenode_composite.cpp index 327ed9a..7e18ea0 100644 --- a/synfig-core/trunk/src/synfig/valuenode_composite.cpp +++ b/synfig-core/trunk/src/synfig/valuenode_composite.cpp @@ -6,6 +6,7 @@ ** ** \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 @@ -37,6 +38,7 @@ #include "vector.h" #include "color.h" #include "segment.h" +#include "savecanvas.h" #endif @@ -88,7 +90,7 @@ synfig::ValueNode_Composite::ValueNode_Composite(const ValueBase &value): } default: assert(0); - throw Exception::BadType(ValueBase::type_name(get_type())); + throw Exception::BadType(ValueBase::type_local_name(get_type())); } } @@ -112,6 +114,9 @@ ValueNode_Composite::create_new()const ValueBase synfig::ValueNode_Composite::operator()(Time t)const { + if (getenv("SYNFIG_DEBUG_VALUENODE_OPERATORS")) + printf("%s:%d operator()\n", __FILE__, __LINE__); + switch(get_type()) { case ValueBase::TYPE_VECTOR: @@ -295,6 +300,10 @@ ValueNode_Composite::link_local_name(int i)const return _("Tangent 2"); default: + assert(0); + // notice that Composite counts from 1 and Radial Composite counts + // from 0! we need to keep it like that to correctly load old + // animations, but let's not save "c%d" format link names in future return etl::strprintf(_("C%d"),i+1); } } @@ -305,7 +314,56 @@ ValueNode_Composite::link_name(int i)const { assert(i>=0 && i= 0 && name[1]-'1' < link_count()) + return name[1]-'1'; switch(get_type()) { @@ -342,7 +400,7 @@ ValueNode_Composite::get_link_index_from_name(const String &name)const return 0; if(name[0]=='y') return 1; - if(name[0]=='z') + if(name[0]=='z') // \todo "z"? really? return 2; case ValueBase::TYPE_BLINEPOINT: if(name[0]=='p' || name=="v1" || name=="p1")