(Partial update) Fix surface damage area
[platform/core/uifw/dali-adaptor.git] / dali / devel-api / adaptor-framework / vector-animation-renderer-plugin.h
index bb4ef85..d262cfc 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_VECTOR_ANIMATION_RENDERER_PLUGIN_H
 
 /*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 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.
@@ -22,6 +22,9 @@
 #include <dali/public-api/rendering/renderer.h>
 #include <string>
 
+// INTERNAL INCLUDES
+#include <dali/devel-api/adaptor-framework/vector-animation-renderer.h>
+
 namespace Dali
 {
 
@@ -34,6 +37,8 @@ class VectorAnimationRendererPlugin
 {
 public:
 
+  using UploadCompletedSignalType = Dali::VectorAnimationRenderer::UploadCompletedSignalType;
+
   /**
    * @brief Constructor
    */
@@ -45,15 +50,23 @@ public:
   virtual ~VectorAnimationRendererPlugin() {}
 
   /**
-   * @brief Creates a renderer to render an vector animation file.
+   * @brief Second-phase constructor.
    *
-   * @param[in] url The url of an animation file
-   * @param[in] renderer The renderer used to render the image
-   * @param[in] width The target image width
-   * @param[in] height The target image height
-   * @return True if the renderer is successfully created, false otherwise
+   * @param[in] url The url of the animation file
    */
-  virtual bool CreateRenderer( const std::string& url, Renderer renderer, uint32_t width, uint32_t height ) = 0;
+  virtual bool Initialize( const std::string& url ) = 0;
+
+  /**
+   * @brief Finalizes the renderer. It will be called in the main thread.
+   */
+  virtual void Finalize() = 0;
+
+  /**
+   * @brief Sets the renderer used to display the result image.
+   *
+   * @param[in] renderer The renderer used to display the result image
+   */
+  virtual void SetRenderer( Renderer renderer ) = 0;
 
   /**
    * @brief Sets the target image size.
@@ -64,30 +77,68 @@ public:
   virtual void SetSize( uint32_t width, uint32_t height ) = 0;
 
   /**
-   * @brief Starts the rendering.
+   * @brief Renders the content to the target buffer synchronously.
    *
-   * @return True if the renderer is successfully started, false otherwise
+   * @param[in] frameNumber The frame number to be rendered
+   * @return True if the rendering success, false otherwise.
    */
-  virtual bool StartRender() = 0;
+  virtual bool Render( uint32_t frameNumber ) = 0;
 
   /**
-   * @brief Stops the rendering.
+   * @brief Gets the total number of frames of the file.
+   *
+   * @return The total number of frames
    */
-  virtual void StopRender() = 0;
+  virtual uint32_t GetTotalFrameNumber() const = 0;
 
   /**
-   * @brief Renders the content to the target buffer synchronously.
+   * @brief Gets the frame rate of the file.
    *
-   * @param[in] frameNumber The frame number to be rendered
+   * @return The frame rate of the file
    */
-  virtual void Render( uint32_t frameNumber ) = 0;
+  virtual float GetFrameRate() const = 0;
 
   /**
-   * @brief Gets the total number of frames of the file
+   * @brief Gets the default size of the file.
    *
-   * @return The total number of frames
+   * @param[out] width The default width of the file
+   * @param[out] height The default height of the file
+   */
+  virtual void GetDefaultSize( uint32_t& width, uint32_t& height ) const = 0;
+
+  /**
+   * @brief Gets the layer information of all the child layers.
+   *
+   * @param[out] map The layer information
+   */
+  virtual void GetLayerInfo( Property::Map& map ) const = 0;
+
+  /**
+   * @brief Gets the start frame and the end frame number of the composition marker.
+   *
+   * @param[in] marker The composition marker of the file
+   * @param[out] startFrame The start frame number of the specified marker
+   * @param[out] endFrame The end frame number of the specified marker
+   * @return True if the marker is found in the file, false otherwise.
+   *
+   * @note https://helpx.adobe.com/after-effects/using/layer-markers-composition-markers.html
+   * Markers exported from AfterEffect are used to describe a segment of an animation {comment/tag , startFrame, endFrame}
+   * Marker can be use to devide a resource in to separate animations by tagging the segment with comment string,
+   * start frame and duration of that segment.
+   */
+  virtual bool GetMarkerInfo( const std::string& marker, uint32_t& startFrame, uint32_t& endFrame ) const = 0;
+
+  /**
+   * @brief Ignores a rendered frame which is not shown yet.
+   */
+  virtual void IgnoreRenderedFrame() = 0;
+
+  /**
+   * @brief Connect to this signal to be notified when the texture upload is completed.
+   *
+   * @return The signal to connect to.
    */
-  virtual uint32_t GetTotalFrameNumber() = 0;
+  virtual UploadCompletedSignalType& UploadCompletedSignal() = 0;
 
   /**
    * @brief Function pointer called in adaptor to create a plugin instance.