#include <deque>
// INTERNAL INCLUDES
-#include <dali-toolkit/internal/image-loader/async-image-loader-impl.h>
+#include <dali-toolkit/internal/image-loader/loading-task.h>
#include <dali-toolkit/internal/texture-manager/texture-manager-impl.h>
namespace Dali
*/
class TextureAsyncLoadingHelper : public ConnectionTracker
{
- /**
- * Struct to hold information about a requested Async load.
- * This is used to look up a TextureManager::TextureId from the returned AsyncLoad Id.
- */
- struct AsyncLoadingInfo
- {
- AsyncLoadingInfo(TextureManager::TextureId textureId)
- : textureId(textureId),
- loadId(0)
- {
- }
-
- TextureManager::TextureId textureId; ///< The external Texture Id assigned to this load
- std::uint32_t loadId; ///< The load Id used by the async loader to reference this load
- };
-
public:
/**
* @brief Create an TextureAsyncLoadingHelper.
* @param[in] textureId TextureId to reference the texture that will be loaded
* @param[in] animatedImageLoading The AnimatedImageLoading to load animated image
* @param[in] frameIndex The frame index of a frame to be loaded frame
+ * @param[in] desiredSize The size the image is likely to appear at.
+ * This can be set to 0,0 for automatic
+ * @param[in] fittingMode The FittingMode to use
+ * @param[in] samplingMode The SamplingMode to use
* @param[in] preMultiplyOnLoad if the image's color should be multiplied by it's alpha. Set to OFF if there is no alpha or if the image need to be applied alpha mask.
*/
void LoadAnimatedImage(const TextureManager::TextureId& textureId,
Dali::AnimatedImageLoading animatedImageLoading,
const std::uint32_t& frameIndex,
+ const Dali::ImageDimensions& desiredSize,
+ const Dali::FittingMode::Type& fittingMode,
+ const Dali::SamplingMode::Type& samplingMode,
const DevelAsyncImageLoader::PreMultiplyOnLoad& preMultiplyOnLoad);
/**
* @param[in] orientationCorrection Whether to use image metadata to rotate or flip the image,
* e.g., from portrait to landscape
* @param[in] preMultiplyOnLoad if the image's color should be multiplied by it's alpha. Set to OFF if there is no alpha or if the image need to be applied alpha mask.
+ * @param[in] loadYuvPlanes True if the image should be loaded as yuv planes
*/
void Load(const TextureManager::TextureId& textureId,
const VisualUrl& url,
const Dali::FittingMode::Type& fittingMode,
const Dali::SamplingMode::Type& samplingMode,
const bool& orientationCorrection,
- const DevelAsyncImageLoader::PreMultiplyOnLoad& preMultiplyOnLoad);
+ const DevelAsyncImageLoader::PreMultiplyOnLoad& preMultiplyOnLoad,
+ const bool& loadYuvPlanes);
/**
* @brief Apply mask
TextureAsyncLoadingHelper(const TextureAsyncLoadingHelper&) = delete;
TextureAsyncLoadingHelper& operator=(const TextureAsyncLoadingHelper&) = delete;
- TextureAsyncLoadingHelper(TextureAsyncLoadingHelper&& rhs);
- TextureAsyncLoadingHelper& operator=(TextureAsyncLoadingHelper&& rhs) = delete;
-
-private: // Private typedefs:
- typedef std::deque<AsyncLoadingInfo> AsyncLoadingInfoContainerType; ///< The container type used to manage Asynchronous loads in progress
-
private:
/**
- * @brief Main constructor that used by all other constructors
- */
- TextureAsyncLoadingHelper(Toolkit::AsyncImageLoader loader,
- TextureManager& textureManager,
- AsyncLoadingInfoContainerType&& loadingInfoContainer);
-
- /**
- * @brief Callback to be called when texture loading is complete, it passes the pixel buffer on to texture manager.
- * @param[in] id Loader id
- * @param[in] pixelBuffer Image data
+ * @brief Callback to be called when texture loading is complete, it passes the pixel buffer list on to texture manager.
+ * @param[in] task LoadingTaskPtr
*/
- void AsyncLoadComplete(std::uint32_t id, Devel::PixelBuffer pixelBuffer);
+ void AsyncLoadComplete(LoadingTaskPtr task);
private: // Member Variables:
- Toolkit::AsyncImageLoader mLoader;
- TextureManager& mTextureManager;
- AsyncLoadingInfoContainerType mLoadingInfoContainer;
+ TextureManager& mTextureManager;
+ uint32_t mLoadTaskId;
};
} // namespace Internal