Class
ClutterConstraint
Description [src]
abstract class Clutter.Constraint : Clutter.ActorMeta
{
/* No available fields */
}
Abstract class for constraints on position or size
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
Clutter.ConstraintClass.update_allocation
virtual function.
Using Constraints
Constraints can be used with fixed layout managers, like
ClutterFixedLayout
, or with actors implicitly using a fixed layout
manager, like ClutterGroup
and ClutterStage
.
Constraints provide a way to build user interfaces by using
relations between ClutterActors
, without explicit fixed
positioning and sizing, similarly to how fluid layout managers like
ClutterBoxLayout
lay out their children.
Constraints are attached to a ClutterActor
, and are available
for inspection using clutter_actor_get_constraints()
.
Clutter provides different implementation of the ClutterConstraint
abstract class, for instance:
ClutterAlignConstraint
, a constraint that can be used to align an actor to another one on either the horizontal or the vertical axis, using a normalized value between 0 and 1.ClutterBindConstraint
, a constraint binds the X, Y, width or height of an actor to the corresponding position or size of a source actor, with or without an offset.ClutterSnapConstraint
, a constraint that “snaps” together the edges of twoClutterActors
; if an actor uses two constraints on both its horizontal or vertical edges then it can also expand to fit the empty space.
It is important to note that Clutter does not avoid loops or
competing constraints; if two or more ClutterConstraints
are operating on the same positional or dimensional attributes of an
actor, or if the constraints on two different actors depend on each
other, then the behavior is undefined.
Implementing a ClutterConstraint
Creating a sub-class of ClutterConstraint
requires the
implementation of the Clutter.ConstraintClass.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 actor’s ClutterActorClass
.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
, in the same order
the constraints have been applied to the actor.
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().
Instance methods
clutter_constraint_update_preferred_size
Asks the constraint
to update the size request of a ClutterActor
.
Methods inherited from ClutterActorMeta (5)
clutter_actor_meta_get_actor
Retrieves a pointer to the ClutterActor
that owns meta
.
clutter_actor_meta_get_enabled
Retrieves whether meta
is enabled.
clutter_actor_meta_get_name
Retrieves the name set using clutter_actor_meta_set_name()
.
clutter_actor_meta_set_enabled
Sets whether meta
should be enabled or not.
clutter_actor_meta_set_name
Sets the name of meta
.
Properties
Properties inherited from ClutterActorMeta (3)
Clutter.ActorMeta:actor
The ClutterActor
attached to the ClutterActorMeta
instance.
Clutter.ActorMeta:enabled
Whether or not the ClutterActorMeta
is enabled.
Clutter.ActorMeta:name
The unique name to access the ClutterActorMeta
.
Signals
Signals inherited from GObject (1)
GObject::notify
The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.
Class structure
struct ClutterConstraintClass {
void (* update_allocation) (
ClutterConstraint* constraint,
ClutterActor* actor,
ClutterActorBox* allocation
);
void (* update_preferred_size) (
ClutterConstraint* constraint,
ClutterActor* actor,
ClutterOrientation direction,
float for_size,
float* minimum_size,
float* natural_size
);
}
The ClutterConstraintClass
structure contains
only private data.
Class members
update_allocation: void (* update_allocation) ( ClutterConstraint* constraint, ClutterActor* actor, ClutterActorBox* allocation )
Virtual function used to update the allocation of the
ClutterActor
using theClutterConstraint
.update_preferred_size: void (* update_preferred_size) ( ClutterConstraint* constraint, ClutterActor* actor, ClutterOrientation direction, float for_size, float* minimum_size, float* natural_size )
Virtual function used to update the preferred size of the
ClutterActor
using theClutterConstraint
; optional, since 1.22.
Virtual methods
Clutter.ConstraintClass.update_allocation
Virtual function used to update the allocation
of the ClutterActor
using the ClutterConstraint
.
Clutter.ConstraintClass.update_preferred_size
Asks the constraint
to update the size request of a ClutterActor
.