X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fsynfigapp%2Fvalue_desc.h;fp=synfig-studio%2Ftrunk%2Fsrc%2Fsynfigapp%2Fvalue_desc.h;h=0000000000000000000000000000000000000000;hb=a095981e18cc37a8ecc7cd237cc22b9c10329264;hp=ccc562a101a3d7fd46218c8745bdc12fe6e77844;hpb=9459638ad6797b8139f1e9f0715c96076dbf0890;p=synfig.git diff --git a/synfig-studio/trunk/src/synfigapp/value_desc.h b/synfig-studio/trunk/src/synfigapp/value_desc.h deleted file mode 100644 index ccc562a..0000000 --- a/synfig-studio/trunk/src/synfigapp/value_desc.h +++ /dev/null @@ -1,201 +0,0 @@ -/* === S Y N F I G ========================================================= */ -/*! \file value_desc.h -** \brief Template Header -** -** $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 -** published by the Free Software Foundation; either version 2 of -** the License, or (at your option) any later version. -** -** 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 -*/ -/* ========================================================================= */ - -/* === S T A R T =========================================================== */ - -#ifndef __SYNFIG_APP_VALUE_DESC_H -#define __SYNFIG_APP_VALUE_DESC_H - -/* === H E A D E R S ======================================================= */ - -#include -#include -#include -#include -#include -#include -#include - -/* === M A C R O S ========================================================= */ - -/* === T Y P E D E F S ===================================================== */ - -/* === C L A S S E S & S T R U C T S ======================================= */ - -namespace synfigapp { - -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; // -2 if it's a waypoint, -1 if it's const, >=0 if it's LinkableValueNode - synfig::Time waypoint_time; - - // Info for exported ValueNode - synfig::Canvas::Handle canvas; - -public: - bool operator==(const ValueDesc &rhs)const - { - if((layer||rhs.layer) && layer!=rhs.layer) - return false; - if((!name.empty()||!rhs.name.empty()) && name!=rhs.name) - return false; - if(layer) - return true; - if((canvas||rhs.canvas) && canvas!=rhs.canvas) - return false; - if((parent_value_node||rhs.parent_value_node) && parent_value_node!=rhs.parent_value_node) - return false; - if(index!=rhs.index) - return false; - return true; - } - bool operator!=(const ValueDesc &rhs)const - { - return !operator==(rhs); - } - - - ValueDesc(synfig::Layer::Handle layer,const synfig::String& param_name): - layer(layer), - name(param_name) { } - - ValueDesc(synfig::Layer::LooseHandle layer,const synfig::String& param_name): - layer(layer), - name(param_name) { } - - ValueDesc(synfig::LinkableValueNode::Handle parent_value_node,int index): - parent_value_node(parent_value_node), - index(index) { } - -// ValueDesc(synfig::LinkableValueNode::Handle parent_value_node,const synfig::String& param_name): -// parent_value_node(parent_value_node), -// index(parent_value_node->get_link_index_from_name(param_name)) { } - - ValueDesc(synfig::ValueNode_Animated::Handle parent_value_node,synfig::Time waypoint_time): - parent_value_node(parent_value_node), - index(-2), - waypoint_time(waypoint_time) { } - - ValueDesc(synfig::Canvas::Handle canvas,const synfig::String& name): - name(name), - canvas(canvas) { } - - ValueDesc(synfig::ValueNode_Const::Handle parent_value_node): - parent_value_node(parent_value_node), - index(-1) { } - - ValueDesc() { } - - bool is_valid()const { return layer || parent_value_node || canvas; } - operator bool()const { return is_valid(); } - - bool parent_is_layer_param()const { return (bool)layer; } - bool parent_is_value_node()const { return (bool)parent_value_node; } - 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_waypoint()const { return parent_is_value_node() && index==-2; } - 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; } - synfig::Time get_waypoint_time()const { assert(parent_is_waypoint()); return waypoint_time; } - - const synfig::String& get_value_node_id()const { assert(parent_is_canvas()); return name; } - - synfig::Canvas::Handle get_canvas()const - { - if(canvas) - return canvas; - if(layer) - return layer->get_canvas(); - if(parent_value_node) - return parent_value_node->get_root_canvas(); - return 0; - } - - synfig::ValueNode::Handle - get_value_node()const - { - if(parent_is_canvas()) - return canvas->find_value_node(name); - 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 reinterpret_cast(parent_value_node.get())->get_link(index); - if(parent_is_value_node_const()) - return parent_value_node; - if(parent_is_waypoint()) - return (synfig::ValueNode_Animated::Handle::cast_reinterpret(parent_value_node))->find(waypoint_time)->get_value_node(); - return 0; - } - - synfig::ValueBase - get_value(synfig::Time time=0)const - { - // 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 - { - synfig::ValueNode::Handle value_node=get_value_node(); - if(value_node) - 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 - -/* === E N D =============================================================== */ - -#endif