[dali_2.1.3] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / visuals / image-atlas-manager.cpp
index 1f634e1..577a433 100644 (file)
@@ -21,6 +21,9 @@
 // EXTERNAL HEADER
 #include <dali/devel-api/adaptor-framework/image-loading.h>
 
+// INTERNAL HEADERS
+#include <dali-toolkit/internal/image-loader/image-atlas-impl.h>
+
 namespace Dali
 {
 namespace Toolkit
@@ -43,8 +46,25 @@ ImageAtlasManager::~ImageAtlasManager()
 {
 }
 
+bool ImageAtlasManager::CheckAtlasAvailable(const VisualUrl& url, const ImageDimensions& size) const
+{
+  ImageDimensions dimensions = size;
+  ImageDimensions zero;
+  if(size == zero)
+  {
+    dimensions = Dali::GetClosestImageSize(url.GetUrl());
+  }
+
+  // big image, atlasing is not applied
+  if(static_cast<uint32_t>(dimensions.GetWidth()) * static_cast<uint32_t>(dimensions.GetHeight()) > MAX_ITEM_AREA || dimensions.GetWidth() > DEFAULT_ATLAS_SIZE || dimensions.GetHeight() > DEFAULT_ATLAS_SIZE)
+  {
+    return false;
+  }
+  return true;
+}
+
 TextureSet ImageAtlasManager::Add(Vector4&             textureRect,
-                                  const std::string&   url,
+                                  const VisualUrl&     url,
                                   ImageDimensions&     size,
                                   FittingMode::Type    fittingMode,
                                   bool                 orientationCorrection,
@@ -54,7 +74,7 @@ TextureSet ImageAtlasManager::Add(Vector4&             textureRect,
   ImageDimensions zero;
   if(size == zero)
   {
-    dimensions = Dali::GetClosestImageSize(url);
+    dimensions = Dali::GetClosestImageSize(url.GetUrl());
   }
 
   // big image, atlasing is not applied
@@ -67,7 +87,7 @@ TextureSet ImageAtlasManager::Add(Vector4&             textureRect,
   unsigned int i = 0;
   for(AtlasContainer::iterator iter = mAtlasList.begin(); iter != mAtlasList.end(); ++iter)
   {
-    if((*iter).Upload(textureRect, url, size, fittingMode, orientationCorrection, atlasUploadObserver))
+    if(GetImplementation(*iter).Upload(textureRect, url, size, fittingMode, orientationCorrection, atlasUploadObserver))
     {
       return mTextureSetList[i];
     }
@@ -75,7 +95,7 @@ TextureSet ImageAtlasManager::Add(Vector4&             textureRect,
   }
 
   CreateNewAtlas();
-  mAtlasList.back().Upload(textureRect, url, size, fittingMode, orientationCorrection, atlasUploadObserver);
+  GetImplementation(mAtlasList.back()).Upload(textureRect, url, size, fittingMode, orientationCorrection, atlasUploadObserver);
   return mTextureSetList.back();
 }