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=4e6bd386e7ba6123406f8d4234486361e0a242d0;hp=ddac18efe015c19bc316cbd0965dd520a46b6ea7;hb=f3da11c2818c6d17706fbb2417f21b602b3190f5;hpb=db3fc9592ec6897e668a62afa7ffdff3ad82c023 diff --git a/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp b/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp index ddac18e..4e6bd38 100644 --- a/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp +++ b/dali-toolkit/internal/controls/renderers/renderer-factory-impl.cpp @@ -34,13 +34,13 @@ namespace { -const char * const RENDERER_TYPE_NAME( "renderer-type" ); +const char * const RENDERER_TYPE_NAME( "rendererType" ); -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"); +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 char * const BROKEN_RENDERER_IMAGE_URL( DALI_IMAGE_DIR "broken.png"); } @@ -114,7 +114,8 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Property::Ma if( rendererPtr ) { - rendererPtr->Initialize( propertyMap ); + Actor actor; + rendererPtr->Initialize( actor, propertyMap ); } else { @@ -137,18 +138,22 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Vector4& col return Toolkit::ControlRenderer( rendererPtr ); } -bool RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, const Vector4& color ) +void RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, Actor& actor, const Vector4& color ) { ColorRenderer* rendererPtr = dynamic_cast< ColorRenderer* >( &GetImplementation( renderer ) ); if( rendererPtr ) { rendererPtr->SetColor( color ); - return false; } else { + renderer.RemoveAndReset( actor ); renderer = GetControlRenderer( color ); - return true; + + if( actor.OnStage() ) + { + renderer.SetOnStage( actor ); + } } } @@ -189,36 +194,44 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Image& image else { ImageRenderer* rendererPtr = new ImageRenderer( *( mFactoryCache.Get() ) ); - rendererPtr->SetImage( image ); + Actor actor; + rendererPtr->SetImage( actor, image ); return Toolkit::ControlRenderer( rendererPtr ); } } -bool RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, const Image& image ) +void RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, Actor& actor, const Image& image ) { - NinePatchImage npatchImage = NinePatchImage::DownCast( image ); - if( npatchImage ) + if( renderer ) { - NPatchRenderer* rendererPtr = dynamic_cast< NPatchRenderer* >( &GetImplementation( renderer ) ); - if( rendererPtr ) + NinePatchImage npatchImage = NinePatchImage::DownCast( image ); + if( npatchImage ) { - rendererPtr->SetImage( npatchImage ); - return false; + NPatchRenderer* rendererPtr = dynamic_cast< NPatchRenderer* >( &GetImplementation( renderer ) ); + if( rendererPtr ) + { + rendererPtr->SetImage( npatchImage ); + return; + } } - } - else - { - ImageRenderer* rendererPtr = dynamic_cast< ImageRenderer* >( &GetImplementation( renderer ) ); - if( rendererPtr ) + else { - rendererPtr->SetImage( image ); - return false; + ImageRenderer* rendererPtr = dynamic_cast< ImageRenderer* >( &GetImplementation( renderer ) ); + if( rendererPtr ) + { + rendererPtr->SetImage( actor, image ); + return; + } } } + renderer.RemoveAndReset( actor ); renderer = GetControlRenderer( image ); - return true; + if( actor.OnStage() ) + { + renderer.SetOnStage( actor ); + } } Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const std::string& url ) @@ -238,75 +251,88 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const std::string& else { ImageRenderer* rendererPtr = new ImageRenderer( *( mFactoryCache.Get() ) ); - rendererPtr->SetImage( url ); + Actor actor; + rendererPtr->SetImage( actor, url ); return Toolkit::ControlRenderer( rendererPtr ); } } -bool RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, const std::string& url ) +void RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, Actor& actor, const std::string& url ) { - if( NinePatchImage::IsNinePatchUrl( url ) ) + if( renderer ) { - NPatchRenderer* rendererPtr = dynamic_cast< NPatchRenderer* >( &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; + } } - } - else - { - ImageRenderer* rendererPtr = dynamic_cast< ImageRenderer* >( &GetImplementation( renderer ) ); - if( rendererPtr ) + else { - rendererPtr->SetImage( url ); - return false; + ImageRenderer* rendererPtr = dynamic_cast< ImageRenderer* >( &GetImplementation( renderer ) ); + if( rendererPtr ) + { + rendererPtr->SetImage( actor, url ); + return; + } } } + renderer.RemoveAndReset( actor ); + renderer = GetControlRenderer( url ); + if( actor.OnStage() ) { - renderer = GetControlRenderer( url ); - return true; + renderer.SetOnStage( actor ); } } -bool RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, const Property::Map& propertyMap ) +void RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, Actor& actor, const Property::Map& propertyMap ) { - Property::Value* type = propertyMap.Find( RENDERER_TYPE_NAME ); - std::string typeValue ; - if( type && type->Get( typeValue )) + if( renderer ) { - //If there's been a renderer type change then we have to return a new shader - if( typeValue == COLOR_RENDERER && typeid( renderer ) != typeid( ColorRenderer ) ) - { - renderer = GetControlRenderer( propertyMap ); - return true; - } - else if( typeValue == GRADIENT_RENDERER && typeid( renderer ) != typeid( GradientRenderer ) ) - { - renderer = GetControlRenderer( propertyMap ); - return true; - } - else if( typeValue == IMAGE_RENDERER && typeid( renderer ) != typeid( ImageRenderer ) ) + Property::Value* type = propertyMap.Find( RENDERER_TYPE_NAME ); + std::string typeValue ; + if( type && type->Get( typeValue )) { - renderer = GetControlRenderer( propertyMap ); - return true; - } - else if( typeValue == N_PATCH_RENDERER && typeid( renderer ) != typeid( NPatchRenderer ) ) - { - renderer = GetControlRenderer( propertyMap ); - return true; - } - else if( typeValue == BORDER_RENDERER && typeid( renderer ) != typeid( BorderRenderer ) ) - { - renderer = GetControlRenderer( propertyMap ); - return true; + //If there's been a renderer type change then we have to return a new shader + if( typeValue == COLOR_RENDERER && typeid( renderer ) != typeid( ColorRenderer ) ) + { + renderer = GetControlRenderer( propertyMap ); + return; + } + else if( typeValue == GRADIENT_RENDERER && typeid( renderer ) != typeid( GradientRenderer ) ) + { + renderer = GetControlRenderer( propertyMap ); + return; + } + else if( typeValue == IMAGE_RENDERER && typeid( renderer ) != typeid( ImageRenderer ) ) + { + renderer = GetControlRenderer( propertyMap ); + return; + } + else if( typeValue == N_PATCH_RENDERER && typeid( renderer ) != typeid( NPatchRenderer ) ) + { + renderer = GetControlRenderer( propertyMap ); + return; + } + else if( typeValue == BORDER_RENDERER && typeid( renderer ) != typeid( BorderRenderer ) ) + { + renderer = GetControlRenderer( propertyMap ); + return; + } } + + GetImplementation( renderer ).Initialize( actor, propertyMap ); + } + else + { + renderer = GetControlRenderer( propertyMap ); } - GetImplementation( renderer ).Initialize( propertyMap ); - return false; } Image RendererFactory::GetBrokenRendererImage()