{ 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;
}
vertexData.reserve( numVertex );
unsigned int numIndex = numOfPatch*6u;
- Vector<unsigned int> indexData;
+ Vector<unsigned short> indexData;
indexData.Reserve( numIndex );
for(unsigned int i = 0; i < numOfPatch; i++)
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 );
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;
}
void ObjLoader::CreateGeometryArray(Dali::Vector<Vertex> & vertices,
Dali::Vector<Vector2> & textures,
Dali::Vector<VertexExt> & verticesExt,
- Dali::Vector<int> & indices)
+ Dali::Vector<unsigned short> & 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
Dali::Vector<Vertex> vertices;
Dali::Vector<Vector2> textures;
Dali::Vector<VertexExt> verticesExt;
- Dali::Vector<int> indices;
+ Dali::Vector<unsigned short> indices;
CreateGeometryArray(vertices, textures, verticesExt, indices);
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);
void CreateGeometryArray(Dali::Vector<Vertex> & vertices,
Dali::Vector<Vector2> & textures,
Dali::Vector<VertexExt> & verticesExt,
- Dali::Vector<int> & indices);
+ Dali::Vector<unsigned short> & indices);
};
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;
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;
* @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;
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;
}
* @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 );
// 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;
// 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
}
// 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 )
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;
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 );
mNotifyEndOfScroll( false )
{
mQuadVertexFormat[ "aPosition" ] = Property::VECTOR2;
- mQuadIndexFormat[ "indices" ] = Property::INTEGER;
mHighlightShader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER );
SetupTouchEvents();
}
if( !mHighlightQuadList.empty() )
{
Vector< Vector2 > vertices;
- Vector< unsigned int> indices;
+ Vector< unsigned short> indices;
Vector2 vertex;
std::vector<QuadCoordinates>::iterator iter = mHighlightQuadList.begin();
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 )
{
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;
HandleImpl mHandle[HANDLE_TYPE_COUNT];
PropertyBuffer mQuadVertices;
- PropertyBuffer mQuadIndices;
Geometry mQuadGeometry;
QuadContainer mHighlightQuadList; ///< Sub-selections that combine to create the complete selection highlight
struct Mesh2D
{
Vector< Vertex2D > mVertices; ///< container of vertices
- Vector< SizeType > mIndices; ///< container of indices
+ Vector< unsigned short > mIndices; ///< container of indices
};
/**
second.mIndices.Begin(),
second.mIndices.End() );
- for( Vector<unsigned int>::Iterator it = first.mIndices.Begin() + indicesCount,
+ for( Vector<unsigned short>::Iterator it = first.mIndices.Begin() + indicesCount,
endIt = first.mIndices.End();
it != endIt;
++it )
mQuadVertexFormat[ "aPosition" ] = Property::VECTOR2;
mQuadVertexFormat[ "aTexCoord" ] = Property::VECTOR2;
mQuadVertexFormat[ "aColor" ] = Property::VECTOR4;
- mQuadIndexFormat[ "indices" ] = Property::INTEGER;
}
bool IsGlyphUnderlined( GlyphIndex index,
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 ) );
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
};
vertices.PushBack( meshVertex );
}
-void AddTriangle( Vector<unsigned int>& indices, unsigned int v0, unsigned int v1, unsigned int v2 )
+void AddTriangle( Vector<unsigned short>& indices, unsigned int v0, unsigned int v1, unsigned int v2 )
{
indices.PushBack( v0 );
indices.PushBack( v1 );
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 )
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
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;
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;
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();
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);
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);
*
* @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<v8::Value>& args )
{
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<const unsigned short*>(data), size );
+ }
}
}
GeometryWrapper::GeometryWrapper( const Dali::Geometry& geometry, GarbageCollectorInterface& gc )
-: HandleWrapper( BaseWrappedObject::GEOMETRY , geometry, gc )
+: BaseWrappedObject( BaseWrappedObject::GEOMETRY, gc )
{
mGeometry = geometry;
}
v8::Local<v8::ObjectTemplate> 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
* A Geometry wrapper.
* Provides access to Geometry specific functionality and V8 memory handling.
*/
-class GeometryWrapper : public HandleWrapper
+class GeometryWrapper : public BaseWrappedObject
{
public: