lottie/example: move resourcelist generation to evasapp class for reuse.

Change-Id: If96683fe079a6484195b87c2fdd96c385114af12
This commit is contained in:
subhransu mohanty 2018-07-17 17:17:43 +09:00
parent 0347a9677f
commit ad76a433c7
3 changed files with 35 additions and 33 deletions

View File

@ -1,4 +1,5 @@
#include "evasapp.h"
#include <dirent.h>
static void
_on_resize(Ecore_Evas *ee)
@ -81,3 +82,27 @@ void EvasApp::run()
ecore_main_loop_begin();
ecore_evas_shutdown();
}
static bool isJsonFile(const char *filename) {
const char *dot = strrchr(filename, '.');
if(!dot || dot == filename) return false;
return !strcmp(dot + 1, "json");
}
std::vector<std::string>
EvasApp::jsonFiles(const std::string &dirName, bool recurse)
{
DIR *d;
struct dirent *dir;
std::vector<std::string> result;
d = opendir(dirName.c_str());
if (d) {
while ((dir = readdir(d)) != NULL) {
if (isJsonFile(dir->d_name))
result.push_back(dirName + dir->d_name);
}
closedir(d);
}
return result;
}

View File

@ -15,6 +15,9 @@
#include <Ecore.h>
#include <Ecore_Evas.h>
#include <Ecore_Input.h>
#include<vector>
#include<string>
typedef void (*appCb)(void *userData, void *extra);
class EvasApp
@ -32,6 +35,7 @@ public:
void addExitCb(appCb exitcb, void *data) {mExitCb = exitcb; mExitData = data;}
void addResizeCb(appCb resizecb, void *data) {mResizeCb = resizecb; mResizeData = data;}
void addKeyCb(appCb keycb, void *data) {mKeyCb = keycb; mKeyData = data;}
static std::vector<std::string> jsonFiles(const std::string &dir, bool recurse=false);
public:
int mw;
int mh;

View File

@ -22,46 +22,21 @@ public:
mRenderMode = renderMode;
}
bool isJsonFile(const char *filename) {
const char *dot = strrchr(filename, '.');
if(!dot || dot == filename) return false;
return !strcmp(dot + 1, "json");
}
void buildResourceList() {
DIR *d;
struct dirent *dir;
d = opendir(DEMO_DIR);
if (d) {
while ((dir = readdir(d)) != NULL) {
if (isJsonFile(dir->d_name))
mResource.push_back(dir->d_name);
}
closedir(d);
}
}
void displayResourceList() {
for(auto i : mResource) {
std::string filePath = DEMO_DIR;
filePath +=i;
}
}
void show() {
if (mResource.empty()) return;
auto resource = EvasApp::jsonFiles(std::string(DEMO_DIR));
int count = mResource.size();
if (resource.empty()) return;
int count = resource.size();
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;
for(auto i : mResource) {
std::string filePath = DEMO_DIR;
filePath +=i;
for(auto filePath : resource) {
std::unique_ptr<LottieView> view(new LottieView(mApp->evas(), mRenderMode));
std::unique_ptr<LottieView> view(new LottieView(mApp->evas(), mRenderMode));
view->setFilePath(filePath.c_str());
view->setPos(posx, posy);
view->setSize(vw, vh);
@ -84,7 +59,6 @@ public:
EvasApp *mApp;
bool mRenderMode = false;
std::vector<std::unique_ptr<LottieView>> mViews;
std::vector<std::string> mResource;
};
static void
@ -106,7 +80,6 @@ main(int argc, char **argv)
renderMode = false;
}
LottieViewTest *view = new LottieViewTest(app, renderMode);
view->buildResourceList();
view->show();
app->addExitCb(onExitCb, view);