Moved Core Rendering API from devel-api to public-api
[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 // CLASS HEADER
19 #include "test-actor-utils.h"
20
21 // EXTERNAL INCLUDES
22 #include <dali/public-api/dali-core.h>
23 #include <dali/devel-api/images/texture-set-image.h>
24
25 // INTERNAL INCLUDES
26 #include "mesh-builder.h"
27
28 namespace Dali
29 {
30
31 namespace
32 {
33 const char* VERTEX_SHADER = DALI_COMPOSE_SHADER(
34   attribute mediump vec2 aPosition;\n
35   uniform mediump mat4 uMvpMatrix;\n
36   uniform mediump vec3 uSize;\n
37   \n
38   void main()\n
39   {\n
40     mediump vec4 vertexPosition = vec4(aPosition, 0.0, 1.0);\n
41     vertexPosition.xyz *= uSize;\n
42     gl_Position = uMvpMatrix * vertexPosition;\n
43   }\n
44 );
45
46 const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER(
47   uniform lowp vec4 uColor;\n
48   \n
49   void main()\n
50   {\n
51     gl_FragColor = uColor;\n
52   }\n
53 );
54
55 } // unnamed namespace
56
57 Actor CreateRenderableActor()
58 {
59   return CreateRenderableActor( Image(), VERTEX_SHADER, FRAGMENT_SHADER );
60 }
61
62 Actor CreateRenderableActor( Image texture )
63 {
64   return CreateRenderableActor( texture, VERTEX_SHADER, FRAGMENT_SHADER );
65 }
66
67 Actor CreateRenderableActor( Image texture, const std::string& vertexShader, const std::string& fragmentShader )
68 {
69   // Create the geometry
70   Geometry geometry = CreateQuadGeometry();
71
72   // Create Shader
73   Shader shader = Shader::New( vertexShader, fragmentShader );
74
75   // Create renderer from geometry and material
76   Renderer renderer = Renderer::New( geometry, shader );
77
78   // Create actor and set renderer
79   Actor actor = Actor::New();
80   actor.AddRenderer( renderer );
81
82   // If we a texture, then create a texture-set and add to renderer
83   if( texture )
84   {
85     TextureSet textureSet = TextureSet::New();
86     TextureSetImage( textureSet, 0u, texture );
87     renderer.SetTextures( textureSet );
88
89     // Set actor to the size of the texture if set
90     actor.SetSize( texture.GetWidth(), texture.GetHeight() );
91   }
92
93   return actor;
94 }
95
96 Image GetTexture( Actor actor )
97 {
98   Image image;
99   if( actor && actor.GetRendererCount() )
100   {
101     Renderer renderer = actor.GetRendererAt( 0u );
102     if( renderer )
103     {
104       TextureSet textureSet = renderer.GetTextures();
105       if( textureSet && textureSet.GetTextureCount() )
106       {
107         image = TextureGetImage( textureSet, 0u );
108       }
109     }
110   }
111
112   return image;
113 }
114
115 } // namespace Dali