#define DALI_INTERNAL_VECTOR_ANIMATION_RENDERER_PLUGIN_PROXY_H
/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
namespace Dali
{
-
namespace Internal
{
-
namespace Adaptor
{
-
/**
* Proxy class to dynamically load, use and unload vector animation renderer plugin.
*/
class VectorAnimationRendererPluginProxy
{
public:
-
/**
* @brief Constructor
*/
- VectorAnimationRendererPluginProxy( const std::string& sharedObjectName );
+ VectorAnimationRendererPluginProxy(const std::string& sharedObjectName);
/**
* @brief Destructor
~VectorAnimationRendererPluginProxy();
/**
- * @copydoc Dali::VectorAnimationRendererPlugin::SetUrl()
+ * @copydoc Dali::VectorAnimationRendererPlugin::Finalize()
+ */
+ void Finalize();
+
+ /**
+ * @copydoc Dali::VectorAnimationRendererPlugin::Load()
*/
- void SetUrl( const std::string& url );
+ bool Load(const std::string& url);
/**
* @copydoc Dali::VectorAnimationRendererPlugin::SetRenderer()
*/
- void SetRenderer( Dali::Renderer renderer );
+ void SetRenderer(Dali::Renderer renderer);
/**
* @copydoc Dali::VectorAnimationRendererPlugin::SetSize()
*/
- void SetSize( uint32_t width, uint32_t height );
+ void SetSize(uint32_t width, uint32_t height);
/**
- * @copydoc Dali::VectorAnimationRendererPlugin::StartRender()
+ * @copydoc Dali::VectorAnimationRendererPlugin::Render()
*/
- bool StartRender();
+ bool Render(uint32_t frameNumber);
/**
- * @copydoc Dali::VectorAnimationRendererPlugin::StopRender()
+ * @copydoc Dali::VectorAnimationRendererPlugin::GetTotalFrameNumber()
*/
- void StopRender();
+ uint32_t GetTotalFrameNumber() const;
/**
- * @copydoc Dali::VectorAnimationRendererPlugin::Render()
+ * @copydoc Dali::VectorAnimationRendererPlugin::GetFrameRate()
*/
- void Render( uint32_t frameNumber );
+ float GetFrameRate() const;
/**
- * @copydoc Dali::VectorAnimationRendererPlugin::GetTotalFrameNumber()
+ * @copydoc Dali::VectorAnimationRendererPlugin::GetDefaultSize()
+ */
+ void GetDefaultSize(uint32_t& width, uint32_t& height) const;
+
+ /**
+ * @copydoc Dali::VectorAnimationRendererPlugin::GetLayerInfo()
*/
- uint32_t GetTotalFrameNumber();
+ void GetLayerInfo(Property::Map& map) const;
+
+ /**
+ * @copydoc Dali::VectorAnimationRendererPlugin::GetMarkerInfo()
+ */
+ bool GetMarkerInfo(const std::string& marker, uint32_t& startFrame, uint32_t& endFrame) const;
+
+ /**
+ * @copydoc Dali::VectorAnimationRendererPlugin::IgnoreRenderedFrame()
+ */
+ void IgnoreRenderedFrame();
+
+ /**
+ * @copydoc Dali::VectorAnimationRendererPlugin::UploadCompletedSignal()
+ */
+ VectorAnimationRendererPlugin::UploadCompletedSignalType& UploadCompletedSignal();
// Not copyable or movable
- VectorAnimationRendererPluginProxy( const VectorAnimationRendererPluginProxy& ) = delete; ///< Deleted copy constructor
- VectorAnimationRendererPluginProxy( VectorAnimationRendererPluginProxy&& ) = delete; ///< Deleted move constructor
- VectorAnimationRendererPluginProxy& operator=( const VectorAnimationRendererPluginProxy& ) = delete; ///< Deleted copy assignment operator
- VectorAnimationRendererPluginProxy& operator=( VectorAnimationRendererPluginProxy&& ) = delete; ///< Deleted move assignment operator
+ VectorAnimationRendererPluginProxy(const VectorAnimationRendererPluginProxy&) = delete; ///< Deleted copy constructor
+ VectorAnimationRendererPluginProxy(VectorAnimationRendererPluginProxy&&) = delete; ///< Deleted move constructor
+ VectorAnimationRendererPluginProxy& operator=(const VectorAnimationRendererPluginProxy&) = delete; ///< Deleted copy assignment operator
+ VectorAnimationRendererPluginProxy& operator=(VectorAnimationRendererPluginProxy&&) = delete; ///< Deleted move assignment operator
private:
+ /**
+ * Vector Animation formats.
+ */
+ enum class AnimationFormat
+ {
+ NONE = 0,
+ JSON,
+ RIVE
+ };
/**
* Dynamically loads the plugin.
*/
- void Initialize();
+ void Initialize(AnimationFormat format);
private:
-
using CreateVectorAnimationRendererFunction = Dali::VectorAnimationRendererPlugin* (*)();
- std::string mSharedObjectName; ///< Shared object name
- void* mLibHandle; ///< Handle for the loaded library
- Dali::VectorAnimationRendererPlugin* mPlugin; ///< Plugin handle
-
- CreateVectorAnimationRendererFunction mCreateVectorAnimationRendererPtr; ///< Function pointer called in adaptor to create a plugin instance
+ std::string mSharedObjectName; ///< Shared object name
+ void* mLibHandle; ///< Handle for the loaded library
+ Dali::VectorAnimationRendererPlugin* mPlugin; ///< Plugin handle
+ CreateVectorAnimationRendererFunction mCreateVectorAnimationRendererPtr; ///< Function pointer called in adaptor to create a plugin instance
+ VectorAnimationRendererPlugin::UploadCompletedSignalType mDefaultSignal;
};
} // namespace Adaptor