/*!
   \qmltype CrossFadeImage
   \ingroup ubuntu
   \brief An Image like component which smoothly fades when its source is updated.

   \qml
        import QtQuick 2.4
        import Ubuntu.Components 1.2

        CrossFadeImage {
            width: units.gu(100)
            height: units.gu(75)
            source: "http://design.ubuntu.com/wp-content/uploads/ubuntu-logo14.png"
            fadeDuration: 1000
            MouseArea {
                anchors.fill: parent
                onClicked: parent.source = "http://design.ubuntu.com/wp-content/uploads/canonical-logo1.png"
            }
        }
    \endqml
    */

/*!
  \qmlproperty url CrossFadeImage::source

  The image being displayed. Can be a URL to any image format supported by Qt.
 */

/*!
  \qmlproperty enumeration CrossFadeImage::fillMode

  Defaults to \c Image.PreserveAspectFit

  \list
    \li Image.Stretch - the image is scaled to fit
    \li Image.PreserveAspectFit - the image is scaled uniformly to fit without cropping
    \li Image.PreserveAspectCrop - the image is scaled uniformly to fill, cropping if necessary
    \li Image.Tile - the image is duplicated horizontally and vertically
    \li Image.TileVertically - the image is stretched horizontally and tiled vertically
    \li Image.TileHorizontally - the image is stretched vertically and tiled horizontally
    \li Image.Pad - the image is not transformed
  \endlist
*/

/*!
  \qmlproperty int CrossFadeImage::fadeDuration

  The time over which to fade between images. Defaults to \c UbuntuAnimation.FastDuration.
  \sa UbuntuAnimation
*/

/*!
  \since Ubuntu.Components 1.1
  \qmlproperty string CrossFadeImage::fadeStyle

  Style of the fade effect

  Defaults to \c overlay

  \list
    \li overlay - the new fading image overlays the current one
    \li cross - the current one fades out while the new image fades in
  \endlist
*/

/*!
  \qmlproperty bool CrossFadeImage::running

  Whether the animation is running
*/

/*!
  \qmlproperty size CrossFadeImage::sourceSize

  The actual width and height of the loaded image
  This property holds the actual width and height of the loaded image.

  Unlike the width and height properties, which scale the painting of the image,
  this property sets the actual number of pixels stored for the loaded image so that large
  images do not use more memory than necessary.

  Note: Changing this property dynamically causes the image source to be reloaded, potentially
  even from the network, if it is not in the disk cache.
*/

/*!
  \qmlproperty enumeration CrossFadeImage::status

  This property holds the status of image loading. It can be one of:

  \list
    \li Image.Null - no image has been set
    \li Image.Ready - the image has been loaded
    \li Image.Loading - the image is currently being loaded
    \li Image.Error - an error occurred while loading the image
  \endlist
*/
