Updates for const->constexpr
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-internal / addons / test-rendering-addon.cpp
1 /*
2  * Copyright (c) 2020 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 // EXTERNAL HEADERS
19 #include <dali/devel-api/addons/addon-base.h>
20 #include <dali/devel-api/adaptor-framework/pixel-buffer.h>
21 #include <dali/public-api/rendering/geometry.h>
22 #include <dali/public-api/rendering/renderer.h>
23
24 // INTERNAL HEADERS
25 // Needed to access the private class members
26 #define private public
27 #include <dali-toolkit/internal/visuals/npatch/npatch-visual.h>
28 #include <dali-toolkit/internal/visuals/npatch-loader.h>
29 #undef private
30
31
32 using Dali::Toolkit::Internal::TextureManager;
33
34 namespace Dali
35 {
36 namespace AddOns
37 {
38
39 struct DummyTiler
40 {
41 };
42
43 void* CreateInstance( TextureManager* textureManager )
44 {
45   fprintf(stderr, "AddOn::CreateInstance( %p )\n", textureManager);
46   return new DummyTiler;
47 }
48
49 namespace GeometryTiler
50 {
51 std::vector<std::string> gCallStack;
52
53 static Geometry GetGeometryInternal(TextureManager::TextureId textureId, uint32_t& o0, uint32_t& o1 )
54 {
55   gCallStack.emplace_back( "GetGeometry" );
56   o0 = 10;
57   o1 = 5;
58   fprintf(stderr, "AddOn::GetGeometryInternal()\n");
59   return Dali::Geometry::New();
60 }
61
62 static Geometry CreateGeometryInternal(TextureManager::TextureId textureId, const Devel::PixelBuffer& pixelBuffer )
63 {
64   gCallStack.emplace_back( "CreateGeometry" );
65   fprintf(stderr, "AddOn::CreateGeometryInternal()\n");
66   return Dali::Geometry::New();
67 }
68
69 static Geometry CreateGeometryMapInternal(const void* opacityMap,
70                                           const Uint16Pair& gridSize,
71                                           uint32_t *outElements)
72 {
73   gCallStack.emplace_back( "CreateGeometryGrid" );
74   outElements[0] = 2;
75   outElements[1] = 3;
76   return Dali::Geometry::New();
77 }
78
79 static void* NPatchBuildInternal(const Devel::PixelBuffer& pixelBuffer, Toolkit::Internal::NPatchLoader::Data* data )
80 {
81   gCallStack.emplace_back( "BuildNPatch" );
82   fprintf(stderr, "AddOn::NPatchBuild()\n");
83   static char dummyData;
84   return &dummyData;
85 }
86
87 static void NPatchDestroyInternal(void* object )
88 {
89   gCallStack.emplace_back( "DestroyNPatch" );
90   fprintf(stderr, "AddOn::NPatchDestroy()\n");
91 }
92
93 static void SubmitInternal(Renderer& renderer, const void* object  )
94 {
95   gCallStack.emplace_back( "SubmitRenderTask" );
96   fprintf(stderr, "AddOn::SubmitInternal()\n");
97 }
98
99 static std::vector<std::string> GetCallStack( bool clear )
100 {
101   auto retval = gCallStack;
102   if(clear)
103   {
104     gCallStack.clear();
105   }
106   return retval;
107 }
108
109
110 }
111 }
112 }
113
114 /**
115  * OverdrawingAddOn implementation
116  */
117 class TestRenderingAddOn : public Dali::AddOns::AddOnBase
118 {
119 public:
120
121   void GetAddOnInfo( Dali::AddOnInfo& info ) override
122   {
123     info.type = Dali::AddOnType::GENERIC;
124     info.name = "oo-rendering";
125     info.version = Dali::DALI_ADDON_VERSION( 1, 0, 0 );
126     info.next = nullptr;
127   }
128
129   /**
130    * Dispatch table for global functions
131    * @return
132    */
133   Dali::AddOns::DispatchTable* GetGlobalDispatchTable() override
134   {
135     static Dali::AddOns::DispatchTable dispatchTable{};
136     if( dispatchTable.Empty() )
137     {
138       dispatchTable["Initialize"]         = Dali::AddOns::CreateInstance;
139       dispatchTable["CreateGeometry"]     = Dali::AddOns::GeometryTiler::CreateGeometryInternal;
140       dispatchTable["GetGeometry"]        = Dali::AddOns::GeometryTiler::GetGeometryInternal;
141       dispatchTable["CreateGeometryGrid"] = Dali::AddOns::GeometryTiler::CreateGeometryMapInternal;
142       dispatchTable["BuildNPatch"]        = Dali::AddOns::GeometryTiler::NPatchBuildInternal;
143       dispatchTable["DestroyNPatch"]      = Dali::AddOns::GeometryTiler::NPatchDestroyInternal;
144       dispatchTable["SubmitRenderTask"]   = Dali::AddOns::GeometryTiler::SubmitInternal;
145       dispatchTable["GetCallStack"]       = Dali::AddOns::GeometryTiler::GetCallStack;
146     }
147     return &dispatchTable;
148   }
149
150   /**
151    * Lifecycle
152    */
153
154   void OnStart() override
155   {
156   }
157
158   void OnStop() override
159   {
160   }
161
162   void OnPause() override
163   {
164   }
165
166   void OnResume() override
167   {
168   }
169
170   /**
171    * Dispatch table for instance functions
172    * @return
173    */
174   Dali::AddOns::DispatchTable* GetInstanceDispatchTable() override
175   {
176     return nullptr;
177   }
178 };
179
180 REGISTER_ADDON_CLASS( TestRenderingAddOn );