X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Frenderers%2Fcontrol-renderer-impl.h;h=a1e91e675a7b04b2bc10a4a7190b19d6ca77a495;hb=d00a250741411c386d988e7ac34525cf94a1918e;hp=86620f8fc00bb4ae73879fbc3754c1d833f1cb12;hpb=959d2c624f92023a5167788ccf6f4b4af3f3d6d8;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/renderers/control-renderer-impl.h b/dali-toolkit/internal/controls/renderers/control-renderer-impl.h index 86620f8..a1e91e6 100644 --- a/dali-toolkit/internal/controls/renderers/control-renderer-impl.h +++ b/dali-toolkit/internal/controls/renderers/control-renderer-impl.h @@ -1,8 +1,8 @@ -#ifndef __DALI_TOOLKIT_INTERNAL_CONTROL_RENDERER_H__ -#define __DALI_TOOLKIT_INTERNAL_CONTROL_RENDERER_H__ +#ifndef DALI_TOOLKIT_INTERNAL_CONTROL_RENDERER_H +#define DALI_TOOLKIT_INTERNAL_CONTROL_RENDERER_H /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 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. @@ -18,12 +18,15 @@ * */ - // EXTERNAL INCLUDES +#include #include +#include -#include +// INTERNAL INCLUDES #include +#include +#include namespace Dali { @@ -34,12 +37,25 @@ namespace Toolkit namespace Internal { -class RendererFactoryCache; - /** * Base class for all Control rendering logic. A control may have multiple control renderers. * * Note: The control renderer responds to the the Actor::COLOR by blending it with the 'Multiply' operator. + * + * The following properties are optional + * + * | %Property Name | Type | + * |-------------------------|------------------| + * | customShader | MAP | + * + * where custom-shader is a map with the following properties: + * | %Property Name | Type | + * |-------------------------|------------------| + * | vertexShader | STRING | + * | fragmentShader | STRING | + * | subdivideGridX | INT | + * | subdivideGridY | INT | + * | shaderHints | INT | */ class ControlRenderer : public BaseObject { @@ -50,10 +66,10 @@ public: * request the geometry and shader from the cache, if not available, create and save to the cache for sharing; * record the property values. * - * @param[in] factoryCache A pointer pointing to the RendererFactoryCache object + * @param[in] actor The Actor the renderer is applied to if, empty if the renderer has not been applied to any Actor * @param[in] propertyMap The properties for the requested ControlRenderer object. */ - virtual void Initialize( RendererFactoryCache& factoryCache, const Property::Map& propertyMap ) = 0; + void Initialize( Actor& actor, const Property::Map& propertyMap ); /** * @copydoc Toolkit::ControlRenderer::SetSize @@ -61,6 +77,16 @@ public: virtual void SetSize( const Vector2& size ); /** + * @copydoc Toolkit::ControlRenderer::GetSize + */ + const Vector2& GetSize() const; + + /** + * @copydoc Toolkit::ControlRenderer::GetNaturalSize + */ + virtual void GetNaturalSize( Vector2& naturalSize ) const; + + /** * ToDo: Add this function to Toolkit::ControlRenderer when it is fully implemented. * * Set the clip rectangular of this renderer. @@ -85,6 +111,11 @@ public: void SetDepthIndex( float index ); /** + * @copydoc Toolkit::ControlRenderer::GetDepthIndex + */ + float GetDepthIndex() const; + + /** * @copydoc Toolkit::ControlRenderer::SetOnStage * @pre Impl->mGeometry must be created before this method is called */ @@ -98,14 +129,36 @@ public: /** * @copydoc Toolkit::ControlRenderer::CreatePropertyMap */ - virtual void CreatePropertyMap( Property::Map& map ) const = 0; + void CreatePropertyMap( Property::Map& map ) const; + + /** + * @brief Set whether the Pre-multiplied Alpha Blending is required + * + * @param[in] preMultipled whether alpha is pre-multiplied. + */ + void EnablePreMultipliedAlpha( bool preMultipled ); + + /** + * @brief Query whether alpha is pre-multiplied. + * + * @return True is alpha is pre-multiplied, false otherwise. + */ + bool IsPreMultipliedAlphaEnabled() const; + + /** + * @brief Sets properties of custom shader + * @param[in] propertyMap Property map containing the custom shader data + */ + void SetCustomShader( const Property::Map& propertyMap ); protected: /** * @brief Constructor. + * + * @param[in] factoryCache A pointer pointing to the RendererFactoryCache object */ - ControlRenderer(); + ControlRenderer( RendererFactoryCache& factoryCache ); /** * @brief A reference counted object may only be deleted by calling Unreference(). @@ -113,21 +166,52 @@ protected: virtual ~ControlRenderer(); protected: + /** + * @brief Called by CreatePropertyMap() allowing sub classes to respond to the CreatePropertyMap event + * + * @param[out] map The renderer property map. + */ + virtual void DoCreatePropertyMap( Property::Map& map ) const = 0; /** - * Called by SetOnStage() allowing sub classes to respond to the SetOnStage event + * @brief Called by Initialize() allowing sub classes to respond to the Initialize event + * + * @param[in] actor The Actor the renderer is applied to if, empty if the renderer has not been applied to any Actor + * @param[in] propertyMap The properties for the requested ControlRenderer object. + */ + virtual void DoInitialize( Actor& actor, const Property::Map& propertyMap ) {}; + +protected: + + /** + * @brief Called by SetOnStage() allowing sub classes to respond to the SetOnStage event * * @param[in] actor The actor applying this renderer. */ virtual void DoSetOnStage( Actor& actor ); /** - * Called by SetOffStage() allowing sub classes to respond to the SetOffStage event + * @brief Called by SetOffStage() allowing sub classes to respond to the SetOffStage event * * @param[in] actor The actor applying this renderer. */ virtual void DoSetOffStage( Actor& actor ); +protected: + /** + * @brief Gets the on stage state for this ControlRenderer + * + * @return Returns true if this ControlRenderer is on stage, false if it is off the stage + */ + bool GetIsOnStage() const; + + /** + * @brief Gets whether the Dali::Renderer is from a shared cache (and therefore any modifications will affect other users of that renderer) + * + * @return Returns true if the renderer is from shared cache, false otherwise + */ + bool GetIsFromCache() const; + private: // Undefined @@ -137,9 +221,9 @@ private: ControlRenderer& operator=( const ControlRenderer& renderer ); protected: - struct Impl; Impl* mImpl; + RendererFactoryCache& mFactoryCache; }; } // namespace Internal @@ -166,4 +250,4 @@ inline Internal::ControlRenderer& GetImplementation(Toolkit::ControlRenderer& re } // namespace Dali -#endif /* __DALI_TOOLKIT_INTERNAL_CONTROL_RENDERER_H___ */ +#endif // DALI_TOOLKIT_INTERNAL_CONTROL_RENDERER_H