X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fsynfigapp%2Fvalue_desc.h;h=1bf94b28de077d0c0483f0d8c824c921b067bdf0;hb=756c0d29ac1742f231e6615f9a577e574e35a4af;hp=5b3d4a87549842ba708d522c2c5516b9f2a9f9c7;hpb=02252941b29de64037116f4d37991a38d9ff0d94;p=synfig.git diff --git a/synfig-studio/trunk/src/synfigapp/value_desc.h b/synfig-studio/trunk/src/synfigapp/value_desc.h index 5b3d4a8..1bf94b2 100644 --- a/synfig-studio/trunk/src/synfigapp/value_desc.h +++ b/synfig-studio/trunk/src/synfigapp/value_desc.h @@ -2,19 +2,21 @@ /*! \file value_desc.h ** \brief Template Header ** -** $Id: value_desc.h,v 1.1.1.1 2005/01/07 03:34:37 darco Exp $ +** $Id$ ** ** \legal -** Copyright (c) 2002 Robert B. Quattlebaum Jr. +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2008 Chris Moore ** -** This software and associated documentation -** are CONFIDENTIAL and PROPRIETARY property of -** the above-mentioned copyright holder. +** This package is free software; you can redistribute it and/or +** modify it under the terms of the GNU General Public License as +** published by the Free Software Foundation; either version 2 of +** the License, or (at your option) any later version. ** -** You may not copy, print, publish, or in any -** other way distribute this software without -** a prior written agreement with -** the copyright holder. +** This package is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** General Public License for more details. ** \endlegal */ /* ========================================================================= */ @@ -46,14 +48,14 @@ class ValueDesc // Info for Layer parent synfig::Layer::Handle layer; synfig::String name; - + // Info for ValueNode parent synfig::ValueNode::Handle parent_value_node; int index; // Info for exported ValueNode synfig::Canvas::Handle canvas; - + public: bool operator==(const ValueDesc &rhs)const { @@ -76,7 +78,7 @@ public: return !operator==(rhs); } - + ValueDesc(synfig::Layer::Handle layer,const synfig::String& param_name): layer(layer), name(param_name) { } @@ -111,16 +113,16 @@ public: bool parent_is_linkable_value_node()const { return parent_is_value_node() && index>=0; } bool parent_is_value_node_const()const { return parent_is_value_node() && index==-1; } bool parent_is_canvas()const { return (bool)canvas; } - + bool is_value_node()const { return parent_is_value_node() || parent_is_canvas() || (parent_is_layer_param() && (bool)layer->dynamic_param_list().count(name)); } bool is_const()const { return (parent_is_layer_param() && !layer->dynamic_param_list().count(name)) || parent_is_value_node_const(); } - + synfig::Layer::Handle get_layer()const { assert(parent_is_layer_param()); return layer; } const synfig::String& get_param_name()const { assert(parent_is_layer_param()); return name; } - + synfig::ValueNode::Handle get_parent_value_node()const { assert(parent_is_value_node()); return parent_value_node; } int get_index()const { assert(parent_is_linkable_value_node()); return index; } - + const synfig::String& get_value_node_id()const { assert(parent_is_canvas()); return name; } synfig::Canvas::Handle get_canvas()const @@ -133,7 +135,7 @@ public: return parent_value_node->get_root_canvas(); return 0; } - + synfig::ValueNode::Handle get_value_node()const { @@ -142,7 +144,7 @@ public: if(parent_is_layer_param() && layer->dynamic_param_list().count(name)) return layer->dynamic_param_list().find(name)->second; if(parent_is_linkable_value_node()) - return synfig::LinkableValueNode::Handle::cast_reinterpret(parent_value_node)->get_link(index); + return (synfig::LinkableValueNode::Handle::cast_reinterpret(parent_value_node))->get_link(index); // return reinterpret_cast(parent_value_node.get())->get_link(index); return 0; } @@ -150,14 +152,15 @@ public: synfig::ValueBase get_value(synfig::Time time=0)const { - if(parent_is_value_node_const() && parent_value_node) + // if the value is constant, return that constant value (at *any* time, it doesn't matter which) + if(parent_is_value_node_const()) return (*parent_value_node)(0); if(is_value_node() && get_value_node()) return (*get_value_node())(time); if(parent_is_layer_param() && layer) return layer->get_param(name); return synfig::ValueBase(); - } + } synfig::ValueBase::Type get_value_type()const @@ -167,12 +170,15 @@ public: return value_node->get_type(); return get_value().get_type(); } - + bool is_exported()const { return is_value_node() && get_value_node()->is_exported(); } + + synfig::String + get_description(bool show_exported_name = true)const; }; // END of class ValueDesc }; // END of namespace synfigapp_instance