#include"lottieview.h"
-using namespace lotplayer;
+using namespace lottieplayer;
static Eina_Bool
animator(void *data , double pos)
Evas_Object *mVg;
int mRepeatCount;
LottieView::RepeatMode mRepeatMode;
- lotplayer::LOTPlayer *mPlayer;
+ lottieplayer::LOTPlayer *mPlayer;
Ecore_Animator *mAnimator{nullptr};
bool mLoop;
int mCurCount;
#endif
#endif
-struct LOTNode {
+typedef struct LOTNode {
#define ChangeFlagNone 0x0000
#define ChangeFlagPath 0x0001
Color mColor;
Stroke mStroke;
Gradient mGradient;
-};
+} lotnode;
-struct LOTBuffer {
+typedef struct LOTBuffer {
uint32_t *buffer;
int width;
int height;
int bytesPerLine;
bool clear;
-};
+} lotbuf;
#endif // _LOTCOMMON_H_
#define _LOTPLAYER_DECLARE_PRIVATE(A) \
class A##Private *d;
-namespace lotplayer {
+namespace lottieplayer {
class LOT_EXPORT LOTPlayer {
public:
float playTime() const;
- float pos();
+ float pos() const;
const std::vector<LOTNode *> &renderList(float pos) const;
--- /dev/null
+#ifndef _LOTPLAYER_CAPI_H_
+#define _LOTPLAYER_CAPI_H_
+
+#include <lotcommon.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct lotplayer_s lotplayer;
+
+LOT_EXPORT lotplayer *lotplayer_create(void);
+LOT_EXPORT int lotplayer_destroy(lotplayer *player);
+LOT_EXPORT int lotplayer_set_file(lotplayer *player, const char *file);
+LOT_EXPORT int lotplayer_set_size(lotplayer *player, int w, int h);
+LOT_EXPORT int lotplayer_get_size(const lotplayer *player, int* w, int* h);
+LOT_EXPORT float lotplayer_get_playtime(const lotplayer *player);
+LOT_EXPORT float lotplayer_get_pos(const lotplayer *player);
+LOT_EXPORT size_t lotplayer_get_node_count(const lotplayer *player, float pos);
+LOT_EXPORT const lotnode* lotplayer_get_node(lotplayer *player, float pos, size_t idx);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //_LOTPLAYER_CAPI_H_
+
--- /dev/null
+#include <lotplayer.h>
+
+extern "C" {
+
+using namespace lottieplayer;
+
+using lotplayer = LOTPlayer;
+
+LOT_EXPORT lotplayer *lotplayer_create(void)
+{
+ lotplayer* p = new LOTPlayer();
+ if (!p) {
+ //TODO: Print Error
+ }
+ return p;
+}
+
+LOT_EXPORT int lotplayer_destroy(lotplayer *player)
+{
+ if (!player) return -1;
+ delete(player);
+
+ return 0;
+}
+
+LOT_EXPORT int lotplayer_set_file(lotplayer *player, const char *file)
+{
+ if (!player) return -1;
+ bool ret = player->setFilePath(file);
+
+ if (!ret) return -1;
+
+ return 0;
+}
+
+LOT_EXPORT int lotplayer_set_size(lotplayer *player, int w, int h)
+{
+ if (!player) return -1;
+
+ player->setSize(w, h);
+
+ return 0;
+}
+
+LOT_EXPORT int lotplayer_get_size(const lotplayer *player, int* w, int* h)
+{
+ if (!player) return -1;
+
+ player->size(*w, *h);
+
+ return 0;
+}
+
+LOT_EXPORT float lotplayer_get_pos(const lotplayer *player)
+{
+ if (!player) return -1.0f;
+
+ return player->pos();
+}
+
+LOT_EXPORT size_t lotplayer_get_node_count(const lotplayer *player, float pos)
+{
+ if (!player) return 0;
+
+ return player->renderList(pos).size();
+}
+
+LOT_EXPORT float lotplayer_get_playtime(const lotplayer *player)
+{
+ if (!player) return 0.0f;
+
+ return player->playTime();
+}
+
+LOT_EXPORT const lotnode* lotplayer_get_node(lotplayer *player, float pos, size_t idx)
+{
+ if (!player) return nullptr;
+
+ if (idx >= player->renderList(pos).size()) {
+ return nullptr;
+ }
+
+ return player->renderList(pos)[idx];
+}
+
+}
--- /dev/null
+install_headers(['lotplayer_capi.h'])
+
+source_file = files('lottieplayer.cpp')
+
+binding_c_dep = declare_dependency(
+ include_directories : include_directories('.'),
+ sources : source_file
+ )
--- /dev/null
+subdir('c')
+binding_dep = binding_c_dep
#include <fstream>
-using namespace lotplayer;
+using namespace lottieplayer;
class LOTPlayerPrivate {
return d->playTime();
}
-float LOTPlayer::pos()
+float LOTPlayer::pos() const
{
return d->pos();
}
subdir('vector')
subdir('lottie')
+subdir('binding')
-library_deps = [vector_dep]
+library_deps = vector_dep
library_deps += lottie_dep
+library_deps += binding_dep
lottie_player_lib = shared_library( 'lottie-player',
include_directories : inc,