// EXTERNAL INCLUDES
#include <string>
#include <dali/public-api/rendering/texture-set.h>
-#include <dali/public-api/math/uint-16-pair.h>
#include <dali/devel-api/common/owner-container.h>
#include <dali/devel-api/adaptor-framework/pixel-buffer.h>
-// INTERNAL HEADERS
+// INTERNAL INCLUDES
#include <dali-toolkit/internal/visuals/texture-manager-impl.h>
+#include <dali-toolkit/devel-api/utility/npatch-utilities.h>
namespace Dali
{
namespace Internal
{
-namespace NPatchBuffer
-{
-
-void GetRedOffsetAndMask( Dali::Pixel::Format pixelFormat, int& byteOffset, int& bitMask );
-
-} // namespace NPatchBuffer
-
/**
* The manager for loading Npatch textures.
* It caches them internally for better performance; i.e. to avoid loading and
{
public:
- typedef Dali::Vector< Uint16Pair > StretchRanges;
-
enum
{
UNINITIALIZED_ID = 0 ///< uninitialised id, use to initialize ids
struct Data
{
Data()
- : loadCompleted( false )
+ : url(),
+ textureSet(),
+ hash( 0 ),
+ croppedWidth( 0 ),
+ croppedHeight( 0 ),
+ border( 0, 0, 0, 0 ),
+ loadCompleted( false ),
+ renderingMap{ nullptr }
{}
- std::string url; ///< Url of the N-Patch
- TextureSet textureSet; ///< Texture containing the cropped image
- StretchRanges stretchPixelsX; ///< X stretch pixels
- StretchRanges stretchPixelsY; ///< Y stretch pixels
- std::size_t hash; ///< Hash code for the Url
- uint32_t croppedWidth; ///< Width of the cropped middle part of N-patch
- uint32_t croppedHeight; ///< Height of the cropped middle part of N-patch
- Rect< int > border; ///< The size of the border
- bool loadCompleted; ///< True if the data loading is completed
+ ~Data();
+
+ using ObserverListType = Dali::Vector< TextureUploadObserver* >;
+
+ ObserverListType observerList; ///< Container used to store all observer clients of this Texture
+ std::string url; ///< Url of the N-Patch
+ TextureSet textureSet; ///< Texture containing the cropped image
+ NPatchUtility::StretchRanges stretchPixelsX; ///< X stretch pixels
+ NPatchUtility::StretchRanges stretchPixelsY; ///< Y stretch pixels
+ std::size_t hash; ///< Hash code for the Url
+ uint32_t croppedWidth; ///< Width of the cropped middle part of N-patch
+ uint32_t croppedHeight; ///< Height of the cropped middle part of N-patch
+ Rect< int > border; ///< The size of the border
+ bool loadCompleted; ///< True if the data loading is completed
+ void* renderingMap; ///< NPatch rendering data
};
public:
/**
* @brief Set loaded PixelBuffer and its information
*
+ * @param [in] loadSuccess True if the texture load was successful (i.e. the resource is available). If false, then the resource failed to load.
* @param [in] id cache data id
* @param [in] pixelBuffer of loaded image
+ * @param [in] url The url address of the loaded image.
+ * @param [in] preMultiplied True if the image had pre-multiplied alpha applied
*/
- void SetNPatchData( std::size_t id, Devel::PixelBuffer& pixelBuffer );
+ void SetNPatchData( bool loadSuccess, std::size_t id, Devel::PixelBuffer& pixelBuffer, const Internal::VisualUrl& url, bool preMultiplied );
/**
* @brief Retrieve N patch data matching to an id