Merge commit '1d638b192417fc3afac05edb4d46305d9e9ad9b3' into new-svg-renderer

This commit is contained in:
Leon Styhre 2022-10-03 17:34:52 +02:00
commit 1b18adee0e
6 changed files with 16 additions and 18 deletions

View file

@ -109,7 +109,6 @@ void LottieView::seek(float pos)
{
if (!mRenderDelegate) return;
mPos = mapProgress(pos);
// check if the pos maps to the current frame

View file

@ -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);
}
@ -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)
@ -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);
}
@ -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
@ -176,10 +176,9 @@ 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);
view->seek(0.0);
_update_frame_info(info);
return layout;
}

View file

@ -443,7 +443,7 @@ VMatrix renderer::Layer::matrix(int frameNo) const
bool renderer::Layer::visible() const
{
return (frameNo() >= mLayerData->inFrame() &&
frameNo() < mLayerData->outFrame());
frameNo() <= mLayerData->outFrame());
}
void renderer::Layer::preprocess(const VRect &clip)

View file

@ -539,8 +539,8 @@ public:
{
return long(frameAtPos(timeInSec / duration()));
}
size_t totalFrame() const { return mEndFrame - mStartFrame; }
long frameDuration() const { return mEndFrame - mStartFrame - 1; }
size_t totalFrame() const { return mEndFrame - mStartFrame + 1; }
long frameDuration() const { return mEndFrame - mStartFrame; }
float frameRate() const { return mFrameRate; }
size_t startFrame() const { return mStartFrame; }
size_t endFrame() const { return mEndFrame; }

View file

@ -665,9 +665,9 @@ void LottieParserImpl::parseComposition()
} else if (0 == strcmp(key, "h")) {
comp->mSize.setHeight(GetInt());
} else if (0 == strcmp(key, "ip")) {
comp->mStartFrame = GetDouble();
comp->mStartFrame = std::lround(GetDouble());
} else if (0 == strcmp(key, "op")) {
comp->mEndFrame = GetDouble();
comp->mEndFrame = std::lround(GetDouble());
} else if (0 == strcmp(key, "fr")) {
comp->mFrameRate = GetDouble();
} else if (0 == strcmp(key, "assets")) {