lottie/example: update the example to do stress test.
[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(int numberOfImage) {
26     auto resource = EvasApp::jsonFiles(std::string(DEMO_DIR));
27
28     if (resource.empty()) return;
29
30     int count = numberOfImage;
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     int resourceSize = resource.size();
38     for (int i = 0 ; i < numberOfImage; i++) {
39         int index = i % resourceSize;
40         std::unique_ptr<LottieView> view(new LottieView(mApp->evas(), mRenderMode));
41         view->setFilePath(resource[index].c_str());
42         view->setPos(posx, posy);
43         view->setSize(vw, vh);
44         view->show();
45         view->play();
46         view->loop(true);
47         //view->setRepeatMode(LottieView::RepeatMode::Reverse);
48
49         posx += vw+offset;
50         if ((mApp->width() - posx) < vw) {
51           posx = offset;
52           posy = posy + vh + offset;
53         }
54         mViews.push_back(std::move(view));
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(50);
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