New parameter for FrameBufferImage creation
[platform/core/uifw/dali-core.git] / dali / internal / update / resources / bitmap-metadata.cpp
1 /*
2  * Copyright (c) 2014 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/update/resources/bitmap-metadata.h>
20
21 // EXTERNAL INCLUDES
22 #include <math.h>
23
24 // INTERNAL INCLUDES
25 #include <dali/integration-api/debug.h>
26
27
28 namespace Dali
29 {
30
31 namespace Internal
32 {
33
34 BitmapMetadata BitmapMetadata::New(NativeImageInterfacePtr nativeImage)
35 {
36   return BitmapMetadata(nativeImage->GetWidth(), nativeImage->GetHeight(), nativeImage->RequiresBlending(), ! nativeImage->RequiresBlending());
37 }
38
39 BitmapMetadata BitmapMetadata::New(Integration::Bitmap* const bitmap)
40 {
41   return BitmapMetadata(bitmap->GetImageWidth(), bitmap->GetImageHeight(), Pixel::HasAlpha(bitmap->GetPixelFormat()), bitmap->IsFullyOpaque());
42 }
43
44
45 BitmapMetadata BitmapMetadata::New(unsigned int width,
46                                    unsigned int height,
47                                    bool hasAlphaChannel)
48 {
49   return BitmapMetadata(width, height, hasAlphaChannel, !hasAlphaChannel );
50 }
51
52
53 BitmapMetadata::BitmapMetadata( unsigned int width,
54                                 unsigned int height,
55                                 bool hasAlphaChanne,
56                                 bool opaqueness )
57 : mImageWidth(width),
58   mImageHeight(height),
59   mHasAlphaChannel(hasAlphaChanne),
60   mOpaqueness(opaqueness),
61   mIsNativeImage(false),
62   mIsFramebuffer(false)
63 {
64 }
65
66 BitmapMetadata::BitmapMetadata( )
67 : mImageWidth(0),
68   mImageHeight(0),
69   mHasAlphaChannel(true),
70   mOpaqueness(false),
71   mIsNativeImage(false),
72   mIsFramebuffer(false)
73 {
74 }
75
76 BitmapMetadata::BitmapMetadata( const BitmapMetadata& rhs )
77 : mImageWidth(rhs.mImageWidth),
78   mImageHeight(rhs.mImageHeight),
79   mHasAlphaChannel(rhs.mHasAlphaChannel),
80   mOpaqueness(rhs.mOpaqueness),
81   mIsNativeImage(rhs.mIsNativeImage),
82   mIsFramebuffer(rhs.mIsFramebuffer)
83 {
84 }
85
86 BitmapMetadata& BitmapMetadata::operator=( const BitmapMetadata& rhs )
87 {
88   mImageWidth = rhs.mImageWidth;
89   mImageHeight =rhs.mImageHeight;
90   mHasAlphaChannel = rhs.mHasAlphaChannel;
91   mOpaqueness = rhs.mOpaqueness;
92   mIsNativeImage = rhs.mIsNativeImage;
93   mIsFramebuffer = rhs.mIsFramebuffer;
94   return *this;
95 }
96
97 void BitmapMetadata::Update(NativeImageInterfacePtr nativeImage)
98 {
99   mImageWidth  = nativeImage->GetWidth();
100   mImageHeight = nativeImage->GetHeight();
101   mHasAlphaChannel = nativeImage->RequiresBlending();
102   mOpaqueness  = ! mHasAlphaChannel;
103   mIsNativeImage = true;
104 }
105
106 void BitmapMetadata::Update(Integration::Bitmap* const bitmap)
107 {
108   mImageWidth  = bitmap->GetImageWidth();
109   mImageHeight = bitmap->GetImageHeight();
110   mHasAlphaChannel = Pixel::HasAlpha(bitmap->GetPixelFormat());
111   mOpaqueness  = bitmap->IsFullyOpaque();
112   mIsNativeImage = false;
113 }
114
115 unsigned int BitmapMetadata::GetWidth() const
116 {
117   return mImageWidth;
118 }
119
120 unsigned int BitmapMetadata::GetHeight() const
121 {
122   return mImageHeight;
123 }
124
125 bool BitmapMetadata::HasAlphaChannel() const
126 {
127   return mHasAlphaChannel;
128 }
129
130 bool BitmapMetadata::IsFullyOpaque() const
131 {
132   return mOpaqueness;
133 }
134
135 void BitmapMetadata::SetWidth(unsigned int width)
136 {
137   mImageWidth = width;
138 }
139
140 void BitmapMetadata::SetHeight(unsigned int height)
141 {
142   mImageHeight = height;
143 }
144
145 void BitmapMetadata::SetHasAlphaChannel( bool hasAlphaChannel )
146 {
147   mHasAlphaChannel = hasAlphaChannel;
148 }
149
150 void BitmapMetadata::SetOpaqueness(bool opaqueness)
151 {
152   mOpaqueness = opaqueness;
153 }
154
155 void BitmapMetadata::SetIsNativeImage( bool isNativeImage )
156 {
157   mIsNativeImage = isNativeImage;
158 }
159
160 bool BitmapMetadata::GetIsNativeImage()
161 {
162   return mIsNativeImage;
163 }
164
165 void BitmapMetadata::SetIsFramebuffer( bool isFramebuffer )
166 {
167   mIsFramebuffer = isFramebuffer;
168 }
169
170 bool BitmapMetadata::GetIsFramebuffer()
171 {
172   return mIsFramebuffer;
173 }
174
175
176
177 } // namespace Internal
178
179 } // namespace Dali