Rendering API clean-up
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / renderers / image / image-renderer.cpp
index 17eae58..c2bec85 100644 (file)
@@ -71,7 +71,6 @@ const char * const BOX_THEN_LINEAR("boxThenLinear");
 const char * const NO_FILTER("noFilter");
 const char * const DONT_CARE("dontCare");
 
-const std::string TEXTURE_UNIFORM_NAME = "sTexture";
 const std::string ATLAS_RECT_UNIFORM_NAME = "uAtlasRect";
 const std::string PIXEL_AREA_UNIFORM_NAME = "pixelArea";
 
@@ -359,8 +358,12 @@ Renderer ImageRenderer::CreateRenderer() const
     }
   }
 
-  Material material = Material::New( shader );
-  return Renderer::New( geometry, material );
+  TextureSet textureSet = TextureSet::New();
+
+  Renderer renderer = Renderer::New( geometry, shader );
+  renderer.SetTextures( textureSet );
+
+  return renderer;
 }
 
 Renderer ImageRenderer::CreateNativeImageRenderer() const
@@ -396,8 +399,11 @@ Renderer ImageRenderer::CreateNativeImageRenderer() const
     }
   }
 
-  Material material = Material::New( shader );
-  return Renderer::New( geometry, material );
+  TextureSet textureSet = TextureSet::New();
+  Renderer renderer = Renderer::New( geometry, shader );
+  renderer.SetTextures( textureSet );
+
+  return renderer;
 }
 
 void ImageRenderer::InitializeRenderer( const std::string& imageUrl )
@@ -418,11 +424,13 @@ void ImageRenderer::InitializeRenderer( const std::string& imageUrl )
     if( !mImpl->mRenderer )
     {
       Vector4 atlasRect;
-      Material material = mAtlasManager.Add(atlasRect, imageUrl, mDesiredSize, mFittingMode, mSamplingMode );
-      if( material )
+      TextureSet textureSet = mAtlasManager.Add(atlasRect, imageUrl, mDesiredSize, mFittingMode, mSamplingMode );
+      if( textureSet )
       {
         Geometry geometry = CreateGeometry( mFactoryCache, ImageDimensions( 1, 1 ) );
-        mImpl->mRenderer = Renderer::New( geometry, material );
+        Shader shader( GetImageShader(mFactoryCache) );
+        mImpl->mRenderer = Renderer::New( geometry, shader );
+        mImpl->mRenderer.SetTextures( textureSet );
         mImpl->mRenderer.RegisterProperty( ATLAS_RECT_UNIFORM_NAME, atlasRect );
       }
       else // big image, atlasing is not applied
@@ -431,8 +439,8 @@ void ImageRenderer::InitializeRenderer( const std::string& imageUrl )
 
         ResourceImage image = Dali::ResourceImage::New( imageUrl, mDesiredSize, mFittingMode, mSamplingMode );
         image.LoadingFinishedSignal().Connect( this, &ImageRenderer::OnImageLoaded );
-        Material material = mImpl->mRenderer.GetMaterial();
-        material.AddTexture( image, TEXTURE_UNIFORM_NAME );
+        TextureSet textureSet = mImpl->mRenderer.GetTextures();
+        textureSet.SetImage( 0u, image );
       }
 
       mFactoryCache.SaveRenderer( imageUrl, mImpl->mRenderer );
@@ -728,17 +736,10 @@ void ImageRenderer::ApplyImageToSampler( const Image& image )
 {
   if( image )
   {
-    Material material = mImpl->mRenderer.GetMaterial();
-    if( material )
+    TextureSet textureSet = mImpl->mRenderer.GetTextures();
+    if( textureSet )
     {
-      int index = material.GetTextureIndex( TEXTURE_UNIFORM_NAME );
-      if( index != -1 )
-      {
-        material.SetTextureImage( index, image );
-        return;
-      }
-
-      material.AddTexture( image, TEXTURE_UNIFORM_NAME );
+      textureSet.SetImage( 0u, image );
     }
   }
 }
@@ -757,7 +758,7 @@ void ImageRenderer::OnImageLoaded( ResourceImage image )
 
 void ImageRenderer::CleanCache(const std::string& url)
 {
-  Material material = mImpl->mRenderer.GetMaterial();
+  TextureSet textureSet = mImpl->mRenderer.GetTextures();
 
   Vector4 atlasRect( 0.f, 0.f, 1.f, 1.f );
   Property::Index index = mImpl->mRenderer.GetPropertyIndex( ATLAS_RECT_UNIFORM_NAME );
@@ -770,7 +771,7 @@ void ImageRenderer::CleanCache(const std::string& url)
   mImpl->mRenderer.Reset();
   if( mFactoryCache.CleanRendererCache( url ) && index != Property::INVALID_INDEX )
   {
-    mAtlasManager.Remove( material, atlasRect );
+    mAtlasManager.Remove( textureSet, atlasRect );
   }
 }