END_TEST;
}
+
+int UtcDaliImageViewSetImageTypeChangesP(void)
+{
+ ToolkitTestApplication application;
+
+ ImageView imageView = ImageView::New();
+
+
+ std::string url;
+ Property::Map map;
+
+ Property::Value value = imageView.GetProperty( imageView.GetPropertyIndex( "image" ) );
+ DALI_TEST_CHECK( ! value.Get( url ) ); // Value should be empty
+ DALI_TEST_CHECK( ! value.Get( map ) ); // Value should be empty
+
+ // Set a URL
+ imageView.SetImage( "TEST_URL" );
+ value = imageView.GetProperty( imageView.GetPropertyIndex( "image" ) );
+
+ DALI_TEST_CHECK( value.Get( url ) ); // Value should NOT be empty
+ DALI_TEST_CHECK( ! value.Get( map ) ); // Value should be empty
+
+ // Set an empty Image
+ imageView.SetImage( Image() );
+ value = imageView.GetProperty( imageView.GetPropertyIndex( "image" ) );
+
+ DALI_TEST_CHECK( ! value.Get( url ) ); // Value should be empty
+ DALI_TEST_CHECK( ! value.Get( map ) ); // Value should be empty
+
+ // Set an Image
+ ResourceImage image1 = ResourceImage::New( TEST_IMAGE_FILE_NAME );
+ imageView.SetImage( image1 );
+ value = imageView.GetProperty( imageView.GetPropertyIndex( "image" ) );
+
+ DALI_TEST_CHECK( ! value.Get( url ) ); // Value should be empty
+ DALI_TEST_CHECK( value.Get( map ) ); // Value should NOT be empty
+
+ // Set an empty URL
+ imageView.SetImage( "" );
+ value = imageView.GetProperty( imageView.GetPropertyIndex( "image" ) );
+
+ DALI_TEST_CHECK( ! value.Get( url ) ); // Value should be empty
+ DALI_TEST_CHECK( ! value.Get( map ) ); // Value should be empty
+
+ END_TEST;
+}
void ImageView::SetImage( Image image )
{
- if( mImage != image )
+ if( ( mImage != image ) ||
+ ! mUrl.empty() || // If we're changing from a URL type to an Image type
+ ! mPropertyMap.Empty() ) // If we're changing from a property map type to an Image type
{
mUrl.clear();
mPropertyMap.Clear();
Actor self = Self();
Toolkit::RendererFactory::Get().ResetRenderer( mRenderer, self, image );
mImageSize = image ? ImageDimensions( image.GetWidth(), image.GetHeight() ) : ImageDimensions( 0, 0 );
+
+ RelayoutRequest();
}
}
void ImageView::SetImage( Property::Map map )
{
+ mUrl.clear();
+ mImage.Reset();
mPropertyMap = map;
Actor self = Self();
}
mImageSize = ImageDimensions( width, height );
+
+ RelayoutRequest();
}
void ImageView::SetImage( const std::string& url, ImageDimensions size )
{
- if( mUrl != url )
+ if( ( mUrl != url ) ||
+ mImage || // If we're changing from an Image type to a URL type
+ ! mPropertyMap.Empty() ) // If we're changing from a property map type to a URL type
{
mImage.Reset();
mPropertyMap.Clear();
Actor self = Self();
Toolkit::RendererFactory::Get().ResetRenderer( mRenderer, self, mUrl, mImageSize );
+
+ RelayoutRequest();
}
}
{
if( renderer )
{
+ if( ! image )
+ {
+ // If the image is empty, then reset the renderer and return
+ renderer.RemoveAndReset( actor );
+ return;
+ }
+
NinePatchImage npatchImage = NinePatchImage::DownCast( image );
if( npatchImage )
{
{
if( renderer )
{
- if( NinePatchImage::IsNinePatchUrl( url ) )
+ if( url.empty() )
+ {
+ // If the URL is empty, then reset the renderer and return
+ renderer.RemoveAndReset( actor );
+ return;
+ }
+ else if( NinePatchImage::IsNinePatchUrl( url ) )
{
NPatchRenderer* rendererPtr = dynamic_cast< NPatchRenderer* >( &GetImplementation( renderer ) );
if( rendererPtr )
return ImageView( imageView );
}
-ImageView ImageView::New( const std::string& url,
- ImageDimensions size)
+ImageView ImageView::New( const std::string& url )
+{
+ ImageView imageView = Internal::ImageView::New();
+ imageView.SetImage( url, ImageDimensions() );
+ return imageView;
+}
+
+ImageView ImageView::New( const std::string& url, ImageDimensions size )
{
ImageView imageView = Internal::ImageView::New();
imageView.SetImage( url, size );
Dali::Toolkit::GetImpl( *this ).SetImage( image );
}
-void ImageView::SetImage( const std::string& url,
- ImageDimensions size )
+void ImageView::SetImage( const std::string& url )
+{
+ Dali::Toolkit::GetImpl( *this ).SetImage( url, ImageDimensions() );
+}
+
+void ImageView::SetImage( const std::string& url, ImageDimensions size )
{
Dali::Toolkit::GetImpl( *this ).SetImage( url, size );
}
* @brief Create an initialized ImageView.
*
* @return A handle to a newly allocated Dali ImageView.
+ *
+ * @note ImageView will not display anything.
*/
static ImageView New();
/**
* @brief Create an initialized ImageView from an Image.
*
- * If the handle is empty, ImageView will display nothing
+ * If the handle is empty, ImageView will not display anything.
+ *
* @param[in] image The Image to display.
* @return A handle to a newly allocated ImageView.
*/
static ImageView New( Image image );
/**
- * @brief Create an initialized ImageView from an Image resource url
+ * @brief Create an initialized ImageView from an Image resource URL
*
- * @note A valid size is preferable for efficiency.
- * However, do not set size that is bigger than the actual image size, as the up-scaling is not available,
- * the content of the area not covered by actual image is undefined, it will not be cleared.
+ * If the string is empty, ImageView will not display anything.
+ *
+ * @param[in] url The url of the image resource to display.
+ * @return A handle to a newly allocated ImageView.
+ */
+ static ImageView New( const std::string& url );
+
+ /**
+ * @brief Create an initialized ImageView from an Image resource URL
+ *
+ * If the string is empty, ImageView will not display anything.
+ *
+ * @since DALi 1.1.10
*
- * If the string is empty, ImageView will display nothing
* @param[in] url The url of the image resource to display.
* @param [in] size The width and height to fit the loaded image to.
* @return A handle to a newly allocated ImageView.
+ *
+ * @note A valid size is preferable for efficiency.
+ * However, do not set a size that is bigger than the actual image size, as up-scaling is not available.
+ * The content of the area not covered by the actual image is undefined and will not be cleared.
*/
- static ImageView New( const std::string& url,
- ImageDimensions size = ImageDimensions() );
+ static ImageView New( const std::string& url, ImageDimensions size );
/**
* @brief Destructor
void SetImage( Image image );
/**
- * @brief Sets this ImageView from an Image url
+ * @brief Sets this ImageView from an Image URL
*
- * If the handle is empty, ImageView will display nothing
+ * If the URL is empty, ImageView will not display anything.
*
* @since DALi 1.1.4
*
* @param[in] url The Image resource to display.
+ */
+ void SetImage( const std::string& url );
+
+ /**
+ * @brief Sets this ImageView from an Image URL
+ *
+ * If the URL is empty, ImageView will not display anything.
+ *
+ * @since DALi 1.1.10
+ *
+ * @param[in] url A URL to the image resource to display.
* @param [in] size The width and height to fit the loaded image to.
*/
- void SetImage( const std::string& url,
- ImageDimensions size = ImageDimensions() );
+ void SetImage( const std::string& url, ImageDimensions size );
/**
* @deprecated Gets the Image