From 54fbf47db890d0479d19d780de5ea5d860924632 Mon Sep 17 00:00:00 2001 From: Xiangyin Ma Date: Mon, 11 Jul 2016 03:47:36 -0700 Subject: [PATCH] Remove Geometry::QUAD() usage in Toolkit Change-Id: Ib94d149241208f528246e15b32f8233454443c22 --- .../dali-toolkit-test-utils/mesh-builder.cpp | 21 +++++++++++++++++ .../dali-toolkit-test-utils/mesh-builder.h | 1 + .../dali-toolkit-test-utils/test-actor-utils.cpp | 2 +- .../controls/renderers/color/color-renderer.cpp | 2 +- .../renderers/gradient/gradient-renderer.cpp | 2 +- .../controls/renderers/image/image-renderer.cpp | 2 +- .../controls/renderers/renderer-factory-cache.cpp | 26 ++++++++++++++++++++++ .../controls/renderers/renderer-factory-cache.h | 6 +++++ .../controls/renderers/svg/svg-renderer.cpp | 2 +- .../cube-transition-effect-impl.cpp | 5 ++++- 10 files changed, 63 insertions(+), 6 deletions(-) diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/mesh-builder.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/mesh-builder.cpp index d94e548..361fbf3 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/mesh-builder.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/mesh-builder.cpp @@ -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 diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/mesh-builder.h b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/mesh-builder.h index e157338..16cd93d 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/mesh-builder.h +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/mesh-builder.h @@ -30,6 +30,7 @@ namespace Dali Shader CreateShader(); TextureSet CreateTextureSet(); TextureSet CreateTextureSet( Image image ); +Geometry CreateQuadGeometry(); PropertyBuffer CreatePropertyBuffer(); } diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-actor-utils.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-actor-utils.cpp index 083e582..5a8a5d1 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-actor-utils.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-actor-utils.cpp @@ -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 ); diff --git a/dali-toolkit/internal/controls/renderers/color/color-renderer.cpp b/dali-toolkit/internal/controls/renderers/color/color-renderer.cpp index 3fd6a74..c09f86f 100644 --- a/dali-toolkit/internal/controls/renderers/color/color-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/color/color-renderer.cpp @@ -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 ); } diff --git a/dali-toolkit/internal/controls/renderers/gradient/gradient-renderer.cpp b/dali-toolkit/internal/controls/renderers/gradient/gradient-renderer.cpp index f64ad61..952bd3b 100644 --- a/dali-toolkit/internal/controls/renderers/gradient/gradient-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/gradient/gradient-renderer.cpp @@ -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 ); } diff --git a/dali-toolkit/internal/controls/renderers/image/image-renderer.cpp b/dali-toolkit/internal/controls/renderers/image/image-renderer.cpp index 3f27923..058f2b9 100644 --- a/dali-toolkit/internal/controls/renderers/image/image-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/image/image-renderer.cpp @@ -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 ); } } diff --git a/dali-toolkit/internal/controls/renderers/renderer-factory-cache.cpp b/dali-toolkit/internal/controls/renderers/renderer-factory-cache.cpp index 3db2282..4fd7424 100644 --- a/dali-toolkit/internal/controls/renderers/renderer-factory-cache.cpp +++ b/dali-toolkit/internal/controls/renderers/renderer-factory-cache.cpp @@ -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 ) diff --git a/dali-toolkit/internal/controls/renderers/renderer-factory-cache.h b/dali-toolkit/internal/controls/renderers/renderer-factory-cache.h index 8bffd15..f6fd573 100644 --- a/dali-toolkit/internal/controls/renderers/renderer-factory-cache.h +++ b/dali-toolkit/internal/controls/renderers/renderer-factory-cache.h @@ -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. diff --git a/dali-toolkit/internal/controls/renderers/svg/svg-renderer.cpp b/dali-toolkit/internal/controls/renderers/svg/svg-renderer.cpp index 33c2b30..8e50ecc 100644 --- a/dali-toolkit/internal/controls/renderers/svg/svg-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/svg/svg-renderer.cpp @@ -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(); diff --git a/dali-toolkit/internal/transition-effects/cube-transition-effect-impl.cpp b/dali-toolkit/internal/transition-effects/cube-transition-effect-impl.cpp index 08bf54d..ed71b14 100644 --- a/dali-toolkit/internal/transition-effects/cube-transition-effect-impl.cpp +++ b/dali-toolkit/internal/transition-effects/cube-transition-effect-impl.cpp @@ -25,6 +25,9 @@ #include #include +// INTERNAL INCLUDES +#include + 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(); -- 2.7.4