#define DALI_TOOLKIT_NPATCH_DATA_H
/*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
*/
// EXTERNAL INCLUDES
-#include <string>
-#include <dali/public-api/rendering/texture-set.h>
#include <dali/devel-api/adaptor-framework/pixel-buffer.h>
+#include <dali/public-api/rendering/texture-set.h>
+#include <string>
// INTERNAL INCLUDES
-#include <dali-toolkit/internal/visuals/texture-manager-impl.h>
#include <dali-toolkit/devel-api/utility/npatch-utilities.h>
+#include <dali-toolkit/internal/texture-manager/texture-manager-impl.h>
+#include <dali-toolkit/internal/visuals/visual-url.h>
namespace Dali
{
-
namespace Toolkit
{
-
namespace Internal
{
-
class NPatchData : public Dali::Toolkit::TextureUploadObserver
{
public:
- typedef int32_t NPatchDataId; ///< The NPatchDataId type. This is used as a handle to refer to a particular Npatch Data.
+ typedef int32_t NPatchDataId; ///< The NPatchDataId type. This is used as a handle to refer to a particular Npatch Data.
static const int INVALID_NPATCH_DATA_ID = -1; ///< Used to represent a null TextureId or error
/**
*/
enum class LoadingState
{
- LOADING = 0, ///< NPatch is on loading.
- LOAD_COMPLETE, ///< NPatch loading is completed successfully.
- LOAD_FAILED ///< NPatch loading is failed.
+ NOT_STARTED = 0, ///< NPatch loading is not started yet.
+ LOADING, ///< NPatch is on loading.
+ LOAD_COMPLETE, ///< NPatch loading is completed successfully.
+ LOAD_FAILED ///< NPatch loading is failed.
};
public:
-
/**
* Constructor
*/
~NPatchData();
public:
-
/**
* @brief Set cache data id.
*
*
* @param [in] url NPatch image url
*/
- void SetUrl(const std::string url);
+ void SetUrl(const VisualUrl& url);
/**
* @brief Retrieve the image url.
*
* @return Return the image url.
*/
- std::string GetUrl() const;
+ VisualUrl GetUrl() const;
/**
* @brief Set texture set on the cache data
*/
LoadingState GetLoadingState() const;
-
/**
* @brief Retrieve NPatch rendering data.
*
* @param [in] pixelBuffer loaded pixel buffer.
* @param [in] preMultiplied whether the loaded image is premultiplied or not
*/
- void SetLoadedNPatchData( Devel::PixelBuffer& pixelBuffer, bool preMultiplied );
-
-private:
+ void SetLoadedNPatchData(Devel::PixelBuffer& pixelBuffer, bool preMultiplied);
/**
- * @copydoc TextureUploadObserver::UploadCompleted
+ * @brief Send LoadComplete notify with current setuped NPatchData
*
- * To avoid rendering garbage pixels, renderer should be added to actor after the resources are ready.
- * This callback is the place to add the renderer as it would be called once the loading is finished.
+ * @param [in] observer observer who will be got LoadComplete notify
+ * @param [in] loadSuccess whether the image load success or not.
*/
- void UploadComplete( bool loadSuccess, int32_t textureId, TextureSet textureSet, bool useAtlasing, const Vector4& atlasRect, bool preMultiplied ) override {}
+ void NotifyObserver(TextureUploadObserver* observer, const bool& loadSuccess);
+private:
/**
* @copydoc TextureUploadObserver::LoadComplete
*
* To avoid rendering garbage pixels, renderer should be added to actor after the resources are ready.
* This callback is the place to add the renderer as it would be called once the loading is finished.
*/
- void LoadComplete( bool loadSuccess, Devel::PixelBuffer pixelBuffer, const VisualUrl& url, bool preMultiplied ) override;
-
+ void LoadComplete(bool loadSuccess, TextureInformation textureInformation) override;
private:
-
using ObserverListType = Dali::Vector<TextureUploadObserver*>;
NPatchDataId mId;
ObserverListType mObserverList; ///< Container used to store all observer clients of this Texture
- std::string mUrl; ///< Url of the N-Patch
+ VisualUrl mUrl; ///< Url of the N-Patch
TextureSet mTextureSet; ///< Texture containing the cropped image
NPatchUtility::StretchRanges mStretchPixelsX; ///< X stretch pixels
NPatchUtility::StretchRanges mStretchPixelsY; ///< Y stretch pixels