]> Clutter &version; Reference Manual Version &version; 2008 OpenedHand LTD Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You may obtain a copy of the GNU Free Documentation License from the Free Software Foundation by visiting their Web site or by writing to:
The Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
Clutter Overview Clutter is a GObject based library for creating fast, visually rich, graphical user interfaces. Clutter works by manipulating a scene-graph of 2D surfaces, or 'actors', inside a 3D space. #ClutterActor is the base class for such surfaces. All #ClutterActors 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. Subclasses of #ClutterActor include #ClutterStage, #ClutterTexture, #ClutterLabel, #ClutterRectangle, #ClutterEntry and #ClutterGroup. #ClutterActors are added to a parent, transformed and then made visible. #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. Clutter currently only supports a single stage. #ClutterTimelines provide the basis for Clutter's animation utilities. Multiple timelines can be synchronised using #ClutterScore, and #ClutterBehaviour and #ClutterEffect allow for the creation of animation effects such as transitions. Clutter further contains a number of utilities, including; #ClutterScript - for loading 'UI definition' files formatted in JSON, #ClutterShader - a class for applying GPU shaders to actors, #ClutterModel - a utility class for MVC list type implementations and #ClutterFixed - fixed point math utilities. Building Clutter
Clutter Dependencies GLib A general-purpose utility library, not specific to graphical user interfaces. GLib provides many useful data types, macros, type conversions, string utilities, file utilities, a main loop abstraction, and so on. GObject The GLib Object System provides the required implementations of a flexible, extensible and intentionally easy to map (into other languages) object-oriented framework for C. Pango Pango is a library for laying out and rendering text, with an emphasis on internationalization. GDK-Pixbuf GDK-Pixbuf is a library for loading and manipulating various image file formats. Backend Windowing System Library GLX, EGL (1.1), SDL, Cocoa (OS X) and WGL (Windows) Graphics Rendering Open GL (1.2+) ir Open GL ES (1.1)
Platform-specific instructions
Linux If you are using Debian or Ubuntu, you can install pre-compiled binary packages the normal Debian way following the instructions at http://debian.o-hand.com/. To build Clutter clutter from sources, get the latest source archives from http://www.clutter-project.org/sources/. Once you have extracted the sources from the archive execute the following commands in the top-level directory: ./configure make make install You can configure the build with number of additional arguments passed to the configure script, the full list of which can be obtained by running ./configure --help. The following arguments are specific to Clutter: --enable-debug=[no/minimum/yes] Turns on debugging. Possible values are: yes - all glib asserts, checks and runtime clutter verbose messages; minimum - just glib cast checks and runtime clutter verbose messagaes; no - no glib asserts or checks and no runtime clutter verbose messages; default=yes. --enable-maintainer-flags=[no/yes] Use strict compiler flags; default=no. --enable-gtk-doc Use gtk-doc to build documentation; default=no. --enable-manual=[no/yes] Build application developers manual; requires jw and xmlto binaries; default=no. --with-flavour=[glx/eglx/eglnative/sdl] Select the Clutter backend; default=glx.
Windows The recommended way of building Clutter for Windows is using the mingw tool chain. One option is to cross-compile Clutter under Linux -- you can use the script found in the build/mingw/ directory to simplify the process (the script takes care of setting up the necessary dependencies). If you wish to build Clutter using mingw direcly under Windows, you can do so the normal *nix way (described above) using the mingw POSIX shell. Should you prefer to use Microsoft Visual Studio, a project file for MSVC 2005 is located in the build/msvc_2k5/ directory. In either case, you will need to first install the required dependencies. There are currently two backends that are supported on Windows. One uses the Win32 and WGL APIs directly and the other is built on top of SDL. You must choose one of the backends when running the configure script using the following argument: --with-flavour=[win32/sdl] Select the Clutter backend; default=glx.
OSX For developing an application with Clutter, the recommended way of installing it using the MacPorts project, by simply invoking: $ sudo port install clutter on a terminal, after installing and updating MacPorts. For developing Clutter itself, the recommended way of building it OSX is to use Jhbuild, following the documentation for building the GTK+ stack as shown here. Jhbuild depends on SVN, which can be installed on OSX by using the MacPorts project. XCode should also be installed, either from the OSX installation disk or downloading it from the Apple website. It is recommended to also install the X11 development files, even though Clutter does not strictly depend on them. The Clutter Quartz backend is built by passing the --with-flavour=osx command line argument to the configure script. If not passed, the GLX backend will be built. By default, the Quartz backend depends on CoreGraphics in order to load images into textures, but it can also depend on GDK-Pixbuf or an internal, highly experimental PNG and JPEG loader. GTK-Doc is not working on OSX, so API reference generation should also be disabled when building Clutter, by using the --disable-docs and --disable-gtk-doc command line argument to the configure script.
Clutter Core Reference Abstract classes and interfaces Base actors Container actors Clutter Animation Framework Clutter has a fully extensible animation framework providing support for explicit and implicit animations of single actors as well as groups of actors. Base classes Behaviours Simple effects API Clutter Tools General purpose API User interface definition Generic list model Clutter Backends Clutter is usually compiled against a specific drawing backend. All backends have a common API for querying the underlying platform, and some of them might have specific API exposed by Clutter. Additional Documentation This section contains additional useful documentation for developing with Clutter. &clutter-SubclassingActor; &clutter-animation; &creating-your-own-behaviours; Index Index of deprecated symbols Index of new symbols in 0.2 Index of new symbols in 0.4 Index of new symbols in 0.6 Index of new symbols in 0.8 License This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You may obtain a copy of the GNU Library General Public License from the Free Software Foundation by visiting their Web site or by writing to:
Free Software Foundation, Inc. 59 Temple Place - Suite 330 Boston, MA 02111-1307 USA