X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fscrollable%2Fbouncing-effect-actor.cpp;h=a7db0d257ce33b59bf12db54912c42615fa641c5;hp=2583616fd49128db233dcbf25509426408b86425;hb=b1e8521ad77e7b4e62b59613b2edef64429130e9;hpb=bb3974d91de40b4af405063d4b1cb58fd48530ba diff --git a/dali-toolkit/internal/controls/scrollable/bouncing-effect-actor.cpp b/dali-toolkit/internal/controls/scrollable/bouncing-effect-actor.cpp index 2583616..a7db0d2 100644 --- a/dali-toolkit/internal/controls/scrollable/bouncing-effect-actor.cpp +++ b/dali-toolkit/internal/controls/scrollable/bouncing-effect-actor.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,13 +19,12 @@ #include // EXTERNAL INCLUDES -#include -#include #include -#include #include -#include -#include +#include +#include +#include +#include namespace Dali { @@ -39,7 +38,14 @@ namespace Internal namespace { // Bouncing effect is presented by stacked three layers with same color and opacity -const Vector3 LAYER_HEIGHTS( 1.f, 27.f/42.f, 13.f/42.f); +const float LAYER_HEIGHTS[5] = +{ + 1.f, + 26.f * 4.f/ 130.f, + 26.f * 3.f / 130.f, + 26.f * 2.f / 130.f, + 26.f / 130.f +}; #define MAKE_SHADER(A)#A @@ -63,7 +69,7 @@ uniform lowp vec4 uColor;\n void main()\n {\n gl_FragColor = uColor;\n -}\n; +}\n ); } // namespace Anon @@ -77,53 +83,57 @@ Actor CreateBouncingEffectActor( Property::Index& bouncePropertyIndex ) Vector3 position2; }; // 4 vertices 2 triangles per layer. The depth interval between each layer is 0.01 - VertexPosition vertexData[12] = { - //bottom layer + VertexPosition vertexData[20] = { + // bottom layer { Vector3( -0.5f, -0.5f, 0.f ), Vector3( -0.5f, -0.5f, 0.f ) }, { Vector3( 0.5f, -0.5f, 0.f ), Vector3( 0.5f, -0.5f, 0.f ) }, { Vector3( -0.5f, -0.5f, 0.f ), Vector3( -0.5f, -0.5f + LAYER_HEIGHTS[0], 0.f ) }, { Vector3( 0.5f, -0.5f, 0.f ), Vector3( 0.5f, -0.5f+ LAYER_HEIGHTS[0], 0.f ) }, - // middle layer + // mid-bottom layer { Vector3( -0.5f, -0.5f, 0.01f ), Vector3( -0.5f, -0.5f, 0.01f ) }, { Vector3( 0.5f, -0.5f, 0.01f ), Vector3( 0.5f, -0.5f, 0.01f ) }, { Vector3( -0.5f, -0.5f, 0.01f ), Vector3( -0.5f, -0.5f + LAYER_HEIGHTS[1], 0.01f ) }, { Vector3( 0.5f, -0.5f, 0.01f ), Vector3( 0.5f, -0.5f+ LAYER_HEIGHTS[1], 0.01f ) }, - // top layer + // middle layer { Vector3( -0.5f, -0.5f, 0.02f ), Vector3( -0.5f, -0.5f, 0.02f ) }, { Vector3( 0.5f, -0.5f, 0.02f ), Vector3( 0.5f, -0.5f, 0.02f ) }, { Vector3( -0.5f, -0.5f, 0.02f ), Vector3( -0.5f, -0.5f + LAYER_HEIGHTS[2], 0.02f ) }, - { Vector3( 0.5f, -0.5f, 0.02f ), Vector3( 0.5f, -0.5f+ LAYER_HEIGHTS[2], 0.02f ) } + { Vector3( 0.5f, -0.5f, 0.02f ), Vector3( 0.5f, -0.5f+ LAYER_HEIGHTS[2], 0.02f ) }, + // mid-top layer + { Vector3( -0.5f, -0.5f, 0.03f ), Vector3( -0.5f, -0.5f, 0.03f ) }, + { Vector3( 0.5f, -0.5f, 0.03f ), Vector3( 0.5f, -0.5f, 0.03f ) }, + { Vector3( -0.5f, -0.5f, 0.03f ), Vector3( -0.5f, -0.5f + LAYER_HEIGHTS[3], 0.03f ) }, + { Vector3( 0.5f, -0.5f, 0.03f ), Vector3( 0.5f, -0.5f+ LAYER_HEIGHTS[3], 0.03f ) }, + // top layer + { Vector3( -0.5f, -0.5f, 0.04f ), Vector3( -0.5f, -0.5f, 0.04f ) }, + { Vector3( 0.5f, -0.5f, 0.04f ), Vector3( 0.5f, -0.5f, 0.04f ) }, + { Vector3( -0.5f, -0.5f, 0.04f ), Vector3( -0.5f, -0.5f + LAYER_HEIGHTS[4], 0.04f ) }, + { Vector3( 0.5f, -0.5f, 0.04f ), Vector3( 0.5f, -0.5f+ LAYER_HEIGHTS[4], 0.04f ) } }; Property::Map vertexFormat; vertexFormat["aPosition1"] = Property::VECTOR3; vertexFormat["aPosition2"] = Property::VECTOR3; - PropertyBuffer vertices = PropertyBuffer::New( vertexFormat, 12u ); - vertices.SetData( vertexData ); + VertexBuffer vertices = VertexBuffer::New( vertexFormat ); + vertices.SetData( vertexData, 20u ); - unsigned int indexData[18] = { 0,3,1,0,2,3,4,7,5,4,6,7,8,11,9,8,10,11 }; - Property::Map indexFormat; - indexFormat["indices"] = Property::UNSIGNED_INTEGER; - PropertyBuffer indices = PropertyBuffer::New( indexFormat, 18u ); - indices.SetData( indexData ); + 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 material + // Create the shader Shader shader = Shader::New( MESH_VERTEX_SHADER, MESH_FRAGMENT_SHADER ); - Material material = Material::New( shader ); // Create renderer - Renderer renderer = Renderer::New( meshGeometry, material ); + Renderer renderer = Renderer::New( meshGeometry, shader ); // Create actor Actor meshActor= Actor::New(); meshActor.AddRenderer( renderer ); // Register property - bouncePropertyIndex = meshActor.RegisterProperty("bounce-coefficient", 0.f); - meshActor.AddUniformMapping( bouncePropertyIndex, "uBounceCoefficient" ); + bouncePropertyIndex = meshActor.RegisterProperty("uBounceCoefficient", 0.f); return meshActor; }