2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://floralicense.org/license/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FGrp_BitmapUtil.h
20 * @brief This is the header file for _BitmapUtil namespace.
24 #ifndef _FGRP_INTERNAL_BITMAPUTIL_H_
25 #define _FGRP_INTERNAL_BITMAPUTIL_H_
27 #include <FGrpBitmap.h>
29 #include <FBaseSysLog.h>
31 #include "FGrp_BitmapImpl.h"
32 #include "FGrp_BitmapCoordHolder.h"
35 namespace Tizen { namespace Graphics
41 unsigned long GetTimeStamp(const Tizen::Graphics::Bitmap& bitmap);
43 unsigned long UpdateTimeStamp(Tizen::Graphics::Bitmap& bitmap);
45 // the ownership of 'bitmapImpl' moves to the new Bitmap instance
46 Bitmap* CreateBitmapN(Tizen::Graphics::_BitmapImpl* bitmapImpl);
48 // it doesn't move the ownership of 'pBuffer'
49 Bitmap* CreateBitmapN(void* pBuffer, int width, int height, int depth);
51 // This function can create a raw bitmap from physical size
52 Bitmap* CreateBitmapN(Dimension physicalSize, int depth);
54 // This function changes the buffer of the specified bitmap to the user defined buffer
55 // The user buffer size MUST be same as the original bitmap size
56 result ChangeBuffer(Tizen::Graphics::Bitmap& srcBitmap, void* pBuffer, long bytesPerLine, void (* DestroyCallback)(void*), void* pCallbackParam);
58 bool SetCallback(Tizen::Graphics::Bitmap& bitmap,
59 void (* DestroyCallback)(void*), void* pCallbackParam,
60 void (* LockCallback)(void*), void* pLockParam,
61 void (* UnlockCallback)(void*), void* pUnlockParam);
63 void ResetCallback(Tizen::Graphics::Bitmap& bitmap);
65 } // Tizen::Graphics::_BitmapUtil
72 BitmapTemp(Canvas& canvas);
73 BitmapTemp(void* pBuffer, int width, int height, int depth);
74 BitmapTemp(Dimension physicalSize, int depth);
76 virtual ~BitmapTemp();
88 namespace Tizen { namespace Graphics
95 _Bitmap* GetBitmapEx(void) const
97 return (this && this->_sharedItem.get()) ? this->_sharedItem->nativeBitmap.get() : 0;
100 _Bitmap* GetScaledBitmapEx(void) const
102 return (this && this->_sharedItem.get()) ? this->_sharedItem->scaledNativeBitmap.get() : 0;
105 bool IsLazyScalingBitmap(void) const
107 return (this && this->_sharedItem.get()) ? (this->_sharedItem->lazyScaling != 0) : false;
110 bool IsLazyScalingBitmap(Tizen::Graphics::Dimension& virSize, Tizen::Graphics::Dimension& phySize) const
112 if (this->_sharedItem.get() == 0 || this->_sharedItem->lazyScaling == 0)
117 virSize.width = this->_sharedItem->coordHolder->bitmapSize.virCoord.w;
118 virSize.height = this->_sharedItem->coordHolder->bitmapSize.virCoord.h;
119 phySize.width = this->_sharedItem->coordHolder->bitmapSize.phyCoord.w;
120 phySize.height = this->_sharedItem->coordHolder->bitmapSize.phyCoord.h;
125 bool SetCallback(void (* DestroyCallback)(void*), void* pDestroyCallbackParam,
126 void (* LockCallback)(void*), void* pLockCallbackParam,
127 void (* UnlockCallback)(void*), void* pUnlockCallbackParam)
129 if (this->_sharedItem.get() == 0)
134 return this->_SetCallback(DestroyCallback, pDestroyCallbackParam, LockCallback, pLockCallbackParam, UnlockCallback, pUnlockCallbackParam);
137 void ResetCallback(void)
139 if (this->_sharedItem.get() == 0)
144 this->_sharedItem->pDestroyCallbackFunc = null;
145 this->_sharedItem->pDestroyCallbackParam = null;
146 this->_sharedItem->pLockCallbackFunc = null;
147 this->_sharedItem->pLockCallbackParam = null;
148 this->_sharedItem->pUnlockCallbackFunc = null;
149 this->_sharedItem->pUnlockCallbackParam = null;
152 }; // _BitmapImplHack
155 GetBitmapEx(const Tizen::Graphics::_BitmapImpl& bitmap)
157 const _BitmapImplHack* pBitmapImplHack = static_cast <const _BitmapImplHack*>(&bitmap);
159 return (pBitmapImplHack) ? pBitmapImplHack->GetBitmapEx() : null;
163 GetScaledBitmapEx(const Tizen::Graphics::_BitmapImpl& bitmap)
165 const _BitmapImplHack* pBitmapImplHack = static_cast <const _BitmapImplHack*>(&bitmap);
167 return (pBitmapImplHack) ? pBitmapImplHack->GetScaledBitmapEx() : null;
171 IsLazyScalingBitmap(const Tizen::Graphics::_BitmapImpl& bitmap)
173 const _BitmapImplHack* pBitmapImplHack = static_cast <const _BitmapImplHack*>(&bitmap);
175 return (pBitmapImplHack) ? pBitmapImplHack->IsLazyScalingBitmap() : false;
179 IsLazyScalingBitmap(const Tizen::Graphics::_BitmapImpl& bitmap, Tizen::Graphics::Dimension& virSize,
180 Tizen::Graphics::Dimension& phySize)
182 const _BitmapImplHack* pBitmapImplHack = static_cast <const _BitmapImplHack*>(&bitmap);
184 return (pBitmapImplHack) ? pBitmapImplHack->IsLazyScalingBitmap(virSize, phySize) : false;
187 }} // Tizen::Graphics
189 namespace Tizen { namespace Graphics
193 GetBitmapEx(const Tizen::Graphics::Bitmap& bitmap)
195 return GetBitmapEx(*_BitmapImpl::GetInstance(bitmap));
199 GetScaledBitmapEx(const Tizen::Graphics::Bitmap& bitmap)
201 return GetScaledBitmapEx(*_BitmapImpl::GetInstance(bitmap));
205 IsLazyScalingBitmap(const Tizen::Graphics::Bitmap& bitmap)
207 return IsLazyScalingBitmap(*_BitmapImpl::GetInstance(bitmap));
211 IsLazyScalingBitmap(const Tizen::Graphics::Bitmap& bitmap, Tizen::Graphics::Dimension& virSize, Tizen::Graphics::Dimension& phySize)
213 return IsLazyScalingBitmap(*_BitmapImpl::GetInstance(bitmap), virSize, phySize);
216 }} // Tizen::Graphics
218 #endif // _FGRP_INTERNAL_BITMAPUTIL_H_