1 #ifndef __DALI_NATIVE_BITMAP_BUFFER_H__
2 #define __DALI_NATIVE_BITMAP_BUFFER_H__
5 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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.
22 #include <dali/public-api/images/native-image-interface.h>
23 #include <dali/public-api/images/pixel.h>
24 #include <dali/integration-api/gl-abstraction.h>
25 #include <dali/integration-api/lockless-buffer.h>
26 #include <dali/public-api/common/dali-vector.h>
29 #include <adaptor-impl.h>
40 class NativeBitmapBuffer;
41 typedef IntrusivePtr<NativeBitmapBuffer> NativeBitmapBufferPtr;
44 * A Bitmap-based implementation of the NativeImage interface.
46 class NativeBitmapBuffer : public NativeImageInterface
52 * @param adaptor Adaptor used
53 * @param width width of image
54 * @param height height of image
55 * @param pixelFormat pixel format for image
57 NativeBitmapBuffer( Adaptor* adaptor, unsigned int width, unsigned int height, Pixel::Format pixelFormat );
62 virtual ~NativeBitmapBuffer();
65 * Write to buffer. Does not block.
66 * @param[in] src data source
67 * @param[in] size size of data in bytes
68 * @return true if successful, false if currently reading from buffer in render thread
70 void Write( const unsigned char* src, size_t size );
74 * @copydoc Dali::NativeImageInterface::GlExtensionCreate()
76 virtual bool GlExtensionCreate();
79 * @copydoc Dali::NativeImageInterface::GlExtensionDestroy()
81 virtual void GlExtensionDestroy();
84 * @copydoc Dali::NativeImageInterface::TargetTexture()
86 virtual unsigned int TargetTexture();
89 * @copydoc Dali::NativeImageInterface::PrepareTexture()
91 virtual void PrepareTexture();
94 * @copydoc Dali::NativeImageInterface::GetWidth()
96 virtual unsigned int GetWidth() const;
99 * @copydoc Dali::NativeImageInterface::GetHeight()
101 virtual unsigned int GetHeight() const;
104 * @copydoc Dali::NativeImageInterface::RequiresBlending()
106 virtual bool RequiresBlending() const;
109 NativeBitmapBuffer( const NativeBitmapBuffer& ); ///< not defined
110 NativeBitmapBuffer& operator =( const NativeBitmapBuffer& ); ///< not defined
111 NativeBitmapBuffer(); ///< not defined
114 Integration::GlAbstraction* mGlAbstraction; ///< GlAbstraction used
116 Integration::LocklessBuffer* mBuffer; ///< bitmap data double buffered
117 unsigned int mWidth; ///< Image width
118 unsigned int mHeight; ///< Image height
119 Pixel::Format mPixelFormat; ///< Image pixelformat
120 const unsigned char* mLastReadBuffer; ///< last buffer that was read
123 } // namespace Adaptor
125 } // namespace Internal
129 #endif // __DALI_NATIVE_BITMAP_BUFFER_H__