Skip to content

Commit

Permalink
example: lottieviewer - fixed frame no
Browse files Browse the repository at this point in the history
There is a problem (issue Samsung#527) with totalFrame() in rlottie.
As lottieviewer didn't showed the actual frame number, but calculated it from
progress, it camouflaged the problem. Now the actual frame number and the
total number of frames are displayed.
  • Loading branch information
mmaciola committed Sep 6, 2022
1 parent 30f300d commit 628f325
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 12 deletions.
2 changes: 1 addition & 1 deletion example/lottieview.h
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ class LottieView
public:
int mRepeatCount;
LottieView::RepeatMode mRepeatMode;
size_t mCurFrame{UINT_MAX};
size_t mCurFrame{0};
Ecore_Animator *mAnimator{nullptr};
bool mLoop;
int mCurCount;
Expand Down
21 changes: 10 additions & 11 deletions example/lottieviewer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,13 @@ _layout_del_cb(void *data, Evas *, Evas_Object *, void *)
}

static void
_update_frame_info(AppInfo *info, double pos)
_update_frame_info(AppInfo *info)
{
int frameNo = pos * info->view->getTotalFrame();
char buf[64];
long currFrameNo = info->view->mCurFrame;
long totalFrameNo = info->view->getTotalFrame();

sprintf(buf, "%d / %ld", frameNo, info->view->getTotalFrame());
char buf[64];
sprintf(buf, "%ld (total: %ld)", currFrameNo, totalFrameNo);
elm_object_part_text_set(info->layout, "text", buf);
}

Expand Down Expand Up @@ -96,7 +97,7 @@ _animator_cb(void *data)
if (info && info->autoPlaying && info->view)
{
float pos = info->view->getPos();
_update_frame_info(info, pos);
_update_frame_info(info);
elm_slider_value_set(info->slider, (double)pos);
evas_object_image_pixels_dirty_set(info->view->getImage(), EINA_TRUE);
if (pos >= 1.0)
Expand All @@ -111,20 +112,20 @@ _slider_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
double val = elm_slider_value_get(obj);
AppInfo *info = (AppInfo *)data;

_update_frame_info(info, val);

if (!info->autoPlaying)
{
info->view->seek(val);
evas_object_image_pixels_dirty_set(info->view->getImage(), EINA_TRUE);
}

_update_frame_info(info);
}

static void
_button_clicked_cb(void *data, Evas_Object */*obj*/, void */*event_info*/)
{
AppInfo *info = (AppInfo *)data;

if (info->view->getPos() >= 1.0f) info->view->mPos = 0.0f;
_toggle_start_button(info);
}

Expand All @@ -133,7 +134,6 @@ create_layout(Evas_Object *parent, const char *file)
{
Evas_Object *layout, *slider, *image, *button;
Ecore_Animator *animator;
char buf[64];
AppInfo *info = (AppInfo *)calloc(sizeof(AppInfo), 1);

//LAYOUT
Expand Down Expand Up @@ -176,8 +176,7 @@ create_layout(Evas_Object *parent, const char *file)
info->animator = animator;
evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL, _layout_del_cb, (void *)info);

sprintf(buf, "%d / %ld", 0, view->getTotalFrame());
elm_object_part_text_set(layout, "text", buf);
_update_frame_info(info);

view->seek(0.0);
return layout;
Expand Down

0 comments on commit 628f325

Please sign in to comment.