X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Fsrc%2Fsynfig%2Fparamdesc.h;fp=synfig-core%2Fsrc%2Fsynfig%2Fparamdesc.h;h=2e0f0ad86f81db29788dc2fd4ac302bea1345bd5;hb=a095981e18cc37a8ecc7cd237cc22b9c10329264;hp=0000000000000000000000000000000000000000;hpb=9459638ad6797b8139f1e9f0715c96076dbf0890;p=synfig.git diff --git a/synfig-core/src/synfig/paramdesc.h b/synfig-core/src/synfig/paramdesc.h new file mode 100644 index 0000000..2e0f0ad --- /dev/null +++ b/synfig-core/src/synfig/paramdesc.h @@ -0,0 +1,226 @@ +/* === S Y N F I G ========================================================= */ +/*! \file paramdesc.h +** \brief ParamDesc Class Implementation +** +** $Id$ +** +** \legal +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** +** 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. +** +** 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 +*/ +/* ========================================================================= */ + +/* === S T A R T =========================================================== */ + +#ifndef __SYNFIG_PARAMDESC_H +#define __SYNFIG_PARAMDESC_H + +/* === H E A D E R S ======================================================= */ + +#include "string.h" +#include "real.h" +#include "color.h" +#include + +/* === M A C R O S ========================================================= */ + +/* === T Y P E D E F S ===================================================== */ + +/* === C L A S S E S & S T R U C T S ======================================= */ + +namespace synfig { + +class ValueBase; + +/*! \class ParamDesc +** \brief Parameter Description Class +** \todo writeme +*/ +class ParamDesc +{ +public: + + //! \writeme + struct EnumData + { + int value; + String name; + String local_name; + EnumData(int value, const String &name, const String &local_name): + value(value), + name(name), + local_name(local_name) + { + } + }; + + /* + -- ** -- D A T A ------------------------------------------------------------- + */ + +private: + String name_; //! The actual parameter name + String local_name_; //! Localized name + String desc_; //! Short description of parameter (Think tooltops) + String group_; //! Which group this parameter is a member of (optional) + String hint_; //! Parameter hint + String origin_; //! Parameter origin + String connect_; + String box_; + Real scalar_; //! Scalar value for visual editing + bool critical_; + bool hidden_; + bool invisible_duck_; + bool is_distance_; + bool animation_only_; + + std::list enum_list_; + + /* + -- ** -- C O N S T R U C T O R S --------------------------------------------- + */ + +public: + + ParamDesc(const String &a="IM_A_BUG_SO_REPORT_ME"): + name_ (a), + local_name_ (a), + scalar_ (1.0), + critical_ (true), + hidden_ (false), + invisible_duck_ (false), + is_distance_ (false), + animation_only_ (false) + { } + + ParamDesc(const ValueBase&, const String &a); + + ParamDesc(synfig::Color::BlendMethod, const String &a); + + + /* + -- ** -- M E M B E R F U N C T I O N S ------------------------------------- + */ + +public: + + //! \writeme + const std::list &get_enum_list()const { return enum_list_; } + + //! Sets the localized name of the parameter. + ParamDesc &set_local_name(const String &n) { local_name_=n; return *this; } + + //! Sets the localized description of the parameter. + ParamDesc &set_description(const String &d) { desc_=d; return *this; } + + //! Sets the group that this parameter is a member of + ParamDesc &set_group(const String &n) { group_=n; return *this; } + + //! Sets a "hint" for the parameter. + ParamDesc &set_hint(const String &h) { hint_=h; return *this; } + + //! \writeme + ParamDesc &set_connect(const String &h) { connect_=h; return *this; } + + //! \writeme + ParamDesc &set_box(const String &h) { box_=h; return *this; } + + //! Sets a flag regarding the duck visibility + ParamDesc &set_invisible_duck(bool x=true) { invisible_duck_=x; return *this; } + + //! Returns the flag regarding duck visibility + bool get_invisible_duck() { return invisible_duck_; } + + + //! \writeme + ParamDesc &set_animation_only(bool x=true) { animation_only_=x; return *this; } + + //! \writeme + bool get_animation_only() { return animation_only_; } + + + //! Sets which parameter is to be used as the origin when the user edits visually. + ParamDesc &set_origin(const String &h) { origin_=h; return *this; } + + //! Sets the scalar value for the parameter + /*! This value determines how the value is to be presented + ** to the user when editing visually. */ + ParamDesc &set_scalar(const Real &n) { scalar_=n; return *this; } + + //! Marks the parameter as not necessary for saving or copying + ParamDesc ¬_critical() { critical_=false; return *this; } + + //! \writeme + ParamDesc &hidden() { hidden_=true; return *this; } + + //! Marks the parameter as only readable. Implies not_critical() + /*! \todo This function needs to be written, as it is only a stub */ + ParamDesc &read_only() { return *this; } + + //! Marks the parameter as only writable. Implies not_critical() + /*! \todo This function needs to be written, as it is only a stub */ + ParamDesc &write_only() { return *this; } + + //! Adds a description of a possible enumeration value + /*! Only relevant if the parameter is of an integer type and hint set to \c "enum" . */ + ParamDesc &add_enum_value(int val, const String &enum_name,const String &enum_local_name) + { enum_list_.push_back(EnumData(val,enum_name,enum_local_name)); return *this; } + + //! Returns the localized name of the parameter + const String &get_local_name()const { return local_name_; } + + //! Returns the name of the parameter + const String &get_name()const { return name_; } + + //! Returns the localized description of the parameter + const String &get_description()const { return desc_; } + + //! Returns the parameter's group + const String &get_group()const { return group_; } + + //! Returns a "hint" about the parameter, regarding how it is to be displayed to the user + const String &get_hint()const { return hint_; } + + //! Returns the name of the parameter that is defined as the "origin". Used for visual editing. + const String &get_origin()const { return origin_; } + + //! \writeme + const String &get_connect()const { return connect_; } + + //! \writeme + const String &get_box()const { return box_; } + + //! Returns the scalar value for the parameter. Used for visual editing. + const Real &get_scalar()const { return scalar_; } + + //! Returns \c true if the layer is critical, \c false otherwise. + bool get_critical()const { return critical_; } + + //! Returns \c true if the layer is hidden, \c false otherwise. + bool get_hidden()const { return hidden_; } + + + + ParamDesc& set_is_distance(bool x=true) { is_distance_=x; return *this;} + bool get_is_distance()const { return is_distance_; } +}; // END of class ParamDesc + +class ParamVocab : public std::list< ParamDesc > +{ +}; + +}; // END of namespace synfig + +/* === E N D =============================================================== */ + +#endif