[dali_2.3.24] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / visuals / svg / svg-task.h
index 89d8f55..e23a8ae 100644 (file)
@@ -19,6 +19,7 @@
 
 // EXTERNAL INCLUDES
 #include <dali/devel-api/adaptor-framework/vector-image-renderer.h>
+#include <dali/public-api/adaptor-framework/encoded-image-buffer.h>
 #include <dali/public-api/common/intrusive-ptr.h>
 #include <dali/public-api/common/vector-wrapper.h>
 #include <dali/public-api/images/pixel-data.h>
@@ -65,17 +66,6 @@ public:
   virtual ~SvgTask() = default;
 
   /**
-   * Process the task
-   */
-  virtual void Process() = 0;
-
-  /**
-   * Whether the task is ready to process.
-   * @return True if the task is ready to process.
-   */
-  virtual bool IsReady() = 0;
-
-  /**
    * Whether the task has succeeded.
    * @return True if the task has succeeded.
    */
@@ -112,26 +102,35 @@ public:
    * Constructor
    * @param[in] vectorRenderer The vector rasterizer.
    * @param[in] url The URL to svg resource to use.
+   * @param[in] encodedImageBuffer The resource buffer if required.
    * @param[in] dpi The DPI of the screen.
    * @param[in] callback The callback that is called when the operation is completed.
    */
-  SvgLoadingTask(VectorImageRenderer vectorRenderer, const VisualUrl& url, float dpi, CallbackBase* callback);
+  SvgLoadingTask(VectorImageRenderer vectorRenderer, const VisualUrl& url, EncodedImageBuffer encodedImageBuffer, float dpi, CallbackBase* callback);
 
   /**
    * Destructor.
    */
   ~SvgLoadingTask() override;
 
+public: // Implementation of AsyncTask
   /**
-   * Process the task
+   * @copydoc Dali::AsyncTask::Process()
    */
-  void Process() override;
+  void Process();
 
   /**
-   * Whether the task is ready to process.
-   * @return True if the task is ready to process.
+   * @copydoc Dali::AsyncTask::IsReady()
    */
-  bool IsReady() override;
+  bool IsReady();
+
+  /**
+   * @copydoc Dali::AsyncTask::GetTaskName()
+   */
+  std::string_view GetTaskName() const override
+  {
+    return "SvgLoadingTask";
+  }
 
 private:
   // Undefined
@@ -141,8 +140,9 @@ private:
   SvgLoadingTask& operator=(const SvgLoadingTask& task) = delete;
 
 private:
-  VisualUrl mUrl;
-  float     mDpi;
+  VisualUrl          mImageUrl;
+  EncodedImageBuffer mEncodedImageBuffer;
+  float              mDpi;
 };
 
 class SvgRasterizingTask : public SvgTask
@@ -163,21 +163,40 @@ public:
   ~SvgRasterizingTask() override;
 
   /**
-   * Process the task accodring to the type
+   * Get the rasterization result.
+   * @return The pixel data with the rasterized pixels.
    */
-  void Process() override;
+  PixelData GetPixelData() const override;
 
+#ifdef TRACE_ENABLED
   /**
-   * Whether the task is ready to process.
-   * @return True if the task is ready to process.
+   * Set the url of rasterizatoin visual. Only for tracing
+   * @param[in] url The url of this visual
    */
-  bool IsReady() override;
+  void SetUrl(VisualUrl url)
+  {
+    mImageUrl = std::move(url);
+  }
+#endif
 
+public: // Implementation of AsyncTask
   /**
-   * Get the rasterization result.
-   * @return The pixel data with the rasterized pixels.
+   * @copydoc Dali::AsyncTask::Process()
    */
-  PixelData GetPixelData() const override;
+  void Process();
+
+  /**
+   * @copydoc Dali::AsyncTask::IsReady()
+   */
+  bool IsReady();
+
+  /**
+   * @copydoc Dali::AsyncTask::GetTaskName()
+   */
+  std::string_view GetTaskName() const override
+  {
+    return "SvgRasterizingTask";
+  }
 
 private:
   // Undefined
@@ -187,6 +206,9 @@ private:
   SvgRasterizingTask& operator=(const SvgRasterizingTask& task) = delete;
 
 private:
+#ifdef TRACE_ENABLED
+  VisualUrl mImageUrl{};
+#endif
   PixelData mPixelData;
   uint32_t  mWidth;
   uint32_t  mHeight;