// Info for ValueNode parent
synfig::ValueNode::Handle parent_value_node;
int index;
// Info for exported ValueNode
synfig::Canvas::Handle canvas;
// Info for ValueNode parent
synfig::ValueNode::Handle parent_value_node;
int index;
// Info for exported ValueNode
synfig::Canvas::Handle canvas;
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 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(); }
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::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::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
const synfig::String& get_value_node_id()const { assert(parent_is_canvas()); return name; }
synfig::Canvas::Handle get_canvas()const
if(parent_is_layer_param() && layer)
return layer->get_param(name);
return synfig::ValueBase();
if(parent_is_layer_param() && layer)
return layer->get_param(name);
return synfig::ValueBase();