From: Kimmo Hoikka Date: Tue, 27 Oct 2015 14:29:07 +0000 (-0700) Subject: Merge "Refactored ControlRenderer so that derived classes are responsible for the... X-Git-Tag: dali_1.1.8~2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=6da8438e9ac7350d9cc6f69b35cbcc4ab3987da1;hp=-c Merge "Refactored ControlRenderer so that derived classes are responsible for the creation of the renderer." into devel/master --- 6da8438e9ac7350d9cc6f69b35cbcc4ab3987da1 diff --combined dali-toolkit/internal/controls/image-view/image-view-impl.cpp index 2cb24bb,6f45e82..c7f1d8c --- a/dali-toolkit/internal/controls/image-view/image-view-impl.cpp +++ b/dali-toolkit/internal/controls/image-view/image-view-impl.cpp @@@ -73,24 -73,8 +73,8 @@@ void ImageView::SetImage( Image image mImage = image; - bool newRendererCreated = false; - if( mRenderer ) - { - newRendererCreated = Toolkit::RendererFactory::Get().ResetRenderer( mRenderer, image ); - } - else - { - mRenderer = Toolkit::RendererFactory::Get().GetControlRenderer( image ); - newRendererCreated = true; - } - - //we need to inform any newly created renderers if it is on stage - if( newRendererCreated && Self().OnStage() ) - { - CustomActor self = Self(); - mRenderer.SetOnStage( self ); - } - + Actor self = Self(); + Toolkit::RendererFactory::Get().ResetRenderer( mRenderer, self, image ); mImageSize = image ? ImageDimensions( image.GetWidth(), image.GetHeight() ) : ImageDimensions( 0, 0 ); } } @@@ -99,23 -83,8 +83,8 @@@ void ImageView::SetImage( Property::Ma { mPropertyMap = map; - bool newRendererCreated = false; - if( mRenderer ) - { - newRendererCreated = Toolkit::RendererFactory::Get().ResetRenderer( mRenderer, mPropertyMap ); - } - else - { - mRenderer = Toolkit::RendererFactory::Get().GetControlRenderer( mPropertyMap ); - newRendererCreated = true; - } - - //we need to inform any newly created renderers if it is on stage - CustomActor self = Self(); - if( newRendererCreated && self.OnStage() ) - { - mRenderer.SetOnStage( self ); - } + Actor self = Self(); + Toolkit::RendererFactory::Get().ResetRenderer( mRenderer, self, mPropertyMap ); int width = 0; Property::Value* widthValue = mPropertyMap.Find( "width" ); @@@ -143,23 -112,8 +112,8 @@@ void ImageView::SetImage( const std::st mUrl = url; - bool newRendererCreated = false; - if( mRenderer ) - { - newRendererCreated = Toolkit::RendererFactory::Get().ResetRenderer( mRenderer, mUrl ); - } - else - { - mRenderer = Toolkit::RendererFactory::Get().GetControlRenderer( mUrl ); - newRendererCreated = true; - } - - //we need to inform any newly created renderers if it is on stage - if( newRendererCreated && Self().OnStage() ) - { - CustomActor self = Self(); - mRenderer.SetOnStage( self ); - } + Actor self = Self(); + Toolkit::RendererFactory::Get().ResetRenderer( mRenderer, self, mUrl ); mImageSize = ResourceImage::GetImageSize( mUrl ); } @@@ -173,7 -127,7 +127,7 @@@ Vector3 ImageView::GetNaturalSize( size.y = mImageSize.GetHeight(); size.z = std::min(size.x, size.y); - if( size.x > 0 && size.x > 0 ) + if( size.x > 0 && size.y > 0 ) { return size; } @@@ -215,8 -169,6 +169,8 @@@ float ImageView::GetWidthForHeight( flo void ImageView::OnStageConnection( int depth ) { + Control::OnStageConnection( depth ); + if( mRenderer ) { CustomActor self = Self(); @@@ -231,8 -183,6 +185,8 @@@ void ImageView::OnStageDisconnection( CustomActor self = Self(); mRenderer.SetOffStage( self ); } + + Control::OnStageDisconnection(); } diff --combined dali-toolkit/internal/controls/renderers/border/border-renderer.cpp index 1f2e178,8e0d094..43c6bde --- a/dali-toolkit/internal/controls/renderers/border/border-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/border/border-renderer.cpp @@@ -88,7 -88,7 +88,7 @@@ BorderRenderer::~BorderRenderer( { } - void BorderRenderer::DoInitialize( const Property::Map& propertyMap ) + void BorderRenderer::DoInitialize( Actor& actor, const Property::Map& propertyMap ) { Property::Value* color = propertyMap.Find( COLOR_NAME ); if( !( color && color->Get(mBorderColor) ) ) @@@ -112,6 -112,8 +112,8 @@@ void BorderRenderer::SetClipRect( cons void BorderRenderer::DoSetOnStage( Actor& actor ) { + InitializeRenderer(); + mBorderColorIndex = (mImpl->mRenderer).RegisterProperty( COLOR_UNIFORM_NAME, mBorderColor ); if( mBorderColor.a < 1.f ) { @@@ -128,43 -130,31 +130,31 @@@ void BorderRenderer::DoCreatePropertyMa map.Insert( SIZE_NAME, mBorderSize ); } - void BorderRenderer::InitializeRenderer( Renderer& renderer ) + void BorderRenderer::InitializeRenderer() { Geometry geometry = mFactoryCache.GetGeometry( RendererFactoryCache::BORDER_GEOMETRY ); if( !geometry ) { geometry = CreateBorderGeometry(); - mFactoryCache.SaveGeometry( RendererFactoryCache::QUAD_GEOMETRY, geometry ); + mFactoryCache.SaveGeometry( RendererFactoryCache::BORDER_GEOMETRY, geometry ); } Shader shader = mFactoryCache.GetShader( RendererFactoryCache::BORDER_SHADER ); if( !shader ) { shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER ); - mFactoryCache.SaveShader( RendererFactoryCache::COLOR_SHADER, shader ); + mFactoryCache.SaveShader( RendererFactoryCache::BORDER_SHADER, shader ); } - if( !renderer ) - { - Material material = Material::New( shader ); - renderer = Renderer::New( geometry, material ); - } - else - { - mImpl->mRenderer.SetGeometry( geometry ); - Material material = mImpl->mRenderer.GetMaterial(); - if( material ) - { - material.SetShader( shader ); - } - } + Material material = Material::New( shader ); + mImpl->mRenderer = Renderer::New( geometry, material ); } void BorderRenderer::SetBorderColor(const Vector4& color) { mBorderColor = color; - if( mImpl->mIsOnStage ) + if( mImpl->mRenderer ) { (mImpl->mRenderer).SetProperty( mBorderColorIndex, color ); if( color.a < 1.f && (mImpl->mRenderer).GetMaterial().GetBlendMode() != BlendingMode::ON) @@@ -178,7 -168,7 +168,7 @@@ void BorderRenderer::SetBorderSize( flo { mBorderSize = size; - if( mImpl->mIsOnStage ) + if( mImpl->mRenderer ) { (mImpl->mRenderer).SetProperty( mBorderSizeIndex, size ); } diff --combined dali-toolkit/public-api/controls/control-impl.cpp index a009273,429648b..771114b --- a/dali-toolkit/public-api/controls/control-impl.cpp +++ b/dali-toolkit/public-api/controls/control-impl.cpp @@@ -406,24 -406,17 +406,17 @@@ void Control::SetBackgroundColor( cons if( mImpl->mBackgroundRenderer ) { - Toolkit::ControlRenderer currentRenderer( mImpl->mBackgroundRenderer ); - // if ResetRenderer returns false, we continue to use the current renderer with a new color set to it. - if( ! factory.ResetRenderer( mImpl->mBackgroundRenderer, color ) ) - { - return; - } - // ResetRenderer returns true, a new renderer is created. Remove the current renderer and reset. - currentRenderer.RemoveAndReset( self ); + factory.ResetRenderer( mImpl->mBackgroundRenderer, self, color ); } else { mImpl->mBackgroundRenderer = factory.GetControlRenderer( color ); - } - if( self.OnStage() ) - { - mImpl->mBackgroundRenderer.SetDepthIndex( BACKGROUND_DEPTH_INDEX ); - mImpl->mBackgroundRenderer.SetOnStage( self ); + if( self.OnStage() ) + { + mImpl->mBackgroundRenderer.SetDepthIndex( BACKGROUND_DEPTH_INDEX ); + mImpl->mBackgroundRenderer.SetOnStage( self ); + } } } @@@ -463,30 -456,23 +456,23 @@@ void Control::SetBackgroundImage( Imag if( mImpl->mBackgroundRenderer ) { - Toolkit::ControlRenderer currentRenderer( mImpl->mBackgroundRenderer ); - // if ResetRenderer returns false, we continue to use the current renderer with a new image set to it. - if( ! factory.ResetRenderer( mImpl->mBackgroundRenderer, image ) ) - { - return; - } - // ResetRenderer returns true, a new renderer is created. Remove the current renderer and reset. - currentRenderer.RemoveAndReset( self ); + factory.ResetRenderer( mImpl->mBackgroundRenderer, self, image ); } else { mImpl->mBackgroundRenderer = factory.GetControlRenderer( image ); - } - if( self.OnStage() ) - { - mImpl->mBackgroundRenderer.SetDepthIndex( BACKGROUND_DEPTH_INDEX ); - mImpl->mBackgroundRenderer.SetOnStage( self ); + if( self.OnStage() ) + { + mImpl->mBackgroundRenderer.SetDepthIndex( BACKGROUND_DEPTH_INDEX ); + mImpl->mBackgroundRenderer.SetOnStage( self ); + } } } void Control::ClearBackground() { - Actor self(Self()); + Actor self( Self() ); mImpl->mBackgroundRenderer.RemoveAndReset( self ); } @@@ -810,6 -796,16 +796,6 @@@ void Control::EmitKeyInputFocusSignal( void Control::OnStageConnection( int depth ) { - unsigned int controlRendererCount = Self().GetRendererCount(); - for( unsigned int i(0); imBackgroundRenderer) { mImpl->mBackgroundRenderer.SetDepthIndex( BACKGROUND_DEPTH_INDEX );