/*
- * Copyright (c) 2021 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.
*/
// CLASS HEADER
-#include <dali-toolkit/devel-api/image-loader/texture-manager.h>
#include <dali-toolkit/internal/image-loader/image-url-impl.h>
+// INTERNAL INCLUDES
+#include <dali-toolkit/devel-api/image-loader/texture-manager.h>
+#include <dali-toolkit/internal/texture-manager/texture-manager-impl.h>
+#include <dali-toolkit/internal/visuals/visual-factory-impl.h>
+#include <dali-toolkit/internal/visuals/visual-url.h>
+
namespace Dali
{
namespace Toolkit
namespace Internal
{
ImageUrl::ImageUrl(Texture& texture)
-: mUrl("")
{
mUrl = Dali::Toolkit::TextureManager::AddTexture(texture);
}
+ImageUrl::ImageUrl(const EncodedImageBuffer& encodedImageBuffer)
+: mUrl("")
+{
+ auto visualFactory = Dali::Toolkit::VisualFactory::Get();
+ if(visualFactory)
+ {
+ auto& textureManager = GetImplementation(visualFactory).GetTextureManager();
+ mUrl = textureManager.AddEncodedImageBuffer(encodedImageBuffer);
+ }
+}
+
ImageUrl::~ImageUrl()
{
- Dali::Toolkit::TextureManager::RemoveTexture(mUrl);
+ if(mUrl.size() > 0)
+ {
+ auto visualFactory = Dali::Toolkit::VisualFactory::Get();
+ if(visualFactory)
+ {
+ auto& textureManager = GetImplementation(visualFactory).GetTextureManager();
+ if(VisualUrl::TEXTURE == VisualUrl::GetProtocolType(mUrl))
+ {
+ textureManager.RemoveExternalTexture(mUrl);
+ }
+ else if(VisualUrl::BUFFER == VisualUrl::GetProtocolType(mUrl))
+ {
+ textureManager.RemoveEncodedImageBuffer(mUrl);
+ }
+ }
+ }
}
ImageUrlPtr ImageUrl::New(Texture& texture)
return imageUrlPtr;
}
+ImageUrlPtr ImageUrl::New(const EncodedImageBuffer& encodedImageBuffer)
+{
+ ImageUrlPtr imageUrlPtr = new ImageUrl(encodedImageBuffer);
+ return imageUrlPtr;
+}
+
const std::string& ImageUrl::GetUrl() const
{
return mUrl;