Added copyright lines for files I've edited this year.
[synfig.git] / synfig-studio / trunk / src / synfigapp / value_desc.h
index 867306a..1bf94b2 100644 (file)
@@ -2,10 +2,11 @@
 /*!    \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-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
@@ -47,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
        {
@@ -77,7 +78,7 @@ public:
                return !operator==(rhs);
        }
 
-       
+
        ValueDesc(synfig::Layer::Handle layer,const synfig::String& param_name):
                layer(layer),
                name(param_name) { }
@@ -112,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
@@ -134,7 +135,7 @@ public:
                        return parent_value_node->get_root_canvas();
                return 0;
        }
-       
+
        synfig::ValueNode::Handle
        get_value_node()const
        {
@@ -143,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<synfig::LinkableValueNode*>(parent_value_node.get())->get_link(index);
                return 0;
        }
@@ -151,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
@@ -168,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