Example: Change findFrameAtMarker return type.
authorJunsuChoi <jsuya.choi@samsung.com>
Fri, 18 Oct 2019 02:39:43 +0000 (11:39 +0900)
committerJongmin Lee <jm105.lee@samsung.com>
Mon, 11 Nov 2019 20:58:10 +0000 (05:58 +0900)
example/lottieview.cpp
example/lottieview.h

index 7519595..05d4bc7 100644 (file)
@@ -172,12 +172,11 @@ void LottieView::play()
 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();
 }
@@ -185,12 +184,12 @@ void LottieView::play(const std::string &marker)
 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();
 }
index f37faf7..5ad3a95 100644 (file)
@@ -66,8 +66,8 @@ public:
     }
     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();
@@ -118,7 +118,7 @@ public:
         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()
@@ -126,21 +126,10 @@ public:
                                         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;
 };
@@ -259,16 +248,10 @@ public:
     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) {