2 * Copyright (c) 2018 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>
23 #include <dali/integration-api/debug.h>
37 // The default plugin name
38 const char* DEFAULT_OBJECT_NAME( "libdali-vector-animation-renderer-plugin.so" );
42 VectorAnimationRendererPluginProxy::VectorAnimationRendererPluginProxy( const std::string& sharedObjectName )
43 : mSharedObjectName(),
46 mCreateVectorAnimationRendererPtr( NULL )
48 if( !sharedObjectName.empty() )
50 mSharedObjectName = sharedObjectName;
54 mSharedObjectName = DEFAULT_OBJECT_NAME;
60 VectorAnimationRendererPluginProxy::~VectorAnimationRendererPluginProxy()
67 if( mLibHandle && dlclose( mLibHandle ) )
69 DALI_LOG_ERROR( "Error closing vector animation renderer plugin library: %s\n", dlerror() );
74 void VectorAnimationRendererPluginProxy::Initialize()
76 mLibHandle = dlopen( mSharedObjectName.c_str(), RTLD_LAZY );
78 char* error = dlerror();
79 if( mLibHandle == NULL || error != NULL )
81 DALI_LOG_ERROR( "VectorAnimationRendererPluginProxy::Initialize: dlopen error [%s]\n", error );
86 mCreateVectorAnimationRendererPtr = reinterpret_cast< CreateVectorAnimationRendererFunction >( dlsym( mLibHandle, "CreateVectorAnimationRendererPlugin" ) );
89 if( mCreateVectorAnimationRendererPtr == NULL || error != NULL )
91 DALI_LOG_ERROR( "VectorAnimationRendererPluginProxy::Initialize: Cannot load symbol: %s\n", error );
95 mPlugin = mCreateVectorAnimationRendererPtr();
98 DALI_LOG_ERROR("VectorAnimationRendererPluginProxy::Initialize: Plugin creation failed\n");
103 void VectorAnimationRendererPluginProxy::SetUrl( const std::string& url )
107 mPlugin->SetUrl( url );
111 void VectorAnimationRendererPluginProxy::SetRenderer( Dali::Renderer renderer )
115 mPlugin->SetRenderer( renderer );
119 void VectorAnimationRendererPluginProxy::SetSize( uint32_t width, uint32_t height )
123 mPlugin->SetSize( width, height );
127 bool VectorAnimationRendererPluginProxy::StartRender()
131 return mPlugin->StartRender();
136 void VectorAnimationRendererPluginProxy::StopRender()
140 mPlugin->StopRender();
144 void VectorAnimationRendererPluginProxy::Render( uint32_t frameNumber )
148 mPlugin->Render( frameNumber );
152 uint32_t VectorAnimationRendererPluginProxy::GetTotalFrameNumber()
156 return mPlugin->GetTotalFrameNumber();
161 } // namespace Adaptor
163 } // namespace Internal