X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Frenderers%2Fcontrol-renderer-impl.cpp;h=4155a9c42f10e83b95c5625671f3e717027b71d4;hb=b5eca237428be8e01adaa98457b3cef3695d860d;hp=307818f78758eef1084c36beb807364e810755ab;hpb=2a8f032f9d3e1a78a31986a95ea72964a5b515b0;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/renderers/control-renderer-impl.cpp b/dali-toolkit/internal/controls/renderers/control-renderer-impl.cpp index 307818f..4155a9c 100644 --- a/dali-toolkit/internal/controls/renderers/control-renderer-impl.cpp +++ b/dali-toolkit/internal/controls/renderers/control-renderer-impl.cpp @@ -56,24 +56,30 @@ ControlRenderer::~ControlRenderer() delete mImpl; } -void ControlRenderer::Initialize( Actor& actor, const Property::Map& propertyMap ) +void ControlRenderer::SetCustomShader( const Property::Map& shaderMap ) { if( mImpl->mCustomShader ) { - mImpl->mCustomShader->SetPropertyMap( propertyMap ); + mImpl->mCustomShader->SetPropertyMap( shaderMap ); } else { - Property::Value* customShaderValue = propertyMap.Find( CUSTOM_SHADER ); - if( customShaderValue ) + mImpl->mCustomShader = new Impl::CustomShader( shaderMap ); + } +} + +void ControlRenderer::Initialize( Actor& actor, const Property::Map& propertyMap ) +{ + Property::Value* customShaderValue = propertyMap.Find( CUSTOM_SHADER ); + if( customShaderValue ) + { + Property::Map shaderMap; + if( customShaderValue->Get( shaderMap ) ) { - Property::Map customShader; - if( customShaderValue->Get( customShader ) ) - { - mImpl->mCustomShader = new Impl::CustomShader( propertyMap ); - } + SetCustomShader( shaderMap ); } } + DoInitialize( actor, propertyMap ); } @@ -94,7 +100,6 @@ void ControlRenderer::GetNaturalSize( Vector2& naturalSize ) const void ControlRenderer::SetClipRect( const Rect& clipRect ) { - mImpl->mClipRect = clipRect; } void ControlRenderer::SetOffset( const Vector2& offset ) @@ -120,6 +125,7 @@ void ControlRenderer::SetOnStage( Actor& actor ) { DoSetOnStage( actor ); + mImpl->mRenderer.SetProperty(Renderer::Property::BLEND_PRE_MULTIPLIED_ALPHA, IsPreMultipliedAlphaEnabled()); mImpl->mRenderer.SetProperty( Renderer::Property::DEPTH_INDEX, mImpl->mDepthIndex ); actor.AddRenderer( mImpl->mRenderer ); mImpl->mFlags |= Impl::IS_ON_STAGE; @@ -135,6 +141,28 @@ void ControlRenderer::SetOffStage( Actor& actor ) } } +void ControlRenderer::EnablePreMultipliedAlpha( bool preMultipled ) +{ + if(preMultipled) + { + mImpl->mFlags |= Impl::IS_PREMULTIPLIED_ALPHA; + } + else + { + mImpl->mFlags &= ~Impl::IS_PREMULTIPLIED_ALPHA; + } + + if( mImpl->mRenderer ) + { + mImpl->mRenderer.SetProperty(Renderer::Property::BLEND_PRE_MULTIPLIED_ALPHA, preMultipled); + } +} + +bool ControlRenderer::IsPreMultipliedAlphaEnabled() const +{ + return mImpl->mFlags & Impl::IS_PREMULTIPLIED_ALPHA; +} + void ControlRenderer::DoSetOnStage( Actor& actor ) { }