<part id="clutter-overview"> <partinfo> <author> <firstname>Emmanuele</firstname> <surname>Bassi</surname> <affiliation> <address> <email>ebassi@openedhand.com</email> </address> </affiliation> </author> </partinfo> <title>Overview</title> <partintro> <para>Clutter is a GObject based library for creating fast, visually rich, graphical user interfaces.</para> <para>Clutter works by manipulating a scene-graph of 2D surfaces, or 'actors', inside a 3D space.</para> <para>#ClutterActor is the base class for such surfaces. All #ClutterActor<!-- -->s can be positioned, scaled and rotated in 3D space. In addition, other properties can be set, such as 2D clipping, children and opacity. Tranforms applied to a parent actor also apply to any children. Actors are also able to receive events.</para> <para>Subclasses of #ClutterActor include #ClutterStage, #ClutterTexture, #ClutterText, #ClutterRectangle, #ClutterCairoTexture, #ClutterGroup and #ClutterBox. #ClutterActor<!-- -->s are added to a parent, transformed and then made visible.</para> <para>#ClutterStage is the top level #ClutterActor - it's the representation of a window, or framebuffer. It is created automatically when Clutter is initialised. #ClutterStage is a #ClutterGroup, a class implementing the #ClutterCointainer interface.</para> <para>Clutter allows explicit positioning and sizing through the #ClutterFixedLayout layout manager; and implicit positioning and sizing through fluid layout managers like #ClutterBoxLayout, #ClutterFlowLayout and #ClutterTableLayout. Actors inside fixed layout managers like #ClutterGroup and #ClutterStage can also be positioned and sized implicitly using the #ClutterConstraint sub-classes.</para> <para>#ClutterTimeline<!-- -->s provide the basis for Clutter's animation utilities. #ClutterActor<!-- -->s can be animated using explicit animations through the various #ClutterBehaviour implementations, or implicit animations, through the clutter_actor_animate() function. Animations can also be defined as named states through the #ClutterState class.</para> <para>Clutter further contains a number of utilities, including; #ClutterScript - for loading 'UI definition' files formatted in <ulink type="http" url="http://json.org">JSON</ulink>; #ClutterShader - a class for applying GPU shaders to actors, #ClutterModel - a utility class for MVC list type implementations; #ClutterAction<!-- -->s, #ClutterConstraint<!-- -->s and #ClutterEffect<!-- -->s.</para> </partintro> </part>