X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fnpatch-loader.h;h=b2b4a7c58aca758cb9dbcd7362fb522d23351535;hp=6bdc2f95128f2a907adcf4657918181cd45913ee;hb=e9ce8b35ce64531e5c6c6214527a5bf9b9747a36;hpb=ef35ee0ea4e6ffba6f33a9d7e0cb42d90a2812e0 diff --git a/dali-toolkit/internal/visuals/npatch-loader.h b/dali-toolkit/internal/visuals/npatch-loader.h index 6bdc2f9..b2b4a7c 100644 --- a/dali-toolkit/internal/visuals/npatch-loader.h +++ b/dali-toolkit/internal/visuals/npatch-loader.h @@ -20,12 +20,13 @@ // EXTERNAL INCLUDES #include #include -#include #include #include -// INTERNAL HEADERS +// INTERNAL INCLUDES +#include #include +#include namespace Dali { @@ -36,13 +37,6 @@ namespace Toolkit 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 @@ -56,38 +50,6 @@ class NPatchLoader { public: - typedef Dali::Vector< Uint16Pair > StretchRanges; - - 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 - 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 - }; - -public: - /** * Constructor */ @@ -117,16 +79,33 @@ public: * * @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 ); + + /** + * @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: @@ -142,8 +121,8 @@ protected: private: - OwnerContainer< Data* > mCache; - + NPatchData::NPatchDataId mCurrentNPatchDataId; + OwnerContainer< NPatchData* > mCache; }; } // name Internal