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=2c885622afd1407aff1c0d0766a43c8e1f585460;hp=41b3060d5685e22b651d5890ab91b94986f5cc9b;hb=a2de9cf491172cd5da9dc9ed60b17683dab6d7bc;hpb=638cc5c949cd2a31ddfd189c30b9a4b37e3e0a29 diff --git a/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp b/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp index 41b3060..2c88562 100644 --- a/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp +++ b/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -38,15 +39,15 @@ namespace { const char * const RENDERER_TYPE_NAME( "rendererType" ); -const char * const COLOR_RENDERER("colorRenderer"); -const char * const BORDER_RENDERER("borderRenderer"); -const char * const GRADIENT_RENDERER("gradientRenderer"); -const char * const IMAGE_RENDERER("imageRenderer"); -const char * const N_PATCH_RENDERER("nPatchRenderer"); - -const std::string TEXTURE_UNIFORM_NAME = "sTexture"; +const char * const COLOR_RENDERER("color"); +const char * const BORDER_RENDERER("border"); +const char * const GRADIENT_RENDERER("gradient"); +const char * const IMAGE_RENDERER("image"); +const char * const N_PATCH_RENDERER("nPatch"); +const char * const SVG_RENDERER("svg"); const char * const BROKEN_RENDERER_IMAGE_URL( DALI_IMAGE_DIR "broken.png"); + } namespace Dali @@ -121,6 +122,11 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Property::Ma { rendererPtr = new BorderRenderer( *( mFactoryCache.Get() ) ); } + else if( typeValue == SVG_RENDERER ) + { + CreateAtlasManager(); + rendererPtr = new SvgRenderer( *( mFactoryCache.Get() ), *( mAtlasManager.Get() ) ); + } } if( rendererPtr ) @@ -180,7 +186,7 @@ void RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, Actor& } } -Toolkit::ControlRenderer RendererFactory::GetControlRenderer( float borderSize, const Vector4& borderColor ) +Toolkit::ControlRenderer RendererFactory::GetControlRenderer( float borderSize, const Vector4& borderColor, bool antiAliasing ) { if( !mFactoryCache ) { @@ -196,6 +202,7 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( float borderSize, rendererPtr->SetBorderSize( borderSize ); rendererPtr->SetBorderColor( borderColor ); + rendererPtr->RequireAntiAliasing( antiAliasing ); return Toolkit::ControlRenderer( rendererPtr ); } @@ -296,6 +303,13 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const std::string& return Toolkit::ControlRenderer( rendererPtr ); } + else if( SvgRenderer::IsSvgUrl( url ) ) + { + CreateAtlasManager(); + SvgRenderer* rendererPtr = new SvgRenderer( *( mFactoryCache.Get() ), *( mAtlasManager.Get() ) ); + rendererPtr->SetImage( url, size ); + return Toolkit::ControlRenderer( rendererPtr ); + } else { CreateAtlasManager(); @@ -331,6 +345,15 @@ void RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, Actor& return; } } + else if( SvgRenderer::IsSvgUrl( url ) ) + { + SvgRenderer* rendererPtr = dynamic_cast< SvgRenderer* >( &GetImplementation( renderer ) ); + if( rendererPtr ) + { + rendererPtr->SetImage( url, size ); + return; + } + } else { ImageRenderer* rendererPtr = dynamic_cast< ImageRenderer* >( &GetImplementation( renderer ) ); @@ -367,11 +390,12 @@ void RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, Actor& //If there's no renderer type specified or if there hasn't been a renderer type change then we can reuse the renderer if( !type || !type->Get( typeValue ) || - ( typeValue == IMAGE_RENDERER && typeid( controlRenderer ) == typeid( ImageRenderer ) ) || - ( typeValue == N_PATCH_RENDERER && typeid( controlRenderer ) == typeid( NPatchRenderer ) ) || - ( typeValue == COLOR_RENDERER && typeid( controlRenderer ) == typeid( ColorRenderer ) )|| - ( typeValue == GRADIENT_RENDERER && typeid( controlRenderer ) == typeid( GradientRenderer ) ) || - ( typeValue == BORDER_RENDERER && typeid( controlRenderer ) == typeid( BorderRenderer ) ) ) + ( typeValue == IMAGE_RENDERER && typeid( controlRenderer ) == typeid( ImageRenderer ) ) || + ( typeValue == N_PATCH_RENDERER && typeid( controlRenderer ) == typeid( NPatchRenderer ) ) || + ( typeValue == COLOR_RENDERER && typeid( controlRenderer ) == typeid( ColorRenderer ) )|| + ( typeValue == GRADIENT_RENDERER && typeid( controlRenderer ) == typeid( GradientRenderer ) ) || + ( typeValue == BORDER_RENDERER && typeid( controlRenderer ) == typeid( BorderRenderer ) ) || + ( typeValue == SVG_RENDERER && typeid( controlRenderer ) == typeid( SvgRenderer ) ) ) { controlRenderer.Initialize( actor, propertyMap ); return; @@ -381,7 +405,7 @@ void RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, Actor& } renderer = GetControlRenderer( propertyMap ); - if( actor && actor.OnStage() ) + if( renderer && actor && actor.OnStage() ) { renderer.SetOnStage( actor ); } @@ -397,7 +421,7 @@ void RendererFactory::CreateAtlasManager() if( !mAtlasManager ) { Shader shader = ImageRenderer::GetImageShader( *( mFactoryCache.Get() ) ); - mAtlasManager = new ImageAtlasManager(shader, TEXTURE_UNIFORM_NAME); + mAtlasManager = new ImageAtlasManager(); mAtlasManager->SetBrokenImage( BROKEN_RENDERER_IMAGE_URL ); } }