ImageRenderer provides property to indicate async/sync resource loading
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / renderers / control-renderer-impl.cpp
index 04792c5..2009f8a 100644 (file)
@@ -94,7 +94,6 @@ void ControlRenderer::GetNaturalSize( Vector2& naturalSize ) const
 
 void ControlRenderer::SetClipRect( const Rect<int>& clipRect )
 {
-  mImpl->mClipRect = clipRect;
 }
 
 void ControlRenderer::SetOffset( const Vector2& offset )
@@ -107,7 +106,7 @@ void ControlRenderer::SetDepthIndex( float index )
   mImpl->mDepthIndex = index;
   if( mImpl->mRenderer )
   {
-    mImpl->mRenderer.SetDepthIndex( mImpl->mDepthIndex );
+    mImpl->mRenderer.SetProperty( Renderer::Property::DEPTH_INDEX, mImpl->mDepthIndex );
   }
 }
 
@@ -120,7 +119,8 @@ void ControlRenderer::SetOnStage( Actor& actor )
 {
   DoSetOnStage( actor );
 
-  mImpl->mRenderer.SetDepthIndex( mImpl->mDepthIndex );
+  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;
 }
@@ -130,28 +130,51 @@ void ControlRenderer::SetOffStage( Actor& actor )
   if( GetIsOnStage() )
   {
     DoSetOffStage( actor );
-    actor.RemoveRenderer( mImpl->mRenderer );
-    mImpl->mRenderer.Reset();
 
     mImpl->mFlags &= ~Impl::IS_ON_STAGE;
   }
 }
 
+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 )
 {
 }
 
 void ControlRenderer::DoSetOffStage( Actor& actor )
 {
+  actor.RemoveRenderer( mImpl->mRenderer );
+  mImpl->mRenderer.Reset();
 }
 
 void ControlRenderer::CreatePropertyMap( Property::Map& map ) const
 {
+  DoCreatePropertyMap( map );
+
   if( mImpl->mCustomShader )
   {
     mImpl->mCustomShader->CreatePropertyMap( map );
   }
-  DoCreatePropertyMap( map );
 }
 
 bool ControlRenderer::GetIsOnStage() const