## ClutterAnimatable

ClutterAnimatable — Interface for animatable classes

## Functions

gboolean | clutter_animatable_animate_property ()
GParamSpec * | clutter_animatable_find_property ()
void | clutter_animatable_get_initial_state ()
void | clutter_animatable_set_final_state ()
gboolean | clutter_animatable_interpolate_value ()

## Types and Values

| ClutterAnimatable
struct | ClutterAnimatableIface

## Object Hierarchy

        GInterface
        ╰── ClutterAnimatable

## Prerequisites

ClutterAnimatable requires GObject.

## Known Implementations

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

## Description

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

Each ClutterAnimatable should implement the `ClutterAnimatableIface.interpolate_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_interpolate_property()` passing the name of the currently animated property; the values interval; and the progress factor. The ClutterAnimatable implementation should return the computed value for the animated property.

ClutterAnimatable is available since Clutter 1.0

## Functions

### 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);

`clutter_animatable_animate_property` has been deprecated since version 1.8 and should not be used in newly-written code.

Use `clutter_animatable_interpolate_value()` instead

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.

#### Parameters

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`

#### Parameters

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

#### Parameters

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`

#### Parameters

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

### clutter_animatable_interpolate_value ()

    gboolean
    clutter_animatable_interpolate_value (ClutterAnimatable *animatable,
                                          const gchar *property_name,
                                          ClutterInterval *interval,
                                          gdouble progress,
                                          GValue *value);

Asks a ClutterAnimatable implementation to interpolate a a named property between the initial and final values of a ClutterInterval, using `progress` as the interpolation value, and store the result inside `value` .

This function should be used for every property animation involving ClutterAnimatables.

This function replaces `clutter_animatable_animate_property()`.

#### Parameters

animatable | a ClutterAnimatable |
property_name | the name of the property to interpolate |
interval | a ClutterInterval with the animation range |
progress | the progress to use to interpolate between the initial and final values of the `interval` |
value | return location for an initialized GValue using the same type of the `interval` . | [out]

#### Returns

`TRUE` if the interpolation was successful, and `FALSE` otherwise

Since: 1.8

## Types and Values

### 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);
      gboolean    (* interpolate_value) (ClutterAnimatable *animatable,
                                         const gchar       *property_name,
                                         ClutterInterval   *interval,
                                         gdouble            progress,
                                         GValue            *value);
    };

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

#### Members

`animate_property` () | virtual function for custom interpolation of a property. This virtual function is deprecated |
`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 |
`interpolate_value` () | virtual function for interpolating the progress of a property |

Since: 1.0