// EXTERNAL INCLUDES
#include <dali/public-api/common/intrusive-ptr.h>
#include <dali/public-api/object/base-object.h>
+#include <dali/public-api/signals/connection-tracker.h>
+#include <dali/devel-api/common/owner-container.h>
#include <dali/devel-api/images/atlas.h>
// INTERNAL INCLUDES
-#include <dali-toolkit/devel-api/image-atlas/image-atlas.h>
-#include <dali-toolkit/internal/image-atlas/atlas-packer.h>
-#include <dali-toolkit/internal/image-atlas/image-load-thread.h>
+#include <dali-toolkit/devel-api/image-loader/image-atlas.h>
+#include <dali-toolkit/devel-api/image-loader/async-image-loader.h>
+#include <dali-toolkit/internal/image-loader/atlas-packer.h>
namespace Dali
{
namespace Internal
{
-class ImageAtlas : public BaseObject
+class ImageAtlas : public BaseObject, public ConnectionTracker
{
public:
/**
* @copydoc Toolkit::ImageAtlas::GetAtlas
*/
- Image GetAtlas();
+ Texture GetAtlas();
+
+ /**
+ * @copydoc Toolkit::ImageAtlas::GetOccupancyRate
+ */
+ float GetOccupancyRate() const;
/**
* @copydoc Toolkit::ImageAtlas::SetBrokenImage
private:
/**
- * Upload the bitmap to atlas when the image is loaded in the worker thread.
+ * @copydoc PixelDataRequester::ProcessPixels
*/
- void UploadToAtlas();
+ void UploadToAtlas( unsigned int id, PixelData pixelData );
/**
* Upload broken image
*
* @param[in] area The pixel area for uploading.
*/
- void UploadBrokenImage( const Rect<SizeType>& area );
+ void UploadBrokenImage( const Rect<unsigned int>& area );
// Undefined
ImageAtlas( const ImageAtlas& imageAtlas);
private:
- Atlas mAtlas;
- AtlasPacker mPacker;
-
- LoadQueue mLoadQueue;
- CompleteQueue mCompleteQueue;
- ImageLoadThread mLoadingThread;
-
- std::string mBrokenImageUrl;
- ImageDimensions mBrokenImageSize;
- float mWidth;
- float mHeight;
- Pixel::Format mPixelFormat;
- bool mLoadingThreadStarted;
+ struct IdRectPair
+ {
+ IdRectPair( unsigned short loadTaskId,
+ unsigned int packPositionX,
+ unsigned int packPositionY,
+ unsigned int width,
+ unsigned int height )
+ : loadTaskId( loadTaskId ),
+ packRect( packPositionX, packPositionY, width, height )
+ {}
+
+ unsigned short loadTaskId;
+ Rect<unsigned int> packRect;
+ };
+
+ OwnerContainer<IdRectPair*> mIdRectContainer;
+
+ Texture mAtlas;
+ AtlasPacker mPacker;
+ Toolkit::AsyncImageLoader mAsyncLoader;
+ std::string mBrokenImageUrl;
+ ImageDimensions mBrokenImageSize;
+ float mWidth;
+ float mHeight;
+ Pixel::Format mPixelFormat;
};