[dali_2.2.12] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / devel-api / builder / base64-encoding.cpp
index 024c1b5..2de438a 100644 (file)
@@ -80,7 +80,8 @@ bool DecodeBase64PropertyData(const Property::Value& value, std::vector<uint32_t
     bn::decode_b64(encodedString.begin(), encodedString.end(), std::back_inserter(outputTmpData));
 
     outputData.clear();
-    outputData.resize(outputTmpData.size() / sizeof(uint32_t));
+    uint32_t outputSize = outputTmpData.size() / sizeof(uint32_t) + static_cast<uint32_t>(!!(outputTmpData.size() % sizeof(uint32_t)));
+    outputData.resize(outputSize);
     // Treat as a block of data
     memcpy(&outputData[0], &outputTmpData[0], outputTmpData.size());
 
@@ -89,6 +90,21 @@ bool DecodeBase64PropertyData(const Property::Value& value, std::vector<uint32_t
   return decoded;
 }
 
+bool DecodeBase64PropertyData(const Property::Value& value, std::vector<uint8_t>& outputData)
+{
+  bool        decoded = false;
+  std::string encodedString;
+
+  if(GetStringFromProperty(value, encodedString))
+  {
+    outputData.reserve(ceil(encodedString.size() * 0.75f));
+    bn::decode_b64(encodedString.begin(), encodedString.end(), std::back_inserter(outputData));
+
+    decoded = true;
+  }
+  return decoded;
+}
+
 void EncodeBase64PropertyData(Property::Value& value, const std::vector<uint32_t>& inputData)
 {
   std::ostringstream oss;