-#ifndef __DALI_INTEGRATION_BITMAP_H__
-#define __DALI_INTEGRATION_BITMAP_H__
+#ifndef DALI_INTEGRATION_BITMAP_H
+#define DALI_INTEGRATION_BITMAP_H
/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* @param[out] pixelDataType pixel data type (eg. GL_UNSIGNED_BYTE)
* @param[out] internalFormat pixel internal format (eg. GL_RGBA)
*/
-DALI_IMPORT_API void ConvertToGlFormat(Pixel::Format pixelformat, unsigned& pixelDataType, unsigned& internalFormat);
+DALI_CORE_API void ConvertToGlFormat(Pixel::Format pixelformat, unsigned& pixelDataType, unsigned& internalFormat);
class Bitmap;
typedef IntrusivePtr<Bitmap> BitmapPtr;
-typedef unsigned char PixelBuffer; ///< Pixel data buffers are composed of these
+typedef uint8_t PixelBuffer; ///< Pixel data buffers are composed of these
/**
* Bitmap class.
* An abstract container for image data.
- * \sa{BitmapPackedPixel BitmapCompressed BitmapExternal} for concrete
- * subclasses.
*/
-class DALI_IMPORT_API Bitmap : public Dali::RefObject
+class DALI_CORE_API Bitmap : public Dali::RefObject
{
protected:
* @param[in] height Image height in pixels
*/
void Initialize(Pixel::Format pixelFormat,
- unsigned int width,
- unsigned int height);
+ uint32_t width,
+ uint32_t height);
public:
BITMAP_COMPRESSED
};
+ enum ReleaseFunction
+ {
+ FREE, ///< Use free function to release the buffer
+ DELETE_ARRAY, ///< Use delete[] operator to release the buffer
+ };
+
/**
* Create a new instance of a Bitmap with the required profile.
* @return Pointer to created Bitmap subclass. Clients should immediately
* Get the width of the image
* @return The width of the image
*/
- unsigned int GetImageWidth() const
+ uint32_t GetImageWidth() const
{
return mImageWidth;
}
* Get the height of the image
* @return The height of the image
*/
- unsigned int GetImageHeight() const
+ uint32_t GetImageHeight() const
{
return mImageHeight;
}
}
/**
+ * Get the pixel buffer if it's present and take over the ownership.
+ * @note With this function called, the bitmap loses the ownership and is no longer responsible for the release of pixel buffer.
+ * @return The raw pointer pointing to the pixel buffer
+ */
+ PixelBuffer* GetBufferOwnership();
+
+ /**
* Get the pixel buffer size in bytes
* @return The buffer size in bytes.
* @sa ReserveBuffer GetBuffer
*/
- virtual size_t GetBufferSize() const = 0;
+ virtual uint32_t GetBufferSize() const = 0;
/**
* Queries if the bitmap has an alpha channel
return !(HasAlphaChannel() && mAlphaChannelUsed);
}
+ /**
+ * Returns which release function has to be called to release the data in the bitmap
+ * @return FREE if memory has been allocated with malloc DELETE_ARRAY if memory has been allocated with new
+ */
+ virtual ReleaseFunction GetReleaseFunction() = 0;
+
/**@}*/ ///< End of generic features
* @return pixel buffer pointer
*/
virtual PixelBuffer* ReserveBuffer(Pixel::Format pixelFormat,
- unsigned int width,
- unsigned int height,
- unsigned int bufferWidth = 0,
- unsigned int bufferHeight = 0) = 0;
+ uint32_t width,
+ uint32_t height,
+ uint32_t bufferWidth = 0,
+ uint32_t bufferHeight = 0) = 0;
/**
* Assign a pixel buffer. Any previously allocated pixel buffer is deleted.
*/
virtual void AssignBuffer(Pixel::Format pixelFormat,
PixelBuffer* buffer,
- std::size_t bufferSize,
- unsigned int width,
- unsigned int height,
- unsigned int bufferWidth = 0,
- unsigned int bufferHeight = 0) = 0;
+ uint32_t bufferSize,
+ uint32_t width,
+ uint32_t height,
+ uint32_t bufferWidth = 0,
+ uint32_t bufferHeight = 0) = 0;
/**
* Get the width of the buffer (stride)
* @return The width of the buffer in pixels
*/
- virtual unsigned int GetBufferWidth() const = 0;
+ virtual uint32_t GetBufferWidth() const = 0;
/**
* Get the height of the buffer
* @return The height of the buffer in pixels
*/
- virtual unsigned int GetBufferHeight() const = 0;
+ virtual uint32_t GetBufferHeight() const = 0;
/**
* Get the pixel buffer stride.
* @return The buffer stride (in bytes) if this is bitmap of non-compressed
* packed pixels for which a stride is meaningful or 0 otherwise.
*/
- virtual unsigned int GetBufferStride() const = 0;
+ virtual uint32_t GetBufferStride() const = 0;
/**
* Check the bitmap data and test whether it has any transparent pixels.
* This property can then be tested for with IsFullyOpaque().
*/
virtual void TestForTransparency() = 0;
+
+ protected:
+
+ /**
+ * Virtual destructor, no deletion through this interface
+ */
+ virtual ~PackedPixelsProfile() {}
};
/**
virtual PixelBuffer* ReserveBufferOfSize( Pixel::Format pixelFormat,
const unsigned width,
const unsigned height,
- const size_t numBytes ) = 0;
+ const uint32_t numBytes ) = 0;
+ protected:
+
+ /**
+ * Virtual destructor, no deletion through this interface
+ */
+ virtual ~CompressedProfile() {}
};
virtual const CompressedProfile* GetCompressedProfile() const { return 0; }
*/
void DeletePixelBuffer();
+protected:
+
/**
* A reference counted object may only be deleted by calling Unreference()
*/
protected:
- unsigned int mImageWidth; ///< Image width in pixels
- unsigned int mImageHeight; ///< Image height in pixels
+ uint32_t mImageWidth; ///< Image width in pixels
+ uint32_t mImageHeight; ///< Image height in pixels
Pixel::Format mPixelFormat; ///< Pixel format
bool mHasAlphaChannel; ///< Whether the image has an alpha channel
bool mAlphaChannelUsed; ///< Whether the alpha channel is used in case the image owns one.
} // namespace Dali
-#endif // __DALI_INTEGRATION_BITMAP_H__
+#endif // DALI_INTEGRATION_BITMAP_H