2 * Copyright (c) 2020 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
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>
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>
32 using Dali::Toolkit::Internal::TextureManager;
43 void* CreateInstance( TextureManager* textureManager )
45 fprintf(stderr, "AddOn::CreateInstance( %p )\n", textureManager);
46 return new DummyTiler;
49 namespace GeometryTiler
51 std::vector<std::string> gCallStack;
53 static Geometry GetGeometryInternal(TextureManager::TextureId textureId, uint32_t& o0, uint32_t& o1 )
55 gCallStack.emplace_back( "GetGeometry" );
58 fprintf(stderr, "AddOn::GetGeometryInternal()\n");
59 return Dali::Geometry::New();
62 static Geometry CreateGeometryInternal(TextureManager::TextureId textureId, const Devel::PixelBuffer& pixelBuffer )
64 gCallStack.emplace_back( "CreateGeometry" );
65 fprintf(stderr, "AddOn::CreateGeometryInternal()\n");
66 return Dali::Geometry::New();
69 static Geometry CreateGeometryMapInternal(const void* opacityMap,
70 const Uint16Pair& gridSize,
71 uint32_t *outElements)
73 gCallStack.emplace_back( "CreateGeometryGrid" );
76 return Dali::Geometry::New();
79 static void* NPatchBuildInternal(const Devel::PixelBuffer& pixelBuffer, Toolkit::Internal::NPatchData* data )
81 gCallStack.emplace_back( "BuildNPatch" );
82 fprintf(stderr, "AddOn::NPatchBuild()\n");
83 static char dummyData;
87 static void NPatchDestroyInternal(void* object )
89 gCallStack.emplace_back( "DestroyNPatch" );
90 fprintf(stderr, "AddOn::NPatchDestroy()\n");
93 static void SubmitInternal(Renderer& renderer, const void* object )
95 gCallStack.emplace_back( "SubmitRenderTask" );
96 fprintf(stderr, "AddOn::SubmitInternal()\n");
99 static std::vector<std::string> GetCallStack( bool clear )
101 auto retval = gCallStack;
115 * OverdrawingAddOn implementation
117 class TestRenderingAddOn : public Dali::AddOns::AddOnBase
121 void GetAddOnInfo( Dali::AddOnInfo& info ) override
123 info.type = Dali::AddOnType::GENERIC;
124 info.name = "oo-rendering";
125 info.version = Dali::DALI_ADDON_VERSION( 1, 0, 0 );
130 * Dispatch table for global functions
133 Dali::AddOns::DispatchTable* GetGlobalDispatchTable() override
135 static Dali::AddOns::DispatchTable dispatchTable{};
136 if( dispatchTable.Empty() )
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;
147 return &dispatchTable;
154 void OnStart() override
158 void OnStop() override
162 void OnPause() override
166 void OnResume() override
171 * Dispatch table for instance functions
174 Dali::AddOns::DispatchTable* GetInstanceDispatchTable() override
180 REGISTER_ADDON_CLASS( TestRenderingAddOn );