remove sneaked inserting unicodes, zero-width no-break space.
[platform/core/uifw/lottie-player.git] / src / lottie / lottieloader.cpp
index 3d42195..d3474a9 100644 (file)
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 #include "lottieloader.h"
 #include "lottieparser.h"
 
-#include<fstream>
-#include<unordered_map>
+#include <fstream>
+#include <unordered_map>
 
 using namespace std;
 
-class LottieFileCache
-{
+class LottieFileCache {
 public:
-   ~LottieFileCache();
-   static LottieFileCache &get() {
-      static LottieFileCache CACHE;
-
-      return CACHE;
-   }
-   std::shared_ptr<LOTModel> find(std::string &key);
-   void add(std::string &key, std::shared_ptr<LOTModel> value);
-private:
-   LottieFileCache(){}
+    static LottieFileCache &get()
+    {
+        static LottieFileCache CACHE;
 
-   std::unordered_map<std::string, std::shared_ptr<LOTModel>> mHash;
+        return CACHE;
+    }
+    std::shared_ptr<LOTModel> find(const std::string &key);
+    void add(const std::string &key, std::shared_ptr<LOTModel> value);
 
-};
+private:
+    LottieFileCache() = default;
 
-LottieFileCache::~LottieFileCache()
-{
+    std::unordered_map<std::string, std::shared_ptr<LOTModel>> mHash;
+};
 
-}
-std::shared_ptr<LOTModel>
-LottieFileCache::find(std::string &key)
+std::shared_ptr<LOTModel> LottieFileCache::find(const std::string &key)
 {
-   auto search = mHash.find(key);
-   if (search != mHash.end()) {
-       return search->second;
-   } else {
-      return nullptr;
-   }
+    auto search = mHash.find(key);
+    if (search != mHash.end()) {
+        return search->second;
+    } else {
+        return nullptr;
+    }
 }
 
-void
-LottieFileCache::add(std::string &key, std::shared_ptr<LOTModel> value)
+void LottieFileCache::add(const std::string &key, std::shared_ptr<LOTModel> value)
 {
-   mHash[key] = value;
+    mHash[key] = std::move(value);
 }
 
-LottieLoader::LottieLoader()
+bool LottieLoader::load(const std::string &path)
 {
+    LottieFileCache &fileCache = LottieFileCache::get();
 
-}
+    mModel = fileCache.find(path);
+    if (mModel) return true;
 
-bool LottieLoader::load(std::string &path)
-{
-   if (path.empty()) return false;
+    std::ifstream f;
+    f.open(path);
 
-   LottieFileCache &fileCache = LottieFileCache::get();
+    if (!f.is_open()) {
+        vCritical << "failed to open file = " << path.c_str();
+        return false;
+    } else {
+        std::stringstream buf;
+        buf << f.rdbuf();
 
-   mModel = fileCache.find(path);
-   if (mModel)
-      return true;
+        LottieParser parser(const_cast<char *>(buf.str().data()));
+        mModel = parser.model();
+        fileCache.add(path, mModel);
 
-   std::ifstream f;
-   f.open(path);
+        f.close();
+    }
 
-   if (!f.is_open()) {
-      cout << "failed to open file = " << path.c_str() << endl;
-      return false;
-   } else {
-      std::stringstream buf;
-      buf << f.rdbuf();
+    return true;
+}
 
-      LottieParser parser(const_cast<char *>(buf.str().data()));
-      mModel = parser.model();
-      fileCache.add(path, mModel);
+bool LottieLoader::loadFromData(std::string &&jsonData, const std::string &key)
+{
+    LottieFileCache &fileCache = LottieFileCache::get();
+
+    mModel = fileCache.find(key);
+    if (mModel) return true;
 
-      f.close();
-   }
+    LottieParser parser(const_cast<char *>(jsonData.c_str()));
+    mModel = parser.model();
+    fileCache.add(key, mModel);
 
-   return true;
+    return true;
 }
 
 std::shared_ptr<LOTModel> LottieLoader::model()
 {
-   return mModel;
+    return mModel;
 }
-