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=92fd3bf0e7ab4d087cbfcdf63e88fff775aed8eb;hp=1320436bc597f71a7eaab6aa4f265d7364a56246;hb=618c084142032296c60a188b9438d63a81a2d264;hpb=4ac30f392a3277a566a03176ea066841c6784b61 diff --git a/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp b/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp index 1320436..92fd3bf 100644 --- a/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp +++ b/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp @@ -25,17 +25,22 @@ #include // Internal HEADER +#include #include #include +#include #include #include namespace { const char * const RENDERER_TYPE_NAME( "renderer-type" ); + const char * const COLOR_RENDERER("color-renderer"); +const char * const BORDER_RENDERER("border-renderer"); const char * const GRADIENT_RENDERER("gradient-renderer"); const char * const IMAGE_RENDERER("image-renderer"); +const char * const N_PATCH_RENDERER("n-patch-renderer"); } namespace Dali @@ -90,6 +95,14 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Property::Ma { rendererPtr = new ImageRenderer(); } + else if( typeValue == N_PATCH_RENDERER ) + { + rendererPtr = new NPatchRenderer(); + } + else if( typeValue == BORDER_RENDERER ) + { + rendererPtr = new BorderRenderer(); + } } if( rendererPtr ) @@ -105,7 +118,7 @@ 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 ) @@ -118,50 +131,145 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Vector4& col } rendererPtr->Initialize( *( mFactoryCache.Get() ) ); - rendererPtr->SetColor(color); + rendererPtr->SetColor( color ); - return Toolkit::ControlRenderer(rendererPtr); + return Toolkit::ControlRenderer( rendererPtr ); } bool RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, const Vector4& color ) { - ColorRenderer* rendererPtr = dynamic_cast(&GetImplementation(renderer)); + ColorRenderer* rendererPtr = dynamic_cast< ColorRenderer* >( &GetImplementation( renderer ) ); if( rendererPtr ) { - rendererPtr->SetColor(color); + rendererPtr->SetColor( color ); return false; } else { - renderer = GetControlRenderer(color); + renderer = GetControlRenderer( color ); return true; } } -Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Image& image ) +Toolkit::ControlRenderer RendererFactory::GetControlRenderer( float borderSize, const Vector4& borderColor ) { - ImageRenderer* rendererPtr = new ImageRenderer(); + BorderRenderer* rendererPtr = new BorderRenderer(); + if( !mFactoryCache ) { mFactoryCache = new RendererFactoryCache(); } rendererPtr->Initialize( *( mFactoryCache.Get() ) ); - rendererPtr->SetImage( image ); - return Toolkit::ControlRenderer(rendererPtr); + rendererPtr->SetBorderSize( borderSize ); + rendererPtr->SetBorderColor( borderColor ); + + return Toolkit::ControlRenderer( rendererPtr ); +} + +Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Image& image ) +{ + if( !mFactoryCache ) + { + mFactoryCache = new RendererFactoryCache(); + } + + NinePatchImage npatchImage = NinePatchImage::DownCast( image ); + if( npatchImage ) + { + NPatchRenderer* rendererPtr = new NPatchRenderer(); + rendererPtr->Initialize( *( mFactoryCache.Get() ) ); + rendererPtr->SetImage( npatchImage ); + + return Toolkit::ControlRenderer( rendererPtr ); + } + else + { + ImageRenderer* rendererPtr = new ImageRenderer(); + rendererPtr->Initialize( *( mFactoryCache.Get() ) ); + rendererPtr->SetImage( image ); + + return Toolkit::ControlRenderer( rendererPtr ); + } } bool RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, const Image& image ) { - ImageRenderer* rendererPtr = dynamic_cast(&GetImplementation(renderer)); - if( rendererPtr ) + NinePatchImage npatchImage = NinePatchImage::DownCast( image ); + if( npatchImage ) { - rendererPtr->SetImage(image); - return false; + NPatchRenderer* rendererPtr = dynamic_cast< NPatchRenderer* >( &GetImplementation( renderer ) ); + if( rendererPtr ) + { + rendererPtr->SetImage( npatchImage ); + return false; + } + } + else + { + ImageRenderer* rendererPtr = dynamic_cast< ImageRenderer* >( &GetImplementation( renderer ) ); + if( rendererPtr ) + { + rendererPtr->SetImage( image ); + return false; + } + } + + renderer = GetControlRenderer( image ); + return true; +} + +Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const std::string& url ) +{ + if( NinePatchImage::IsNinePatchUrl( url ) ) + { + NPatchRenderer* rendererPtr = new NPatchRenderer(); + if( !mFactoryCache ) + { + mFactoryCache = new RendererFactoryCache(); + } + rendererPtr->Initialize( *( mFactoryCache.Get() ) ); + rendererPtr->SetImage( url ); + + return Toolkit::ControlRenderer( rendererPtr ); + } + else + { + 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 ) +{ + if( NinePatchImage::IsNinePatchUrl( url ) ) + { + NPatchRenderer* rendererPtr = dynamic_cast< NPatchRenderer* >( &GetImplementation( renderer ) ); + if( rendererPtr ) + { + rendererPtr->SetImage( url ); + return false; + } } else { - renderer = GetControlRenderer(image); + ImageRenderer* rendererPtr = dynamic_cast< ImageRenderer* >( &GetImplementation( renderer ) ); + if( rendererPtr ) + { + rendererPtr->SetImage( url ); + return false; + } + } + + { + renderer = GetControlRenderer( url ); return true; } }