Add features to download images over http protocol.
[platform/core/uifw/dali-adaptor.git] / platform-abstractions / slp / resource-loader / resource-thread-image.h
1 #ifndef __DALI_SLP_PLATFORM_RESOURCE_THREAD_IMAGE_H__
2 #define __DALI_SLP_PLATFORM_RESOURCE_THREAD_IMAGE_H__
3
4 /*
5  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  */
20
21 #include <dali/integration-api/resource-cache.h>
22 #include <dali/integration-api/resource-types.h>
23 #include "resource-thread-base.h"
24
25 namespace Dali
26 {
27
28 namespace SlpPlatform
29 {
30
31 class ResourceThreadImage : public ResourceThreadBase
32 {
33 public:
34   /**
35    * Constructor
36    * @param[in] resourceLoader A reference to the ResourceLoader
37    */
38   ResourceThreadImage(ResourceLoader& resourceLoader, bool forRemoteImage);
39
40   /**
41    * Destructor
42    */
43   virtual ~ResourceThreadImage();
44
45
46 private:
47   /**
48    * @copydoc ResourceThreadBase::Load
49    */
50   virtual void Load(const Integration::ResourceRequest& request);
51
52   /**
53    * @copydoc ResourceThreadBase::Download
54    */
55   virtual void Download(const Integration::ResourceRequest& request);
56
57   /**
58    * @copydoc ResourceThreadBase::Decode
59    */
60   virtual void Decode(const Integration::ResourceRequest& request);
61
62   /**
63    *@copydoc ResourceThreadBase::Save
64    */
65   virtual void Save(const Integration::ResourceRequest& request);
66
67   /**
68    * Download a requested image into a memory buffer.
69    * @param[in] request  The requested resource/file url and attributes
70    * @param[out] dataBuffer  A memory buffer object to be written with downloaded image data.
71    * @param[out] dataSize  The size of the memory buffer.
72    */
73   bool DownloadRemoteImageIntoMemory(const Integration::ResourceRequest& request, Dali::Vector<uint8_t>& dataBuffer, size_t& dataSize);
74
75   /**
76    * Load a requested image from a local file.
77    * @param[in] request  The requested resource/file url and attributes
78    */
79   void LoadImageFromLocalFile(const Integration::ResourceRequest& request);
80
81   /**
82    * Decode a requested image from a memory buffer.
83    * @param[in] blobBytes  A pointer to the memory buffer containig the requested image data.
84    * @param[in] blobSize  The size of the memory buffer containing the requested image data.
85    * @param[in] request  The requested resource/file url and attributes
86    */
87   void DecodeImageFromMemory(void* blobBytes, size_t blobSize, const Integration::ResourceRequest& request);
88 }; // class ResourceThreadImage
89
90 } // namespace SlpPlatform
91
92 } // namespace Dali
93
94 #endif // __DALI_SLP_PLATFORM_RESOURCE_THREAD_IMAGE_H__