From cf2dbea77c392e29f5c359819977a8ba63667e42 Mon Sep 17 00:00:00 2001 From: Carlos Lopez Date: Fri, 27 Aug 2010 00:32:45 +0200 Subject: [PATCH] Use a map of static values instead of hard coded names. Get the parameters names from the layer parameter vocabulary. --- synfig-core/src/synfig/layer.cpp | 36 +++++++++++++++++++++++++++++++----- synfig-core/src/synfig/layer.h | 4 +++- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/synfig-core/src/synfig/layer.cpp b/synfig-core/src/synfig/layer.cpp index 17984ba..0485b34 100644 --- a/synfig-core/src/synfig/layer.cpp +++ b/synfig-core/src/synfig/layer.cpp @@ -136,10 +136,16 @@ Layer::subsys_stop() Layer::Layer(): active_(true), z_depth(0.0f), - dirty_time_(Time::end()), - z_depth_static(false) + dirty_time_(Time::end())//, + //z_depth_static(false) { _LayerCounter::counter++; + Vocab vocab=get_param_vocab(); + Vocab::const_iterator viter; + for(viter=vocab.begin();viter!=vocab.end();viter++) + { + static_params.insert(make_pair(viter->get_name(),false)); + } } Layer::LooseHandle @@ -300,7 +306,17 @@ Layer::set_param(const String ¶m, const ValueBase &value) bool Layer::set_param_static(const String ¶m, const bool x) { - SET_STATIC(z_depth,x) + Sparams::iterator iter; + + for(iter=static_params.begin();iter!=static_params.end();iter++) + { + if(iter->first == param) + { + iter->second = x; + return true; + } + } + //SET_STATIC(z_depth,x) return false; } @@ -309,7 +325,17 @@ Layer::set_param_static(const String ¶m, const bool x) bool Layer::get_param_static(const String ¶m) const { - GET_STATIC(z_depth); + + Sparams::const_iterator iter; + + for(iter=static_params.begin();iter!=static_params.end();iter++) + { + if(iter->first == param) + { + return iter->second; + } + } + //GET_STATIC(z_depth); return false; } @@ -466,7 +492,7 @@ Layer::get_param(const String & param)const if(param=="z_depth") { synfig::ValueBase ret(get_z_depth()); - ret.set_static(z_depth_static); + ret.set_static(get_param_static(param)); return ret; } return ValueBase(); diff --git a/synfig-core/src/synfig/layer.h b/synfig-core/src/synfig/layer.h index 51a47a0..19faddb 100644 --- a/synfig-core/src/synfig/layer.h +++ b/synfig-core/src/synfig/layer.h @@ -273,7 +273,9 @@ private: float z_depth; //! True if zdepth is not affected when in animation mode - bool z_depth_static; + //bool z_depth_static; + typedef std::map Sparams; + Sparams static_params; //! \writeme mutable Time dirty_time_; -- 2.7.4