Merge "Do not clear keyboard focus on touch when alwaysShowFocus is true." into devel...
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / visuals / image / image-visual.cpp
index b558cfd..ee0042a 100644 (file)
@@ -34,7 +34,7 @@
 #include <dali-toolkit/public-api/visuals/image-visual-properties.h>
 #include <dali-toolkit/devel-api/visuals/image-visual-properties-devel.h>
 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
-#include <dali-toolkit/internal/visuals/texture-manager.h>
+#include <dali-toolkit/internal/visuals/texture-manager-impl.h>
 #include <dali-toolkit/internal/visuals/visual-string-constants.h>
 #include <dali-toolkit/internal/visuals/visual-factory-impl.h>
 #include <dali-toolkit/internal/visuals/visual-factory-cache.h>
@@ -528,8 +528,20 @@ void ImageVisual::GetNaturalSize( Vector2& naturalSize )
     naturalSize.y = mDesiredSize.GetHeight();
     return;
   }
+  else if( mImpl->mRenderer ) // Check if we have a loaded image
+  {
+    auto textureSet = mImpl->mRenderer.GetTextures();
+
+    if( textureSet )
+    {
+      auto texture = textureSet.GetTexture(0);
+      naturalSize.x = texture.GetWidth();
+      naturalSize.y = texture.GetHeight();
+      return;
+    }
+  }
 
-  else if( mMaskingData != NULL && mMaskingData->mAlphaMaskUrl.IsValid() &&
+  if( mMaskingData != NULL && mMaskingData->mAlphaMaskUrl.IsValid() &&
            mMaskingData->mCropToMask )
   {
     ImageDimensions dimensions = Dali::GetClosestImageSize( mMaskingData->mAlphaMaskUrl.GetUrl() );
@@ -540,23 +552,26 @@ void ImageVisual::GetNaturalSize( Vector2& naturalSize )
     }
     return;
   }
-  else if( mImageUrl.IsValid() && mImageUrl.GetLocation() == VisualUrl::LOCAL )
+  else if( mImageUrl.IsValid() )
   {
-    ImageDimensions dimensions = Dali::GetClosestImageSize( mImageUrl.GetUrl() );
-
-    if( dimensions != ImageDimensions( 0, 0 ) )
-    {
-      naturalSize.x = dimensions.GetWidth();
-      naturalSize.y = dimensions.GetHeight();
-    }
-    else
+    if( mImageUrl.GetProtocolType() == VisualUrl::LOCAL )
     {
-      Image brokenImage = VisualFactoryCache::GetBrokenVisualImage();
+      ImageDimensions dimensions = Dali::GetClosestImageSize( mImageUrl.GetUrl() );
+
+      if( dimensions != ImageDimensions( 0, 0 ) )
+      {
+        naturalSize.x = dimensions.GetWidth();
+        naturalSize.y = dimensions.GetHeight();
+      }
+      else
+      {
+        Image brokenImage = VisualFactoryCache::GetBrokenVisualImage();
 
-      naturalSize.x = brokenImage.GetWidth();
-      naturalSize.y = brokenImage.GetWidth();
+        naturalSize.x = brokenImage.GetWidth();
+        naturalSize.y = brokenImage.GetWidth();
+      }
+      return;
     }
-    return;
   }
 
   naturalSize = Vector2::ZERO;
@@ -772,7 +787,7 @@ void ImageVisual::InitializeRenderer()
 {
   mImpl->mFlags &= ~Impl::IS_ATLASING_APPLIED;
 
-  if( ! mImpl->mCustomShader && mImageUrl.GetLocation() == VisualUrl::LOCAL )
+  if( ! mImpl->mCustomShader && mImageUrl.GetProtocolType() == VisualUrl::LOCAL )
   {
     bool defaultWrapMode = mWrapModeU <= WrapMode::CLAMP_TO_EDGE && mWrapModeV <= WrapMode::CLAMP_TO_EDGE;