## Clutter Effects

Clutter Effects — Utility Class for basic visual effects

## Synopsis

                        ClutterEffectTemplate;
                        ClutterEffectTemplateClass;
    ClutterEffectTemplate* clutter_effect_template_new      (ClutterTimeline *timeline,
                                                             ClutterAlphaFunc alpha_func);
    ClutterEffectTemplate* clutter_effect_template_new_full (ClutterTimeline *timeline,
                                                             ClutterAlphaFunc alpha_func,
                                                             gpointer user_data,
                                                             GDestroyNotify notify);
    ClutterEffectTemplate* clutter_effect_template_new_for_duration
                                                            (guint msecs,
                                                             ClutterAlphaFunc alpha_func);
    void                clutter_effect_template_construct   (ClutterEffectTemplate *template_,
                                                             ClutterTimeline *timeline,
                                                             ClutterAlphaFunc alpha_func,
                                                             gpointer user_data,
                                                             GDestroyNotify notify);
    gboolean            clutter_effect_template_get_timeline_clone
                                                            (ClutterEffectTemplate *template_);
    void                clutter_effect_template_set_timeline_clone
                                                            (ClutterEffectTemplate *template_,
                                                             gboolean setting);

    void                (*ClutterEffectCompleteFunc)        (ClutterActor *actor,
                                                             gpointer user_data);
    ClutterTimeline*    clutter_effect_fade                 (ClutterEffectTemplate *template_,
                                                             ClutterActor *actor,
                                                             guint8 opacity_end,
                                                             ClutterEffectCompleteFunc func,
                                                             gpointer data);
    ClutterTimeline*    clutter_effect_move                 (ClutterEffectTemplate *template_,
                                                             ClutterActor *actor,
                                                             gint x,
                                                             gint y,
                                                             ClutterEffectCompleteFunc func,
                                                             gpointer data);
    ClutterTimeline*    clutter_effect_path                 (ClutterEffectTemplate *template_,
                                                             ClutterActor *actor,
                                                             const ClutterKnot *knots,
                                                             guint n_knots,
                                                             ClutterEffectCompleteFunc func,
                                                             gpointer data);
    ClutterTimeline*    clutter_effect_scale                (ClutterEffectTemplate *template_,
                                                             ClutterActor *actor,
                                                             gdouble x_scale_end,
                                                             gdouble y_scale_end,
                                                             ClutterEffectCompleteFunc func,
                                                             gpointer data);
    ClutterTimeline*    clutter_effect_depth                (ClutterEffectTemplate *template_,
                                                             ClutterActor *actor,
                                                             gint depth_end,
                                                             ClutterEffectCompleteFunc func,
                                                             gpointer data);
    ClutterTimeline*    clutter_effect_rotate               (ClutterEffectTemplate *template_,
                                                             ClutterActor *actor,
                                                             ClutterRotateAxis axis,
                                                             gdouble angle,
                                                             gint center_x,
                                                             gint center_y,
                                                             gint center_z,
                                                             ClutterRotateDirection direction,
                                                             ClutterEffectCompleteFunc func,
                                                             gpointer data);

## Description

The ClutterEffectTemplate class provides a simple API for applying pre-defined effects to a single actor. It works as a wrapper around the ClutterBehaviour objects

## Details

### ClutterEffectTemplate

    typedef struct {
    } ClutterEffectTemplate;

### ClutterEffectTemplateClass

    typedef struct {
    } ClutterEffectTemplateClass;

### clutter_effect_template_new ()

    ClutterEffectTemplate* clutter_effect_template_new      (ClutterTimeline *timeline,
                                                             ClutterAlphaFunc alpha_func);

Creates a new ClutterEffectTemplate, to be used with the effects API.

A ClutterEffectTemplate binds a timeline and an alpha function and can be used as a template for multiple calls of `clutter_effect_fade()`, `clutter_effect_move()` and `clutter_effect_scale()`.

This API is intended for simple animations involving a single actor; for more complex animations, you should see ClutterBehaviour and the derived classes.

`timeline` : | A ClutterTimeline for the template (will be cloned)
`alpha_func` : | An alpha func to use for the template.
Returns : | a ClutterEffectTemplate

Since 0.4

### clutter_effect_template_new_full ()

    ClutterEffectTemplate* clutter_effect_template_new_full (ClutterTimeline *timeline,
                                                             ClutterAlphaFunc alpha_func,
                                                             gpointer user_data,
                                                             GDestroyNotify notify);

Creates a new ClutterEffectTemplate, to be used with the effects API.

A ClutterEffectTemplate binds a timeline and an alpha function and can be used as a template for multiple calls of `clutter_effect_fade()`, `clutter_effect_move()` and `clutter_effect_scale()`.

This API is intended for simple animations involving a single actor; for more complex animations, you should see ClutterBehaviour and the derived classes.

This function is intended for language bindings only: if `notify` is not `NULL` it will be called to dispose of `user_data`.

`timeline` : | a ClutterTimeline
`alpha_func` : | an alpha function to use for the template
`user_data` : | data to be passed to the alpha function, or `NULL`
`notify` : | function to be called when disposing the alpha function's use data, or `NULL`
Returns : | the newly created ClutterEffectTemplate object

Since 0.4

### clutter_effect_template_new_for_duration ()

    ClutterEffectTemplate* clutter_effect_template_new_for_duration
                                                            (guint msecs,
                                                             ClutterAlphaFunc alpha_func);

Creates a new ClutterEffectTemplate, to be used with the effects API.

A ClutterEffectTemplate binds a timeline and an alpha function and can be used as a template for multiple calls of `clutter_effect_fade()`, `clutter_effect_move()` and `clutter_effect_scale()`.

This API is intended for simple animations involving a single actor; for more complex animations, you should see ClutterBehaviour and the derived classes.

This function creates a ClutterTimeline with a duration of `msecs` milliseconds and transfers ownership of the timeline object to the returned ClutterEffectTemplate.

`msecs` : | the duration of the effects, in milliseconds
`alpha_func` : | an alpha function to use for the template
Returns : | the newly created ClutterEffectTemplate object

Since 0.6

### clutter_effect_template_construct ()

    void                clutter_effect_template_construct   (ClutterEffectTemplate *template_,
                                                             ClutterTimeline *timeline,
                                                             ClutterAlphaFunc alpha_func,
                                                             gpointer user_data,
                                                             GDestroyNotify notify);

Constructs a ClutterEffectTemplate, to be used with the effects API.

This function can only be called once after the creation of `template_` and is only useful for language bindings.

`template_` : | a ClutterEffectTemplate
`timeline` : | a ClutterTimeline
`alpha_func` : | an alpha function to use for the template
`user_data` : | data to be passed to the alpha function, or `NULL`
`notify` : | function to be called when disposing the alpha function's use data, or `NULL`

Since 0.6

### clutter_effect_template_get_timeline_clone ()

    gboolean            clutter_effect_template_get_timeline_clone
                                                            (ClutterEffectTemplate *template_);

Gets whether timelines should be cloned when creating a new effect or just referenced.

`template_` : | A ClutterEffectTemplate
Returns : | `TRUE` if the templates timeline is to be cloned.

Since 0.6

### clutter_effect_template_set_timeline_clone ()

    void                clutter_effect_template_set_timeline_clone
                                                            (ClutterEffectTemplate *template_,
                                                             gboolean setting);

Sets if effects using this template should make a copy of the templates timeline (default) or reference the effects timeline.

`template_` : | A ClutterEffectTemplate
`setting` : | A boolean indicating if effects should clone the timeline.

Since 0.6

### ClutterEffectCompleteFunc ()

    void                (*ClutterEffectCompleteFunc)        (ClutterActor *actor,
                                                             gpointer user_data);

Callback function invoked when an effect is complete.

`actor` : | a ClutterActor
`user_data` : | user data

Since 0.4

### clutter_effect_fade ()

    ClutterTimeline*    clutter_effect_fade                 (ClutterEffectTemplate *template_,
                                                             ClutterActor *actor,
                                                             guint8 opacity_end,
                                                             ClutterEffectCompleteFunc func,
                                                             gpointer data);

Simple effect for fading a single ClutterActor.

`template_` : | A ClutterEffectTemplate
`actor` : | A ClutterActor to apply the effect to.
`opacity_end` : | Final opacity value to apply to actor
`func` : | A ClutterEffectCompleteFunc to call on effect completion or `NULL`
`data` : | Data to pass to supplied ClutterEffectCompleteFunc or `NULL`
Returns : | a ClutterTimeline for the effect. Will be unrefed by the effect when completed.

Since 0.6

### clutter_effect_move ()

    ClutterTimeline*    clutter_effect_move                 (ClutterEffectTemplate *template_,
                                                             ClutterActor *actor,
                                                             gint x,
                                                             gint y,
                                                             ClutterEffectCompleteFunc func,
                                                             gpointer data);

Simple effect for moving a single ClutterActor along to a destination point.

`template_` : | A ClutterEffectTemplate
`actor` : | A ClutterActor to apply the effect to.
`x` : | X coordinate of the destination
`y` : | Y coordinate of the destination
`func` : | A ClutterEffectCompleteFunc to call on effect completion or `NULL`
`data` : | Data to pass to supplied ClutterEffectCompleteFunc or `NULL`
Returns : | a ClutterTimeline for the effect. Will be unreferenced by the effect when completed.

Since 0.6

### clutter_effect_path ()

    ClutterTimeline*    clutter_effect_path                 (ClutterEffectTemplate *template_,
                                                             ClutterActor *actor,
                                                             const ClutterKnot *knots,
                                                             guint n_knots,
                                                             ClutterEffectCompleteFunc func,
                                                             gpointer data);

Simple effect for moving a single ClutterActor along a path.

`template_` : | A ClutterEffectTemplate
`actor` : | A ClutterActor to apply the effect to.
`knots` : | An array of ClutterKnots representing path for the actor
`n_knots` : | Number of ClutterKnots in passed array.
`func` : | A ClutterEffectCompleteFunc to call on effect completion or `NULL`
`data` : | Data to pass to supplied ClutterEffectCompleteFunc or `NULL`
Returns : | a ClutterTimeline for the effect. Will be unreferenced by the effect when completed.

Since 0.6

### clutter_effect_scale ()

    ClutterTimeline*    clutter_effect_scale                (ClutterEffectTemplate *template_,
                                                             ClutterActor *actor,
                                                             gdouble x_scale_end,
                                                             gdouble y_scale_end,
                                                             ClutterEffectCompleteFunc func,
                                                             gpointer data);

Simple effect for scaling a single ClutterActor.

`template_` : | A ClutterEffectTemplate
`actor` : | A ClutterActor to apply the effect to.
`x_scale_end` : | Final X axis scale factor to apply to actor
`y_scale_end` : | Final Y axis scale factor to apply to actor
`func` : | A ClutterEffectCompleteFunc to call on effect completion or NULL
`data` : | Data to pass to supplied ClutterEffectCompleteFunc or NULL
Returns : | a ClutterTimeline for the effect. Will be unreferenced by the effect when completed.

Since 0.6

### clutter_effect_depth ()

    ClutterTimeline*    clutter_effect_depth                (ClutterEffectTemplate *template_,
                                                             ClutterActor *actor,
                                                             gint depth_end,
                                                             ClutterEffectCompleteFunc func,
                                                             gpointer data);

Simple effect for changing the depth of a single ClutterActor.

`template_` : | A ClutterEffectTemplate
`actor` : | A ClutterActor to apply the effect to.
`depth_end` : | Final depth value to apply to actor
`func` : | A ClutterEffectCompleteFunc to call on effect completion or `NULL`
`data` : | Data to pass to supplied ClutterEffectCompleteFunc or `NULL`
Returns : | a ClutterTimeline for the effect. Will be unrefed by the effect when completed.

Since 0.6

### clutter_effect_rotate ()

    ClutterTimeline*    clutter_effect_rotate               (ClutterEffectTemplate *template_,
                                                             ClutterActor *actor,
                                                             ClutterRotateAxis axis,
                                                             gdouble angle,
                                                             gint center_x,
                                                             gint center_y,
                                                             gint center_z,
                                                             ClutterRotateDirection direction,
                                                             ClutterEffectCompleteFunc func,
                                                             gpointer data);

Simple effect for rotating a single ClutterActor.

`template_` : | a ClutterEffectTemplate
`actor` : | a ClutterActor to apply the effect to.
`axis` : | axis of rotation
`angle` : | final angle to apply to actor
`center_x` : | position on X axis to rotate about.
`center_y` : | position on Y axis to rotate about.
`center_z` : | position on Z axis to rotate about.
`direction` : | a ClutterRotateDirection for the rotation.
`func` : | a ClutterEffectCompleteFunc to call on effect completion or `NULL`
`data` : | user data to pass to supplied `func` or `NULL`
Returns : | a ClutterTimeline for the effect. Will be unreferenced by the effect when completed.

Since 0.6