X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fimage-loader%2Fimage-atlas-impl.h;h=4f735ef0a380669e53eacaaf99788e48087a835a;hb=78d26caf8723599166886a1fca571c2365f227bf;hp=34924d3327f2db07750e955cbe449cea27429233;hpb=41307f75478fd6c6fb5f9ae7e7de5036647f39b3;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/image-loader/image-atlas-impl.h b/dali-toolkit/internal/image-loader/image-atlas-impl.h index 34924d3..4f735ef 100644 --- a/dali-toolkit/internal/image-loader/image-atlas-impl.h +++ b/dali-toolkit/internal/image-loader/image-atlas-impl.h @@ -23,11 +23,12 @@ #include #include #include +#include // INTERNAL INCLUDES #include -#include #include +#include namespace Dali { @@ -80,7 +81,8 @@ public: const std::string& url, ImageDimensions size, FittingMode::Type fittingMode, - bool orientationCorrection); + bool orientationCorrection, + AtlasUploadObserver* atlasUploadObserver ); /** * @copydoc Toolkit::ImageAtlas::Upload( Vector4&, PixelData ) @@ -92,6 +94,11 @@ public: */ void Remove( const Vector4& textureRect ); + /** + * Resets the destroying observer pointer so that we know not to call methods of this object any more. + */ + void ObserverDestroyed( AtlasUploadObserver* observer ); + protected: /** @@ -104,7 +111,7 @@ private: /** * @copydoc PixelDataRequester::ProcessPixels */ - void UploadToAtlas( unsigned int id, PixelData pixelData ); + void UploadToAtlas( uint32_t id, PixelData pixelData ); /** * Upload broken image @@ -121,22 +128,29 @@ private: private: - struct IdRectPair + /** + * Each loading task( identified with an ID ) is associated with a rect region for packing the loaded pixel data into the atlas, + * and an AtlasUploadObserver whose UploadCompleted method should get executed once the sub texture is ready. + */ + struct LoadingTaskInfo { - IdRectPair( unsigned short loadTaskId, - unsigned int packPositionX, - unsigned int packPositionY, - unsigned int width, - unsigned int height ) + LoadingTaskInfo( unsigned short loadTaskId, + unsigned int packPositionX, + unsigned int packPositionY, + unsigned int width, + unsigned int height, + AtlasUploadObserver* observer ) : loadTaskId( loadTaskId ), - packRect( packPositionX, packPositionY, width, height ) + packRect( packPositionX, packPositionY, width, height ), + observer( observer ) {} unsigned short loadTaskId; Rect packRect; + AtlasUploadObserver* observer; }; - OwnerContainer mIdRectContainer; + OwnerContainer mLoadingTaskInfoContainer; Texture mAtlas; AtlasPacker mPacker; @@ -147,6 +161,7 @@ private: float mHeight; Pixel::Format mPixelFormat; + }; } // namespace Internal