## MxImage MxImage — A widget to display an image |

## Synopsis

    enum                MxImageError;
    #define             MX_IMAGE_ERROR
    GQuark              mx_image_error_quark                (void);
    struct              MxImage;
    struct              MxImageClass;
    ClutterActor *      mx_image_new                        (void);
    gboolean            mx_image_set_from_data              (MxImage *image,
                                                             const guchar *data,
                                                             CoglPixelFormat pixel_format,
                                                             gint width,
                                                             gint height,
                                                             gint rowstride,
                                                             GError **error);
    gboolean            mx_image_set_from_file              (MxImage *image,
                                                             const gchar *filename,
                                                             GError **error);
    gboolean            mx_image_set_from_file_at_size      (MxImage *image,
                                                             const gchar *filename,
                                                             gint width,
                                                             gint height,
                                                             GError **error);
    gboolean            mx_image_set_from_buffer            (MxImage *image,
                                                             guchar *buffer,
                                                             gsize buffer_size,
                                                             GDestroyNotify buffer_free_func,
                                                             GError **error);
    gboolean            mx_image_set_from_buffer_at_size    (MxImage *image,
                                                             guchar *buffer,
                                                             gsize buffer_size,
                                                             GDestroyNotify buffer_free_func,
                                                             gint width,
                                                             gint height,
                                                             GError **error);
    void                mx_image_clear                      (MxImage *image);
    void                mx_image_set_scale_mode             (MxImage *image,
                                                             MxImageScaleMode mode);
    MxImageScaleMode    mx_image_get_scale_mode             (MxImage *image);
    void                mx_image_animate_scale_mode         (MxImage *image,
                                                             gulong mode,
                                                             guint duration,
                                                             MxImageScaleMode scale_mode);
    void                mx_image_set_image_rotation         (MxImage *image,
                                                             gfloat rotation);
    gfloat              mx_image_get_image_rotation         (MxImage *image);
    void                mx_image_set_load_async             (MxImage *image,
                                                             gboolean load_async);
    gboolean            mx_image_get_load_async             (MxImage *image);
    void                mx_image_set_allow_upscale          (MxImage *image,
                                                             gboolean allow);
    gboolean            mx_image_get_allow_upscale          (MxImage *image);
    void                mx_image_set_scale_width_threshold  (MxImage *image,
                                                             guint pixels);
    guint               mx_image_get_scale_width_threshold  (MxImage *image);
    void                mx_image_set_scale_height_threshold (MxImage *image,
                                                             guint pixels);
    guint               mx_image_get_scale_height_threshold (MxImage *image);
    void                mx_image_set_transition_duration    (MxImage *image,
                                                             guint duration);
    guint               mx_image_get_transition_duration    (MxImage *image);
    gboolean            mx_image_set_from_cogl_texture      (MxImage *image,
                                                             CoglHandle texture);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----ClutterActor
                   +----MxWidget
                         +----MxImage

## Implemented Interfaces

MxImage implements ClutterContainer, ClutterScriptable, ClutterAnimatable, AtkImplementorIface and MxStylable.

## Properties

      "allow-upscale"            gboolean              : Read / Write
      "image-rotation"           gfloat                : Read / Write
      "load-async"               gboolean              : Read / Write
      "scale-height-threshold"   guint                 : Read / Write
      "scale-mode"               MxImageScaleMode      : Read / Write
      "scale-width-threshold"    guint                 : Read / Write
      "transition-duration"      guint                 : Read / Write

## Signals

      "image-load-error"                               : Run Last
      "image-loaded"                                   : Run Last

## Description

The MxImage widget can load and display images. The image may be centered or scaled to fit within the allocation. A transition effect occurs when a new image is loaded.

## Details

### enum MxImageError

    typedef enum {
      MX_IMAGE_ERROR_BAD_FORMAT,
      MX_IMAGE_ERROR_NO_ASYNC,
      MX_IMAGE_ERROR_INTERNAL,
      MX_IMAGE_ERROR_INVALID_PARAMETER
    } MxImageError;

### MX_IMAGE_ERROR

    #define MX_IMAGE_ERROR (mx_image_error_quark ())

### mx_image_error_quark ()

    GQuark              mx_image_error_quark                (void);

### struct MxImage

    struct MxImage;

The contents of this structure are private and should only be accessed through the public API.

### struct MxImageClass

    struct MxImageClass {
    };

### mx_image_new ()

    ClutterActor *      mx_image_new                        (void);

Creates a new MxImage object.

Returns : | A newly created MxImage object

Since 1.2

### mx_image_set_from_data ()

    gboolean            mx_image_set_from_data              (MxImage *image,
                                                             const guchar *data,
                                                             CoglPixelFormat pixel_format,
                                                             gint width,
                                                             gint height,
                                                             gint rowstride,
                                                             GError **error);

Set the image data from a buffer. In case of failure, FALSE is returned and `error` is set.

`image` : | An MxImage
`data` : | Image data. [array]
`pixel_format` : | The CoglPixelFormat of the buffer
`width` : | Width in pixels of image data.
`height` : | Height in pixels of image data
`rowstride` : | Distance in bytes between row starts.
`error` : | Return location for a GError, or NULL
Returns : | TRUE if the image was successfully updated

Since 1.2

### mx_image_set_from_file ()

    gboolean            mx_image_set_from_file              (MxImage *image,
                                                             const gchar *filename,
                                                             GError **error);

Set the image data from an image file. In case of failure, FALSE is returned and `error` is set.

`image` : | An MxImage
`filename` : | Filename to read the file from
`error` : | Return location for a GError, or NULL
Returns : | TRUE if the image was successfully updated

Since 1.2

### mx_image_set_from_file_at_size ()

    gboolean            mx_image_set_from_file_at_size      (MxImage *image,
                                                             const gchar *filename,
                                                             gint width,
                                                             gint height,
                                                             GError **error);

Set the image data from an image file, and scale the image during loading. In case of failure, FALSE is returned and `error` is set. The aspect ratio will always be maintained.

`image` : | An MxImage
`filename` : | Filename to read the file from
`width` : | Width to scale the image to, or -1
`height` : | Height to scale the image to, or -1
`error` : | Return location for a GError, or NULL
Returns : | TRUE if the image was successfully updated

Since 1.2

### mx_image_set_from_buffer ()

    gboolean            mx_image_set_from_buffer            (MxImage *image,
                                                             guchar *buffer,
                                                             gsize buffer_size,
                                                             GDestroyNotify buffer_free_func,
                                                             GError **error);

Set the image data from unencoded image data, stored in memory. In case of failure, FALSE is returned and `error` is set. It is expected that `buffer` will remain accessible for the duration of the load. Once it is finished with, `buffer_free_func` will be called.

`image` : | An MxImage
`buffer` : | A buffer pointing to encoded image data. [array length=buffer_size][transfer full]
`buffer_size` : | The size of `buffer`, in bytes
`buffer_free_func` : | A function to free `buffer`, or `NULL`. [allow-none]
`error` : | Return location for a GError, or NULL
Returns : | TRUE if the image was successfully updated

Since 1.2

### mx_image_set_from_buffer_at_size ()

    gboolean            mx_image_set_from_buffer_at_size    (MxImage *image,
                                                             guchar *buffer,
                                                             gsize buffer_size,
                                                             GDestroyNotify buffer_free_func,
                                                             gint width,
                                                             gint height,
                                                             GError **error);

Set the image data from unencoded image data, stored in memory, and scales it while loading. In case of failure, FALSE is returned and `error` is set. It is expected that `buffer` will remain accessible for the duration of the load. Once it is finished with, `buffer_free_func` will be called. The aspect ratio will always be maintained.

`image` : | An MxImage
`buffer` : | A buffer pointing to encoded image data. [array length=buffer_size][transfer full]
`buffer_size` : | The size of `buffer`, in bytes
`buffer_free_func` : | A function to free `buffer`, or `NULL`. [allow-none]
`width` : | Width to scale the image to, or -1
`height` : | Height to scale the image to, or -1
`error` : | Return location for a GError, or NULL
Returns : | TRUE if the image was successfully updated

Since 1.2

### mx_image_clear ()

    void                mx_image_clear                      (MxImage *image);

Clear the current image and set a blank, transparent image.

`image` : | A MxImage
Returns : | static void

Since 1.2

### mx_image_set_scale_mode ()

    void                mx_image_set_scale_mode             (MxImage *image,
                                                             MxImageScaleMode mode);

Set the scale mode on `MxImage`

`image` : | An MxImage
`mode` : | The MxImageScaleMode to set

Since 1.2

### mx_image_get_scale_mode ()

    MxImageScaleMode    mx_image_get_scale_mode             (MxImage *image);

Get the current scale mode of `MxImage`.

`image` : | An MxImage
Returns : | The current MxImageScaleMode

Since 1.2

### mx_image_animate_scale_mode ()

    void                mx_image_animate_scale_mode         (MxImage *image,
                                                             gulong mode,
                                                             guint duration,
                                                             MxImageScaleMode scale_mode);

Sets the value of "scale-mode" to `scale_mode` and animates the scale factor of the image between the previous value and the new value.

`image` : | An MxImage
`mode` : | a ClutterAnimationMode
`duration` : | duration of the animation in milliseconds
`scale_mode` : | The MxImageScaleMode to set

Since 1.2

### mx_image_set_image_rotation ()

    void                mx_image_set_image_rotation         (MxImage *image,
                                                             gfloat rotation);

Set the MxImage:image-rotation property.

`image` : | A MxImage
`rotation` : | Rotation angle in degrees

Since 1.2

### mx_image_get_image_rotation ()

    gfloat              mx_image_get_image_rotation         (MxImage *image);

Get the value of the MxImage:image-rotation property.

`image` : | A MxImage
Returns : | The value of the image-rotation property.

Since 1.2

### mx_image_set_load_async ()

    void                mx_image_set_load_async             (MxImage *image,
                                                             gboolean load_async);

Sets whether to load images asynchronously. Asynchronous image loading requires thread support (see `g_thread_init()`).

When using asynchronous image loading, all image-loading functions will return immediately as successful. The "image-loaded" and "image-load-error" signals are used to signal success or failure of asynchronous image loading.

`image` : | A MxImage
`load_async` : | `TRUE` to load images asynchronously

Since 1.2

### mx_image_get_load_async ()

    gboolean            mx_image_get_load_async             (MxImage *image);

Determines whether asynchronous image loading is in use.

`image` : | A MxImage
Returns : | `TRUE` if images are set to load asynchronously, `FALSE` otherwise

Since 1.2

### mx_image_set_allow_upscale ()

    void                mx_image_set_allow_upscale          (MxImage *image,
                                                             gboolean allow);

Sets whether up-scaling of images is allowed. If set to `TRUE` and a size larger than the image is requested, the image will be up-scaled in software.

The advantage of this is that software up-scaling is potentially higher quality, but it comes at the expense of video memory.

`image` : | A MxImage
`allow` : | `TRUE` to allow upscaling, `FALSE` otherwise

Since 1.2

### mx_image_get_allow_upscale ()

    gboolean            mx_image_get_allow_upscale          (MxImage *image);

Determines whether image up-scaling is allowed.

`image` : | A MxImage
Returns : | `TRUE` if upscaling is allowed, `FALSE` otherwise

Since 1.2

### mx_image_set_scale_width_threshold ()

    void                mx_image_set_scale_width_threshold  (MxImage *image,
                                                             guint pixels);

Sets the threshold used to determine whether to scale the width of the image. If a specific width is requested, the image width is allowed to differ by this amount before scaling is employed.

This can be useful to avoid excessive CPU usage when the image differs only slightly to the desired size.

`image` : | A MxImage
`pixels` : | Number of pixels

Since 1.2

### mx_image_get_scale_width_threshold ()

    guint               mx_image_get_scale_width_threshold  (MxImage *image);

Retrieves the width scaling threshold.

`image` : | A MxImage
Returns : | The width scaling threshold, in pixels

Since 1.2

### mx_image_set_scale_height_threshold ()

    void                mx_image_set_scale_height_threshold (MxImage *image,
                                                             guint pixels);

Sets the threshold used to determine whether to scale the height of the image. If a specific height is requested, the image height is allowed to differ by this amount before scaling is employed.

This can be useful to avoid excessive CPU usage when the image differs only slightly to the desired size.

`image` : | A MxImage
`pixels` : | Number of pixels

Since 1.2

### mx_image_get_scale_height_threshold ()

    guint               mx_image_get_scale_height_threshold (MxImage *image);

Retrieves the height scaling threshold.

`image` : | A MxImage
Returns : | The height scaling threshold, in pixels

Since 1.2

### mx_image_set_transition_duration ()

    void                mx_image_set_transition_duration    (MxImage *image,
                                                             guint duration);

Set the MxImage:transition-duration property.

`image` : | A MxImage
`duration` : | Transition duration in milliseconds

Since 1.2

### mx_image_get_transition_duration ()

    guint               mx_image_get_transition_duration    (MxImage *image);

Get the value of the MxImage:transition-duration property.

`image` : | A MxImage
Returns : | The value of the transition-duration property.

Since 1.2

### mx_image_set_from_cogl_texture ()

    gboolean            mx_image_set_from_cogl_texture      (MxImage *image,
                                                             CoglHandle texture);

Sets the contents of the image from the given Cogl texture.

`image` : | A MxImage
`texture` : | A CoglHandle to a texture
Returns : | `TRUE` on success, `FALSE` on failure

Since 1.2

## Property Details

### The `"allow-upscale"` property

      "allow-upscale"            gboolean              : Read / Write

Allow images to be up-scaled.

Default value: FALSE

### The `"image-rotation"` property

      "image-rotation"           gfloat                : Read / Write

Image rotation in degrees.

Allowed values: [0,2.14748e+09]

Default value: 0

### The `"load-async"` property

      "load-async"               gboolean              : Read / Write

Whether to load images asynchronously.

Default value: FALSE

### The `"scale-height-threshold"` property

      "scale-height-threshold"   guint                 : Read / Write

Amount of pixels difference allowed between requested height and image height.

Default value: 0

### The `"scale-mode"` property

      "scale-mode"               MxImageScaleMode      : Read / Write

The scaling mode for the images.

Default value: MX_IMAGE_SCALE_NONE

### The `"scale-width-threshold"` property

      "scale-width-threshold"    guint                 : Read / Write

Amount of pixels difference allowed between requested width and image width.

Default value: 0

### The `"transition-duration"` property

      "transition-duration"      guint                 : Read / Write

Transition duration in ms.

Default value: 250

## Signal Details

### The `"image-load-error"` signal

    void                user_function                      (MxImage *image,
                                                            GError  *arg1,
                                                            gpointer user_data)      : Run Last

Emitted when an asynchronous image load has encountered an error and cannot load the requested image.

`image` : | the MxImage that emitted the signal
`user_data` : | user data set when the signal handler was connected.

Since 1.2

### The `"image-loaded"` signal

    void                user_function                      (MxImage *image,
                                                            gpointer user_data)      : Run Last

Emitted when an asynchronous image load has completed successfully

`image` : | the MxImage that emitted the signal
`user_data` : | user data set when the signal handler was connected.

Since 1.2