#pragma once #ifndef TPARAM_UI_CONCEPT_H #define TPARAM_UI_CONCEPT_H #include "tparam.h" #include #include //*********************************************************************************************** // TParamUIConcept definition //*********************************************************************************************** //! Defines the User Interface Types available for a group of TParam objects. /*! A User Interface Concept is used to associate parameters to the way they should be interactively represented. For example, a TDoubleParamP may be used to represent multiple objects, such as lengths or angles; a couple of TPointParamP may represent vectors, and so on. Observe that each entry in the list is associated to a specific struct of parameter objects. \n\n The list in the Type enum provides all the interface types currently supported by Toonz. */ class TParamUIConcept { public: // Associated with each specific types are the structure the m_params member will need to hold. // The mandatory parameters are in square brackets. enum Type { NONE = 0, RADIUS, // Distance from a point (radius). Represented by { [TDoubleParamP], TPointParamP } WIDTH, // Width, as distance from a line with given angle. { [TDoubleParamP], TDoubleParamP } ANGLE, // An angle. { [TDoubleParamP] } POINT, // A Point. { [TPointParamP] } POINT_2, // A Point given its X and Y coordinates. { [2 TDoubleParamP] } VECTOR, // A Vector. { [TPointParamP], TPointParamP } POLAR, // A Vector in polar coordinates, from the origin. { [2 TDoubleParamP] } SIZE, // Size, shown with a rect with P00 on the origin. { [TDoubleParamP], TDoubleParamP } QUAD, // A Quadrilateral. { [4 TPointParamP] } RECT, // A Rect, with width, height and center. { [2 TDoubleParamP], TPointParamP } DIAMOND, // A diagonally laid square. { [TDoubleParamP] } TYPESCOUNT }; public: Type m_type; //!< Concept identifier std::string m_label; //!< Name to show on editing std::vector m_params; //!< Associated parameters }; #endif // TPARAM_UI_CONCEPT_H