(9 patch) Make ImageActor SetImage handle 9 patch images 22/20622/1
authorKingsley Stephens <k.stephens@partner.samsung.com>
Tue, 6 May 2014 12:55:26 +0000 (13:55 +0100)
committerFerran Sole <ferran.sole@samsung.com>
Fri, 9 May 2014 14:01:07 +0000 (15:01 +0100)
[Issue#]  N/A

[Problem] SetImage would not load the 9 patch image

[Cause] Only ImageActor New would load the 9 patch image

[Solution] Make SetImage load the 9 patch

Change-Id: I3b8dea9aefd520dedb253671345307fff536f309
Signed-off-by: Ferran Sole <ferran.sole@samsung.com>
dali/internal/event/actors/image-actor-impl.cpp

index 6cec2f2..63d8539 100644 (file)
@@ -169,16 +169,31 @@ void ImageActor::SetImage( Image* image )
 
   mLoadedConnection.DisconnectAll();
 
-  mImageNext.Set( image, OnStage() );
+  ImagePtr imagePtr( image );
 
-  if ( image == NULL )
+  // Automatically convert nine-patch images to cropped bitmap
+  NinePatchImage* ninePatchImage = NinePatchImage::GetNinePatchImage( image );
+  if( ninePatchImage )
+  {
+    imagePtr = ninePatchImage->CreateCroppedBitmapImage();
+  }
+
+  mImageNext.Set( imagePtr.Get(), OnStage() );
+
+  if( ninePatchImage )
+  {
+    SetStyle( Dali::ImageActor::STYLE_NINE_PATCH );
+    SetNinePatchBorder( ninePatchImage->GetStretchBorders(), true );
+  }
+
+  if ( !imagePtr )
   {
     mImageAttachment->SetImage( NULL );
   }
   else
   {
     // don't disconnect currently shown image until we made sure that the new one is loaded
-    OnImageSet( *image );
+    OnImageSet( *imagePtr.Get() );
   }
 }