From ac03f72d0786ee02540106f1bc887a32f17fa786 Mon Sep 17 00:00:00 2001 From: Ferran Sole Date: Wed, 20 Apr 2016 16:10:35 +0100 Subject: [PATCH] Changes following "Remove Geometry scene object" Change-Id: Id177a9f248686d82898a05a865871983a64af885 --- .../dali-toolkit-test-utils/mesh-builder.cpp | 8 ++----- .../controls/bubble-effect/bubble-emitter-impl.cpp | 11 +++------ .../internal/controls/model3d-view/obj-loader.cpp | 12 +++------- .../internal/controls/model3d-view/obj-loader.h | 2 +- .../controls/renderers/border/border-renderer.cpp | 8 ++----- .../controls/renderers/debug/debug-renderer.cpp | 8 ++----- .../controls/renderers/npatch/npatch-renderer.cpp | 20 +++++++--------- .../controls/renderers/renderer-factory-cache.cpp | 13 +++++----- .../controls/scrollable/bouncing-effect-actor.cpp | 8 ++----- .../internal/text/decorator/text-decorator.cpp | 13 ++-------- .../internal/text/rendering/atlas/atlas-manager.h | 2 +- .../text/rendering/atlas/atlas-mesh-factory.cpp | 2 +- .../text/rendering/atlas/text-atlas-renderer.cpp | 6 +---- .../vector-based/vector-based-renderer.cpp | 13 ++++------ node-addon/examples/line-mesh.js | 4 +--- node-addon/examples/texture-mesh.js | 4 +--- .../dali-script-v8/src/rendering/geometry-api.cpp | 28 +++++++++++++++++----- .../src/rendering/geometry-wrapper.cpp | 5 +--- .../src/rendering/geometry-wrapper.h | 2 +- 19 files changed, 66 insertions(+), 103 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 304e567..5b127c7 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 @@ -62,15 +62,11 @@ Geometry CreateQuadGeometryFromBuffer( PropertyBuffer vertexData ) { Vector2( halfQuadSize, halfQuadSize), Vector2(1.f, 1.f) } }; vertexData.SetData(texturedQuadVertexData, 4); - unsigned int indexData[6] = { 0, 3, 1, 0, 2, 3 }; - Property::Map indexFormat; - indexFormat["indices"] = Property::INTEGER; - PropertyBuffer indices = PropertyBuffer::New( indexFormat ); - indices.SetData( indexData, sizeof(indexData)/sizeof(indexData[0]) ); + unsigned short indexData[6] = { 0, 3, 1, 0, 2, 3 }; Geometry geometry = Geometry::New(); geometry.AddVertexBuffer( vertexData ); - geometry.SetIndexBuffer( indices ); + geometry.SetIndexBuffer( indexData, sizeof(indexData)/sizeof(indexData[0]) ); return geometry; } diff --git a/dali-toolkit/internal/controls/bubble-effect/bubble-emitter-impl.cpp b/dali-toolkit/internal/controls/bubble-effect/bubble-emitter-impl.cpp index 836a26dd..5126408 100644 --- a/dali-toolkit/internal/controls/bubble-effect/bubble-emitter-impl.cpp +++ b/dali-toolkit/internal/controls/bubble-effect/bubble-emitter-impl.cpp @@ -276,7 +276,7 @@ Geometry BubbleEmitter::CreateGeometry( unsigned int numOfPatch ) vertexData.reserve( numVertex ); unsigned int numIndex = numOfPatch*6u; - Vector indexData; + Vector indexData; indexData.Reserve( numIndex ); for(unsigned int i = 0; i < numOfPatch; i++) @@ -289,7 +289,7 @@ Geometry BubbleEmitter::CreateGeometry( unsigned int numOfPatch ) vertexData.push_back( Vertex( index, Vector2(curSize,curSize), Vector2(1.f,1.f) ) ); vertexData.push_back( Vertex( index, Vector2(curSize,0.f), Vector2(1.f,0.f) ) ); - unsigned int idx = index * 4; + unsigned short idx = index * 4; indexData.PushBack( idx ); indexData.PushBack( idx+1 ); indexData.PushBack( idx+2 ); @@ -305,14 +305,9 @@ Geometry BubbleEmitter::CreateGeometry( unsigned int numOfPatch ) PropertyBuffer vertices = PropertyBuffer::New( vertexFormat ); vertices.SetData( &vertexData[0], numVertex ); - Property::Map indexFormat; - indexFormat["indices"] = Property::INTEGER; - PropertyBuffer indices = PropertyBuffer::New( indexFormat ); - indices.SetData( &indexData[0], numIndex ); - Geometry geometry = Geometry::New(); geometry.AddVertexBuffer( vertices ); - geometry.SetIndexBuffer( indices ); + geometry.SetIndexBuffer( &indexData[0], numIndex ); return geometry; } diff --git a/dali-toolkit/internal/controls/model3d-view/obj-loader.cpp b/dali-toolkit/internal/controls/model3d-view/obj-loader.cpp index 5e67b1e..635115a 100644 --- a/dali-toolkit/internal/controls/model3d-view/obj-loader.cpp +++ b/dali-toolkit/internal/controls/model3d-view/obj-loader.cpp @@ -164,7 +164,7 @@ void ObjLoader::CenterAndScale(bool center, Dali::Vector& points) void ObjLoader::CreateGeometryArray(Dali::Vector & vertices, Dali::Vector & textures, Dali::Vector & verticesExt, - Dali::Vector & indices) + Dali::Vector & indices) { //If we don't have tangents, calculate them //we need to recalculate the normals too, because we need just one normal,tangent, bitangent per vertex @@ -491,7 +491,7 @@ Geometry ObjLoader::CreateGeometry(Toolkit::Model3dView::IlluminationType illumi Dali::Vector vertices; Dali::Vector textures; Dali::Vector verticesExt; - Dali::Vector indices; + Dali::Vector indices; CreateGeometryArray(vertices, textures, verticesExt, indices); @@ -530,13 +530,7 @@ Geometry ObjLoader::CreateGeometry(Toolkit::Model3dView::IlluminationType illumi if (indices.Size()) { - //Indices - Property::Map indicesVertexFormat; - indicesVertexFormat["aIndices"] = Property::INTEGER; - PropertyBuffer indicesToVertices = PropertyBuffer::New( indicesVertexFormat ); - indicesToVertices.SetData( &indices[0], indices.Size() ); - - surface.SetIndexBuffer ( indicesToVertices ); + surface.SetIndexBuffer ( &indices[0], indices.Size() ); } surface.SetRequiresDepthTesting(true); diff --git a/dali-toolkit/internal/controls/model3d-view/obj-loader.h b/dali-toolkit/internal/controls/model3d-view/obj-loader.h index eac63c3..b9d8a6a 100644 --- a/dali-toolkit/internal/controls/model3d-view/obj-loader.h +++ b/dali-toolkit/internal/controls/model3d-view/obj-loader.h @@ -139,7 +139,7 @@ private: void CreateGeometryArray(Dali::Vector & vertices, Dali::Vector & textures, Dali::Vector & verticesExt, - Dali::Vector & indices); + Dali::Vector & indices); }; diff --git a/dali-toolkit/internal/controls/renderers/border/border-renderer.cpp b/dali-toolkit/internal/controls/renderers/border/border-renderer.cpp index bbe44a9..3594538 100644 --- a/dali-toolkit/internal/controls/renderers/border/border-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/border/border-renderer.cpp @@ -295,16 +295,12 @@ Geometry BorderRenderer::CreateBorderGeometry() borderVertices.SetData( borderVertexData, 16 ); // Create indices - unsigned int indexData[24] = { 1,5,2,6,3,7,7,6,11,10,15,14,14,10,13,9,12,8,8,9,4,5,0,1}; - Property::Map indexFormat; - indexFormat[INDEX_NAME] = Property::INTEGER; - PropertyBuffer indices = PropertyBuffer::New( indexFormat ); - indices.SetData( indexData, 24 ); + unsigned short indexData[24] = { 1,5,2,6,3,7,7,6,11,10,15,14,14,10,13,9,12,8,8,9,4,5,0,1}; // Create the geometry object Geometry geometry = Geometry::New(); geometry.AddVertexBuffer( borderVertices ); - geometry.SetIndexBuffer( indices ); + geometry.SetIndexBuffer( indexData, sizeof(indexData)/sizeof(indexData[0]) ); geometry.SetGeometryType( Geometry::TRIANGLE_STRIP ); return geometry; diff --git a/dali-toolkit/internal/controls/renderers/debug/debug-renderer.cpp b/dali-toolkit/internal/controls/renderers/debug/debug-renderer.cpp index 6c3c58a..1fc45ca 100644 --- a/dali-toolkit/internal/controls/renderers/debug/debug-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/debug/debug-renderer.cpp @@ -117,16 +117,12 @@ Geometry DebugRenderer::CreateQuadWireframeGeometry() quadVertices.SetData( quadVertexData, 4 ); // Create indices - unsigned int indexData[10] = { 0, 1, 1, 2, 2, 3, 3, 0 }; - Property::Map indexFormat; - indexFormat[INDEX_NAME] = Property::INTEGER; - PropertyBuffer indices = PropertyBuffer::New( indexFormat ); - indices.SetData( indexData, sizeof(indexData)/sizeof(indexData[0]) ); + unsigned short indexData[10] = { 0, 1, 1, 2, 2, 3, 3, 0 }; // Create the geometry object Geometry geometry = Geometry::New(); geometry.AddVertexBuffer( quadVertices ); - geometry.SetIndexBuffer( indices ); + geometry.SetIndexBuffer( indexData, sizeof(indexData)/sizeof(indexData[0]) ); geometry.SetGeometryType( Geometry::LINES ); return geometry; diff --git a/dali-toolkit/internal/controls/renderers/npatch/npatch-renderer.cpp b/dali-toolkit/internal/controls/renderers/npatch/npatch-renderer.cpp index 028da4c..94b2382 100644 --- a/dali-toolkit/internal/controls/renderers/npatch/npatch-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/npatch/npatch-renderer.cpp @@ -118,7 +118,7 @@ const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER( * @param[in] indices The indices to generate the geometry from * @return The geometry formed from the vertices and indices */ -Geometry GenerateGeometry( const Vector< Vector2 >& vertices, const Vector< unsigned int >& indices ) +Geometry GenerateGeometry( const Vector< Vector2 >& vertices, const Vector< unsigned short >& indices ) { Property::Map vertexFormat; vertexFormat[ "aPosition" ] = Property::VECTOR2; @@ -128,18 +128,14 @@ Geometry GenerateGeometry( const Vector< Vector2 >& vertices, const Vector< unsi vertexPropertyBuffer.SetData( &vertices[ 0 ], vertices.Size() ); } - Property::Map indexFormat; - indexFormat[ "indices" ] = Property::INTEGER; - PropertyBuffer indexPropertyBuffer = PropertyBuffer::New( indexFormat ); + // Create the geometry object + Geometry geometry = Geometry::New(); + geometry.AddVertexBuffer( vertexPropertyBuffer ); if( indices.Size() > 0 ) { - indexPropertyBuffer.SetData( &indices[ 0 ], indices.Size() ); + geometry.SetIndexBuffer( &indices[ 0 ], indices.Size() ); } - // Create the geometry object - Geometry geometry = Geometry::New(); - geometry.AddVertexBuffer( vertexPropertyBuffer ); - geometry.SetIndexBuffer( indexPropertyBuffer ); return geometry; } @@ -151,7 +147,7 @@ Geometry GenerateGeometry( const Vector< Vector2 >& vertices, const Vector< unsi * @param[in] rowIdx The row index to start the quad * @param[in] nextRowIdx The index to the next row */ -void AddQuadIndices( Vector< unsigned int >& indices, unsigned int rowIdx, unsigned int nextRowIdx ) +void AddQuadIndices( Vector< unsigned short >& indices, unsigned int rowIdx, unsigned int nextRowIdx ) { indices.PushBack( rowIdx ); indices.PushBack( nextRowIdx + 1 ); @@ -584,7 +580,7 @@ Geometry NPatchRenderer::CreateGeometry( Uint16Pair gridSize ) // Create indices //TODO: compare performance with triangle strip when Geometry supports it - Vector< unsigned int > indices; + Vector< unsigned short > indices; indices.Reserve( gridWidth * gridHeight * 6 ); unsigned int rowIdx = 0; @@ -641,7 +637,7 @@ Geometry NPatchRenderer::CreateGeometryBorder( Uint16Pair gridSize ) // Create indices //TODO: compare performance with triangle strip when Geometry supports it - Vector< unsigned int > indices; + Vector< unsigned short > indices; indices.Reserve( gridWidth * gridHeight * 6 ); //top diff --git a/dali-toolkit/internal/controls/renderers/renderer-factory-cache.cpp b/dali-toolkit/internal/controls/renderers/renderer-factory-cache.cpp index 3a6b79f..4fd7424 100644 --- a/dali-toolkit/internal/controls/renderers/renderer-factory-cache.cpp +++ b/dali-toolkit/internal/controls/renderers/renderer-factory-cache.cpp @@ -215,7 +215,7 @@ Geometry RendererFactoryCache::CreateGridGeometry( Uint16Pair gridSize ) } // Create indices - Vector< unsigned int > indices; + Vector< unsigned short > indices; indices.Reserve( (gridWidth+2)*gridHeight*2 - 2); for( unsigned int row = 0u; row < gridHeight; ++row ) @@ -251,15 +251,16 @@ Geometry RendererFactoryCache::CreateGridGeometry( Uint16Pair gridSize ) Property::Map indexFormat; indexFormat[ "indices" ] = Property::INTEGER; PropertyBuffer indexPropertyBuffer = PropertyBuffer::New( indexFormat ); - if( indices.Size() > 0 ) - { - indexPropertyBuffer.SetData( &indices[ 0 ], indices.Size() ); - } + // Create the geometry object Geometry geometry = Geometry::New(); geometry.AddVertexBuffer( vertexPropertyBuffer ); - geometry.SetIndexBuffer( indexPropertyBuffer ); + if( indices.Size() > 0 ) + { + geometry.SetIndexBuffer( &indices[ 0 ], indices.Size() ); + } + geometry.SetGeometryType( Geometry::TRIANGLE_STRIP ); return geometry; diff --git a/dali-toolkit/internal/controls/scrollable/bouncing-effect-actor.cpp b/dali-toolkit/internal/controls/scrollable/bouncing-effect-actor.cpp index 91e556f..c06e400 100644 --- a/dali-toolkit/internal/controls/scrollable/bouncing-effect-actor.cpp +++ b/dali-toolkit/internal/controls/scrollable/bouncing-effect-actor.cpp @@ -117,15 +117,11 @@ Actor CreateBouncingEffectActor( Property::Index& bouncePropertyIndex ) PropertyBuffer vertices = PropertyBuffer::New( vertexFormat ); vertices.SetData( vertexData, 20u ); - unsigned int indexData[30] = { 0,3,1,0,2,3,4,7,5,4,6,7,8,11,9,8,10,11,12,15,13,12,14,15,16,19,17,16,18,19}; - Property::Map indexFormat; - indexFormat["indices"] = Property::INTEGER; - PropertyBuffer indices = PropertyBuffer::New( indexFormat ); - indices.SetData( indexData, 30u ); + unsigned short indexData[30] = { 0,3,1,0,2,3,4,7,5,4,6,7,8,11,9,8,10,11,12,15,13,12,14,15,16,19,17,16,18,19}; Geometry meshGeometry = Geometry::New(); meshGeometry.AddVertexBuffer( vertices ); - meshGeometry.SetIndexBuffer( indices ); + meshGeometry.SetIndexBuffer( indexData, sizeof(indexData)/sizeof(indexData[0]) ); // Create the shader Shader shader = Shader::New( MESH_VERTEX_SHADER, MESH_FRAGMENT_SHADER ); diff --git a/dali-toolkit/internal/text/decorator/text-decorator.cpp b/dali-toolkit/internal/text/decorator/text-decorator.cpp index bb393ff..47e3694 100644 --- a/dali-toolkit/internal/text/decorator/text-decorator.cpp +++ b/dali-toolkit/internal/text/decorator/text-decorator.cpp @@ -283,7 +283,6 @@ struct Decorator::Impl : public ConnectionTracker mNotifyEndOfScroll( false ) { mQuadVertexFormat[ "aPosition" ] = Property::VECTOR2; - mQuadIndexFormat[ "indices" ] = Property::INTEGER; mHighlightShader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER ); SetupTouchEvents(); } @@ -1005,7 +1004,7 @@ struct Decorator::Impl : public ConnectionTracker if( !mHighlightQuadList.empty() ) { Vector< Vector2 > vertices; - Vector< unsigned int> indices; + Vector< unsigned short> indices; Vector2 vertex; std::vector::iterator iter = mHighlightQuadList.begin(); @@ -1051,20 +1050,14 @@ struct Decorator::Impl : public ConnectionTracker mQuadVertices = PropertyBuffer::New( mQuadVertexFormat ); } - if( ! mQuadIndices ) - { - mQuadIndices = PropertyBuffer::New( mQuadIndexFormat ); - } - mQuadVertices.SetData( &vertices[ 0 ], vertices.Size() ); - mQuadIndices.SetData( &indices[ 0 ], indices.Size() ); if( !mQuadGeometry ) { mQuadGeometry = Geometry::New(); mQuadGeometry.AddVertexBuffer( mQuadVertices ); } - mQuadGeometry.SetIndexBuffer( mQuadIndices ); + mQuadGeometry.SetIndexBuffer( &indices[ 0 ], indices.Size() ); if( !mHighlightRenderer ) { @@ -1654,7 +1647,6 @@ struct Decorator::Impl : public ConnectionTracker Renderer mHighlightRenderer; Shader mHighlightShader; ///< Shader used for highlight Property::Map mQuadVertexFormat; - Property::Map mQuadIndexFormat; PopupImpl mCopyPastePopup; TextSelectionPopup::Buttons mEnabledPopupButtons; /// Bit mask of currently enabled Popup buttons TextSelectionPopupCallbackInterface& mTextSelectionPopupCallbackInterface; @@ -1666,7 +1658,6 @@ struct Decorator::Impl : public ConnectionTracker HandleImpl mHandle[HANDLE_TYPE_COUNT]; PropertyBuffer mQuadVertices; - PropertyBuffer mQuadIndices; Geometry mQuadGeometry; QuadContainer mHighlightQuadList; ///< Sub-selections that combine to create the complete selection highlight diff --git a/dali-toolkit/internal/text/rendering/atlas/atlas-manager.h b/dali-toolkit/internal/text/rendering/atlas/atlas-manager.h index 75f117a..df86ac1 100644 --- a/dali-toolkit/internal/text/rendering/atlas/atlas-manager.h +++ b/dali-toolkit/internal/text/rendering/atlas/atlas-manager.h @@ -90,7 +90,7 @@ public: struct Mesh2D { Vector< Vertex2D > mVertices; ///< container of vertices - Vector< SizeType > mIndices; ///< container of indices + Vector< unsigned short > mIndices; ///< container of indices }; /** diff --git a/dali-toolkit/internal/text/rendering/atlas/atlas-mesh-factory.cpp b/dali-toolkit/internal/text/rendering/atlas/atlas-mesh-factory.cpp index 3a64c96..4da6c1f 100644 --- a/dali-toolkit/internal/text/rendering/atlas/atlas-mesh-factory.cpp +++ b/dali-toolkit/internal/text/rendering/atlas/atlas-mesh-factory.cpp @@ -148,7 +148,7 @@ void AppendMesh( Toolkit::AtlasManager::Mesh2D& first, second.mIndices.Begin(), second.mIndices.End() ); - for( Vector::Iterator it = first.mIndices.Begin() + indicesCount, + for( Vector::Iterator it = first.mIndices.Begin() + indicesCount, endIt = first.mIndices.End(); it != endIt; ++it ) diff --git a/dali-toolkit/internal/text/rendering/atlas/text-atlas-renderer.cpp b/dali-toolkit/internal/text/rendering/atlas/text-atlas-renderer.cpp index 3755fcf..966deff 100644 --- a/dali-toolkit/internal/text/rendering/atlas/text-atlas-renderer.cpp +++ b/dali-toolkit/internal/text/rendering/atlas/text-atlas-renderer.cpp @@ -141,7 +141,6 @@ struct AtlasRenderer::Impl mQuadVertexFormat[ "aPosition" ] = Property::VECTOR2; mQuadVertexFormat[ "aTexCoord" ] = Property::VECTOR2; mQuadVertexFormat[ "aColor" ] = Property::VECTOR4; - mQuadIndexFormat[ "indices" ] = Property::INTEGER; } bool IsGlyphUnderlined( GlyphIndex index, @@ -484,13 +483,11 @@ struct AtlasRenderer::Impl Actor CreateMeshActor( const MeshRecord& meshRecord, const Vector2& actorSize ) { PropertyBuffer quadVertices = PropertyBuffer::New( mQuadVertexFormat ); - PropertyBuffer quadIndices = PropertyBuffer::New( mQuadIndexFormat ); quadVertices.SetData( const_cast< AtlasManager::Vertex2D* >( &meshRecord.mMesh.mVertices[ 0 ] ), meshRecord.mMesh.mVertices.Size() ); - quadIndices.SetData( const_cast< unsigned int* >( &meshRecord.mMesh.mIndices[ 0 ] ), meshRecord.mMesh.mIndices.Size() ); Geometry quadGeometry = Geometry::New(); quadGeometry.AddVertexBuffer( quadVertices ); - quadGeometry.SetIndexBuffer( quadIndices ); + quadGeometry.SetIndexBuffer( &meshRecord.mMesh.mIndices[0], meshRecord.mMesh.mIndices.Size() ); TextureSet textureSet( mGlyphManager.GetTextures( meshRecord.mAtlasId ) ); Shader shader( mGlyphManager.GetShader( meshRecord.mAtlasId ) ); @@ -729,7 +726,6 @@ struct AtlasRenderer::Impl std::vector< MaxBlockSize > mBlockSizes; ///> Maximum size needed to contain a glyph in a block within a new atlas Vector< TextCacheEntry > mTextCache; ///> Caches data from previous render Property::Map mQuadVertexFormat; ///> Describes the vertex format for text - Property::Map mQuadIndexFormat; ///> Describes the index format for text int mDepth; ///> DepthIndex passed by control when connect to stage }; diff --git a/dali-toolkit/internal/text/rendering/vector-based/vector-based-renderer.cpp b/dali-toolkit/internal/text/rendering/vector-based/vector-based-renderer.cpp index 82bf555..73fb666 100644 --- a/dali-toolkit/internal/text/rendering/vector-based/vector-based-renderer.cpp +++ b/dali-toolkit/internal/text/rendering/vector-based/vector-based-renderer.cpp @@ -64,7 +64,7 @@ void AddVertex( Vector& vertices, float x, float y, float u, float v, vertices.PushBack( meshVertex ); } -void AddTriangle( Vector& indices, unsigned int v0, unsigned int v1, unsigned int v2 ) +void AddTriangle( Vector& indices, unsigned int v0, unsigned int v1, unsigned int v2 ) { indices.PushBack( v0 ); indices.PushBack( v1 ); @@ -79,7 +79,7 @@ bool CreateGeometry( const Vector& glyphs, VectorBlobAtlas& atlas, Dali::TextAbstraction::FontClient& fontClient, Vector< Vertex2D >& vertices, - Vector< unsigned int >& indices, + Vector< unsigned short >& indices, const Vector4* const colorsBuffer, const ColorIndex* const colorIndicesBuffer, const Vector4& defaultColor ) @@ -161,7 +161,6 @@ struct VectorBasedRenderer::Impl mQuadVertexFormat[ "aPosition" ] = Property::VECTOR2; mQuadVertexFormat[ "aTexCoord" ] = Property::VECTOR2; mQuadVertexFormat[ "aColor" ] = Property::VECTOR4; - mQuadIndexFormat[ "indices" ] = Property::INTEGER; } Actor mActor; ///< The actor parent which renders the text @@ -169,7 +168,6 @@ struct VectorBasedRenderer::Impl TextAbstraction::FontClient mFontClient; ///> The font client used to supply glyph information Property::Map mQuadVertexFormat; ///> Describes the vertex format for text - Property::Map mQuadIndexFormat; ///> Describes the index format for text Shader mShaderEffect; @@ -217,7 +215,7 @@ Actor VectorBasedRenderer::Render( Text::ViewInterface& view, int /*depth*/ ) const Vector4& defaultColor = view.GetTextColor(); Vector< Vertex2D > vertices; - Vector< unsigned int > indices; + Vector< unsigned short > indices; const Vector2& controlSize = view.GetControlSize(); float xOffset = controlSize.width * -0.5f; @@ -272,14 +270,13 @@ Actor VectorBasedRenderer::Render( Text::ViewInterface& view, int /*depth*/ ) if( 0 != vertices.Count() ) { PropertyBuffer quadVertices = PropertyBuffer::New( mImpl->mQuadVertexFormat ); - PropertyBuffer quadIndices = PropertyBuffer::New( mImpl->mQuadIndexFormat ); quadVertices.SetData( &vertices[ 0 ], vertices.Size() ); - quadIndices.SetData( &indices[ 0 ], indices.Size() ); + Geometry quadGeometry = Geometry::New(); quadGeometry.AddVertexBuffer( quadVertices ); - quadGeometry.SetIndexBuffer( quadIndices ); + quadGeometry.SetIndexBuffer( &indices[ 0 ], indices.Size() ); TextureSet texture = mImpl->mAtlas->GetTextureSet(); diff --git a/node-addon/examples/line-mesh.js b/node-addon/examples/line-mesh.js index 63bf20a..0385dae 100644 --- a/node-addon/examples/line-mesh.js +++ b/node-addon/examples/line-mesh.js @@ -91,14 +91,12 @@ daliApp.createMeshActor = function() { var indexDataArray = new Uint32Array(indexData.length); indexDataArray.set(indexData, 0); - var indices = new dali.PropertyBuffer(indexFormat); - indices.setData(indexDataArray, 10); // Create geometry var geometry = new dali.Geometry(); geometry.addVertexBuffer( pentagonVertices ); geometry.addVertexBuffer( pentacleVertices ); - geometry.setIndexBuffer( indices ); + geometry.setIndexBuffer( indexDataArray, 10 ); geometry.setGeometryType( dali.GEOMETRY_LINES ); var renderer = new dali.Renderer(geometry, shader); diff --git a/node-addon/examples/texture-mesh.js b/node-addon/examples/texture-mesh.js index f37fd67..514f20c 100644 --- a/node-addon/examples/texture-mesh.js +++ b/node-addon/examples/texture-mesh.js @@ -93,13 +93,11 @@ daliApp.createMeshActor = function() { var indexDataArray = new Uint32Array(indexData.length); indexDataArray.set(indexData, 0); - var indices = new dali.PropertyBuffer(indexFormat); - indices.setData(indexDataArray, 6); // Create geometry var geometry = new dali.Geometry(); geometry.addVertexBuffer( texturedQuadVertices ); - geometry.setIndexBuffer( indices ); + geometry.setIndexBuffer( indexDataArray, 6 ); var renderer = new dali.Renderer(geometry, shader); renderer.setTextures(textureSet); diff --git a/plugins/dali-script-v8/src/rendering/geometry-api.cpp b/plugins/dali-script-v8/src/rendering/geometry-api.cpp index 01aec00..e9c35a9 100644 --- a/plugins/dali-script-v8/src/rendering/geometry-api.cpp +++ b/plugins/dali-script-v8/src/rendering/geometry-api.cpp @@ -188,8 +188,15 @@ void GeometryApi::RemoveVertexBuffer( const v8::FunctionCallbackInfo< v8::Value * * @method setIndexBuffer * @for Geometry - * @param {Object} indexBuffer PropertyBuffer to be used as a source of indices - * for the geometry + * @param {Uint32Array} data The data that will be copied to the buffer + * + * @example + * var indexData = [0, 1, 1, 2, 2, 3, 3, 4, 4, 0]; + * var indexDataArray = new Uint32Array(indexData.length); + * indexDataArray.set(indexData, 0); + * + * geometry.SetIndexBuffer( indexDataArray, indexDataArray.length ); + *``` */ void GeometryApi::SetIndexBuffer( const v8::FunctionCallbackInfo& args ) { @@ -199,14 +206,23 @@ void GeometryApi::SetIndexBuffer( const v8::FunctionCallbackInfo& arg Geometry geometry = GetGeometry( isolate, args ); bool found( false ); - PropertyBuffer indexBuffer = PropertyBufferApi::GetPropertyBufferFromParams( 0, found, isolate, args ); - if( !found ) + void* data = V8Utils::GetArrayBufferViewParameter( PARAMETER_0, found, isolate, args); + + if( ! found ) { - DALI_SCRIPT_EXCEPTION( isolate, "invalid property buffer parameter" ); + DALI_SCRIPT_EXCEPTION( isolate, "invalid data parameter" ); } else { - geometry.SetIndexBuffer(indexBuffer); + int size = V8Utils::GetIntegerParameter( PARAMETER_1, found, isolate, args, 0); + if( !found ) + { + DALI_SCRIPT_EXCEPTION( isolate, "missing buffer size from param 1" ); + } + else + { + geometry.SetIndexBuffer( static_cast(data), size ); + } } } diff --git a/plugins/dali-script-v8/src/rendering/geometry-wrapper.cpp b/plugins/dali-script-v8/src/rendering/geometry-wrapper.cpp index d9ea511..f57abfe 100644 --- a/plugins/dali-script-v8/src/rendering/geometry-wrapper.cpp +++ b/plugins/dali-script-v8/src/rendering/geometry-wrapper.cpp @@ -58,7 +58,7 @@ const unsigned int GeometryFunctionTableCount = sizeof(GeometryFunctionTable)/si GeometryWrapper::GeometryWrapper( const Dali::Geometry& geometry, GarbageCollectorInterface& gc ) -: HandleWrapper( BaseWrappedObject::GEOMETRY , geometry, gc ) +: BaseWrappedObject( BaseWrappedObject::GEOMETRY, gc ) { mGeometry = geometry; } @@ -106,9 +106,6 @@ v8::Handle GeometryWrapper::MakeGeometryTemplate( v8::Isolat v8::Local objTemplate = v8::ObjectTemplate::New(); - // property handle intercepts property getters and setters and signals - HandleWrapper::AddInterceptsToTemplate( isolate, objTemplate ); - objTemplate->SetInternalFieldCount( BaseWrappedObject::FIELD_COUNT ); // add our function properties diff --git a/plugins/dali-script-v8/src/rendering/geometry-wrapper.h b/plugins/dali-script-v8/src/rendering/geometry-wrapper.h index b108e6c..6272ffc 100644 --- a/plugins/dali-script-v8/src/rendering/geometry-wrapper.h +++ b/plugins/dali-script-v8/src/rendering/geometry-wrapper.h @@ -36,7 +36,7 @@ namespace V8Plugin * A Geometry wrapper. * Provides access to Geometry specific functionality and V8 memory handling. */ -class GeometryWrapper : public HandleWrapper +class GeometryWrapper : public BaseWrappedObject { public: -- 2.7.4