void LottieView::play(const std::string &marker)
{
size_t totalframe = getTotalFrame();
- size_t stframe = mRenderDelegate->findFrameAtMarker(marker);
- size_t drframe = mRenderDelegate->findDurationFrameAtMarker(marker);
+ auto frame = mRenderDelegate->findFrameAtMarker(marker);
- setMinProgress((float)stframe / (float)totalframe);
- if (drframe != 0)
- setMaxProgress((float)drframe / (float)totalframe);
+ setMinProgress((float)std::get<0>(frame) / (float)totalframe);
+ if (std::get<1>(frame) != 0)
+ setMaxProgress((float)std::get<1>(frame) / (float)totalframe);
this->play();
}
void LottieView::play(const std::string &startmarker, const std::string endmarker)
{
size_t totalframe = getTotalFrame();
- size_t stframe = mRenderDelegate->findFrameAtMarker(startmarker);
- size_t edframe = mRenderDelegate->findFrameAtMarker(endmarker);
+ auto stframe = mRenderDelegate->findFrameAtMarker(startmarker);
+ auto edframe = mRenderDelegate->findFrameAtMarker(endmarker);
- setMinProgress((float)stframe / (float)totalframe);
- if (edframe != 0)
- setMaxProgress((float)edframe / (float)totalframe);
+ setMinProgress((float)std::get<0>(stframe) / (float)totalframe);
+ if (std::get<0>(edframe) != 0)
+ setMaxProgress((float)std::get<0>(edframe) / (float)totalframe);
this->play();
}
}
virtual void resize(int width, int height) = 0;
virtual void setPos(int x, int y) {evas_object_move(renderObject(), x, y);}
- virtual size_t findFrameAtMarker(const std::string &markerName) = 0;
- virtual size_t findDurationFrameAtMarker(const std::string &markerName) = 0;
+ typedef std::tuple<size_t, size_t> MarkerFrame;
+ virtual MarkerFrame findFrameAtMarker(const std::string &markerName) = 0;
void show() {evas_object_show(_renderObject);}
void hide() {evas_object_hide(_renderObject);}
void addCallback();
return mPlayer->frameAtPos(pos);
}
- size_t findFrameAtMarker(const std::string &markerName)
+ MarkerFrame findFrameAtMarker(const std::string &markerName)
{
auto markerList = mPlayer->markers();
auto marker = std::find_if(markerList.begin(), markerList.end()
return std::get<0>(e) == markerName;
});
if (marker == markerList.end())
- return 0;
- return std::get<1>(*marker);
+ return std::make_tuple(0, 0);
+ return std::make_tuple(std::get<1>(*marker), std::get<2>(*marker));
}
- size_t findDurationFrameAtMarker(const std::string &markerName)
- {
- auto markerList = mPlayer->markers();
- auto marker = std::find_if(markerList.begin(), markerList.end()
- , [&markerName](const auto& e) {
- return std::get<0>(e) == markerName;
- });
- if (marker == markerList.end())
- return 0;
- return std::get<2>(*marker);
- }
protected:
std::unique_ptr<rlottie::Animation> mPlayer;
};
double duration() {
return lottie_animation_get_duration(mPlayer);
}
- size_t findFrameAtMarker(const std::string &markerName)
- {
- printf("Can't not [%s] marker, CAPI isn't implements yet\n", markerName.c_str());
- return 0;
- }
-
- size_t findDurationFrameAtMarker(const std::string &markerName)
+ MarkerFrame findFrameAtMarker(const std::string &markerName)
{
printf("Can't not [%s] marker, CAPI isn't implements yet\n", markerName.c_str());
- return 0;
+ return std::make_tuple(0, 0);
}
bool renderRequest(int frame) {