Merge "Added PixelBuffer for image loading and operations." into devel/master
[platform/core/uifw/dali-adaptor.git] / adaptors / emscripten / wrappers / emscripten-utils.cpp
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 #include "emscripten-utils.h"
19
20 // EXTERNAL INCLUDES
21
22
23 // INTERNAL INCLUDES
24
25 namespace Dali
26 {
27 namespace Internal
28 {
29 namespace Emscripten
30 {
31
32 Dali::Image CreateImageRGBA(unsigned int width, unsigned int height, const std::string& data)
33 {
34   Dali::BufferImage b = Dali::BufferImage::New( width, height, Dali::Pixel::RGBA8888 );
35
36   const Dali::PixelBuffer* from = reinterpret_cast<const Dali::PixelBuffer*>( data.c_str() );
37   Dali::PixelBuffer* to = b.GetBuffer();
38
39   unsigned int len = std::max( width * height * 4, data.size() );
40   for(int i = 0; i < len; i++)
41   {
42     *to++ = *from++;
43   }
44   return b;
45 }
46
47 Dali::Image CreateImageRGB(unsigned int width, unsigned int height, const std::string& data)
48 {
49   Dali::BufferImage b = Dali::BufferImage::New( width, height, Dali::Pixel::RGB888 );
50
51   const Dali::PixelBuffer* from = reinterpret_cast<const Dali::PixelBuffer*>( data.c_str() );
52   Dali::PixelBuffer* to = b.GetBuffer();
53
54   unsigned int len = std::max( width * height * 3, data.size() );
55   for(int i = 0; i < len; i++)
56   {
57     *to++ = *from++;
58   }
59   return b;
60 }
61
62 Dali::Image GetImage(const std::string& data)
63 {
64   const uint8_t* const ptr = reinterpret_cast<const uint8_t * const>(data.c_str());
65   return Dali::EncodedBufferImage::New(ptr, data.size());
66 }
67
68 }; // namespace Emscripten
69 }; // namespace Internal
70 }; // namespace Dali