Refactored ControlRenderer so that derived classes are responsible for the creation...
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / renderers / gradient / gradient-renderer.cpp
index 6dc25ca..00a6050 100644 (file)
@@ -188,7 +188,7 @@ GradientRenderer::~GradientRenderer()
 {
 }
 
-void GradientRenderer::DoInitialize( const Property::Map& propertyMap )
+void GradientRenderer::DoInitialize( Actor& actor, const Property::Map& propertyMap )
 {
   Gradient::GradientUnits gradientUnits = Gradient::OBJECT_BOUNDING_BOX;
   Property::Value* unitsValue = propertyMap.Find( GRADIENT_UNITS_NAME );
@@ -234,6 +234,11 @@ void GradientRenderer::SetOffset( const Vector2& offset )
   //ToDo: renderer applies the offset
 }
 
+void GradientRenderer::DoSetOnStage( Actor& actor )
+{
+  InitializeRenderer();
+}
+
 void GradientRenderer::DoCreatePropertyMap( Property::Map& map ) const
 {
   map.Clear();
@@ -289,7 +294,7 @@ void GradientRenderer::DoCreatePropertyMap( Property::Map& map ) const
   }
 }
 
-void GradientRenderer::InitializeRenderer( Dali::Renderer& renderer )
+void GradientRenderer::InitializeRenderer()
 {
   Geometry geometry = mFactoryCache.GetGeometry( RendererFactoryCache::QUAD_GEOMETRY );
   if( !geometry )
@@ -308,20 +313,8 @@ void GradientRenderer::InitializeRenderer( Dali::Renderer& renderer )
   }
 
   Material material;
-  if( !renderer )
-  {
-    material = Material::New( shader );
-    renderer = Renderer::New( geometry, material );
-  }
-  else
-  {
-    mImpl->mRenderer.SetGeometry( geometry );
-    material = mImpl->mRenderer.GetMaterial();
-    if( material )
-    {
-      material.SetShader( shader );
-    }
-  }
+  material = Material::New( shader );
+  mImpl->mRenderer = Renderer::New( geometry, material );
 
   Dali::BufferImage lookupTexture = mGradient->GenerateLookupTexture();
   Sampler sampler = Sampler::New();
@@ -330,7 +323,7 @@ void GradientRenderer::InitializeRenderer( Dali::Renderer& renderer )
 
   material.AddTexture( lookupTexture, UNIFORM_TEXTULRE_NAME, sampler );
 
-  renderer.RegisterProperty( UNIFORM_ALIGNMENT_MATRIX_NAME, mGradientTransform );
+  mImpl->mRenderer.RegisterProperty( UNIFORM_ALIGNMENT_MATRIX_NAME, mGradientTransform );
 }
 
 bool GradientRenderer::NewGradient(Type gradientType, const Property::Map& propertyMap)