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=91d5ed37155ce99fd64a3554a47b25dcad8635a5;hb=172678a60aceeb2a60e5d4e5a3c613f8f3c492a9;hpb=4cc88bb89cb6ef65670780554480ecbbdecf0254 diff --git a/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp b/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp index 91d5ed3..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 @@ -104,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