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=11070c93af66b7fc671713f24bf021d772c69b09;hb=618c084142032296c60a188b9438d63a81a2d264;hpb=df4e976c9228a4ceeaa2622d86ad7b21e8eb65b8 diff --git a/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp b/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp index 11070c9..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 ) @@ -138,57 +151,124 @@ bool RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, const V } } -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 ); + + rendererPtr->SetBorderSize( borderSize ); + rendererPtr->SetBorderColor( borderColor ); return Toolkit::ControlRenderer( rendererPtr ); } -bool RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, const Image& image ) +Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Image& image ) { - ImageRenderer* rendererPtr = dynamic_cast< ImageRenderer* >( &GetImplementation( renderer ) ); - if( rendererPtr ) + 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 false; + + return Toolkit::ControlRenderer( rendererPtr ); + } +} + +bool RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, const Image& image ) +{ + NinePatchImage npatchImage = NinePatchImage::DownCast( image ); + if( npatchImage ) + { + NPatchRenderer* rendererPtr = dynamic_cast< NPatchRenderer* >( &GetImplementation( renderer ) ); + if( rendererPtr ) + { + rendererPtr->SetImage( npatchImage ); + return false; + } } else { - renderer = GetControlRenderer( image ); - return true; + 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 ) { - ImageRenderer* rendererPtr = new ImageRenderer(); - if( !mFactoryCache ) + if( NinePatchImage::IsNinePatchUrl( url ) ) { - mFactoryCache = new RendererFactoryCache(); + NPatchRenderer* rendererPtr = new NPatchRenderer(); + if( !mFactoryCache ) + { + mFactoryCache = new RendererFactoryCache(); + } + rendererPtr->Initialize( *( mFactoryCache.Get() ) ); + rendererPtr->SetImage( url ); + + return Toolkit::ControlRenderer( rendererPtr ); } - rendererPtr->Initialize( *( mFactoryCache.Get() ) ); - rendererPtr->SetImage( url ); + else + { + ImageRenderer* rendererPtr = new ImageRenderer(); + if( !mFactoryCache ) + { + mFactoryCache = new RendererFactoryCache(); + } + rendererPtr->Initialize( *( mFactoryCache.Get() ) ); + rendererPtr->SetImage( url ); - return Toolkit::ControlRenderer( rendererPtr ); + return Toolkit::ControlRenderer( rendererPtr ); + } } bool RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, const std::string& url ) { - ImageRenderer* rendererPtr = dynamic_cast< ImageRenderer* >( &GetImplementation( renderer ) ); - if( rendererPtr ) + if( NinePatchImage::IsNinePatchUrl( url ) ) { - rendererPtr->SetImage( url ); - return false; + NPatchRenderer* rendererPtr = dynamic_cast< NPatchRenderer* >( &GetImplementation( renderer ) ); + if( rendererPtr ) + { + rendererPtr->SetImage( url ); + return false; + } } else { + ImageRenderer* rendererPtr = dynamic_cast< ImageRenderer* >( &GetImplementation( renderer ) ); + if( rendererPtr ) + { + rendererPtr->SetImage( url ); + return false; + } + } + + { renderer = GetControlRenderer( url ); return true; }