2 * Copyright (c) 2022 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/internal/vector-animation/common/vector-animation-renderer-plugin-proxy.h>
22 #include <dali/integration-api/debug.h>
33 // The default plugin name
34 const char* DEFAULT_OBJECT_NAME("libdali2-vector-animation-renderer-plugin.so");
38 VectorAnimationRendererPluginProxy::VectorAnimationRendererPluginProxy(const std::string& sharedObjectName)
39 : mSharedObjectName(),
42 mCreateVectorAnimationRendererPtr(NULL),
45 if(!sharedObjectName.empty())
47 mSharedObjectName = sharedObjectName;
51 mSharedObjectName = DEFAULT_OBJECT_NAME;
57 VectorAnimationRendererPluginProxy::~VectorAnimationRendererPluginProxy()
64 if(mLibHandle && dlclose(mLibHandle))
66 DALI_LOG_ERROR("Error closing vector animation renderer plugin library: %s\n", dlerror());
71 void VectorAnimationRendererPluginProxy::Initialize()
73 mLibHandle = dlopen(mSharedObjectName.c_str(), RTLD_LAZY);
75 char* error = dlerror();
76 if(mLibHandle == NULL || error != NULL)
78 DALI_LOG_ERROR("VectorAnimationRendererPluginProxy::Initialize: dlopen error [%s]\n", error);
83 mCreateVectorAnimationRendererPtr = reinterpret_cast<CreateVectorAnimationRendererFunction>(dlsym(mLibHandle, "CreateVectorAnimationRendererPlugin"));
86 if(mCreateVectorAnimationRendererPtr == NULL || error != NULL)
88 DALI_LOG_ERROR("VectorAnimationRendererPluginProxy::Initialize: Cannot load symbol: %s\n", error);
92 mPlugin = mCreateVectorAnimationRendererPtr();
95 DALI_LOG_ERROR("VectorAnimationRendererPluginProxy::Initialize: Plugin creation failed\n");
100 void VectorAnimationRendererPluginProxy::Finalize()
108 bool VectorAnimationRendererPluginProxy::Load(const std::string& url)
112 return mPlugin->Load(url);
117 void VectorAnimationRendererPluginProxy::SetRenderer(Dali::Renderer renderer)
121 mPlugin->SetRenderer(renderer);
125 void VectorAnimationRendererPluginProxy::SetSize(uint32_t width, uint32_t height)
129 mPlugin->SetSize(width, height);
133 bool VectorAnimationRendererPluginProxy::Render(uint32_t frameNumber)
137 return mPlugin->Render(frameNumber);
142 void VectorAnimationRendererPluginProxy::RenderStopped()
146 mPlugin->RenderStopped();
150 uint32_t VectorAnimationRendererPluginProxy::GetTotalFrameNumber() const
154 return mPlugin->GetTotalFrameNumber();
159 float VectorAnimationRendererPluginProxy::GetFrameRate() const
163 return mPlugin->GetFrameRate();
168 void VectorAnimationRendererPluginProxy::GetDefaultSize(uint32_t& width, uint32_t& height) const
172 mPlugin->GetDefaultSize(width, height);
181 void VectorAnimationRendererPluginProxy::GetLayerInfo(Property::Map& map) const
185 mPlugin->GetLayerInfo(map);
189 bool VectorAnimationRendererPluginProxy::GetMarkerInfo(const std::string& marker, uint32_t& startFrame, uint32_t& endFrame) const
193 return mPlugin->GetMarkerInfo(marker, startFrame, endFrame);
198 void VectorAnimationRendererPluginProxy::InvalidateBuffer()
202 mPlugin->InvalidateBuffer();
206 void VectorAnimationRendererPluginProxy::AddPropertyValueCallback(const std::string& keyPath, Dali::VectorAnimationRenderer::VectorProperty property, CallbackBase* callback, int32_t id)
210 mPlugin->AddPropertyValueCallback(keyPath, property, callback, id);
214 VectorAnimationRendererPlugin::UploadCompletedSignalType& VectorAnimationRendererPluginProxy::UploadCompletedSignal()
218 return mPlugin->UploadCompletedSignal();
220 return mDefaultSignal;
223 } // namespace Adaptor
225 } // namespace Internal