#define DALI_TOOLKIT_SVG_TASK_H
/*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 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.
// 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>
* Constructor
* @param[in] vectorRenderer The vector rasterizer.
* @param[in] callback The callback that is called when the operation is completed.
+ * @param[in] priorityType The priority of this task.
*/
- SvgTask(VectorImageRenderer vectorRenderer, CallbackBase* callback);
+ SvgTask(VectorImageRenderer vectorRenderer, CallbackBase* callback, AsyncTask::PriorityType priorityType = AsyncTask::PriorityType::DEFAULT);
/**
* Destructor.
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.
*/
* 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
SvgLoadingTask& operator=(const SvgLoadingTask& task) = delete;
private:
- VisualUrl mUrl;
- float mDpi;
+ VisualUrl mImageUrl;
+ EncodedImageBuffer mEncodedImageBuffer;
+ float mDpi;
};
class SvgRasterizingTask : public SvgTask
~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
SvgRasterizingTask& operator=(const SvgRasterizingTask& task) = delete;
private:
+#ifdef TRACE_ENABLED
+ VisualUrl mImageUrl{};
+#endif
PixelData mPixelData;
uint32_t mWidth;
uint32_t mHeight;