#include "evasapp.h"
+#include <dirent.h>
static void
_on_resize(Ecore_Evas *ee)
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;
+}
+
#include <Ecore.h>
#include <Ecore_Evas.h>
#include <Ecore_Input.h>
+#include<vector>
+#include<string>
+
typedef void (*appCb)(void *userData, void *extra);
class EvasApp
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;
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));
+
+ if (resource.empty()) return;
- int count = mResource.size();
+ 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);
EvasApp *mApp;
bool mRenderMode = false;
std::vector<std::unique_ptr<LottieView>> mViews;
- std::vector<std::string> mResource;
};
static void
renderMode = false;
}
LottieViewTest *view = new LottieViewTest(app, renderMode);
- view->buildResourceList();
view->show();
app->addExitCb(onExitCb, view);