#define DALI_TOOLKIT_INTERNAL_IMAGE_CACHE_H
/*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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.
{
namespace Internal
{
-class ImageCache : public TextureManager::LifecycleObserver
+class ImageCache
{
public:
/**
* @brief Informs observer when the next texture set is ready to display
* @param[in] textureSet The ready texture set
* @param[in] interval interval(ms) for the frame
+ * @param[in] preMultiplied whether the texture is premultied alpha or not.
*/
- virtual void FrameReady(TextureSet textureSet, uint32_t interval) = 0;
+ virtual void FrameReady(TextureSet textureSet, uint32_t interval, bool preMultiplied) = 0;
};
struct UrlStore
{
TextureManager::TextureId mTextureId = TextureManager::INVALID_TEXTURE_ID;
- std::string mUrl;
+ VisualUrl mUrl;
};
/**
public:
/**
* @brief Constructor.
- * @param[in] textureManager The texture manager
- * @param[in] urlList List of urls to cache
- * @param[in] observer FrameReady observer
- * @param[in] maskingData Masking data to be applied.
- * @param[in] batchSize The size of a batch to load
- * @param[in] interval Time interval(ms) between each frame
+ * @param[in] textureManager The texture manager
+ * @param[in] size The width and height to fit the loaded image to.
+ * @param[in] fittingMode The FittingMode of the resource to load
+ * @param[in] samplingMode The SamplingMode of the resource to load
+ * @param[in] observer FrameReady observer
+ * @param[in] maskingData Masking data to be applied.
+ * @param[in] batchSize The size of a batch to load
+ * @param[in] interval Time interval(ms) between each frame
+ * @param[in] preMultiplyOnLoad The flag if image's color should be multiplied by it's alpha
*
* This will start loading textures immediately, according to the
* batch and cache sizes. The cache is as large as the number of urls.
*/
ImageCache(TextureManager& textureManager,
+ ImageDimensions size,
+ Dali::FittingMode::Type fittingMode,
+ Dali::SamplingMode::Type samplingMode,
TextureManager::MaskingDataPointer& maskingData,
ImageCache::FrameReadyObserver& observer,
uint32_t batchSize,
- uint32_t interval);
+ uint32_t interval,
+ bool preMultiplyOnLoad);
virtual ~ImageCache();
virtual void SetInterval(uint32_t interval);
private:
- /**
- * @brief Called before the texture manager is destroyed.
- */
- void TextureManagerDestroyed() final;
-
void AllocateMaskData();
protected:
TextureManager& mTextureManager;
FrameReadyObserver& mObserver;
TextureManager::MaskingDataPointer& mMaskingData;
+ Dali::ImageDimensions mDesiredSize;
+ Dali::FittingMode::Type mFittingMode : 3;
+ Dali::SamplingMode::Type mSamplingMode : 4;
uint32_t mBatchSize;
uint32_t mInterval;
TextureManager::LoadState mLoadState;
bool mRequestingLoad : 1;
- bool mTextureManagerAlive : 1;
+ bool mPreMultiplyOnLoad : 1;
};
} // namespace Internal