X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Fdevel-api%2Fvisual-factory%2Fvisual-base.h;h=54a03105b2b80dc12d7320dab1a689900f6ceaa4;hp=2cbb0b7b43b704747cf4ce89f9a4af71c1b87dec;hb=6c3063e269a7f2d370c0ad45efde3eeb38dac3a1;hpb=97d688bcdfb692dd2ff535c1965077dd747cfcf6 diff --git a/dali-toolkit/devel-api/visual-factory/visual-base.h b/dali-toolkit/devel-api/visual-factory/visual-base.h index 2cbb0b7..54a0310 100644 --- a/dali-toolkit/devel-api/visual-factory/visual-base.h +++ b/dali-toolkit/devel-api/visual-factory/visual-base.h @@ -1,7 +1,7 @@ #ifndef DALI_TOOLKIT_VISUAL_BASE_H #define DALI_TOOLKIT_VISUAL_BASE_H /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,12 +37,45 @@ class Base; namespace Visual { + /** - * @brief Visual provides a renderer for rendering the controls. A control may have multiple visuals. + * @brief A Visual provides a renderer for drawing a control component. A control may have multiple visuals. * - * Visuals reuses geometry, shader etc. across controls and manages the renderer and texture sets to exist only when control is on-stage. - * It also responds to actor size and color change, and provides the clipping at the renderer level. + * Visuals reuse geometry, shader etc. across controls. They ensure that the renderer and texture sets exist only when control is on-stage. + * Each visual also responds to actor size and color change, and provides clipping at the renderer level. * Note: The visual responds to the the Actor::COLOR by blending it with the 'Multiply' operator. + * + * The following properties are optional, but can be supplied in the property map to Dali::Toolkit::VisualFactory::CreateVisual(). + * + * | %Property Name | Type | + * |-------------------------|------------------| + * | customShader | MAP | + * | transform | MAP | + * + * where \b customShader is a map with at least one of the following properties: + * | %Property Name | Type | Required | Default | Description | + * |-------------------------|----------------------------|----------|---------|-----------------------------------------| + * | vertexShader | STRING | No | "" | Vertex shader code | + * | fragmentShader | STRING | No | "" | Fragment shader code | + * | subdivideGridX | INTEGER | No | 1 | How to subdivide the grid along X | + * | subdivideGridY | INTEGER | No | 1 | How to subdivide the grid along Y | + * | shaderHints | INTEGER or ARRAY of STRING | No | NONE | Bitmask of hints @sa Dali::Shader::Hint | + * + * and \b transform is a map with the following properties: + * | %Property Name | Type | Required | Default | Description | + * |-------------------------|-------------------|----------|------------------------|-----------------------------------------------------| + * | offset | VECTOR2 | No | (0,0) | Offset of visual from origin | + * | size | VECTOR2 | No | (1,1) | size of visual | + * | origin | INTEGER or STRING | No | CENTER | origin of the visual @sa Dali::Toolkit::Align | + * | anchorPoint | INTEGER or STRING | No | CENTER | anchor point of the visual @sa Dali::Toolkit::Align | + * | offsetPolicy | VECTOR2 | No | ( RELATIVE, RELATIVE ) | @sa Dali::Toolkit::Visual::Transform::Policy | + * | sizePolicy | VECTOR2 | No | ( RELATIVE, RELATIVE ) | @sa Dali::Toolkit::Visual::Transform::Policy | + * + * Relative means that the component describes a factor of the parent control size; + * size.x = 1 means full width; size.y = 0.5 means half height. + * + * Absolute means that the component describes world units (equivalent to pixels) + * */ class DALI_IMPORT_API Base : public BaseHandle { @@ -92,36 +125,43 @@ public: const std::string& GetName(); /** - * @brief Set the size of the painting area. + * @brief Sets the transform and the control size * - * @param[in] size The size of the painting area. + * @param[in] transform A property map describing the transform + * @param[in] controlSize The size of the parent control for visuals that need to scale internally. */ - void SetSize( const Vector2& size ); + void SetTransformAndSize( const Dali::Property::Map& transform, Size controlSize ); /** - * @brief Get the size of the painting area. + * @brief Returns the height for a given width. + * + * @param[in] width Width to use. * - * @return The size of the visual's painting area. + * @return The height based on the width. */ - const Vector2& GetSize() const; + float GetHeightForWidth( float width ); /** - * @brief Returns the height for a given width. + * @brief Returns the width for a given height. * - * @param[in] width Width to use. + * @param[in] height Height to use. * - * @return The height based on the width. + * @return The width based on the height. */ - float GetHeightForWidth( float width ) const; + float GetWidthForHeight( float height ); /** * @brief Return the natural size of the visual. * - * Deriving classes stipulate the natural size and by default a visual has a ZERO natural size. + * Deriving classes stipulate the natural size and by default a + * visual has a ZERO natural size. + * + * @note A visual may not actually have a natural size until it has + * been placed on stage and acquired all it's resources. * * @param[out] naturalSize The visual's natural size */ - void GetNaturalSize( Vector2& naturalSize ) const; + void GetNaturalSize( Vector2& naturalSize ); /** * @brief Set the depth index of this visual. @@ -131,42 +171,14 @@ public: * * @param[in] index The depth index of this visual. */ - void SetDepthIndex( float index ); + void SetDepthIndex( int index ); /** * @brief Get the depth index of this visual * * @return The depth index of this visual. */ - float GetDepthIndex() const; - - /** - * @brief Visual needs to know when the control is put on to the stage to add the renderer. - * - * This function should be called when the control is put on to the stage. - * - * @param[in] actor The actor using this visual. - * @post SetOffStage should be called with the same actor when the control is put off stage otherwise memory will be leaked - */ - void SetOnStage( Actor& actor ); - - /** - * @brief Visual needs to know when the control is removed from the stage to remove the renderer. - * - * This function should be called when the control is removed from the stage - * - * @param[in] actor The actor using this visual. - */ - void SetOffStage( Actor& actor ); - - /** - * @brief Remove the renderer from the actor and reset the visual self. - * - * This function can be called with an empty handle. If the visual is empty, this is a no-op. - * - * @param[in] actor The actor to be set off stage. - */ - void RemoveAndReset( Actor& actor ); + int GetDepthIndex() const; /** * @brief Create the property map representing this visual. @@ -175,23 +187,6 @@ public: */ void CreatePropertyMap( Dali::Property::Map& map ) const; - /** - * @brief Sets the value of an existing property. - * - * @param [in] index The index of the property. - * @param [in] propertyValue The new value of the property. - */ - void SetProperty( Dali::Property::Index index, const Dali::Property::Value& propertyValue ); - - /** - * @brief Retrieves a property value. - * - * @param [in] index The index of the property. - * - * @return The property value. - */ - Dali::Property::Value GetProperty( Dali::Property::Index index ); - public: // Not intended for application developers explicit DALI_INTERNAL Base(Internal::Visual::Base *impl);