Remove Geometry::QUAD() usage in Toolkit
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / renderers / svg / svg-renderer.cpp
index d3c128d..8e50ecc 100644 (file)
 #include <dali/public-api/common/stage.h>
 #include <dali/public-api/math/vector4.h>
 #include <dali/devel-api/images/atlas.h>
+#include <dali/devel-api/images/texture-set-image.h>
 #include <dali/integration-api/debug.h>
 
 // INTERNAL INCLUDES
-#include "nanosvg/nanosvg.h"
-#include "svg-rasterize-thread.h"
+#include <dali-toolkit/third-party/nanosvg/nanosvg.h>
+#include <dali-toolkit/internal/controls/renderers/svg/svg-rasterize-thread.h>
 #include <dali-toolkit/internal/controls/renderers/image/image-renderer.h>
 #include <dali-toolkit/internal/controls/renderers/renderer-factory-cache.h>
+#include <dali-toolkit/internal/controls/renderers/renderer-string-constants.h>
 #include <dali-toolkit/internal/controls/renderers/control-renderer-data-impl.h>
 
 
 namespace
 {
-const char * const RENDERER_TYPE("rendererType");
-const char * const RENDERER_TYPE_VALUE("svg");
-const char * const IMAGE_URL_NAME("imageUrl");
 const char * const UNITS("px");
 
-const std::string TEXTURE_UNIFORM_NAME = "sTexture";
-const std::string ATLAS_RECT_UNIFORM_NAME = "uAtlasRect";
-
 const Dali::Vector4 FULL_TEXTURE_RECT(0.f, 0.f, 1.f, 1.f);
 }
 
@@ -104,8 +100,9 @@ void SvgRenderer::DoSetOnStage( Actor& actor )
     geometry =  mFactoryCache.CreateQuadGeometry();
     mFactoryCache.SaveGeometry( RendererFactoryCache::QUAD_GEOMETRY, geometry );
   }
-  Material material = Material::New( shader );
-  mImpl->mRenderer = Renderer::New( geometry, material );
+  TextureSet textureSet = TextureSet::New();
+  mImpl->mRenderer = Renderer::New( geometry, shader );
+  mImpl->mRenderer.SetTextures( textureSet );
 
   if( mImpl->mSize != Vector2::ZERO && mParsedImage )
   {
@@ -146,7 +143,7 @@ void SvgRenderer::SetSize( const Vector2& size )
 void SvgRenderer::DoCreatePropertyMap( Property::Map& map ) const
 {
   map.Clear();
-  map.Insert( RENDERER_TYPE, RENDERER_TYPE_VALUE );
+  map.Insert( RENDERER_TYPE, IMAGE_RENDERER );
   if( !mImageUrl.empty() )
   {
     map.Insert( IMAGE_URL_NAME, mImageUrl );
@@ -193,55 +190,48 @@ void SvgRenderer::AddRasterizationTask( const Vector2& size )
   }
 }
 
-void SvgRenderer::ApplyRasterizedImage( PixelDataPtr rasterizedPixelData )
+void SvgRenderer::ApplyRasterizedImage( PixelData rasterizedPixelData )
 {
   if( GetIsOnStage()  )
   {
-    Material currentMaterial = mImpl->mRenderer.GetMaterial();
+    TextureSet currentTextureSet = mImpl->mRenderer.GetTextures();
     if( mAtlasRect != FULL_TEXTURE_RECT )
     {
-      mAtlasManager.Remove( currentMaterial, mAtlasRect );
+      mAtlasManager.Remove( currentTextureSet, mAtlasRect );
     }
 
     Vector4 atlasRect;
-    Material material = mAtlasManager.Add(atlasRect, rasterizedPixelData );
-    if( material ) // atlasing
+    TextureSet textureSet = mAtlasManager.Add(atlasRect, rasterizedPixelData );
+    if( textureSet ) // atlasing
     {
-      if( material != currentMaterial )
+      if( textureSet != currentTextureSet )
       {
-        mImpl->mRenderer.SetMaterial( material );
+        mImpl->mRenderer.SetTextures( textureSet );
       }
       mImpl->mRenderer.RegisterProperty( ATLAS_RECT_UNIFORM_NAME, atlasRect );
       mAtlasRect = atlasRect;
     }
     else // no atlasing
     {
-      Atlas texture = Atlas::New( rasterizedPixelData->GetWidth(), rasterizedPixelData->GetHeight() );
+      Atlas texture = Atlas::New( rasterizedPixelData.GetWidth(), rasterizedPixelData.GetHeight() );
       texture.Upload( rasterizedPixelData, 0, 0 );
 
       if( mAtlasRect == FULL_TEXTURE_RECT )
       {
-        material = currentMaterial;
+        textureSet = currentTextureSet;
       }
       else
       {
-        material = Material::New( ImageRenderer::GetImageShader( mFactoryCache ) );
-        mImpl->mRenderer.SetMaterial( material );
+        textureSet = TextureSet::New();
+        mImpl->mRenderer.SetTextures( textureSet );
 
         mImpl->mRenderer.RegisterProperty( ATLAS_RECT_UNIFORM_NAME, FULL_TEXTURE_RECT );
         mAtlasRect = FULL_TEXTURE_RECT;
       }
 
-      if( material )
+      if( textureSet )
       {
-        int index = material.GetTextureIndex( TEXTURE_UNIFORM_NAME );
-        if( index != -1 )
-        {
-          material.SetTextureImage( index, texture );
-          return;
-        }
-
-        material.AddTexture( texture, TEXTURE_UNIFORM_NAME );
+        TextureSetImage( textureSet, 0u, texture );
       }
     }
   }