rlottie: now loadFromData() api takes resourcePath for loading external resource 40/200840/1
authorsubhransu mohanty <sub.mohanty@samsung.com>
Mon, 4 Mar 2019 04:19:47 +0000 (13:19 +0900)
committerHermet Park <hermetpark@gmail.com>
Tue, 5 Mar 2019 04:06:07 +0000 (13:06 +0900)
Change-Id: Ide58a5b1282a91d099785c4b63976a75dd267775

example/lottieview.cpp
example/lottieview.h
inc/rlottie.h
inc/rlottie_capi.h
src/binding/c/lottieanimation_capi.cpp
src/lottie/lottieanimation.cpp
src/lottie/lottieloader.cpp
src/lottie/lottieloader.h
src/lottie/lottieparser.h

index 7671735..383aa6d 100644 (file)
@@ -369,9 +369,9 @@ void LottieView::setFilePath(const char *filePath)
     }
 }
 
-void LottieView::loadFromData(const std::string &jsonData, const std::string &key)
+void LottieView::loadFromData(const std::string &jsonData, const std::string &key, const std::string &resourcePath)
 {
-    if (mPlayer = Animation::loadFromData(jsonData, key)) {
+    if (mPlayer = Animation::loadFromData(jsonData, key, resourcePath)) {
         mFrameRate = mPlayer->frameRate();
         mTotalFrame = mPlayer->totalFrame();
     } else {
index 1ff8266..f979c56 100644 (file)
@@ -49,7 +49,7 @@ public:
     void setSize(int w, int h);
     void setPos(int x, int y);
     void setFilePath(const char *filePath);
-    void loadFromData(const std::string &jsonData, const std::string &key);
+    void loadFromData(const std::string &jsonData, const std::string &key, const std::string &resourcePath="");
     void show();
     void hide();
     void loop(bool loop);
index 7821641..135ab53 100644 (file)
@@ -143,7 +143,7 @@ public:
      *  @internal
      */
     static std::unique_ptr<Animation>
-    loadFromData(std::string jsonData, const std::string &key);
+    loadFromData(std::string jsonData, const std::string &key, const std::string &resourcePath="");
 
     /**
      *  @brief Returns default framerate of the Lottie resource.
index 8cc84c5..2c8a199 100644 (file)
@@ -49,6 +49,7 @@ LOT_EXPORT Lottie_Animation *lottie_animation_from_file(const char *path);
  *
  *  @param[in] data The JSON string data.
  *  @param[in] key the string that will be used to cache the JSON string data.
+ *  @param[in] resource_path the path that will be used to load external resource needed by the JSON data.
  *
  *  @return Animation object that can build the contents of the
  *          Lottie resource represented by JSON string data.
@@ -56,7 +57,7 @@ LOT_EXPORT Lottie_Animation *lottie_animation_from_file(const char *path);
  *  @ingroup Lottie_Animation
  *  @internal
  */
-LOT_EXPORT Lottie_Animation *lottie_animation_from_data(const char *data, const char *key);
+LOT_EXPORT Lottie_Animation *lottie_animation_from_data(const char *data, const char *key, const char *resource_path);
 
 /**
  *  @brief Free given Animation object resource.
index dd7f5e1..cd85bd3 100644 (file)
@@ -41,9 +41,9 @@ LOT_EXPORT Lottie_Animation_S *lottie_animation_from_file(const char *path)
     }
 }
 
-LOT_EXPORT Lottie_Animation_S *lottie_animation_from_data(const char *data, const char *key)
+LOT_EXPORT Lottie_Animation_S *lottie_animation_from_data(const char *data, const char *key, const char *resourcePath)
 {
-    if (auto animation = Animation::loadFromData(data, key) ) {
+    if (auto animation = Animation::loadFromData(data, key, resourcePath) ) {
         Lottie_Animation_S *handle = new Lottie_Animation_S();
         handle->mAnimation = std::move(animation);
         return handle;
index 2fcfceb..bc86d4b 100644 (file)
@@ -198,7 +198,7 @@ std::future<Surface> AnimationImpl::renderAsync(size_t frameNo, Surface &&surfac
  * @param path  add the details
  */
 std::unique_ptr<Animation>
-Animation::loadFromData(std::string jsonData, const std::string &key)
+Animation::loadFromData(std::string jsonData, const std::string &key, const std::string &resourcePath)
 {
     if (jsonData.empty()) {
         vWarning << "jason data is empty";
@@ -206,7 +206,8 @@ Animation::loadFromData(std::string jsonData, const std::string &key)
     }
 
     LottieLoader loader;
-    if (loader.loadFromData(std::move(jsonData), key)) {
+    if (loader.loadFromData(std::move(jsonData), key,
+                            (resourcePath.empty() ? " " : resourcePath))) {
         auto animation = std::unique_ptr<Animation>(new Animation);
         animation->d->init(loader.model());
         return animation;
index 6b540f8..7aab525 100644 (file)
@@ -90,14 +90,14 @@ bool LottieLoader::load(const std::string &path)
     return true;
 }
 
-bool LottieLoader::loadFromData(std::string &&jsonData, const std::string &key)
+bool LottieLoader::loadFromData(std::string &&jsonData, const std::string &key, const std::string &resourcePath)
 {
     LottieFileCache &fileCache = LottieFileCache::get();
 
     mModel = fileCache.find(key);
     if (mModel) return true;
 
-    LottieParser parser(const_cast<char *>(jsonData.c_str()));
+    LottieParser parser(const_cast<char *>(jsonData.c_str()), resourcePath.c_str());
     mModel = parser.model();
     fileCache.add(key, mModel);
 
index 1f6f3d5..d7228bb 100644 (file)
@@ -27,7 +27,7 @@ class LottieLoader
 {
 public:
    bool load(const std::string &filePath);
-   bool loadFromData(std::string &&jsonData, const std::string &key);
+   bool loadFromData(std::string &&jsonData, const std::string &key, const std::string &resourcePath);
    std::shared_ptr<LOTModel> model();
 private:
    std::shared_ptr<LOTModel>    mModel;
index d892c24..21e5ae8 100644 (file)
@@ -25,7 +25,7 @@ class LottieParserImpl;
 class LottieParser {
 public:
     ~LottieParser();
-    LottieParser(char* str, const char *dir_path="");
+    LottieParser(char* str, const char *dir_path);
     std::shared_ptr<LOTModel> model();
 private:
    LottieParserImpl   *d;