lottie/example: delay rendering of view till pre render callback to mimic the evas...
[platform/core/uifw/lottie-player.git] / example / lottieviewtest.cpp
1 #include "evasapp.h"
2 #include "lottieview.h"
3 #include<iostream>
4 #include <dirent.h>
5 #include <stdio.h>
6 using namespace std;
7
8 /*
9  * To check the frame rate with rendermode off run
10  * ECORE_EVAS_FPS_DEBUG=1 ./lottieviewTest --disable-render
11  *
12  * To check the frame rate with  render backend
13  * ECORE_EVAS_FPS_DEBUG=1 ./lottieviewTest
14  *
15  */
16
17 class LottieViewTest
18 {
19 public:
20   LottieViewTest(EvasApp *app, bool renderMode) {
21       mApp = app;
22       mRenderMode = renderMode;
23   }
24
25   void show() {
26     auto resource = EvasApp::jsonFiles(std::string(DEMO_DIR));
27
28     if (resource.empty()) return;
29
30     int count = resource.size();
31     int colums = (int) ceil(sqrt(count));
32     int offset = 3;
33     int vw = (mApp->width() - (2 * offset * colums))/colums;
34     int vh = vw;
35     int posx = offset;
36     int posy = offset;
37     for(auto filePath : resource) {
38
39         std::unique_ptr<LottieView> view(new LottieView(mApp->evas(), mRenderMode));
40        view->setFilePath(filePath.c_str());
41        view->setPos(posx, posy);
42        view->setSize(vw, vh);
43        view->show();
44        view->play();
45        view->loop(true);
46        //view->setRepeatMode(LottieView::RepeatMode::Reverse);
47
48        posx += vw+offset;
49        if ((mApp->width() - posx) < vw) {
50           posx = offset;
51           posy = posy + vh + offset;
52        }
53        mViews.push_back(std::move(view));
54     }
55
56   }
57
58   void render() {
59       for (auto &i : mViews) {
60           i->render();
61       }
62   }
63
64 public:
65   EvasApp     *mApp;
66   bool         mRenderMode = false;
67   std::vector<std::unique_ptr<LottieView>>   mViews;
68 };
69
70 static void
71 onExitCb(void *data, void *extra)
72 {
73     LottieViewTest *view = (LottieViewTest *)data;
74     delete view;
75 }
76
77 static void
78 onRenderPreCb(void *data, void *extra)
79 {
80     LottieViewTest *view = (LottieViewTest *)data;
81     view->render();
82 }
83
84 int
85 main(int argc, char **argv)
86 {
87    EvasApp *app = new EvasApp(800, 800);
88    app->setup();
89
90    bool renderMode = true;
91    if (argc > 1) {
92        if (!strcmp(argv[1],"--disable-render"))
93            renderMode = false;
94    }
95    LottieViewTest *view = new LottieViewTest(app, renderMode);
96    view->show();
97
98    app->addExitCb(onExitCb, view);
99    app->addRenderPreCb(onRenderPreCb, view);
100
101    app->run();
102    delete app;
103    return 0;
104 }
105
106
107
108
109