+bool LoaderInfo::FileData::LoadFile()
+{
+ bool success = false;
+ if(isLocalResource)
+ {
+ success = LoadLocalFile();
+ }
+ else
+ {
+ success = LoadRemoteFile();
+ }
+ return success;
+}
+
+bool LoaderInfo::FileData::LoadLocalFile()
+{
+ Internal::Platform::FileReader fileReader(fileName);
+ FILE* fp = fileReader.GetFile();
+ if(DALI_UNLIKELY(fp == NULL))
+ {
+ return false;
+ }
+
+ if(DALI_UNLIKELY(fseek(fp, 0, SEEK_END) <= -1))
+ {
+ return false;
+ }
+
+ length = ftell(fp);
+ if(DALI_UNLIKELY(length <= -1))
+ {
+ return false;
+ }
+
+ if(DALI_LIKELY(!fseek(fp, 0, SEEK_SET)))
+ {
+ globalMap = reinterpret_cast<GifByteType*>(malloc(sizeof(GifByteType) * length));
+ length = fread(globalMap, sizeof(GifByteType), length, fp);
+ }
+ else
+ {
+ return false;
+ }
+ return true;
+}
+
+bool LoaderInfo::FileData::LoadRemoteFile()
+{
+ // remote file
+ bool succeeded = false;
+ Dali::Vector<uint8_t> dataBuffer;
+ size_t dataSize;
+
+ succeeded = TizenPlatform::Network::DownloadRemoteFileIntoMemory(fileName, dataBuffer, dataSize, MAXIMUM_DOWNLOAD_IMAGE_SIZE);
+ if(DALI_LIKELY(succeeded))
+ {
+ size_t blobSize = dataBuffer.Size();
+ if(DALI_LIKELY(blobSize > 0U))
+ {
+ // Open a file handle on the memory buffer:
+ Dali::Internal::Platform::FileReader fileReader(dataBuffer, blobSize);
+ FILE* const fp = fileReader.GetFile();
+ if(DALI_LIKELY(NULL != fp))
+ {
+ if(DALI_LIKELY(!fseek(fp, 0, SEEK_SET)))
+ {
+ globalMap = reinterpret_cast<GifByteType*>(malloc(sizeof(GifByteType) * blobSize));
+ length = fread(globalMap, sizeof(GifByteType), blobSize, fp);
+ succeeded = true;
+ }
+ else
+ {
+ DALI_LOG_ERROR("Error seeking within file\n");
+ }
+ }
+ else
+ {
+ DALI_LOG_ERROR("Error reading file\n");
+ }
+ }
+ }
+
+ return succeeded;
+}
+