svg_loader: refactoring code.
authorHermet Park <chuneon.park@samsung.com>
Sat, 5 Sep 2020 10:49:05 +0000 (19:49 +0900)
committerHermet Park <chuneon.park@samsung.com>
Tue, 8 Sep 2020 03:27:59 +0000 (12:27 +0900)
merge loader class with task to simplfy code.

Change-Id: I89953b8842d061503caefe6932d515ce2ae54063

src/loaders/svg/tvgSvgLoader.cpp
src/loaders/svg/tvgSvgLoader.h

index fae811c..76be7be 100644 (file)
@@ -2323,30 +2323,13 @@ static bool _svgLoaderParserForValidCheck(void* data, SimpleXMLType type, const
 }
 
 
-void SvgTask::run()
-{
-    if (!simpleXmlParse(loader->content, loader->size, true, _svgLoaderParser, &(loader->loaderData))) return;
-
-    if (loader->loaderData.doc) {
-        _updateStyle(loader->loaderData.doc, nullptr);
-        auto defs = loader->loaderData.doc->node.doc.defs;
-        if (defs) _updateGradient(loader->loaderData.doc, &defs->node.defs.gradients);
-        else {
-            if (loader->loaderData.gradients.cnt > 0) {
-                _updateGradient(loader->loaderData.doc, &loader->loaderData.gradients);
-            }
-        }
-    }
-    loader->root = loader->builder.build(loader->loaderData.doc);
-};
-
 /************************************************************************/
 /* External Class Implementation                                        */
 /************************************************************************/
 
-SvgLoader::SvgLoader() : task(new SvgTask)
+SvgLoader::SvgLoader()
 {
-    task->loader = this;
+
 }
 
 
@@ -2356,6 +2339,24 @@ SvgLoader::~SvgLoader()
 }
 
 
+void SvgLoader::run()
+{
+    if (!simpleXmlParse(content, size, true, _svgLoaderParser, &(loaderData))) return;
+
+    if (loaderData.doc) {
+        _updateStyle(loaderData.doc, nullptr);
+        auto defs = loaderData.doc->node.doc.defs;
+        if (defs) _updateGradient(loaderData.doc, &defs->node.defs.gradients);
+        else {
+            if (loaderData.gradients.cnt > 0) {
+                _updateGradient(loaderData.doc, &loaderData.gradients);
+            }
+        }
+    }
+    root = builder.build(loaderData.doc);
+};
+
+
 bool SvgLoader::header()
 {
     //For valid check, only <svg> tag is parsed first.
@@ -2417,7 +2418,7 @@ bool SvgLoader::read()
 {
     if (!content || size == 0) return false;
 
-    TaskScheduler::request(task);
+    TaskScheduler::request(this);
 
     return true;
 }
@@ -2425,11 +2426,8 @@ bool SvgLoader::read()
 
 bool SvgLoader::close()
 {
-    if (task) {
-        task->get();
-        delete(task);
-        task = nullptr;
-    }
+    this->get();
+
     if (loaderData.svgParse) {
         free(loaderData.svgParse);
         loaderData.svgParse = nullptr;
@@ -2451,7 +2449,7 @@ bool SvgLoader::close()
 
 unique_ptr<Scene> SvgLoader::data()
 {
-    if (task) task->get();
+    this->get();
     if (root) return move(root);
     else return nullptr;
 }
index 451583f..3cf4cf2 100644 (file)
 #include "tvgSvgLoaderCommon.h"
 #include "tvgSvgSceneBuilder.h"
 
-class SvgLoader;
-
-struct SvgTask : Task
-{
-    SvgLoader* loader = nullptr;
-    void run() override;
-};
-
-
-class SvgLoader : public Loader
+class SvgLoader : public Loader, public Task
 {
 public:
     string filePath;
@@ -44,7 +35,6 @@ public:
     SvgLoaderData loaderData;
     SvgSceneBuilder builder;
     unique_ptr<Scene> root;
-    SvgTask* task = nullptr;
 
     SvgLoader();
     ~SvgLoader();
@@ -54,6 +44,8 @@ public:
     bool header();
     bool read() override;
     bool close() override;
+    void run() override;
+
     unique_ptr<Scene> data() override;
 };