X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Flayer.cpp;h=4b99ed0ab34d164370a8c1c0faecf3da6ff6a867;hb=c74ce4738eff208de3bef4b63929b6975a896e93;hp=7d150195e603b33d421b82d6a58bb23bce00c5dc;hpb=28f28705612902c15cd0702cc891fba35bf2d2df;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/layer.cpp b/synfig-core/trunk/src/synfig/layer.cpp index 7d15019..4b99ed0 100644 --- a/synfig-core/trunk/src/synfig/layer.cpp +++ b/synfig-core/trunk/src/synfig/layer.cpp @@ -2,19 +2,20 @@ /*! \file layer.cpp ** \brief Layer class implementation ** -** $Id: layer.cpp,v 1.2 2005/01/24 03:08:17 darco Exp $ +** $Id$ ** ** \legal -** Copyright (c) 2002 Robert B. Quattlebaum Jr. +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley ** -** 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 */ /* ========================================================================= */ @@ -132,7 +133,7 @@ synfig::Layer::create(const String &name) { return Layer::LooseHandle(new Layer_Mime(name)); } - + Layer* layer(book()[name].factory()); return Layer::LooseHandle(layer); } @@ -145,15 +146,15 @@ synfig::Layer::~Layer() remove_child(dynamic_param_list_.begin()->second.get()); dynamic_param_list_.erase(dynamic_param_list_.begin()); } - + remove_from_all_groups(); - + parent_death_connect_.disconnect(); begin_delete(); } void -synfig::Layer::set_canvas(etl::loose_handle x) +synfig::Layer::set_canvas(etl::loose_handle x) { if(canvas_!=x) { @@ -212,7 +213,7 @@ Layer::set_description(const String& x) if(description_!=x) { description_=x; - signal_description_changed_(); + signal_description_changed_(); } } @@ -223,19 +224,19 @@ Layer::connect_dynamic_param(const String& param, etl::loose_handle v if(previous==value_node) return true; - + dynamic_param_list_[param]=ValueNode::Handle(value_node); - + if(previous) remove_child(previous.get()); - + add_child(value_node.get()); - + if(!value_node->is_exported() && get_canvas()) { value_node->set_parent_canvas(get_canvas()); } - + changed(); return true; } @@ -265,7 +266,7 @@ Layer::on_changed() bool Layer::set_param(const String ¶m, const ValueBase &value) { - if(param=="z_depth" && value.same_as(z_depth_)) + if(param=="z_depth" && value.same_type_as(z_depth_)) { z_depth_=value.get(z_depth_); return true; @@ -302,16 +303,16 @@ Layer::Handle Layer::clone(const GUID& deriv_guid) const { if(!book().count(get_name())) return 0; - + //Layer *ret = book()[get_name()].factory();//create(get_name()).get(); Handle ret = create(get_name()).get(); - + ret->group_=group_; //ret->set_canvas(get_canvas()); ret->set_description(get_description()); ret->set_active(active()); ret->set_guid(get_guid()^deriv_guid); - + //ret->set_param_list(get_param_list()); // Process the parameter list sothat // we can duplicate any inlinecanvases @@ -320,10 +321,10 @@ Layer::clone(const GUID& deriv_guid) const { if(dynamic_param_list().count(iter->first)==0 && iter->second.get_type()==ValueBase::TYPE_CANVAS) { - + // This parameter is a canvas. We need a close look. Canvas::Handle canvas(iter->second.get(Canvas::Handle())); - if(canvas->is_inline()) + if(canvas && canvas->is_inline()) { // This parameter is an inlinecanvas! we need to clone it // before we set it as aparameter. @@ -333,11 +334,11 @@ Layer::clone(const GUID& deriv_guid) const continue; } } - + // This is a normal parameter,go ahead and set it. ret->set_param(iter->first, iter->second); } - + // Duplicate the dynamic paramlist, but only the exported data nodes DynamicParamList::const_iterator iter; for(iter=dynamic_param_list().begin();iter!=dynamic_param_list().end();++iter) @@ -354,7 +355,7 @@ Layer::clone(const GUID& deriv_guid) const continue; } } - + if(iter->second->is_exported()) ret->connect_dynamic_param(iter->first,iter->second); else @@ -362,7 +363,7 @@ Layer::clone(const GUID& deriv_guid) const } //ret->set_canvas(0); - + return ret; } @@ -521,10 +522,10 @@ Layer::get_times_vfunc(Node::time_set &set) const { DynamicParamList::const_iterator i = dynamic_param_list_.begin(), end = dynamic_param_list_.end(); - + for(; i != end; ++i) { - const Node::time_set &tset = i->second->get_times(); + const Node::time_set &tset = i->second->get_times(); set.insert(tset.begin(),tset.end()); } } @@ -540,14 +541,14 @@ Layer::add_to_group(const String&x) group_=x; signal_added_to_group()(group_); } - + void Layer::remove_from_group(const String&x) { if(group_==x) remove_from_all_groups(); } - + void Layer::remove_from_all_groups() { @@ -556,7 +557,7 @@ Layer::remove_from_all_groups() signal_removed_from_group()(group_); group_.clear(); } - + String Layer::get_group()const {