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=2d61cfaaee2419143813755385e9c7b9fde21f21;hp=a7db0d257ce33b59bf12db54912c42615fa641c5;hb=refs%2Fchanges%2F42%2F265542%2F2;hpb=64e89646c0a787aa20eda7a464604357100d5b0e diff --git a/dali-toolkit/internal/controls/scrollable/bouncing-effect-actor.cpp b/dali-toolkit/internal/controls/scrollable/bouncing-effect-actor.cpp index a7db0d2..2d61cfa 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) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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. @@ -26,55 +26,29 @@ #include #include +// INTERNAL INCLUDES +#include + namespace Dali { - namespace Toolkit { - namespace Internal { - namespace { // Bouncing effect is presented by stacked three layers with same color and opacity 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 - -// Modify the vertex position according to the bounce coefficient; -const char* MESH_VERTEX_SHADER = MAKE_SHADER( -attribute mediump vec3 aPosition1;\n -attribute mediump vec3 aPosition2;\n -uniform mediump mat4 uMvpMatrix;\n -uniform mediump vec3 uSize; -uniform mediump float uBounceCoefficient;\n -\n -void main()\n -{\n - gl_Position = uMvpMatrix * vec4(mix( aPosition1, aPosition2, abs(uBounceCoefficient) )*uSize, 1.0);\n -} -); - -// use the actor color to paint every layer -const char* MESH_FRAGMENT_SHADER = MAKE_SHADER( -uniform lowp vec4 uColor;\n -void main()\n -{\n - gl_FragColor = uColor;\n -}\n -); + { + 1.f, + 26.f * 4.f / 130.f, + 26.f * 3.f / 130.f, + 26.f * 2.f / 130.f, + 26.f / 130.f}; -} // namespace Anon +} // namespace -Actor CreateBouncingEffectActor( Property::Index& bouncePropertyIndex ) +Actor CreateBouncingEffectActor(Property::Index& bouncePropertyIndex) { // Create the bouncing mesh geometry struct VertexPosition @@ -85,52 +59,51 @@ Actor CreateBouncingEffectActor( Property::Index& bouncePropertyIndex ) // 4 vertices 2 triangles per layer. The depth interval between each layer is 0.01 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 ) }, + {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)}, // 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 ) }, + {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)}, // 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, 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)}, // 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 ) }, + {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 ) } - }; + {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; - VertexBuffer vertices = VertexBuffer::New( vertexFormat ); - vertices.SetData( vertexData, 20u ); + VertexBuffer vertices = VertexBuffer::New(vertexFormat); + vertices.SetData(vertexData, 20u); - 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}; + 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( indexData, sizeof(indexData)/sizeof(indexData[0]) ); + meshGeometry.AddVertexBuffer(vertices); + meshGeometry.SetIndexBuffer(indexData, sizeof(indexData) / sizeof(indexData[0])); // Create the shader - Shader shader = Shader::New( MESH_VERTEX_SHADER, MESH_FRAGMENT_SHADER ); + Shader shader = Shader::New(SHADER_BOUNCING_EFFECT_MESH_SHADER_VERT, SHADER_BOUNCING_EFFECT_MESH_SHADER_FRAG); // Create renderer - Renderer renderer = Renderer::New( meshGeometry, shader ); + Renderer renderer = Renderer::New(meshGeometry, shader); // Create actor - Actor meshActor= Actor::New(); - meshActor.AddRenderer( renderer ); + Actor meshActor = Actor::New(); + meshActor.AddRenderer(renderer); // Register property bouncePropertyIndex = meshActor.RegisterProperty("uBounceCoefficient", 0.f);