#define DALI_TOOLKIT_IMAGE_ATLAS_MANAGER_H
/*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 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 <string>
#include <dali/public-api/common/vector-wrapper.h>
#include <dali/public-api/object/ref-object.h>
#include <dali/public-api/rendering/texture-set.h>
+#include <string>
// INTERNAL INCLUDES
#include <dali-toolkit/devel-api/image-loader/image-atlas.h>
+#include <dali-toolkit/internal/visuals/visual-url.h>
namespace Dali
{
-
namespace Toolkit
{
-
class AtlasUploadObserver;
namespace Internal
{
-
/**
* The manager for automatic image atlasing. Owned by VisualFactory
*/
class ImageAtlasManager : public RefObject
{
public:
- typedef std::vector< Toolkit::ImageAtlas > AtlasContainer;
- typedef std::vector< TextureSet > TextureSetContainer;
+ typedef std::vector<Toolkit::ImageAtlas> AtlasContainer;
+ typedef std::vector<TextureSet> TextureSetContainer;
public:
-
/**
* Construtor
*
ImageAtlasManager();
/**
+ * @brief Check whether the image of url could be Atlas or not.
+ *
+ * @param [in] url The URL of the resource image file to use.
+ * @param [in] size The width and height to fit the loaded image to.
+ * @return True if the image could be Atlas.
+ */
+ bool CheckAtlasAvailable(const VisualUrl& url, const ImageDimensions& size) const;
+
+ /**
* @brief Add an image to the atlas.
*
* @note To make the atlasing efficient, an valid size should be provided.
*
* @param [out] textureRect The texture area of the resource image in the atlas.
* @param [in] url The URL of the resource image file to use.
- * @param [in] size The width and height to fit the loaded image to.
+ * @param [in, out] size The width and height to fit the loaded image to.
* @param [in] fittingMode The method used to fit the shape of the image before loading to the shape defined by the size parameter.
* @param [in] orientationCorrection Reorient the image to respect any orientation metadata in its header.
* @param [in] atlasUploadObserver The object to observe the uploading state inside ImageAtlas.
* @return The texture set containing the image.
*/
- TextureSet Add( Vector4& textureRect,
- const std::string& url,
- ImageDimensions size = ImageDimensions(),
- FittingMode::Type fittingMode = FittingMode::DEFAULT,
- bool orientationCorrection = true,
- AtlasUploadObserver* atlasUploadObserver = NULL );
+ TextureSet Add(Vector4& textureRect,
+ const VisualUrl& url,
+ ImageDimensions& size,
+ FittingMode::Type fittingMode = FittingMode::DEFAULT,
+ bool orientationCorrection = true,
+ AtlasUploadObserver* atlasUploadObserver = NULL);
/**
* @brief Add a pixel buffer to the atlas
*
* @param [in] pixelData The pixel data.
* @return The texture set containing the image.
*/
- TextureSet Add( Vector4& textureRect,
- PixelData pixelData );
+ TextureSet Add(Vector4& textureRect,
+ PixelData pixelData);
/**
* Remove the image at the given rectangle from the texture set.
* @param [in] textureSet The texture set containing the atlas image.
* @param [in] textureRect The texture area to be removed.
*/
- void Remove( TextureSet textureSet, const Vector4& textureRect );
+ void Remove(TextureSet textureSet, const Vector4& textureRect);
/**
* @brief Set the broken image which is used to replace the image if loading fails.
*
* @param[in] brokenImageUrl The url of the broken image.
*/
- void SetBrokenImage( const std::string& brokenImageUrl );
+ void SetBrokenImage(const std::string& brokenImageUrl);
/**
* @brief Get shader
Shader GetShader() const;
private:
-
/**
* @brief Create a new atlas.
*
void CreateNewAtlas();
protected:
-
/**
* Destructor
*/
- virtual ~ImageAtlasManager();
+ ~ImageAtlasManager() override;
/**
* Undefined copy constructor.
*/
ImageAtlasManager& operator=(const ImageAtlasManager& rhs);
-
private:
-
- AtlasContainer mAtlasList;
+ AtlasContainer mAtlasList;
TextureSetContainer mTextureSetList;
- std::string mBrokenImageUrl;
-
+ std::string mBrokenImageUrl;
};
-} // name Internal
+} // namespace Internal
} // namespace Toolkit