[Tizen] Add stride to PixelData
[platform/core/uifw/dali-core.git] / dali / internal / event / images / pixel-data-impl.cpp
1 /*
2  * Copyright (c) 2022 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 // CLASS HEADER
19 #include <dali/internal/event/images/pixel-data-impl.h>
20
21 namespace Dali
22 {
23 namespace Internal
24 {
25 PixelData::PixelData(uint8_t*                         buffer,
26                      uint32_t                         bufferSize,
27                      uint32_t                         width,
28                      uint32_t                         height,
29                      uint32_t                         stride,
30                      Pixel::Format                    pixelFormat,
31                      Dali::PixelData::ReleaseFunction releaseFunction)
32 : mBuffer(buffer),
33   mBufferSize(bufferSize),
34   mWidth(width),
35   mHeight(height),
36   mStride(stride),
37   mPixelFormat(pixelFormat),
38   mReleaseFunction(releaseFunction)
39 {
40 }
41
42 PixelData::~PixelData()
43 {
44   if(mBuffer)
45   {
46     if(mReleaseFunction == Dali::PixelData::FREE)
47     {
48       free(mBuffer);
49     }
50     else
51     {
52       delete[] mBuffer;
53     }
54   }
55 }
56
57 PixelDataPtr PixelData::New(uint8_t*                         buffer,
58                             uint32_t                         bufferSize,
59                             uint32_t                         width,
60                             uint32_t                         height,
61                             uint32_t                         stride,
62                             Pixel::Format                    pixelFormat,
63                             Dali::PixelData::ReleaseFunction releaseFunction)
64 {
65   return new PixelData(buffer, bufferSize, width, height, stride, pixelFormat, releaseFunction);
66 }
67
68 uint32_t PixelData::GetWidth() const
69 {
70   return mWidth;
71 }
72
73 uint32_t PixelData::GetHeight() const
74 {
75   return mHeight;
76 }
77
78 Pixel::Format PixelData::GetPixelFormat() const
79 {
80   return mPixelFormat;
81 }
82
83 uint8_t* PixelData::GetBuffer() const
84 {
85   return mBuffer;
86 }
87
88 uint32_t PixelData::GetBufferSize() const
89 {
90   return mBufferSize;
91 }
92
93 DevelPixelData::PixelDataBuffer PixelData::ReleaseBuffer()
94 {
95   DevelPixelData::PixelDataBuffer pixelDataBuffer(mBuffer, mBufferSize, mReleaseFunction);
96   mBuffer = nullptr;
97   return pixelDataBuffer;
98 }
99
100 uint32_t PixelData::GetStride() const
101 {
102   return mStride;
103 }
104
105 } // namespace Internal
106
107 } // namespace Dali