#define DALI_TOOLKIT_INTERNAL_ROLLING_IMAGE_CACHE_H
/*
- * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 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.
* Class to manage a rolling cache of images, where the cache size
* is smaller than the total number of images.
*/
-class RollingImageCache : public ImageCache
+class RollingImageCache : public ImageCache, public TextureUploadObserver
{
public:
/**
virtual ~RollingImageCache();
/**
- * Get the first frame. If it's not ready, this will trigger the
+ * Get the Nth frame. If it's not ready, this will trigger the
* sending of FrameReady() when the image becomes ready.
*/
- virtual TextureSet FirstFrame();
+ TextureSet Frame( uint32_t frameIndex ) override;
/**
- * Get the next frame. If it's not ready, this will trigger the
+ * Get the first 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.
*/
- virtual TextureSet NextFrame();
+ TextureSet FirstFrame() override;
+
+ /**
+ * Get the interval of Nth frame.
+ */
+ uint32_t GetFrameInterval( uint32_t frameIndex ) override;
private:
/**
void CheckFrontFrame( bool wasReady );
protected:
- virtual void UploadComplete(
+ void UploadComplete(
bool loadSuccess,
int32_t textureId,
TextureSet textureSet,
bool useAtlasing,
- const Vector4& atlasRect );
+ const Vector4& atlasRect,
+ bool preMultiplied ) override;
+
+ void LoadComplete(
+ bool loadSuccess,
+ Devel::PixelBuffer pixelBuffer,
+ const VisualUrl& url,
+ bool preMultiplied ) override;
private:
/**
*/
struct ImageFrame
{
- unsigned int mUrlIndex;
- bool mReady;
+ unsigned int mUrlIndex = 0u;
+ bool mReady = false;
};
+ std::vector<UrlStore>& mImageUrls;
CircularQueue<ImageFrame> mQueue;
};