lottie: add "lottieviewer" example 61/187061/3
authorJaeun Choi <jaeun12.choi@samsung.com>
Fri, 17 Aug 2018 12:15:22 +0000 (21:15 +0900)
committerHermet Park <chuneon.park@samsung.com>
Tue, 21 Aug 2018 03:53:11 +0000 (03:53 +0000)
lottieviewer shows each frame image according to slider value.
since edc compilation is not supported yet,
do the following steps to run this example:

$ cd example
$ edje_cc layout.edc
$ mv layout.edj ../build/example

Change-Id: I00f7d8b743e9028d1e8006104e63bef5d96084b6

example/layout.edc [new file with mode: 0644]
example/lottieviewer.cpp [new file with mode: 0644]
example/meson.build

diff --git a/example/layout.edc b/example/layout.edc
new file mode 100644 (file)
index 0000000..cbc0694
--- /dev/null
@@ -0,0 +1,31 @@
+collections {
+   group { name: "layout";
+      parts {
+         rect { "bg";
+            desc { state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+         }
+         spacer { "lottie_base";
+            desc { state: "default" 0.0;
+               rel2.relative: 1.0 0.7;
+            }
+         }
+         swallow { "lottie";
+            desc { state: "default" 0.0;
+               rel1.to: "lottie_base";
+               rel1.relative: 0.5 0.5;
+               rel2.to: "lottie_base";
+               rel2.relative: 0.5 0.5;
+            }
+         }
+         swallow { "slider";
+            desc { state: "default" 0.0;
+               rel1.relative: 0.0 0.7;
+               rel1.offset: 20 20;
+               rel2.offset: -20 -20;
+            }
+         }
+      }
+   }
+}
diff --git a/example/lottieviewer.cpp b/example/lottieviewer.cpp
new file mode 100644 (file)
index 0000000..2f46b47
--- /dev/null
@@ -0,0 +1,72 @@
+#include <Elementary.h>
+#include "lottieview.h"
+#include<iostream>
+#include <stdio.h>
+
+using namespace std;
+
+static void
+_win_del_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
+{
+    LottieView *view = (LottieView *)data;
+    delete view;
+}
+
+static void
+_slider_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
+{
+   double val = elm_slider_value_get(obj);
+   LottieView *view = (LottieView *)data;
+
+   view->seek(val);
+   view->render();
+}
+
+EAPI_MAIN int
+elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
+{
+   Evas_Object *win, *layout, *slider, *image;
+   bool renderMode = true;
+
+   if (argc > 1) {
+      if (!strcmp(argv[1], "--disable-render"))
+         renderMode = false;
+   }
+
+   win = elm_win_util_standard_add("lottie", "LottieViewer");
+   evas_object_resize(win, 500, 700);
+   evas_object_show(win);
+
+   layout = elm_layout_add(win);
+   evas_object_show(layout);
+   evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   elm_layout_file_set(layout, "layout.edj", "layout");
+   elm_win_resize_object_add(win, layout);
+
+   std::string filePath = DEMO_DIR;
+   filePath +="data.json";
+
+   LottieView *view = new LottieView(evas_object_evas_get(win), renderMode);
+   view->setFilePath(filePath.c_str());
+   view->setSize(500, 500);
+
+   evas_object_smart_callback_add(win, "delete,request", _win_del_cb, (void *)view);
+
+   image = view->getImage();
+   evas_object_show(image);
+   evas_object_size_hint_min_set(image, 500, 500);
+   elm_object_part_content_set(layout, "lottie", image);
+
+   slider = elm_slider_add(layout);
+   evas_object_show(slider);
+   elm_object_part_content_set(layout, "slider", slider);
+   evas_object_smart_callback_add(slider, "changed", _slider_cb, (void *)view);
+
+   view->seek(0.0);
+   view->render();
+
+   elm_run();
+
+   return 0;
+}
+ELM_MAIN()
index 79db2c1..72fb942 100644 (file)
@@ -32,3 +32,12 @@ executable('uxsampleTest',
            include_directories : inc,
            link_with : lottie_player_lib,
            dependencies : demo_dep)
+
+lottieviewer_sources = files('lottieviewer.cpp')
+lottieviewer_sources += common_source
+
+executable('lottieviewer',
+           lottieviewer_sources,
+           include_directories : inc,
+           link_with : lottie_player_lib,
+           dependencies : demo_dep)