#define DALI_TOOLKIT_INTERNAL_FIXED_IMAGE_CACHE_H
/*
- * Copyright (c) 2019 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 <dali-toolkit/internal/texture-manager/texture-manager-impl.h>
#include <dali-toolkit/internal/visuals/animated-image/image-cache.h>
-#include <dali-toolkit/internal/visuals/texture-manager-impl.h>
namespace Dali
{
{
namespace Internal
{
-
class FixedImageCache : public ImageCache, public TextureUploadObserver
{
public:
/**
* Constructor.
* @param[in] textureManager The texture manager
- * @param[in] urlList List of urls to cache
- * @param[in] observer FrameReady observer
- * @param[in] batchSize The size of a batch to load
+ * @param[in] urlList List of urls to cache
+ * @param[in] maskingData Masking data to be applied.
+ * @param[in] observer FrameReady observer
+ * @param[in] batchSize The size of a batch to load
+ * @param[in] interval Time interval between each frame
*
* This will start loading textures immediately, according to the
* batch and cache sizes. The cache is as large as the number of urls.
*/
- FixedImageCache( TextureManager& textureManager,
- UrlList& urlList,
- ImageCache::FrameReadyObserver& observer,
- unsigned int batchSize );
+ FixedImageCache(TextureManager& textureManager,
+ UrlList& urlList,
+ TextureManager::MaskingDataPointer& maskingData,
+ ImageCache::FrameReadyObserver& observer,
+ uint32_t batchSize,
+ uint32_t interval);
+
+ ~FixedImageCache() override;
- virtual ~FixedImageCache();
+ /**
+ * @copydoc Internal::ImageCache::Frame()
+ */
+ TextureSet Frame(uint32_t frameIndex) override;
/**
- * Get the first frame. If it's not ready, this will trigger the
- * sending of FrameReady() when the image becomes ready.
+ * @copydoc Internal::ImageCache::FirstFrame()
*/
TextureSet FirstFrame() override;
/**
- * Get the next frame. If it's not ready, this will trigger the
- * sending of FrameReady() when the image becomes ready.
- * This will trigger the loading of the next batch.
+ * @copydoc Internal::ImageCache::GetFrameInterval()
*/
- TextureSet NextFrame() override;
+ uint32_t GetFrameInterval(uint32_t frameIndex) const override;
+
+ /**
+ * @copydoc Internal::ImageCache::GetCurrentFrameIndex()
+ */
+ int32_t GetCurrentFrameIndex() const override;
+
+ /**
+ * @copydoc Internal::ImageCache::GetTotalFrameCount()
+ */
+ int32_t GetTotalFrameCount() const override;
+
+ /**
+ * @copydoc Internal::ImageCache::ClearCache()
+ */
+ void ClearCache() override;
private:
/**
+ * @brief Check whether the front frame is ready or not.
+ *
* @return true if the front frame is ready
*/
bool IsFrontReady() const;
/**
- * Load the next batch of images
+ * @brief Load the next batch of images
*/
void LoadBatch();
/**
- * Find the matching image frame, and set it to ready
- */
- void SetImageFrameReady( TextureManager::TextureId textureId );
-
- /**
- * Get the texture set of the front frame.
- * @return the texture set
+ * @brief Get the texture set of the front frame.
+ *
+ * @return the texture set of the front of Cache.
*/
TextureSet GetFrontTextureSet() const;
/**
- * Check if the front frame has become ready - if so, inform observer
+ * @brief 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;
+ /**
+ * @copydoc Toolkit::TextureUploadObserver::LoadComplete()
+ */
+ void LoadComplete(bool loadSuccess, TextureInformation textureInformation) override;
private:
- std::vector<UrlStore>& mImageUrls;
- std::vector<bool> mReadyFlags;
- unsigned int mFront;
+ std::vector<UrlStore>& mImageUrls;
+ std::vector<bool> mReadyFlags;
+ std::vector<TextureManager::LoadState> mLoadStates;
+ uint32_t mFront;
};
} //namespace Internal