X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fnpatch-loader.h;h=50c24d3e6fd6c6ed700a8e39dbd3e70e5744fe03;hb=80ffb529157a623cc2a9d8e5d26dab98b62ec07e;hp=58bd73fc9d54def2e88c58964e88962b1dd9ebc7;hpb=a645dd0d6b1199282c3950b9787b813ff1c28631;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/npatch-loader.h b/dali-toolkit/internal/visuals/npatch-loader.h index 58bd73f..50c24d3 100644 --- a/dali-toolkit/internal/visuals/npatch-loader.h +++ b/dali-toolkit/internal/visuals/npatch-loader.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_NPATCH_LOADER_H /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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. @@ -18,24 +18,22 @@ */ // EXTERNAL INCLUDES -#include -#include -#include #include +#include +#include +#include // INTERNAL INCLUDES -#include #include +#include +#include namespace Dali { - namespace Toolkit { - namespace Internal { - /** * The manager for loading Npatch textures. * It caches them internally for better performance; i.e. to avoid loading and @@ -48,37 +46,6 @@ namespace Internal class NPatchLoader { public: - - enum - { - UNINITIALIZED_ID = 0 ///< uninitialised id, use to initialize ids - }; - - struct Data - { - Data() - : url(), - textureSet(), - hash( 0 ), - croppedWidth( 0 ), - croppedHeight( 0 ), - border( 0, 0, 0, 0 ), - loadCompleted( false ) - {} - - 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 - }; - -public: - /** * Constructor */ @@ -101,26 +68,41 @@ public: * @param [in] synchronousLoading True if the image will be loaded in synchronous time. * @return id of the texture. */ - std::size_t Load( TextureManager& textureManager, TextureUploadObserver* textureObserver, const std::string& url, const Rect< int >& border, bool& preMultiplyOnLoad, bool synchronousLoading ); + std::size_t Load(TextureManager& textureManager, TextureUploadObserver* textureObserver, const std::string& url, const Rect& border, bool& preMultiplyOnLoad, bool synchronousLoading); /** * @brief Set loaded PixelBuffer and its information * * @param [in] id cache data id * @param [in] pixelBuffer of 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(std::size_t id, Devel::PixelBuffer& pixelBuffer, bool preMultiplied); /** * @brief Retrieve N patch data matching to an id * @param [in] id of data - * @param [out] data const pointer to the data + * @param [out] data const pointer to the NPatchData * @return true if data matching to id was really found */ - bool GetNPatchData( std::size_t id, const Data*& data ); + bool GetNPatchData(const NPatchData::NPatchDataId id, const NPatchData*& data); -protected: + /** + * @brief Remove a texture matching id. + * Erase the observer from the observer list of cache. + * If the observer list is empty, the textureSet will be reset. + * + * @param [in] id cache data id + * @param [in] textureObserver The NPatchVisual that requested loading. + */ + void Remove(std::size_t id, TextureUploadObserver* textureObserver); +private: + NPatchData::NPatchDataId GenerateUniqueNPatchDataId(); + + int32_t GetCacheIndexFromId(const NPatchData::NPatchDataId id); + +protected: /** * Undefined copy constructor. */ @@ -132,12 +114,11 @@ protected: NPatchLoader& operator=(const NPatchLoader& rhs); private: - - OwnerContainer< Data* > mCache; - + NPatchData::NPatchDataId mCurrentNPatchDataId; + OwnerContainer mCache; }; -} // name Internal +} // namespace Internal } // namespace Toolkit