Merge "Fix Svace issue" into devel/master
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / dali-toolkit-test-utils / test-actor-utils.cpp
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 // HEADER
19 #include "test-actor-utils.h"
20 #include "mesh-builder.h"
21
22 // EXTERNAL INCLUDES
23 #include <dali/public-api/dali-core.h>
24 #include <dali/devel-api/rendering/renderer.h>
25
26 namespace Dali
27 {
28
29 namespace
30 {
31 const char* VERTEX_SHADER = DALI_COMPOSE_SHADER(
32   attribute mediump vec2 aPosition;\n
33   uniform mediump mat4 uMvpMatrix;\n
34   uniform mediump vec3 uSize;\n
35   \n
36   void main()\n
37   {\n
38     mediump vec4 vertexPosition = vec4(aPosition, 0.0, 1.0);\n
39     vertexPosition.xyz *= uSize;\n
40     gl_Position = uMvpMatrix * vertexPosition;\n
41   }\n
42 );
43
44 const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER(
45   uniform lowp vec4 uColor;\n
46   \n
47   void main()\n
48   {\n
49     gl_FragColor = uColor;\n
50   }\n
51 );
52
53 } // unnamed namespace
54
55 Actor CreateRenderableActor()
56 {
57   return CreateRenderableActor( Image(), VERTEX_SHADER, FRAGMENT_SHADER );
58 }
59
60 Actor CreateRenderableActor( Image texture )
61 {
62   return CreateRenderableActor( texture, VERTEX_SHADER, FRAGMENT_SHADER );
63 }
64
65 Actor CreateRenderableActor( Image texture, const std::string& vertexShader, const std::string& fragmentShader )
66 {
67   // Create the geometry
68   Geometry geometry = Geometry::QUAD();
69
70   // Create Shader
71   Shader shader = Shader::New( vertexShader, fragmentShader );
72
73   // Create renderer from geometry and material
74   Renderer renderer = Renderer::New( geometry, shader );
75
76   // Create actor and set renderer
77   Actor actor = Actor::New();
78   actor.AddRenderer( renderer );
79
80   // If we a texture, then create a texture-set and add to renderer
81   if( texture )
82   {
83     TextureSet textureSet = TextureSet::New();
84     textureSet.SetImage( 0u, texture );
85     renderer.SetTextures( textureSet );
86
87     // Set actor to the size of the texture if set
88     actor.SetSize( texture.GetWidth(), texture.GetHeight() );
89   }
90
91   return actor;
92 }
93
94 Image GetTexture( Actor actor )
95 {
96   Image image;
97   if( actor && actor.GetRendererCount() )
98   {
99     Renderer renderer = actor.GetRendererAt( 0u );
100     if( renderer )
101     {
102       TextureSet textureSet = renderer.GetTextures();
103       if( textureSet && textureSet.GetTextureCount() )
104       {
105         image = textureSet.GetImage( 0u );
106       }
107     }
108   }
109
110   return image;
111 }
112
113 } // namespace Dali