X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fanimated-image%2Frolling-animated-image-cache.h;h=08aec528dfd6b2054230f4ae0467b5869e75169e;hb=f6004b92a7b8ea0feed9c468943a3c369da4501e;hp=3a24eb6458f9d7c91fb64bf3dbf3a8dd6da24ef6;hpb=eccbcc0637034cc96bc6d392b297a9d99e86c442;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/animated-image/rolling-animated-image-cache.h b/dali-toolkit/internal/visuals/animated-image/rolling-animated-image-cache.h index 3a24eb6..08aec52 100644 --- a/dali-toolkit/internal/visuals/animated-image/rolling-animated-image-cache.h +++ b/dali-toolkit/internal/visuals/animated-image/rolling-animated-image-cache.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_INTERNAL_ROLLING_ANIMATED_IMAGE_CACHE_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. @@ -18,10 +18,10 @@ */ // EXTERNAL INCLUDES +#include +#include #include #include -#include -#include namespace Dali { @@ -29,7 +29,6 @@ namespace Toolkit { namespace Internal { - /** * Class to manage a rolling cache of Animated images, where the cache size * is smaller than the total number of images. @@ -53,13 +52,13 @@ public: * This will start loading textures immediately, according to the * batch and cache sizes. */ - RollingAnimatedImageCache( TextureManager& textureManager, - AnimatedImageLoading& animatedImageLoader, - uint32_t frameCount, - ImageCache::FrameReadyObserver& observer, - uint16_t cacheSize, - uint16_t batchSize, - bool isSynchronousLoading ); + RollingAnimatedImageCache(TextureManager& textureManager, + AnimatedImageLoading& animatedImageLoader, + uint32_t frameCount, + ImageCache::FrameReadyObserver& observer, + uint16_t cacheSize, + uint16_t batchSize, + bool isSynchronousLoading); /** * Destructor @@ -70,7 +69,7 @@ public: * Get the Nth frame. If it's not ready, this will trigger the * sending of FrameReady() when the image becomes ready. */ - TextureSet Frame( uint32_t frameIndex ) override; + TextureSet Frame(uint32_t frameIndex) override; /** * Get the first frame. If it's not ready, this will trigger the @@ -79,9 +78,26 @@ public: TextureSet FirstFrame() override; /** + * Get the next frame. If it's not ready, this will trigger the + * sending of FrameReady() when the image becomes ready. + */ + TextureSet NextFrame() override; + + /** * Get the interval of Nth frame. */ - uint32_t GetFrameInterval( uint32_t frameIndex ) override; + uint32_t GetFrameInterval(uint32_t frameIndex) const override; + + /** + * Get the current rendered frame index. + * If there isn't any loaded frame, returns -1. + */ + int32_t GetCurrentFrameIndex() const override; + + /** + * Get total frame count of the animated image file. + */ + int32_t GetTotalFrameCount() const override; private: /** @@ -92,7 +108,7 @@ private: /** * Request to Load a frame */ - void RequestFrameLoading( uint32_t frameIndex ); + void RequestFrameLoading(uint32_t frameIndex); /** * Load the next batch of images @@ -102,7 +118,7 @@ private: /** * Find the matching image frame, and set it to ready */ - void SetImageFrameReady( TextureManager::TextureId textureId ); + void SetImageFrameReady(TextureManager::TextureId textureId); /** * Get the texture set of the front frame. @@ -113,28 +129,16 @@ private: /** * Get the texture id of the given index */ - TextureManager::TextureId GetCachedTextureId( int index ) const; + TextureManager::TextureId GetCachedTextureId(int index) const; /** * Check if the front frame has become ready - if so, inform observer * @param[in] wasReady Readiness before call. */ - void CheckFrontFrame( bool wasReady ); + void CheckFrontFrame(bool wasReady); protected: - void UploadComplete( - bool loadSuccess, - int32_t textureId, - TextureSet textureSet, - bool useAtlasing, - const Vector4& atlasRect, - bool preMultiplied ) override; - - void LoadComplete( - bool loadSuccess, - Devel::PixelBuffer pixelBuffer, - const VisualUrl& url, - bool preMultiplied ) override; + void LoadComplete(bool loadSuccess, TextureInformation textureInformation) override; private: /** @@ -143,18 +147,19 @@ private: struct ImageFrame { unsigned int mFrameNumber = 0u; - bool mReady = false; + bool mReady = false; }; - Dali::AnimatedImageLoading mAnimatedImageLoading; - uint32_t mFrameCount; - int mFrameIndex; - std::vector mImageUrls; - std::vector mIntervals; - std::vector mLoadWaitingQueue; - CircularQueue mQueue; - bool mIsSynchronousLoading; - bool mOnLoading; + Dali::AnimatedImageLoading mAnimatedImageLoading; + uint32_t mFrameCount; + int mFrameIndex; + int mCacheSize; + std::vector mImageUrls; + std::vector mIntervals; + std::vector mLoadWaitingQueue; + CircularQueue mQueue; + bool mIsSynchronousLoading; + bool mOnLoading; }; } // namespace Internal