X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Fsrc%2Fsynfig%2Flayer.h;h=a867197907b6c208f37071153f54d4610b4d9043;hb=d43ed398fd84b93b96eb91d91dafdf65c80537e6;hp=80e50f1b138de7a42f7f238c2637a718d9196a21;hpb=4d106ef7cccca26ba8a588a3ae9f722e8ca70df6;p=synfig.git diff --git a/synfig-core/src/synfig/layer.h b/synfig-core/src/synfig/layer.h index 80e50f1..a867197 100644 --- a/synfig-core/src/synfig/layer.h +++ b/synfig-core/src/synfig/layer.h @@ -81,6 +81,7 @@ if (param==#x && value.same_type_as(x)) \ { \ value.put(&x); \ + set_param_static(#x,value.get_static()); \ { \ y; \ } \ @@ -92,6 +93,7 @@ if (param==y && value.same_type_as(x)) \ { \ value.put(&x); \ + set_param_static(y,value.get_static()); \ return true; \ } @@ -102,7 +104,11 @@ //! Exports a parameter 'x' if param is same type as given 'y' #define EXPORT_AS(x,y) \ if (param==y) \ - return ValueBase(x); + { \ + synfig::ValueBase ret(x); \ + ret.set_static(get_param_static(y)); \ + return ret; \ + } //! Exports a parameter if it is the same type as value #define EXPORT(x) \ @@ -123,6 +129,19 @@ //! This is used as the category for layer book entries which represent aliases of layers. //! It prevents these layers showing up in the menu. #define CATEGORY_DO_NOT_USE "Do Not Use" +/* +//! x=variable name, y=static bool value +#define SET_STATIC(x,y) \ + if(param==#x && x ## _static != y) \ + { \ + x ## _static = y; \ + return true; \ + } + +#define GET_STATIC(x) \ + if(param==#x) \ + return x ## _static; \ +*/ /* === T Y P E D E F S ===================================================== */ @@ -251,7 +270,11 @@ private: String description_; //! The depth parameter of the layer in the layer stack - float z_depth_; + float z_depth; + + //! True if zdepth is not affected when in animation mode + typedef std::map Sparams; + Sparams static_params; //! \writeme mutable Time dirty_time_; @@ -371,13 +394,13 @@ public: int get_depth()const; //! Gets the non animated z depth of the layer - float get_z_depth()const { return z_depth_; } + float get_z_depth()const { return z_depth; } //! Gets the z depth of the layer at a time t float get_z_depth(const synfig::Time& t)const; //! Sets the z depth of the layer (non animated) - void set_z_depth(float x) { z_depth_=x; } + void set_z_depth(float x) { z_depth=x; } //! Sets the Canvas that this Layer is a part of void set_canvas(etl::loose_handle canvas); @@ -446,6 +469,10 @@ public: */ virtual bool set_param(const String ¶m, const ValueBase &value); + virtual bool set_param_static(const String ¶m, const bool x); + virtual bool get_param_static(const String ¶m) const; + virtual void fill_static(Vocab vocab); + //! Sets a list of parameters virtual bool set_param_list(const ParamList &); @@ -459,7 +486,7 @@ public: //! Get a list of all of the parameters and their values virtual ParamList get_param_list()const; - //! Sets the \a time for the selected Layer and those under it + //! Sets the \a time for the Layer and those under it /*! \param context Context iterator referring to next Layer. ** \param time writeme ** \see Context::set_time() @@ -474,7 +501,7 @@ public: ** \todo \a point should be of the type const Point \& */ virtual void set_time(Context context, Time time, const Point &point)const; - //! Gets the color of the Canvas at \a pos + //! Gets the blend color of the Layer in the context at \a pos /*! \param context Context iterator referring to next Layer. ** \param pos Point which indicates where the Color should come from ** \see Context::get_color()