## ClutterAnimatable ClutterAnimatable — Interface for animatable classes |

## Synopsis

                        ClutterAnimatable;
    struct              ClutterAnimatableIface;
    gboolean            clutter_animatable_animate_property (ClutterAnimatable *animatable,
                                                             ClutterAnimation *animation,
                                                             const gchar *property_name,
                                                             const GValue *initial_value,
                                                             const GValue *final_value,
                                                             gdouble progress,
                                                             GValue *value);
    GParamSpec *        clutter_animatable_find_property    (ClutterAnimatable *animatable,
                                                             const gchar *property_name);
    void                clutter_animatable_get_initial_state
                                                            (ClutterAnimatable *animatable,
                                                             const gchar *property_name,
                                                             GValue *value);
    void                clutter_animatable_set_final_state  (ClutterAnimatable *animatable,
                                                             const gchar *property_name,
                                                             const GValue *value);

## Object Hierarchy

      GInterface
       +----ClutterAnimatable

## Prerequisites

ClutterAnimatable requires GObject.

## Known Implementations

ClutterAnimatable is implemented by ClutterActor, ClutterBox, ClutterCairoTexture, ClutterClone, ClutterGroup, ClutterRectangle, ClutterStage, ClutterText and ClutterTexture.

## Description

ClutterAnimatable is an interface that allows a GObject class to control how a ClutterAnimation will animate a property.

Each ClutterAnimatable should implement the `animate_property()` virtual function of the interface to compute the animation state between two values of an interval depending on a progress factor, expressed as a floating point value.

If a ClutterAnimatable is animated by a ClutterAnimation instance, the ClutterAnimation will call `clutter_animatable_animate_property()` passing the name of the currently animated property; the initial and final values of the animation interval; the progress factor. The ClutterAnimatable implementation should return the computed value for the animated property.

ClutterAnimatable is available since Clutter 1.0

## Details

### ClutterAnimatable

    typedef struct _ClutterAnimatable ClutterAnimatable;

ClutterAnimatable is an opaque structure whose members cannot be directly accessed

Since 1.0

### struct ClutterAnimatableIface

    struct ClutterAnimatableIface {
      gboolean    (* animate_property)  (ClutterAnimatable *animatable,
                                         ClutterAnimation  *animation,
                                         const gchar       *property_name,
                                         const GValue      *initial_value,
                                         const GValue      *final_value,
                                         gdouble            progress,
                                         GValue            *value);
      GParamSpec *(* find_property)     (ClutterAnimatable *animatable,
                                         const gchar       *property_name);
      void        (* get_initial_state) (ClutterAnimatable *animatable,
                                         const gchar       *property_name,
                                         GValue            *value);
      void        (* set_final_state)   (ClutterAnimatable *animatable,
                                         const gchar       *property_name,
                                         const GValue      *value);
    };

Base interface for GObjects that can be animated by a a ClutterAnimation.

`animate_property` () | virtual function for custom interpolation of a property
`find_property` () | virtual function for retrieving the GParamSpec of an animatable property
`get_initial_state` () | virtual function for retrieving the initial state of an animatable property
`set_final_state` () | virtual function for setting the state of an animatable property

Since 1.0

### clutter_animatable_animate_property ()

    gboolean            clutter_animatable_animate_property (ClutterAnimatable *animatable,
                                                             ClutterAnimation *animation,
                                                             const gchar *property_name,
                                                             const GValue *initial_value,
                                                             const GValue *final_value,
                                                             gdouble progress,
                                                             GValue *value);

Calls the `animate_property()` virtual function for `animatable`.

The `initial_value` and `final_value` GValues must contain the same type; `value` must have been initialized to the same type of `initial_value` and `final_value`.

All implementation of the ClutterAnimatable interface must implement this function.

`animatable` : | a ClutterAnimatable
`animation` : | a ClutterAnimation
`property_name` : | the name of the animated property
`initial_value` : | the initial value of the animation interval
`final_value` : | the final value of the animation interval
`progress` : | the progress factor
`value` : | return location for the animation value
Returns : | `TRUE` if the value has been validated and can be applied to the ClutterAnimatable, and `FALSE` otherwise

Since 1.0

### clutter_animatable_find_property ()

    GParamSpec *        clutter_animatable_find_property    (ClutterAnimatable *animatable,
                                                             const gchar *property_name);

Finds the GParamSpec for `property_name`

`animatable` : | a ClutterAnimatable
`property_name` : | the name of the animatable property to find
Returns : | The GParamSpec for the given property or `NULL`. [transfer none]

Since 1.4

### clutter_animatable_get_initial_state ()

    void                clutter_animatable_get_initial_state
                                                            (ClutterAnimatable *animatable,
                                                             const gchar *property_name,
                                                             GValue *value);

Retrieves the current state of `property_name` and sets `value` with it

`animatable` : | a ClutterAnimatable
`property_name` : | the name of the animatable property to retrieve
`value` : | a GValue initialized to the type of the property to retrieve

Since 1.4

### clutter_animatable_set_final_state ()

    void                clutter_animatable_set_final_state  (ClutterAnimatable *animatable,
                                                             const gchar *property_name,
                                                             const GValue *value);

Sets the current state of `property_name` to `value`

`animatable` : | a ClutterAnimatable
`property_name` : | the name of the animatable property to set
`value` : | the value of the animatable property to set

Since 1.4