#include "evasapp.h" #include "lottieview.h" #include #include #include using namespace std; /* * To check the frame rate with rendermode off run * ECORE_EVAS_FPS_DEBUG=1 ./lottieviewTest --disable-render * * To check the frame rate with render backend * ECORE_EVAS_FPS_DEBUG=1 ./lottieviewTest * */ class LottieViewTest { public: LottieViewTest(EvasApp *app, bool renderMode) { mApp = app; mRenderMode = renderMode; } void show(int numberOfImage) { auto resource = EvasApp::jsonFiles(std::string(DEMO_DIR)); if (resource.empty()) return; int count = numberOfImage; int colums = (int) ceil(sqrt(count)); int offset = 3; int vw = (mApp->width() - (2 * offset * colums))/colums; int vh = vw; int posx = offset; int posy = offset; int resourceSize = resource.size(); for (int i = 0 ; i < numberOfImage; i++) { int index = i % resourceSize; std::unique_ptr view(new LottieView(mApp->evas(), mRenderMode)); view->setFilePath(resource[index].c_str()); view->setPos(posx, posy); view->setSize(vw, vh); view->show(); view->play(); view->loop(true); //view->setRepeatMode(LottieView::RepeatMode::Reverse); posx += vw+offset; if ((mApp->width() - posx) < vw) { posx = offset; posy = posy + vh + offset; } mViews.push_back(std::move(view)); } } void render() { //auto clock = std::chrono::high_resolution_clock::now(); for (auto &i : mViews) { i->render(); } //double d = std::chrono::duration(std::chrono::high_resolution_clock::now()-clock).count(); //printf("total time taken = %f\n", d); } public: EvasApp *mApp; bool mRenderMode = false; std::vector> mViews; }; static void onExitCb(void *data, void *extra) { LottieViewTest *view = (LottieViewTest *)data; delete view; } static void onRenderPreCb(void *data, void *extra) { LottieViewTest *view = (LottieViewTest *)data; view->render(); } int main(int argc, char **argv) { EvasApp *app = new EvasApp(800, 800); app->setup(); bool renderMode = true; if (argc > 1) { if (!strcmp(argv[1],"--disable-render")) renderMode = false; } LottieViewTest *view = new LottieViewTest(app, renderMode); view->show(400); app->addExitCb(onExitCb, view); app->addRenderPreCb(onRenderPreCb, view); app->run(); delete app; return 0; }