X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Flayer.h;h=1e01f58ea999e766e34e750c0a750a4c9bddff5a;hb=756c0d29ac1742f231e6615f9a577e574e35a4af;hp=7937c479d020a864f4da6497b05aa1565acf9ff0;hpb=28f28705612902c15cd0702cc891fba35bf2d2df;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/layer.h b/synfig-core/trunk/src/synfig/layer.h index 7937c47..1e01f58 100644 --- a/synfig-core/trunk/src/synfig/layer.h +++ b/synfig-core/trunk/src/synfig/layer.h @@ -2,19 +2,21 @@ /*! \file layer.h ** \brief Layer Class Header ** -** $Id: layer.h,v 1.2 2005/01/24 03:08:18 darco Exp $ +** $Id$ ** ** \legal -** Copyright (c) 2002 Robert B. Quattlebaum Jr. +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2008 Chris Moore ** -** 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 */ /* ========================================================================= */ @@ -48,7 +50,7 @@ //! Sets the local name of the layer #define SYNFIG_LAYER_SET_LOCAL_NAME(class,x) const char class::local_name__[]=x; -//! Sets the categpru of the layer +//! Sets the category of the layer #define SYNFIG_LAYER_SET_CATEGORY(class,x) const char class::category__[]=x //! Sets the version string for the layer @@ -61,10 +63,10 @@ #define SYNFIG_LAYER_INIT(class) synfig::Layer* class::create() { return new class(); } //! \writeme -#define IMPORT_PLUS(x,y) if(param==#x && value.same_as(x)) { value.put(&x);{y;}return true;} +#define IMPORT_PLUS(x,y) if(param==#x && value.same_type_as(x)) { value.put(&x);{y;}return true;} //! \writeme -#define IMPORT_AS(x,y) if(param==y && value.same_as(x)) { value.put(&x); return true;} +#define IMPORT_AS(x,y) if(param==y && value.same_type_as(x)) { value.put(&x); return true;} //! \writeme #define IMPORT(x) IMPORT_AS(x,#x) @@ -76,11 +78,15 @@ #define EXPORT(x) EXPORT_AS(x,#x) //! \writeme -#define EXPORT_NAME() if(param=="Name" || param=="name" || param=="name__") { return name__; } if(param=="local_name__") { return local_name__; } +#define EXPORT_NAME() if(param=="Name" || param=="name" || param=="name__") { return name__; } if(param=="local_name__") { return dgettext("synfig",local_name__); } //! \writeme #define EXPORT_VERSION() if(param=="Version" || param=="version" || param=="version__") { return version__; } +//! 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" + /* === T Y P E D E F S ===================================================== */ /* === C L A S S E S & S T R U C T S ======================================= */ @@ -114,7 +120,7 @@ class Layer : public Node { friend class ValueNode; friend class Context; - + /* -- ** -- T Y P E S ----------------------------------------------------------- */ @@ -142,7 +148,7 @@ public: static void register_in_book(const BookEntry &); static Book& book(); - + static bool subsys_init(); static bool subsys_stop(); @@ -167,7 +173,7 @@ public: private: - /*! \c true if the layer is visible, \c is it is to be skipped + /*! \c true if the layer is visible, \c false if it is to be skipped ** \see set_active(), enable(), disable, active() */ bool active_; @@ -182,16 +188,16 @@ private: //! \writeme float z_depth_; - + //! \writeme mutable Time dirty_time_; - + //! Contains the name of the group that this layer belongs to String group_; - + //! \writeme sigc::connection parent_death_connect_; - + /* -- ** -- S I G N A L S ------------------------------------------------------- */ @@ -199,20 +205,20 @@ private: private: //! Status Changed - sigc::signal signal_status_changed_; - + sigc::signal signal_status_changed_; + //! Parameter changed - sigc::signal signal_param_changed_; + sigc::signal signal_param_changed_; //! Description Changed - sigc::signal signal_description_changed_; + sigc::signal signal_description_changed_; //! Moved - sigc::signal > signal_moved_; + sigc::signal > signal_moved_; - sigc::signal signal_added_to_group_; + sigc::signal signal_added_to_group_; - sigc::signal signal_removed_from_group_; + sigc::signal signal_removed_from_group_; /* -- ** -- S I G N A L I N T E R F A C E ------------------------------------- @@ -221,20 +227,20 @@ private: public: //! Status Changed - sigc::signal& signal_status_changed() { return signal_status_changed_; } - + sigc::signal& signal_status_changed() { return signal_status_changed_; } + //! Parameter changed sigc::signal& signal_param_changed() { return signal_param_changed_; } //! Description Changed - sigc::signal& signal_description_changed() { return signal_description_changed_;} + sigc::signal& signal_description_changed() { return signal_description_changed_;} //! Moved sigc::signal >& signal_moved() { return signal_moved_; } - sigc::signal& signal_added_to_group() { return signal_added_to_group_; } + sigc::signal& signal_added_to_group() { return signal_added_to_group_; } - sigc::signal& signal_removed_from_group() { return signal_removed_from_group_; } + sigc::signal& signal_removed_from_group() { return signal_removed_from_group_; } /* -- ** -- C O N S T R U C T O R S --------------------------------------------- @@ -257,17 +263,17 @@ public: //! Adds this layer to the given layer group void add_to_group(const String&); - + //! Removes this layer from the given layer group void remove_from_group(const String&); - + //! Removes this layer from all layer groups void remove_from_all_groups(); - + //! Gets the name of the group that this layer belongs to String get_group()const; - //! \todo writeme + //! writeme //DynamicParamList &dynamic_param_list() { return dynamic_param_list_; } //! \todo writeme @@ -275,7 +281,7 @@ public: bool connect_dynamic_param(const String& param, etl::loose_handle); bool disconnect_dynamic_param(const String& param); - + //! Enables the layer for rendering (Making it \em active) void enable() { set_active(true); } @@ -304,19 +310,25 @@ public: //! \writeme 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); - + //! Returns a handle to the Canvas to which this Layer belongs etl::loose_handle get_canvas()const; - + //! \writeme const String& get_description()const { return description_; } //! \writeme void set_description(const String& x); - + + //! Returns the layer's description if it's not empty, else its local name + const String get_non_empty_description()const { return get_description().empty() ? get_local_name() : get_description(); } + + //! Returns the localised version of the given layer parameter + const String get_param_local_name(const String ¶m_name)const; + /* -- ** -- V I R T U A L F U N C T I O N S ----------------------------------- */ @@ -327,12 +339,12 @@ public: virtual Rect get_full_bounding_rect(Context context)const; //! Returns a string containing the name of the Layer - virtual String get_name()const; + virtual String get_name()const; //! Returns a string containing the localized name of the Layer virtual String get_local_name()const; - //! Gets the paramater vocabulary + //! Gets the parameter vocabulary virtual Vocab get_param_vocab()const; //! Gets the version string for this layer @@ -375,41 +387,40 @@ public: virtual ParamList get_param_list()const; //! Sets the \a time for the selected Layer and those under it - /*! \param context Context iterator refering to next Layer. + /*! \param context Context iterator referring to next Layer. ** \param time writeme ** \see Handle::set_time() */ virtual void set_time(Context context, Time time)const; //! Sets the \a time for the selected Layer and those under it for a specific \a point - /*! \param context Context iterator refering to next Layer. + /*! \param context Context iterator referring to next Layer. ** \param time writeme ** \param point writeme ** \see Handle::set_time() ** \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 point - /*! \param context Context iterator refering to next Layer. - ** \param point Point which indicates where the desired Color should come from - ** \todo \a point should be of the type const Point \& + //! Gets the color of the Canvas at \a pos + /*! \param context Context iterator referring to next Layer. + ** \param pos Point which indicates where the Color should come from ** \see Handle::get_color() */ - virtual Color get_color(Context context, const Point &point)const; + virtual Color get_color(Context context, const Point &pos)const; //! Renders the Canvas to the given Surface in an accelerated manner - /*! \param context Context iterator refering to next Layer. + /*! \param context Context iterator referring to next Layer. ** \param surface Pointer to Surface to render to. ** \param quality The requested quality-level to render at. - ** \param rend_desc The associated RendDesc. - ** \param callback Pointer to callback object. May be NULL if there is no callback. + ** \param renddesc The associated RendDesc. + ** \param cb Pointer to callback object. May be NULL if there is no callback. ** \return \c true on success, \c false on failure ** \see Handle::accelerated_render() */ - virtual bool accelerated_render(Context context,Surface *surface,int quality, const RendDesc &rend_desc, ProgressCallback *callback)const; + virtual bool accelerated_render(Context context,Surface *surface,int quality, const RendDesc &renddesc, ProgressCallback *cb)const; //! Checks to see if a part of the layer is directly under \a point - /*! \param context Context iterator refering to next Layer. + /*! \param context Context iterator referring to next Layer. ** \param point The point to check ** \return The handle of the layer under \a point. If there is not ** a layer under \a point, then returns an empty handle. */ @@ -418,8 +429,18 @@ public: //! Duplicates the Layer virtual Handle clone(const GUID& deriv_guid=GUID())const; + //! Returns true if the layer needs to be able to examine its context. + /*! context to render itself, other than for simple blending. For + ** example, the blur layer will return true - it can't do its job + ** if it can't see its context, and the circle layer will return + ** false - rendering a circle doesn't depend on the underlying + ** context until the final blend operation. */ + virtual bool reads_context()const; + +#ifdef THIS_CODE_IS_NOT_USED //! Duplicates the Layer without duplicating the value nodes virtual Layer *simple_clone()const; +#endif /* THIS_CODE_IS_NOT_USED */ protected: