## ClutterConstraint

ClutterConstraint — Abstract class for constraints on position or size

## Synopsis

                        ClutterConstraint;
    struct              ClutterConstraintClass;

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----ClutterActorMeta
                   +----ClutterConstraint
                         +----ClutterAlignConstraint
                         +----ClutterBindConstraint

## Description

ClutterConstraint is a base abstract class for modifiers of a ClutterActor position or size.

A ClutterConstraint sub-class should contain the logic for modifying the position or size of the ClutterActor to which it is applied, by updating the actor's allocation. Each ClutterConstraint can change the allocation of the actor to which they are applied by overriding the ``update_allocation()`` virtual function.

### Implemting a ClutterConstraint

Creating a sub-class of ClutterConstraint requires the implementation of the ``update_allocation()`` virtual function.

The ``update_allocation()`` virtual function is called during the allocation sequence of a ClutterActor, and allows any ClutterConstraint attached to that actor to modify the allocation before it is passed to the ``allocate()`` implementation.

The ClutterActorBox passed to the ``update_allocation()`` implementation contains the original allocation of the ClutterActor, plus the eventual modifications applied by the other ClutterConstraints.

### Note

Constraints are queried in the same order as they were applied using `clutter_actor_add_constraint()` or `clutter_actor_add_constraint_with_name()`.

It is not necessary for a ClutterConstraint sub-class to chain up to the parent's implementation.

If a ClutterConstraint is parametrized - i.e. if it contains properties that affect the way the constraint is implemented - it should call `clutter_actor_queue_relayout()` on the actor to which it is attached to whenever any parameter is changed. The actor to which it is attached can be recovered at any point using `clutter_actor_meta_get_actor()`.

ClutterConstraint is available since Clutter 1.4

## Details

### ClutterConstraint

    typedef struct _ClutterConstraint ClutterConstraint;

The ClutterConstraint structure contains only private data and should be accessed using the provided API

Since 1.4

### struct ClutterConstraintClass

    struct ClutterConstraintClass {
    };

The ClutterConstraintClass structure contains only private data

Since 1.4

## See Also

ClutterAction