build: support features toggling in meson option. 53/238053/6
authorHermet Park <chuneon.park@samsung.com>
Wed, 8 Jul 2020 04:08:28 +0000 (13:08 +0900)
committerHermet Park <chuneon.park@samsung.com>
Wed, 8 Jul 2020 06:30:12 +0000 (15:30 +0900)
Change-Id: Id1ebda70fe8380aaa913f79af26e5c39893a6df5

33 files changed:
meson.build
meson_options.txt [new file with mode: 0644]
src/lib/gl_engine/meson.build
src/lib/meson.build
src/lib/sw_engine/meson.build
src/lib/tvgCommon.h
src/lib/tvgGlCanvas.cpp
src/lib/tvgInitializer.cpp
src/lib/tvgLoaderMgr.cpp
src/lib/tvgRender.h
src/lib/tvgSwCanvas.cpp
src/loaders/meson.build
src/loaders/svg_loader/meson.build
src/meson.build
test/testAsync.cpp
test/testBlending.cpp
test/testBoundary.cpp
test/testCustomTransform.cpp
test/testDirectUpdate.cpp
test/testGradientTransform.cpp
test/testLinearGradient.cpp
test/testMultiShapes.cpp
test/testPath.cpp
test/testPathCopy.cpp
test/testRadialGradient.cpp
test/testScene.cpp
test/testSceneTransform.cpp
test/testShape.cpp
test/testStroke.cpp
test/testStrokeLine.cpp
test/testSvg.cpp
test/testTransform.cpp
test/testUpdate.cpp

index 0142de0..c23bcb1 100644 (file)
@@ -6,12 +6,24 @@ project('thorvg',
 
 config_h = configuration_data()
 
+if get_option('engines').contains('sw') == true
+    config_h.set10('THORVG_SW_RASTER_SUPPORT', true)
+endif
+
+if get_option('engines').contains('gl') == true
+    config_h.set10('THORVG_GL_RASTER_SUPPORT', true)
+endif
+
+if get_option('loaders').contains('svg') == true
+    config_h.set10('THORVG_SVG_LOADER_SUPPORT', true)
+endif
+
 configure_file(
-  output: 'config.h',
-  configuration: config_h
+    output: 'config.h',
+    configuration: config_h
 )
 
-headers = [include_directories('inc')]
+headers = [include_directories('inc'), include_directories('.')]
 
 subdir('inc')
 subdir('src')
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644 (file)
index 0000000..daf3923
--- /dev/null
@@ -0,0 +1,11 @@
+option('engines',
+   type: 'array',
+   choices: ['sw', 'gl'],
+   value: ['sw', 'gl'],
+   description: 'Enable Rasterizer Engine in thorvg')
+
+option('loaders',
+   type: 'array',
+   choices: ['svg'],
+   value: ['svg'],
+   description: 'Enable Vector File Loader in thorvg')
index 6856f1d..63c7ee8 100644 (file)
@@ -18,8 +18,8 @@ egl_dep = meson.get_compiler('cpp').find_library('EGL')
 gles_dep = meson.get_compiler('cpp').find_library('GLESv2')
 external_dep = [egl_dep, gles_dep]
 
-glengine_dep = declare_dependency(
-   dependencies        : external_dep,
-   include_directories : include_directories('.'),
-   sources             : source_file,
-)
+engine_dep += [declare_dependency(
+    dependencies        : external_dep,
+    include_directories : include_directories('.'),
+    sources             : source_file,
+)]
index 9a7dc61..46d6a99 100644 (file)
@@ -1,5 +1,12 @@
-subdir('sw_engine')
-subdir('gl_engine')
+engine_dep = []
+
+if get_option('engines').contains('sw') == true
+    subdir('sw_engine')
+endif
+
+if get_option('engines').contains('gl') == true
+    subdir('gl_engine')
+endif
 
 source_file = [
    'tvgCanvasImpl.h',
@@ -25,8 +32,6 @@ source_file = [
    'tvgSwCanvas.cpp',
 ]
 
-engine_dep = [swengine_dep, glengine_dep]
-
 common_dep = declare_dependency(
    dependencies        : engine_dep,
    include_directories : include_directories('.'),
index 8b06258..66b1e0d 100644 (file)
@@ -10,7 +10,7 @@ source_file = [
    'tvgSwStroke.cpp',
 ]
 
-swengine_dep = declare_dependency(
-   include_directories : include_directories('.'),
-   sources : source_file
-)
+engine_dep += [declare_dependency(
+    include_directories : include_directories('.'),
+    sources : source_file
+)]
index 79f7c18..ac91f49 100644 (file)
@@ -17,6 +17,8 @@
 #ifndef _TVG_COMMON_H_
 #define _TVG_COMMON_H_
 
+#include "config.h"
+
 #include <iostream>
 #include <cassert>
 #include <vector>
index 1af7eac..4502498 100644 (file)
 #define _TVG_GLCANVAS_CPP_
 
 #include "tvgCommon.h"
-#include "tvgGlRenderer.h"
 #include "tvgCanvasImpl.h"
 
+#ifdef THORVG_GL_RASTER_SUPPORT
+    #include "tvgGlRenderer.h"
+#else
+    class GlRenderer : public RenderMethod
+    {
+        //Non Supported. Dummy Class */
+    };
+#endif
+
 /************************************************************************/
 /* Internal Class Implementation                                        */
 /************************************************************************/
@@ -35,11 +43,16 @@ struct GlCanvas::Impl
 /* External Class Implementation                                        */
 /************************************************************************/
 
+#ifdef THORVG_GL_RASTER_SUPPORT
 GlCanvas::GlCanvas() : Canvas(GlRenderer::inst()), pImpl(make_unique<Impl>())
+#else
+GlCanvas::GlCanvas() : Canvas(nullptr), pImpl(make_unique<Impl>())
+#endif
 {
 }
 
 
+
 GlCanvas::~GlCanvas()
 {
 }
@@ -47,6 +60,7 @@ GlCanvas::~GlCanvas()
 
 Result GlCanvas::target(uint32_t* buffer, uint32_t stride, uint32_t w, uint32_t h) noexcept
 {
+#ifdef THORVG_GL_RASTER_SUPPORT
     //We know renderer type, avoid dynamic_cast for performance.
     auto renderer = static_cast<GlRenderer*>(Canvas::pImpl.get()->renderer);
     if (!renderer) return Result::MemoryCorruption;
@@ -54,15 +68,20 @@ Result GlCanvas::target(uint32_t* buffer, uint32_t stride, uint32_t w, uint32_t
     if (!renderer->target(buffer, stride, w, h)) return Result::Unknown;
 
     return Result::Success;
+#endif
+    return Result::NonSupport;
 }
 
 
 unique_ptr<GlCanvas> GlCanvas::gen() noexcept
 {
+#ifdef THORVG_GL_RASTER_SUPPORT
     auto canvas = unique_ptr<GlCanvas>(new GlCanvas);
     assert(canvas);
 
     return canvas;
+#endif
+    return unique_ptr<GlCanvas>(nullptr);
 }
 
 
index 857698d..468178e 100644 (file)
 #define _TVG_INITIALIZER_CPP_
 
 #include "tvgCommon.h"
-#include "tvgSwRenderer.h"
-#include "tvgGlRenderer.h"
 #include "tvgLoaderMgr.h"
 
+#ifdef THORVG_SW_RASTER_SUPPORT
+    #include "tvgSwRenderer.h"
+#endif
+
+#ifdef THORVG_GL_RASTER_SUPPORT
+    #include "tvgGlRenderer.h"
+#endif
+
+
 /************************************************************************/
 /* Internal Class Implementation                                        */
 /************************************************************************/
 
 Result Initializer::init(CanvasEngine engine) noexcept
 {
+    auto nonSupport = true;
+
     if (engine == CanvasEngine::Sw) {
-        if (!SwRenderer::init()) return Result::InsufficientCondition;
+        #ifdef THORVG_SW_RASTER_SUPPORT
+            if (!SwRenderer::init()) return Result::InsufficientCondition;
+            nonSupport = false;
+        #endif
     } else if (engine == CanvasEngine::Gl) {
-        if (!GlRenderer::init()) return Result::InsufficientCondition;
+        #ifdef THORVG_GL_RASTER_SUPPORT
+            if (!GlRenderer::init()) return Result::InsufficientCondition;
+            nonSupport = false;
+        #endif
     } else {
         return Result::InvalidArguments;
     }
 
+    if (nonSupport) return Result::NonSupport;
+
     if (!LoaderMgr::init()) return Result::Unknown;
 
     return Result::Success;
@@ -48,16 +65,24 @@ Result Initializer::init(CanvasEngine engine) noexcept
 
 Result Initializer::term(CanvasEngine engine) noexcept
 {
-    //TODO: deinitialize modules
+    auto nonSupport = true;
 
     if (engine == CanvasEngine::Sw) {
-        if (!SwRenderer::term()) return Result::InsufficientCondition;
+        #ifdef THORVG_SW_RASTER_SUPPORT
+            if (!SwRenderer::term()) return Result::InsufficientCondition;
+            nonSupport = false;
+        #endif
     } else if (engine == CanvasEngine::Gl) {
-        if (!GlRenderer::term()) return Result::InsufficientCondition;
+        #ifdef THORVG_GL_RASTER_SUPPORT
+            if (!GlRenderer::term()) return Result::InsufficientCondition;
+            nonSupport = false;
+        #endif
     } else {
         return Result::InvalidArguments;
     }
 
+    if (nonSupport) return Result::NonSupport;
+
     if (!LoaderMgr::term()) return Result::Unknown;
 
     return Result::Success;
index a99838b..ae65732 100644 (file)
 #define _TVG_LOADER_MGR_CPP_
 
 #include "tvgCommon.h"
-#include "tvgSvgLoader.h"
 
+#ifdef THORVG_SVG_LOADER_SUPPORT
+    #include "tvgSvgLoader.h"
+#endif
 
 static int initCnt = 0;
 
@@ -45,8 +47,11 @@ bool LoaderMgr::term()
 
 unique_ptr<Loader> LoaderMgr::loader(const char* path)
 {
-    //TODO:
+#ifdef THORVG_SVG_LOADER_SUPPORT
     return unique_ptr<SvgLoader>(new SvgLoader);
+#endif
+    cout << "Non supported format: " << path << endl;
+    return unique_ptr<Loader>(nullptr);
 }
 
 #endif //_TVG_LOADER_MGR_CPP_
\ No newline at end of file
index b0a3c84..e20271b 100644 (file)
@@ -51,15 +51,15 @@ class RenderMethod
 {
 public:
     virtual ~RenderMethod() {}
-    virtual void* prepare(const Shape& shape, void* data, const RenderTransform* transform, RenderUpdateFlag flags) = 0;
-    virtual bool dispose(const Shape& shape, void *data) = 0;
-    virtual bool preRender() = 0;
-    virtual bool render(const Shape& shape, void *data) = 0;
-    virtual bool postRender() = 0;
-    virtual bool clear() = 0;
-    virtual bool flush() = 0;
-    virtual uint32_t ref() = 0;
-    virtual uint32_t unref() = 0;
+    virtual void* prepare(const Shape& shape, void* data, const RenderTransform* transform, RenderUpdateFlag flags) { return nullptr; }
+    virtual bool dispose(const Shape& shape, void *data) { return false; }
+    virtual bool preRender() { return false; }
+    virtual bool render(const Shape& shape, void *data) { return false; }
+    virtual bool postRender() { return false; }
+    virtual bool clear() { return false; }
+    virtual bool flush() { return false; }
+    virtual uint32_t ref() { return 0; }
+    virtual uint32_t unref() { return 0; }
 };
 
 struct RenderInitializer
index a0bfdd0..4c61eaa 100644 (file)
 #define _TVG_SWCANVAS_CPP_
 
 #include "tvgCommon.h"
-#include "tvgSwRenderer.h"
 #include "tvgCanvasImpl.h"
 
+#ifdef THORVG_SW_RASTER_SUPPORT
+    #include "tvgSwRenderer.h"
+#else
+    class SwRenderer : public RenderMethod
+    {
+        //Non Supported. Dummy Class */
+    };
+#endif
 
 /************************************************************************/
 /* Internal Class Implementation                                        */
@@ -36,7 +43,11 @@ struct SwCanvas::Impl
 /* External Class Implementation                                        */
 /************************************************************************/
 
+#ifdef THORVG_SW_RASTER_SUPPORT
 SwCanvas::SwCanvas() : Canvas(SwRenderer::inst()), pImpl(make_unique<Impl>())
+#else
+SwCanvas::SwCanvas() : Canvas(nullptr), pImpl(make_unique<Impl>())
+#endif
 {
 }
 
@@ -48,6 +59,7 @@ SwCanvas::~SwCanvas()
 
 Result SwCanvas::target(uint32_t* buffer, uint32_t stride, uint32_t w, uint32_t h) noexcept
 {
+#ifdef THORVG_SW_RASTER_SUPPORT
     //We know renderer type, avoid dynamic_cast for performance.
     auto renderer = static_cast<SwRenderer*>(Canvas::pImpl.get()->renderer);
     if (!renderer) return Result::MemoryCorruption;
@@ -55,15 +67,20 @@ Result SwCanvas::target(uint32_t* buffer, uint32_t stride, uint32_t w, uint32_t
     if (!renderer->target(buffer, stride, w, h)) return Result::InvalidArguments;
 
     return Result::Success;
+#endif
+    return Result::NonSupport;
 }
 
 
 unique_ptr<SwCanvas> SwCanvas::gen() noexcept
 {
+#ifdef THORVG_SW_RASTER_SUPPORT
     auto canvas = unique_ptr<SwCanvas>(new SwCanvas);
     assert(canvas);
 
-   return canvas;
+    return canvas;
+#endif
+    return unique_ptr<SwCanvas>(nullptr);
 }
 
 #endif /* _TVG_SWCANVAS_CPP_ */
index 3abf0fd..aaf1324 100644 (file)
@@ -1,6 +1,10 @@
-subdir('svg_loader')
+subloader_dep = []
+
+if get_option('loaders').contains('svg') == true
+    subdir('svg_loader')
+endif
 
 loader_dep = declare_dependency(
-   dependencies        : svgloader_dep,
+   dependencies: subloader_dep,
    include_directories : include_directories('.'),
 )
index de7adf7..d62762c 100644 (file)
@@ -10,7 +10,7 @@ source_file = [
    'tvgSvgSceneBuilder.cpp',
 ]
 
-svgloader_dep = declare_dependency(
-   include_directories : include_directories('.'),
-   sources : source_file
-)
+subloader_dep += [declare_dependency(
+    include_directories : include_directories('.'),
+    sources : source_file
+)]
index faff2b3..23c4ad5 100644 (file)
@@ -5,7 +5,7 @@ subdir('loaders')
 subdir('examples')
 
 thread_dep = meson.get_compiler('cpp').find_library('pthread')
-thorvg_lib_dep = [ common_dep, loader_dep, thread_dep]
+thorvg_lib_dep = [common_dep, loader_dep, thread_dep]
 
 thorvg_lib = library(
        'thorvg',
index bb890ab..df81020 100644 (file)
@@ -156,22 +156,27 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        auto view = createSwView();
-        evas_object_image_pixels_get_callback_set(view, drawSwView, nullptr);
-        ecore_animator_add(animSwCb, view);
-    } else {
-        auto view = createGlView();
-        ecore_animator_add(animGlCb, view);
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            auto view = createSwView();
+            evas_object_image_pixels_get_callback_set(view, drawSwView, nullptr);
+            ecore_animator_add(animSwCb, view);
+        } else {
+            auto view = createGlView();
+            ecore_animator_add(animGlCb, view);
+        }
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvgEngine);
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvgEngine);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
 }
index 6f5f6e1..6765cb6 100644 (file)
@@ -136,19 +136,24 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        createSwView();
-    } else {
-        createGlView();
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            createSwView();
+        } else {
+            createGlView();
+        }
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvgEngine);
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvgEngine);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
 }
index b23b82e..71dd6a0 100644 (file)
@@ -125,19 +125,24 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        createSwView();
-    } else {
-        createGlView();
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            createSwView();
+        } else {
+            createGlView();
+        }
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvgEngine);
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvgEngine);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
 }
index 08075d2..5945490 100644 (file)
@@ -179,28 +179,33 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    Elm_Transit *transit = elm_transit_add();
+        Elm_Transit *transit = elm_transit_add();
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        auto view = createSwView();
-        elm_transit_effect_add(transit, transitSwCb, view, nullptr);
-    } else {
-        auto view = createGlView();
-        elm_transit_effect_add(transit, transitGlCb, view, nullptr);
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            auto view = createSwView();
+            elm_transit_effect_add(transit, transitSwCb, view, nullptr);
+        } else {
+            auto view = createGlView();
+            elm_transit_effect_add(transit, transitGlCb, view, nullptr);
+        }
 
-    elm_transit_duration_set(transit, 2);
-    elm_transit_repeat_times_set(transit, -1);
-    elm_transit_auto_reverse_set(transit, EINA_TRUE);
-    elm_transit_go(transit);
+        elm_transit_duration_set(transit, 2);
+        elm_transit_repeat_times_set(transit, -1);
+        elm_transit_auto_reverse_set(transit, EINA_TRUE);
+        elm_transit_go(transit);
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvgEngine);
-}
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvgEngine);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
+}
\ No newline at end of file
index 437ad1f..67d0240 100644 (file)
@@ -142,28 +142,33 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    Elm_Transit *transit = elm_transit_add();
+        Elm_Transit *transit = elm_transit_add();
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        auto view = createSwView();
-        elm_transit_effect_add(transit, transitSwCb, view, nullptr);
-    } else {
-        auto view = createGlView();
-        elm_transit_effect_add(transit, transitGlCb, view, nullptr);
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            auto view = createSwView();
+            elm_transit_effect_add(transit, transitSwCb, view, nullptr);
+        } else {
+            auto view = createGlView();
+            elm_transit_effect_add(transit, transitGlCb, view, nullptr);
+        }
 
-    elm_transit_duration_set(transit, 2);
-    elm_transit_repeat_times_set(transit, -1);
-    elm_transit_auto_reverse_set(transit, EINA_TRUE);
-    elm_transit_go(transit);
+        elm_transit_duration_set(transit, 2);
+        elm_transit_repeat_times_set(transit, -1);
+        elm_transit_auto_reverse_set(transit, EINA_TRUE);
+        elm_transit_go(transit);
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvgEngine);
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvgEngine);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
 }
index fd5a563..1c1b820 100644 (file)
@@ -207,7 +207,7 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
     elm_init(argc, argv);
 
@@ -231,4 +231,9 @@ int main(int argc, char **argv)
 
     //Terminate ThorVG Engine
     tvg::Initializer::term(tvgEngine);
-}
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
+}
\ No newline at end of file
index 45f38d7..826287b 100644 (file)
@@ -154,19 +154,24 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        createSwView();
-    } else {
-        createGlView();
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            createSwView();
+        } else {
+            createGlView();
+        }
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvgEngine);
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvgEngine);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
 }
index ec46f2f..8860135 100644 (file)
@@ -114,19 +114,24 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        createSwView();
-    } else {
-        createGlView();
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            createSwView();
+        } else {
+            createGlView();
+        }
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvgEngine);
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvgEngine);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
 }
index d74b89d..a6656a8 100644 (file)
@@ -131,19 +131,24 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        createSwView();
-    } else {
-        createGlView();
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            createSwView();
+        } else {
+            createGlView();
+        }
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvgEngine);
-}
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvgEngine);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
+}
\ No newline at end of file
index ebf900c..dd00827 100644 (file)
@@ -168,19 +168,24 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        createSwView();
-    } else {
-        createGlView();
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            createSwView();
+        } else {
+            createGlView();
+        }
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvgEngine);
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvgEngine);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
 }
\ No newline at end of file
index 71cfaae..054bf12 100644 (file)
@@ -154,19 +154,24 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        createSwView();
-    } else {
-        createGlView();
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            createSwView();
+        } else {
+            createGlView();
+        }
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvgEngine);
-}
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvgEngine);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
+}
\ No newline at end of file
index bee2b54..b796a5b 100644 (file)
@@ -161,19 +161,24 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        createSwView();
-    } else {
-        createGlView();
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            createSwView();
+        } else {
+            createGlView();
+        }
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvgEngine);
-}
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvgEngine);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
+}
\ No newline at end of file
index d5d538d..aeaf11e 100644 (file)
@@ -203,28 +203,33 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    Elm_Transit *transit = elm_transit_add();
+        Elm_Transit *transit = elm_transit_add();
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        auto view = createSwView();
-        elm_transit_effect_add(transit, transitSwCb, view, nullptr);
-    } else {
-        auto view = createGlView();
-        elm_transit_effect_add(transit, transitGlCb, view, nullptr);
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            auto view = createSwView();
+            elm_transit_effect_add(transit, transitSwCb, view, nullptr);
+        } else {
+            auto view = createGlView();
+            elm_transit_effect_add(transit, transitGlCb, view, nullptr);
+        }
 
-    elm_transit_duration_set(transit, 2);
-    elm_transit_repeat_times_set(transit, -1);
-    elm_transit_auto_reverse_set(transit, EINA_TRUE);
-    elm_transit_go(transit);
+        elm_transit_duration_set(transit, 2);
+        elm_transit_repeat_times_set(transit, -1);
+        elm_transit_auto_reverse_set(transit, EINA_TRUE);
+        elm_transit_go(transit);
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvgEngine);
-}
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvgEngine);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
+}
\ No newline at end of file
index e5e4c57..391b55f 100644 (file)
@@ -104,19 +104,24 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        createSwView();
-    } else {
-        createGlView();
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            createSwView();
+        } else {
+            createGlView();
+        }
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvgEngine);
-}
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvgEngine);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
+}
\ No newline at end of file
index f4f7c8c..f7c1a88 100644 (file)
@@ -151,19 +151,24 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        createSwView();
-    } else {
-        createGlView();
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            createSwView();
+        } else {
+            createGlView();
+        }
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvgEngine);
-}
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvgEngine);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
+}
\ No newline at end of file
index 1856453..bc3f960 100644 (file)
@@ -188,19 +188,24 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        createSwView();
-    } else {
-        createGlView();
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            createSwView();
+        } else {
+            createGlView();
+        }
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvgEngine);
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvgEngine);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
 }
\ No newline at end of file
index 04b9ab0..edb987b 100644 (file)
@@ -128,19 +128,24 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        createSwView();
-    } else {
-        createGlView();
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            createSwView();
+        } else {
+            createGlView();
+        }
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvg::CanvasEngine::Sw);
-}
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvg::CanvasEngine::Sw);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
+}
\ No newline at end of file
index 65492b1..da7c87c 100644 (file)
@@ -170,28 +170,33 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    Elm_Transit *transit = elm_transit_add();
+        Elm_Transit *transit = elm_transit_add();
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        auto view = createSwView();
-        elm_transit_effect_add(transit, transitSwCb, view, nullptr);
-    } else {
-        auto view = createGlView();
-        elm_transit_effect_add(transit, transitGlCb, view, nullptr);
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            auto view = createSwView();
+            elm_transit_effect_add(transit, transitSwCb, view, nullptr);
+        } else {
+            auto view = createGlView();
+            elm_transit_effect_add(transit, transitGlCb, view, nullptr);
+        }
 
-    elm_transit_duration_set(transit, 2);
-    elm_transit_repeat_times_set(transit, -1);
-    elm_transit_auto_reverse_set(transit, EINA_TRUE);
-    elm_transit_go(transit);
+        elm_transit_duration_set(transit, 2);
+        elm_transit_repeat_times_set(transit, -1);
+        elm_transit_auto_reverse_set(transit, EINA_TRUE);
+        elm_transit_go(transit);
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvgEngine);
-}
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvgEngine);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
+}
\ No newline at end of file
index 6bfbddc..c350435 100644 (file)
@@ -131,28 +131,33 @@ int main(int argc, char **argv)
     }
 
     //Initialize ThorVG Engine
-    tvg::Initializer::init(tvgEngine);
+    if (tvg::Initializer::init(tvgEngine) == tvg::Result::Success) {
 
-    elm_init(argc, argv);
+        elm_init(argc, argv);
 
-    Elm_Transit *transit = elm_transit_add();
+        Elm_Transit *transit = elm_transit_add();
 
-    if (tvgEngine == tvg::CanvasEngine::Sw) {
-        auto view = createSwView();
-        elm_transit_effect_add(transit, transitSwCb, view, nullptr);
-    } else {
-        auto view = createGlView();
-        elm_transit_effect_add(transit, transitGlCb, view, nullptr);
-    }
+        if (tvgEngine == tvg::CanvasEngine::Sw) {
+            auto view = createSwView();
+            elm_transit_effect_add(transit, transitSwCb, view, nullptr);
+        } else {
+            auto view = createGlView();
+            elm_transit_effect_add(transit, transitGlCb, view, nullptr);
+        }
 
-    elm_transit_duration_set(transit, 2);
-    elm_transit_repeat_times_set(transit, -1);
-    elm_transit_auto_reverse_set(transit, EINA_TRUE);
-    elm_transit_go(transit);
+        elm_transit_duration_set(transit, 2);
+        elm_transit_repeat_times_set(transit, -1);
+        elm_transit_auto_reverse_set(transit, EINA_TRUE);
+        elm_transit_go(transit);
 
-    elm_run();
-    elm_shutdown();
+        elm_run();
+        elm_shutdown();
 
-    //Terminate ThorVG Engine
-    tvg::Initializer::term(tvgEngine);
-}
+        //Terminate ThorVG Engine
+        tvg::Initializer::term(tvgEngine);
+
+    } else {
+        cout << "engine is not supported" << endl;
+    }
+    return 0;
+}
\ No newline at end of file