X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Frenderers%2Fnpatch%2Fnpatch-renderer.h;h=44754d71d42db297b86b9a3d2b9d0e152099c5da;hp=b2ead541f2e527bc47eb694f58312d195aa220a2;hb=a2de9cf491172cd5da9dc9ed60b17683dab6d7bc;hpb=618c084142032296c60a188b9438d63a81a2d264 diff --git a/dali-toolkit/internal/controls/renderers/npatch/npatch-renderer.h b/dali-toolkit/internal/controls/renderers/npatch/npatch-renderer.h index b2ead54..44754d7 100644 --- a/dali-toolkit/internal/controls/renderers/npatch/npatch-renderer.h +++ b/dali-toolkit/internal/controls/renderers/npatch/npatch-renderer.h @@ -43,9 +43,10 @@ namespace Internal * * The following properties are optional * - * | %Property Name | Type | - * |---------------------------|------------------| - * | image-url | STRING | + * | %Property Name | Type | + * |--------------------------|------------------| + * | imageUrl | STRING | + * | borderOnly | BOOLEAN * */ class NPatchRenderer: public ControlRenderer @@ -54,8 +55,10 @@ public: /** * @brief Constructor. + * + * @param[in] factoryCache A pointer pointing to the RendererFactoryCache object */ - NPatchRenderer(); + NPatchRenderer( RendererFactoryCache& factoryCache ); /** * @brief A reference counted object may only be deleted by calling Unreference(). @@ -65,9 +68,9 @@ public: public: // from ControlRenderer /** - * @copydoc ControlRenderer::Initialize + * @copydoc ControlRenderer::GetNaturalSize */ - virtual void Initialize( RendererFactoryCache& factoryCache, const Property::Map& propertyMap ); + virtual void GetNaturalSize( Vector2& naturalSize ) const; /** * @copydoc ControlRenderer::SetClipRect @@ -79,7 +82,18 @@ public: // from ControlRenderer */ virtual void SetOffset( const Vector2& offset ); + /** + * @copydoc ControlRenderer::CreatePropertyMap + */ + virtual void DoCreatePropertyMap( Property::Map& map ) const; + protected: + + /** + * @copydoc ControlRenderer::DoInitialize + */ + virtual void DoInitialize( Actor& actor, const Property::Map& propertyMap ); + /** * @copydoc ControlRenderer::DoSetOnStage */ @@ -93,13 +107,6 @@ protected: public: /** - * Request the geometry and shader from the cache, if not available, create and save to the cache for sharing. - * - * @param[in] factoryCache A pointer pointing to the RendererFactoryCache object - */ - void Initialize( RendererFactoryCache& factoryCache ); - - /** * @brief Sets the 9 patch image of this renderer to the resource at imageUrl * The renderer will load the image synchronously when the associated actor is put on stage, and destroy the image when it is off stage * @@ -119,9 +126,28 @@ public: private: /** + * @brief Initialize the renderer with the geometry and shader from the cache, if not available, create and save to the cache for sharing. + */ + void InitializeRenderer(); + + /** + * @brief Creates a geometry for this renderer's grid size + * + * @return Returns the created geometry for this renderer's grid size + */ + Geometry CreateGeometry(); + + /** + * @brief Creates a shader for this renderer's grid size + * + * @return Returns the created shader for this renderer's grid size + */ + Shader CreateShader(); + + /** * @brief Creates a geometry for the grid size to be used by this renderers' shaders * - * @param gridSize The grid size of the solid geometry to create + * @param[in] gridSize The grid size of the solid geometry to create * @return Returns the created geometry for the grid size */ Geometry CreateGeometry( Uint16Pair gridSize ); @@ -144,7 +170,7 @@ private: * |/ |/ |/ |/ |/ | * --------------------- * - * @param gridSize The grid size of the solid geometry to create + * @param[in] gridSize The grid size of the solid geometry to create * @return Returns the created geometry for the grid size */ Geometry CreateGeometryBorder( Uint16Pair gridSize ); @@ -152,28 +178,34 @@ private: /** * @brief Creates Image from the image url and parses the image for the stretch borders. Will create a error image if the n patch image is invalid * - * @param nPatchImage The NinePatchImage to base our cropped images and stretch borders from + * @param[in] nPatchImage The NinePatchImage to base our cropped images and stretch borders from */ - void InitialiseFromImage( NinePatchImage nPatchImage ); + void InitializeFromImage( NinePatchImage nPatchImage ); /** - * @brief Creates a black Image to indicate that there was an error in either the image url or the parsing of the image + * @brief Creates an error Image to indicate that there was an error in either the image url or the parsing of the image * */ - void CreateErrorImage(); + void InitializeFromBrokenImage(); /** - * @brief Applies this renderer's image to the sampler to the material used for this renderer + * @brief Applies this renderer's image to the sampler to the texture set used for this renderer */ void ApplyImageToSampler(); + /** + * @brief Changes the current renderer if the n-patch meta data has changed + * + * @param[in] oldBorderOnly The old flag indicating if the image should omit the centre of the n-patch and only render the border + * @param[in] oldGridX The old horizontal grid size of the solid geometry + * @param[in] oldGridY The old vertical grid size of the solid geometry + */ + void ChangeRenderer( bool oldBorderOnly, size_t oldGridX, size_t oldGridY ); + private: NinePatchImage mImage; ///< The image to render if the renderer was set from an NinePatchImage, empty otherwise Image mCroppedImage; - Geometry mNinePatchGeometry; - Geometry mNinePatchBorderGeometry; - Shader mNinePatchShader; std::string mImageUrl; ///< The url to the image resource to render if the renderer was set from an image resource url, empty otherwise NinePatchImage::StretchRanges mStretchPixelsX;