Remove Geometry::QUAD() usage in Toolkit 54/79454/6
authorXiangyin Ma <x1.ma@samsung.com>
Mon, 11 Jul 2016 10:47:36 +0000 (03:47 -0700)
committerXiangyin Ma <x1.ma@samsung.com>
Tue, 12 Jul 2016 11:29:43 +0000 (04:29 -0700)
Change-Id: Ib94d149241208f528246e15b32f8233454443c22

automated-tests/src/dali-toolkit/dali-toolkit-test-utils/mesh-builder.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/mesh-builder.h
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-actor-utils.cpp
dali-toolkit/internal/controls/renderers/color/color-renderer.cpp
dali-toolkit/internal/controls/renderers/gradient/gradient-renderer.cpp
dali-toolkit/internal/controls/renderers/image/image-renderer.cpp
dali-toolkit/internal/controls/renderers/renderer-factory-cache.cpp
dali-toolkit/internal/controls/renderers/renderer-factory-cache.h
dali-toolkit/internal/controls/renderers/svg/svg-renderer.cpp
dali-toolkit/internal/transition-effects/cube-transition-effect-impl.cpp

index d94e548..361fbf3 100644 (file)
@@ -51,4 +51,25 @@ PropertyBuffer CreatePropertyBuffer()
   return vertexData;
 }
 
+Geometry CreateQuadGeometry(void)
+{
+  PropertyBuffer vertexData = CreatePropertyBuffer();
+  const float halfQuadSize = .5f;
+  struct TexturedQuadVertex { Vector2 position; Vector2 textureCoordinates; };
+  TexturedQuadVertex texturedQuadVertexData[4] = {
+    { Vector2(-halfQuadSize, -halfQuadSize), Vector2(0.f, 0.f) },
+    { Vector2( halfQuadSize, -halfQuadSize), Vector2(1.f, 0.f) },
+    { Vector2(-halfQuadSize,  halfQuadSize), Vector2(0.f, 1.f) },
+    { Vector2( halfQuadSize,  halfQuadSize), Vector2(1.f, 1.f) } };
+  vertexData.SetData(texturedQuadVertexData, 4);
+
+  unsigned short indexData[6] = { 0, 3, 1, 0, 2, 3 };
+
+  Geometry geometry = Geometry::New();
+  geometry.AddVertexBuffer( vertexData );
+  geometry.SetIndexBuffer( indexData, sizeof(indexData)/sizeof(indexData[0]) );
+
+  return geometry;
+}
+
 } // namespace Dali
index e157338..16cd93d 100644 (file)
@@ -30,6 +30,7 @@ namespace Dali
 Shader CreateShader();
 TextureSet CreateTextureSet();
 TextureSet CreateTextureSet( Image image );
+Geometry CreateQuadGeometry();
 PropertyBuffer CreatePropertyBuffer();
 }
 
index 083e582..5a8a5d1 100644 (file)
@@ -68,7 +68,7 @@ Actor CreateRenderableActor( Image texture )
 Actor CreateRenderableActor( Image texture, const std::string& vertexShader, const std::string& fragmentShader )
 {
   // Create the geometry
-  Geometry geometry = Geometry::QUAD();
+  Geometry geometry = CreateQuadGeometry();
 
   // Create Shader
   Shader shader = Shader::New( vertexShader, fragmentShader );
index 3fd6a74..c09f86f 100644 (file)
@@ -119,7 +119,7 @@ void ColorRenderer::InitializeRenderer()
   Geometry geometry = mFactoryCache.GetGeometry( RendererFactoryCache::QUAD_GEOMETRY );
   if( !geometry )
   {
-    geometry =  Geometry::QUAD();
+    geometry =  RendererFactoryCache::CreateQuadGeometry();
     mFactoryCache.SaveGeometry( RendererFactoryCache::QUAD_GEOMETRY, geometry );
   }
 
index f64ad61..952bd3b 100644 (file)
@@ -311,7 +311,7 @@ void GradientRenderer::InitializeRenderer()
   Geometry geometry = mFactoryCache.GetGeometry( RendererFactoryCache::QUAD_GEOMETRY );
   if( !geometry )
   {
-    geometry =  Geometry::QUAD();
+    geometry =  RendererFactoryCache::CreateQuadGeometry();
     mFactoryCache.SaveGeometry( RendererFactoryCache::QUAD_GEOMETRY, geometry );
   }
 
index 3f27923..058f2b9 100644 (file)
@@ -117,7 +117,7 @@ Geometry CreateGeometry( RendererFactoryCache& factoryCache, ImageDimensions gri
     geometry = factoryCache.GetGeometry( RendererFactoryCache::QUAD_GEOMETRY );
     if( !geometry )
     {
-      geometry =  Geometry::QUAD();
+      geometry =  RendererFactoryCache::CreateQuadGeometry();
       factoryCache.SaveGeometry( RendererFactoryCache::QUAD_GEOMETRY, geometry );
     }
   }
index 3db2282..4fd7424 100644 (file)
@@ -153,6 +153,32 @@ Renderer RendererFactoryCache::GetDebugRenderer()
   return mDebugRenderer;
 }
 
+Geometry RendererFactoryCache::CreateQuadGeometry()
+{
+  const float halfWidth = 0.5f;
+  const float halfHeight = 0.5f;
+  struct QuadVertex { Vector2 position;};
+  QuadVertex quadVertexData[4] =
+  {
+      { Vector2(-halfWidth, -halfHeight) },
+      { Vector2(-halfWidth, halfHeight)  },
+      { Vector2( halfWidth, -halfHeight) },
+      { Vector2( halfWidth, halfHeight)  }
+  };
+
+  Property::Map quadVertexFormat;
+  quadVertexFormat["aPosition"] = Property::VECTOR2;
+  PropertyBuffer quadVertices = PropertyBuffer::New( quadVertexFormat );
+  quadVertices.SetData( quadVertexData, 4 );
+
+  // Create the geometry object
+  Geometry geometry = Geometry::New();
+  geometry.AddVertexBuffer( quadVertices );
+  geometry.SetGeometryType( Geometry::TRIANGLE_STRIP );
+
+  return geometry;
+}
+
 SvgRasterizeThread* RendererFactoryCache::GetSVGRasterizationThread()
 {
   if( !mSvgRasterizeThread )
index 8bffd15..f6fd573 100644 (file)
@@ -109,6 +109,12 @@ public:
    */
   void SaveShader( ShaderType type, Shader shader );
 
+  /*
+   * Greate the quad geometry.
+   * Quad geometry is shared by multiple kind of Renderer, so implement it in the factory-cache.
+   */
+  static Geometry CreateQuadGeometry();
+
   /**
    * Create the grid geometry.
    * @param[in] gridSize The size of the grid.
index 33c2b30..8e50ecc 100644 (file)
@@ -97,7 +97,7 @@ void SvgRenderer::DoSetOnStage( Actor& actor )
   Geometry geometry = mFactoryCache.GetGeometry( RendererFactoryCache::QUAD_GEOMETRY );
   if( !geometry )
   {
-    geometry =  Geometry::QUAD();
+    geometry =  mFactoryCache.CreateQuadGeometry();
     mFactoryCache.SaveGeometry( RendererFactoryCache::QUAD_GEOMETRY, geometry );
   }
   TextureSet textureSet = TextureSet::New();
index 08bf54d..ed71b14 100644 (file)
@@ -25,6 +25,9 @@
 #include <dali-toolkit/devel-api/controls/renderer-factory/renderer-factory.h>
 #include <dali/integration-api/debug.h>
 
+// INTERNAL INCLUDES
+#include <dali-toolkit/internal/controls/renderers/renderer-factory-cache.h>
+
 namespace Dali
 {
 
@@ -245,7 +248,7 @@ void CubeTransitionEffect::OnStageConnection( int depth )
 {
   Control::OnStageConnection( depth );
 
-  Geometry geometry = Geometry::QUAD();
+  Geometry geometry = RendererFactoryCache::CreateQuadGeometry();
   Shader shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER );
 
   TextureSet textureSet = TextureSet::New();