X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Frenderers%2Frenderer-factory-impl.cpp;h=11070c93af66b7fc671713f24bf021d772c69b09;hp=8cf01dd1372390a323bcfc8c035b19def7d687c6;hb=172678a60aceeb2a60e5d4e5a3c613f8f3c492a9;hpb=c560f95435d40fd3980cd5f92da65c9f28f440e7 diff --git a/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp b/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp index 8cf01dd..11070c9 100644 --- a/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp +++ b/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp @@ -19,6 +19,7 @@ // EXTERNAL INCLUDES #include +#include #include #include #include @@ -26,6 +27,7 @@ // Internal HEADER #include #include +#include #include namespace @@ -33,6 +35,7 @@ namespace const char * const RENDERER_TYPE_NAME( "renderer-type" ); const char * const COLOR_RENDERER("color-renderer"); const char * const GRADIENT_RENDERER("gradient-renderer"); +const char * const IMAGE_RENDERER("image-renderer"); } namespace Dali @@ -83,6 +86,10 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Property::Ma { rendererPtr = new GradientRenderer(); } + else if( typeValue == IMAGE_RENDERER ) + { + rendererPtr = new ImageRenderer(); + } } if( rendererPtr ) @@ -98,7 +105,93 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Property::Ma DALI_LOG_ERROR( "Renderer type unknown" ); } - return Toolkit::ControlRenderer(rendererPtr); + return Toolkit::ControlRenderer( rendererPtr ); +} + +Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Vector4& color ) +{ + ColorRenderer* rendererPtr = new ColorRenderer(); + + if( !mFactoryCache ) + { + mFactoryCache = new RendererFactoryCache(); + } + rendererPtr->Initialize( *( mFactoryCache.Get() ) ); + + rendererPtr->SetColor( color ); + + return Toolkit::ControlRenderer( rendererPtr ); +} + +bool RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, const Vector4& color ) +{ + ColorRenderer* rendererPtr = dynamic_cast< ColorRenderer* >( &GetImplementation( renderer ) ); + if( rendererPtr ) + { + rendererPtr->SetColor( color ); + return false; + } + else + { + renderer = GetControlRenderer( color ); + return true; + } +} + +Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Image& image ) +{ + ImageRenderer* rendererPtr = new ImageRenderer(); + if( !mFactoryCache ) + { + mFactoryCache = new RendererFactoryCache(); + } + rendererPtr->Initialize( *( mFactoryCache.Get() ) ); + rendererPtr->SetImage( image ); + + return Toolkit::ControlRenderer( rendererPtr ); +} + +bool RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, const Image& image ) +{ + ImageRenderer* rendererPtr = dynamic_cast< ImageRenderer* >( &GetImplementation( renderer ) ); + if( rendererPtr ) + { + rendererPtr->SetImage( image ); + return false; + } + else + { + renderer = GetControlRenderer( image ); + return true; + } +} + +Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const std::string& url ) +{ + ImageRenderer* rendererPtr = new ImageRenderer(); + if( !mFactoryCache ) + { + mFactoryCache = new RendererFactoryCache(); + } + rendererPtr->Initialize( *( mFactoryCache.Get() ) ); + rendererPtr->SetImage( url ); + + return Toolkit::ControlRenderer( rendererPtr ); +} + +bool RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, const std::string& url ) +{ + ImageRenderer* rendererPtr = dynamic_cast< ImageRenderer* >( &GetImplementation( renderer ) ); + if( rendererPtr ) + { + rendererPtr->SetImage( url ); + return false; + } + else + { + renderer = GetControlRenderer( url ); + return true; + } } } // namespace Internal