summaryrefslogtreecommitdiff
path: root/README.in
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@linux.intel.com>2011-02-14 16:49:01 +0000
committerEmmanuele Bassi <ebassi@linux.intel.com>2011-02-14 17:27:25 +0000
commitfbaac155c5afc9d0f172334e7c8d7d4fd4c87f35 (patch)
tree7e99ec88caff483d1ef22d46ae494b43cd4c4aba /README.in
parentb91befaacada5a499b863c3731b0581cea420660 (diff)
downloadclutter-fbaac155c5afc9d0f172334e7c8d7d4fd4c87f35.tar.gz
build: Generate README
Use the configure script to generate the README from a template file, so that we can keep the versions of the dependencies in one place.
Diffstat (limited to 'README.in')
-rw-r--r--README.in1058
1 files changed, 1058 insertions, 0 deletions
diff --git a/README.in b/README.in
new file mode 100644
index 000000000..25524aceb
--- /dev/null
+++ b/README.in
@@ -0,0 +1,1058 @@
+README for Clutter @CLUTTER_VERSION@
+===============================================================================
+
+Clutter is an open source software library for creating fast, compellin,
+portable, and dynamic graphical user interfaces.
+
+REQUIREMENTS
+-------------------------------------------------------------------------------
+
+Clutter currently requires:
+
+ • GLib ≥ @GLIB_REQ_VERSION@
+ • JSON-GLib ≥ @JSON_GLIB_REQ_VERSION@
+ • Atk ≥ @ATK_REQ_VERSION@
+ • Cairo ≥ @CAIRO_REQ_VERSION@
+ • PangoCairo ≥ @PANGO_REQ_VERSION@
+ • OpenGL ≥ 1.3 (or 1.2+multitexturing), OpenGL ES 1.1 or OpenGL ES 2.0
+ • GLX, SDL, WGL or an EGL Implementation
+
+Clutter also has optional dependencies:
+
+ • GDK-Pixbuf ≥ @GDK_PIXBUF_REQ_VERSION@
+
+On X11, Clutter depends on the following extensions
+
+ • XComposite ≥ 0.4
+ • XDamage
+ • XExt
+ • XFixes ≥ 3
+ • XInput (1.x or 2.x)
+ • XKB
+
+When running the OpenGL flavor, Clutter requires at least version 1.3
+or 1.2 with the multitexturing extension. However to build Clutter
+you will need the latest GL headers which can be obtained from:
+
+ http://www.khronos.org
+
+If you are building the API reference you will also need:
+
+ • GTK-Doc ≥ @GTK_DOC_REQ_VERSION@
+
+If you are building the additional documentation you will also need:
+
+ • xsltproc
+ • jw (optional, for generating PDFs)
+
+If you are building the Introspection data you will also need:
+
+ • GObject-Introspection ≥ @GI_REQ_VERSION@
+
+GObject-Introspection is available from:
+
+ git://git.gnome.org/gobject-introspection
+
+If you want support for profiling Clutter you will also need:
+
+ • UProf ≥ @UPROF_REQ_VERSION@
+
+UProf is available from:
+
+ git://github.com/rib/UProf.git
+
+RESOURCES
+-------------------------------------------------------------------------------
+
+The official Clutter website is:
+
+ http://www.clutter-project.org/
+
+The API reference for the latest stable release and unstable developers
+snapshot are available at:
+
+ http://docs.clutter-project.org/docs/clutter/stable/
+ http://docs.clutter-project.org/docs/clutter/unstable/
+
+New releases of Clutter are available at:
+
+ http://source.clutter-project.org/sources/clutter/
+
+The Clutter blog is available at:
+
+ http://www.clutter-project.org/blog/
+
+To subscribe to the Clutter mailing lists and read the archives, use the
+Mailman web interface available at:
+
+ http://lists.clutter-project.org/
+
+New bug page on Bugzilla:
+
+ http://bugzilla.clutter-project.org/enter_bug.cgi?product=clutter
+
+Clutter is licensed under the terms of the GNU Lesser General Public
+License, version 2.1 or (at your option) later.
+
+BUILDING AND INSTALLATION
+-------------------------------------------------------------------------------
+
+To build Clutter from a release tarball, the usual autotool triad should
+be followed:
+
+ $ ./configure
+ $ make
+ # make install
+
+To build Clutter from a Git clone, run the autogen.sh script instead
+of the configure one. The autogen.sh script will run the configure script
+for you, unless the NOCONFIGURE environment variable is set to a non-empty
+value.
+
+See also the wiki page:
+
+ http://wiki.clutter-project.org/wiki/BuildingClutter
+
+Clutter has additional command line options for the configure script:
+
+ --enable-debug=[no/minimum/yes]
+ Controls Clutter debugging level:
+
+ yes:
+ All GLib asserts, checks and support for runtime Clutter
+ debugging notes through CLUTTER_DEBUG. This is the default
+ value for developers snapshots.
+
+ minimum:
+ Just GType cast checks and support for runtime Clutter
+ debugging notes through CLUTTER_DEBUG. This is the default
+ for stable releases.
+
+ no:
+ No GLib asserts or checks and no support for runtime Clutter
+ debugging notes. Only use in extreme performance and/or size
+ optimization cases, though it is strongly discouraged.
+
+ --enable-cogl-debug=[no/minimum/yes]
+ Controls COGL debugging level (default=minimum):
+
+ yes:
+ Support for COGL debugging notes through COGL_DEBUG and
+ error checking for each GL primitive. This is useful mostly
+ to debug COGL itself.
+
+ minimum:
+ Support for COGL debugging notes through COGL_DEBUG. This is
+ the default for developers snapshots.
+
+ no:
+ Disable support for COGL runtime debugging notes.
+
+ --enable-maintainer-flags=[no/yes/error]
+ Use strict compiler flags. This defaults to 'yes' for developers
+ snapshots and to 'no' for stable releases. If 'error' is used, then
+ -Werror will be enabled (if available).
+
+ --enable-gtk-doc
+ use gtk-doc to build API documentation (default=no). Requires gtk-doc
+ present on the target system.
+
+ --enable-docs=[no/yes]
+ Build additional documentation. Requires xsltproc for DocBook
+ conversion, and optionally jw for PDF generation.
+
+ --enable-gcov=[no/yes]
+ Build Clutter with coverage report support, provided by gcov. This
+ feature only works with the GNU Compiler Suite and gcov installed.
+
+ --enable-profile=[no/yes]
+ Build Clutter with profiling instrumentation. Requires the GNU
+ C Compiler and the UProf library.
+
+ --enable-conform=[yes/no]
+ Build the Clutter conformance test suite.
+
+ --disable-Bsymbolic
+ Disable linking with -Bsymbolic.
+
+ --with-flavour=[glx/eglx/eglnative/osx/win32/fruity]
+ Select the Clutter backend: (default=glx)
+
+ glx:
+ Fully featured GLX backend.
+
+ opengl-egl-xlib:
+ EGL/Open GL backend for X11.
+
+ wayland:
+ EGL/Open GL backend for Wayland. (EXPERIMENTAL)
+
+ eglx:
+ EGL/Open GL|ES backend for X11.
+
+ eglnative:
+ EGL/Open GL|ES backend on 'native windowing system' - i.e
+ raw framebuffer. Expects the EGL implementation to provide
+ a createNativeWindow() call.
+
+ cex100:
+ EGL/Open GL|ES backend on Intel CE3100 and CE4100 platforms.
+ Requires libgdl.
+
+ osx:
+ OS X backend. (EXPERIMENTAL)
+
+ win32:
+ Microsoft Windows(tm) WGL backend.
+
+ fruity:
+ Apple iPod Touch(tm)/iPhone(tm) backend. (EXPERIMENTAL)
+
+ --with-imagebackend=[gdk-pixbuf/quartz/internal]
+ Select the image loading backend used by COGL
+
+ gdk-pixbuf:
+ Depend on gdk-pixbuf-2.0 (default for the glx, eglx,
+ eglnative, win32 flavours and recommended).
+
+ quartz:
+ Depend on CoreGraphics (default for the osx flavour).
+
+ internal:
+ Internal JPEG and PNG loader. Should only be used
+ for testing on new platforms
+
+ --with-gles=[1.1/2.0]
+ Select the GLES version (for EGL backends) (default=1.1)
+
+See also the INSTALL file generated by autotools for further information.
+
+VERSIONING
+-------------------------------------------------------------------------------
+
+Clutter uses the common "Linux kernel" versioning system, where
+even-numbered minor versions are stable and odd-numbered minor
+versions are development snapshots.
+
+Different major versions break both API and ABI but are parallel
+installable. The same major version with differing minor version is
+expected to be ABI compatible with other minor versions; differing
+micro versions are meant just for bug fixing. On odd minor versions
+the newly added API might still change.
+
+The micro version indicates the origin of the release: even micro
+numbers are only used for released archives; odd micro numbers are
+only used on the Git repository.
+
+HACKING
+-------------------------------------------------------------------------------
+
+If you want to hack on and improve Clutter check the HACKING file for
+general implementation guidelines, and the HACKING.backends for
+backend-specific implementation issues.
+
+The CODING_STYLE file contains the rules for writing code conformant to the
+style guidelines used throughout Clutter. Remember: the coding style is
+mandatory; patches not conforming to it will be rejected by default.
+
+BUGS
+-------------------------------------------------------------------------------
+
+Bugs should be reported to the Clutter Bugzilla at:
+
+ http://bugzilla.clutter-project.org/enter_bug.cgi?product=clutter
+
+You will need a Bugzilla account.
+
+In the report you should include:
+
+ • what system you're running Clutter on;
+ • which version of Clutter you are using;
+ • which version of GLib and OpenGL (or OpenGL ES) you are using;
+ • which video card and which drivers you are using, including output of
+ glxinfo and xdpyinfo (if applicable);
+ • how to reproduce the bug.
+
+If you cannot reproduce the bug with one of the tests that come with Clutter
+source code, you should include a small test case displaying the bad
+behaviour.
+
+If the bug exposes a crash, the exact text printed out and a stack trace
+obtained using gdb are greatly appreciated.
+
+CONTRIBUTING
+-------------------------------------------------------------------------------
+
+Patches should be submitted using Bugzilla. Patches fixing a bug should be
+attached to the bug report; patches for new features or for fixing bugs not
+yet reported should be attached to a newly opened bug. Patches should always
+be in the unified diff format, using:
+
+ diff -Nuarp clutter.source clutter.patched > clutter-patch.diff
+
+If diffing against the Git repository, you should use:
+
+ git diff > clutter-patch.diff
+
+Or, better: commit locally and use `git format-patch` to generate a patch
+containing authorship details, so that members of the Clutter development
+team can credit your contribution properly.
+
+Another useful tool for interacting with Git and Bugzilla is git-bz(1):
+
+ http://git.fishsoup.net/man/git-bz.html
+
+Which is available here:
+
+ http://git.fishsoup.net/cgit/git-bz/
+
+RELEASE NOTES
+-------------------------------------------------------------------------------
+
+Relevant information for developers with existing Clutter applications
+wanting to port to newer releases (see NEWS for general information on new
+features).
+
+Release Notes for Clutter 1.6
+-------------------------------------------------------------------------------
+
+• The internal copy of JSON-GLib has been removed: Clutter now strictly
+ depends on the installed copy of this library. The --with-json configure
+ switch has been removed.
+
+• The ClutterBehaviour class and its sub-classes have been deprecated; the
+ Clutter API reference contains a migration guide to port code based on
+ behaviours to the implicit animations framework.
+
+• The ClutterTimeoutPool and clutter_frame_source_* API have been deprecated;
+ both API are not integrated in the Clutter main loop, and are not used
+ internally any longer, so they are of relative use.
+
+• It it not necessary any more to provide implementations for the
+ ClutterActor::map() and ClutterActor::unmap() virtual functions, even
+ for composite actors not implementing the ClutterContainer interface.
+
+• ClutterTimeline now guarantees that the ::new-frame signal will be
+ emitted at the beginning of the timeline, as well as guaranteeing that
+ the ::completed signal will be emitted at the end of the timeline.
+
+• ClutterActor will check for the enabled property of ClutterActorMeta
+ instances (actions, constraints and effects), and will not invoke
+ ClutterActorMeta functions on disabled instances. This removes the
+ requirement for checking the property inside the ClutterActorMeta
+ sub-classes.
+
+• ClutterActorBox, ClutterGeometry and ClutterVertex install a progress
+ function for ClutterInterval, allowing the interpolation of properties
+ using them as storage types.
+
+• ClutterColor's clutter_color_from_string() function accepts CSS3 color
+ specifications.
+
+• The previously unused "axes" field in the ClutterButtonEvent,
+ ClutterScrollEvent and ClutterMotionEvent structures is now used on
+ the X11-based backends with XInput support.
+
+• ClutterListModel will honour the filter function when calling
+ clutter_model_get_iter_at_row().
+
+• ClutterClickAction does not use a pointer grab any longer, and uses
+ a capture on the stage instead.
+
+• On all platforms which allow it, ClutterStage will ask the windowing
+ system for an explicit key focus when showing the stage window. This
+ can be disabled using clutter_stage_set_accept_focus().
+
+Release Notes for Cogl 1.6
+-------------------------------------------------------------------------------
+
+• Cogl may internally optimise cogl_read_pixels when only a single
+ pixel is drawn and the entire scene is comprised of solid colour
+ rectangles. Instead of actually rendering the rectangles it will
+ compute the single pixel value in software. This effectively means
+ that Clutter can do software picking without any API changes.
+
+• Internally Cogl now has a GLSL backend as well as the ARBfp and
+ fixed function backends. By default, this backend has the lowest
+ priority but it can be explicitly enabled by setting the
+ COGL_DEBUG environment variable, e.g.:
+
+ export COGL_DEBUG=disable-fixed,disable-arbfp
+
+ for builds of Clutter with debug support enabled.
+
+• Cogl will internally now cache generated ARBfp programs so that it
+ should be able to reuse a previous program even if it was generated
+ for an unrelated CoglMaterial. This makes using one-shot materials
+ less expensive than before although it is still not recommended.
+
+Release Notes for Clutter 1.4
+-------------------------------------------------------------------------------
+
+• ClutterLayoutManager sub-classes overriding the set_container() virtual
+ function should chain up to the parent class's implementation.
+
+• The ClutterTexture:filename property is now readable, as well as writable;
+ this allows querying the Texture for the filename storing the image data.
+ The value will be unset when using the set_from_*_data() family of
+ functions.
+
+• If both the :sync-size and the :keep-aspect-ratio properties of a
+ ClutterTexture are set to TRUE, then the texture actor will update its
+ ClutterActor:request-mode property depending on the orientation of the
+ image data - height-for-width for landscape, and width-for-height for
+ portrait. Square image data will default to height-for-width, like all
+ actors. You can still explicitly override the :request-mode value, or
+ you can unset the :sync-size property to control the size yourself.
+
+• All the key symbol macros have been renamed from CLUTTER_* to
+ CLUTTER_KEY_*. The old names are still available inside the
+ clutter-keysyms-compat.h header, which is included by clutter-keysyms.h
+ unless CLUTTER_DISABLE_DEPRECATED is defined.
+
+• The internal copy of json-glib is now deprecated. Building Clutter will
+ default to the system copy and requires an explicit --with-json=internal
+ to override the check.
+
+Release Notes for Clutter 1.2
+-------------------------------------------------------------------------------
+
+* ClutterStageManager is now publicly available and documented API.
+
+* Clutter now depends on the system copy of JSON-GLib, and will fall
+ back to the internal copy only if JSON-GLib is not installed.
+
+* ClutterActor:opacity is now defined using GParamSpecUint instead of
+ GParamSpecUchar; the same interval of [ 0, 255 ] applies, and GValue
+ has internal transformation functions for converting between G_TYPE_UINT
+ and G_TYPE_UCHAR, so this change should be fully transparent to the
+ user of the code.
+
+* On X11 Clutter will emulate XKB's detectable key auto-repeat; this means
+ that when holding down a key, Clutter will emit multiple CLUTTER_KEY_PRESS
+ events and a single CLUTTER_KEY_RELEASE event instead of a list of
+ CLUTTER_KEY_PRESS and CLUTTER_KEY_RELEASE pairs.
+
+* On X11 and Win32 the default Stage is created when
+ clutter_stage_get_default() is called for the first time, and not as
+ part of the stage initialization.
+
+Cogl API changes for Clutter 1.2
+-------------------------------------------------------------------------------
+
+* cogl_viewport is now deprecated in favour of cogl_set_viewport which
+ accepts a viewport offset.
+
+* cogl_clip_push() is now deprecated and new code should use
+ cogl_clip_push_rectangle() instead. The old API wasn't consistent with other
+ Cogl APIs that specify model space rectangles using (x0,y0)(x1,y1) pairs.
+
+* cogl_clip_push_window_rect() is now deprecated and new code should use
+ cogl_clip_push_window_rectangle(). The old API shouldn't have been defined
+ to take floats and the abbreviation wasn't consistent with other Cogl API.
+
+* cogl_clip_stack_save() and cogl_clip_stack_restore() are deprecated, as
+ the functionality is redundant now that offscreen draw buffers own their
+ clip state and switching to/from offscreen rendering will automatically
+ save and restore the clip state.
+
+* cogl_material_copy() was added. It is advised that developers use
+ this instead of cogl_material_new() when creating a material that is in some
+ way derived from another. This will allow Cogl to track material
+ ancestries/similarities and reduce the cost of GPU state changes.
+
+* cogl_push_draw_buffer, cogl_set_draw_buffer and cogl_pop_draw_buffer are now
+ deprecated and new code should use the cogl_framebuffer_* API instead.
+ Code that previously did:
+ cogl_push_draw_buffer ();
+ cogl_set_draw_buffer (COGL_OFFSCREEN_BUFFER, buffer);
+ /* draw */
+ cogl_pop_draw_buffer ();
+ can now be re-written as:
+ cogl_push_framebuffer (buffer);
+ /* draw */
+ cogl_pop_framebuffer ();
+
+* All cogl_<type>_ref() and cogl_<type>_unref() functions have been
+ deprecated, and superceded by cogl_handle_ref() and cogl_handle_unref()
+ respectively.
+
+* The cogl_check_extension() function has been deprecated. This function
+ was never meant to be public, since it depends on calling glGetString()
+ before its invocation. Users of this function can be replaced by the
+ equivalent code:
+
+ gl_ext = glGetString (GL_EXTENSIONS);
+ - has_ext = cogl_check_extension (ext_name, gl_ext);
+ + has_ext = strstr (gl_ext, ext_name) != NULL ? TRUE : FALSE;
+
+Release Notes for Clutter 1.0
+-------------------------------------------------------------------------------
+
+* The clutter_actor_set_shader_param() function now takes a
+ GValue, which can be set using the clutter_value_set_shader()
+ family of functions. The floating point wrapper has been
+ rename clutter_actor_set_shader_param_float() to match the newly
+ added clutter_actor_set_shader_param_int().
+
+* The Pango renderer API has been exposed as public API, after
+ a full rename from PangoClutter to CoglPango, to avoid namespace
+ collisions with upstream Pango. The Pango font map, renderer and
+ glyph cache can be used by third party code and depend only on
+ COGL.
+
+* Both Clutter and COGL only allow including <clutter/clutter.h>
+ and <cogl/cogl.h> directly, respectively. This allows avoiding
+ breaking API every time a type definition is moved across
+ headers, and improves the reliability of third party code against
+ internal refactorings.
+
+* COGL has an internal Color type, used to store a color definition
+ that can be efficiently used with the least amount of conversions
+ by both the GL and GLES implementations. The COGL API has been
+ changed to drop the usage of ClutterColor in favour of CoglColor.
+
+* The fixed point API implementation Clutter uses internally has been
+ moved from the Clutter namespace to the COGL one.
+
+* ClutterLabel and ClutterEntry have been removed from the API, as
+ both have been superceded by the ClutterText actor.
+
+* ClutterCloneTexture has been removed from the API; in its place,
+ there is a generic ClutterClone actor which allows to "clone"
+ any existing actors -- even composite ones -- without using
+ frame buffer objects (FBOs).
+
+* The ClutterEffectTemplate and clutter_effect_* functions have been
+ superceded by ClutterAnimation and thus removed from the public API.
+
+* The ClutterBehaviourBspline has been superceded by the usage of
+ ClutterPath inside ClutterBehaviourPath, and thus removed from the
+ public API.
+
+* ClutterColor API has received a much needed review to increase its
+ consistency. This has led to the following changes:
+
+ - clutter_color_parse() has been renamed to clutter_color_from_string()
+ and the order of the arguments has been changed
+
+ - the factor argument of clutter_color_shade() has been swapped with
+ the return location for the new color
+
+ - the fixed point entry points have been removed
+
+ - clutter_color_from_hls() and clutter_color_to_hls() do not
+ normalize the values in the [ 0, 255 ] interval but use the
+ correct HLS intervals:
+
+ Hue: [ 0, 360 )
+ Luminance: [ 0, 1 ]
+ Saturation: [ 0, 1 ]
+
+* The ClutterFixed symbols have been completely removed: fixed-point
+ public entry points now take a CoglFixed.
+
+* The -x and -u API have been removed. All the pixel-based API now
+ takes a float to allow sub-pixel precision; this is true also for
+ properties. WARNING: functions with variadic arguments (like
+ g_object_set(), g_object_get() and clutter_actor_animate()) do not
+ behave very well when dealing with integers instead of expected
+ floating point values, and vice versa. On 32bit machines it will
+ most likely lead to a crash. So:
+
+ g_object_set (actor, "width", 100, NULL);
+
+ is incorrect, and should be changed in:
+
+ g_object_set (actor, "width", 100.0, NULL);
+
+* Composite actors that do not implement the Container interface
+ should implement the following virtual functions:
+
+ - void map (ClutterActor*)
+ - void unmap (ClutterActor*)
+
+ and chain up to the parent's implementation after calling
+ clutter_actor_map() or clutter_actor_unmap() on their children.
+
+* Actors implementing the Container interface that have private
+ children that are not meant to be added/removed through the
+ Container API should implement the:
+
+ - void foreach_with_internals (ClutterContainer*,
+ ClutterCallback,
+ gpointer);
+
+ virtual function.
+
+* Actors that perform direct transformations using the COGL API inside
+ their paint() implementation should override the apply_transform()
+ virtual function instead. Implementations of the apply_transform()
+ vfunc must chain up to the implementation of the parent class.
+
+* The ClutterUnit type and the CLUTTER_UNITS_* conversion macros have
+ been removed: all Actors are now using sub-pixel precision directly
+ throughout the API. The new ClutterUnits type has been added as a
+ generic opaque storage for logical distance values.
+
+* Timelines are now fully time-based: all the frame-related properties
+ and methods have been removed. ClutterTimeline::new-frame will provide
+ the elapsed milliseconds since the beginning of the Timeline, instead
+ of the current frame number. The clutter_timeline_new() constructor
+ takes the duration of the timeline in milliseconds, and thus it replaces
+ the clutter_timeline_new_for_duration() variant.
+
+Cogl API changes for Clutter 1.0
+-------------------------------------------------------------------------------
+
+* All drawing functions now use a source material to determine how geometry is
+ filled. The source material is set via cogl_set_source. Or the convenience
+ functions cogl_set_source_color and cogl_set_source_texture.
+
+ "drawing functions" include: cogl_rectangle, cogl_texture_rectangle,
+ cogl_texture_multiple_rectangles, cogl_texture_polygon (though the
+ cogl_texture_* funcs have been renamed; see below for details),
+ cogl_path_fill/stroke and cogl_vertex_buffer_draw*.
+
+ cogl_texture_rectangle, cogl_texture_multiple_rectangles and
+ cogl_texture_polygon no longer take a texture handle; instead the current
+ source material is referenced. The functions have also been renamed to:
+ cogl_rectangle_with_texture_coords, cogl_rectangles_with_texture_coords
+ and cogl_polygon respectively.
+
+ Most code that previously did:
+ cogl_texture_rectangle (tex_handle, x, y,...);
+ needs to be changed to now do:
+ cogl_set_source_texture (tex_handle);
+ cogl_rectangle_with_texture_coords (x, y,....);
+
+ In the less likely case where you were blending your source texture with a
+ color like:
+ cogl_set_source_color4ub (r,g,b,a); /* (where r,g,b,a isn't just white) */
+ cogl_texture_rectangle (tex_handle, x, y,...);
+ you will need your own material to do that:
+ material = cogl_material_new ();
+ cogl_material_set_color4ub (r,g,b,a);
+ cogl_material_set_layer (material, 0, tex_handle));
+ cogl_set_source_material (material);
+
+ Code that uses the texture coordinates, 0, 0, 1, 1 don't need to use
+ cogl_rectangle_with_texture_coords since these are the coordinates that
+ cogl_rectangle will use.
+
+ For cogl_texture_polygon; as well as dropping the texture handle, the
+ n_vertices and vertices arguments were transposed for consistency. So
+ code previously written as:
+ cogl_texture_polygon (tex_handle, 3, verts, TRUE);
+ need to be written as:
+ cogl_set_source_texture (tex_handle);
+ cogl_polygon (verts, 3, TRUE);
+
+* The arguments to cogl_rectangle, cogl_path_rectangle and
+ cogl_path_round_rectangle have been changed - for consistency - from
+ x, y, width, height, to x1, y1, x2, y2.
+
+* A CoglMatrix type and utility API has been added; this is currently used to
+ support describing texture matrices.
+
+* cogl_alpha_func has been removed, since this is now controlled using the
+ material API via cogl_material_set_alpha_test_function ()
+
+* A Cogl Vertex Buffer API has been added that allows you to efficiently
+ manage arrays of vertex attributes in buffers that may be stored on
+ the GPU. These allow you to avoid the costs of repeatedy validating
+ vertex data and mapping it into the GPU.
+
+* cogl_scale now supports scaling on the z axis
+
+* cogl_clip_set* and cogl_clip_unset have been renamed to cogl_clip_push and
+ cogl_clip_pop respectively so they self document their stacking semantics.
+
+* cogl_paint_init was renamed to cogl_clear and no longer disables lighting and
+ fogging. cogl_clear also now takes a mask of the auxiliary buffers you want
+ to clear so you can avoid redundant clears of buffers you aren't using.
+
+* cogl_fog_set was renamed to cogl_set_fog and it now takes a mode argument
+ giving control over the fogging blend factor equation, so that the
+ density argument isn't just ignored. A cogl_disable_fog function was
+ also added.
+
+* cogl_get_*_matrix were changed to use the CoglMatrix type instead of
+ GLfloat m[16] arrays.
+
+* cogl_offscreen_blit_region, cogl_offscreen_blit were removed since they were
+ only implemnted for GL, not GLES, and it was assumed no one was using them.
+
+* cogl_offscreen_new_multisample was removed since it only ever returned
+ COGL_INVALID_HANDLE so it wasn't usefull.
+
+* The COGL_MASK_BUFFER type was removed, since there should be nicer ways of
+ exposing color mask if anyone wants it later. It was assumed that no one was
+ using this currently.
+
+* COGLenum, COGLint and COGLuint which were simply typedefs for
+ GL{enum,int,uint} have been removed from the API and replaced with
+ specialised enum typedefs, int and unsigned int. These were causing
+ problems for generating bindings and also considered poor style.
+
+* The cogl texture filter defines CGL_NEAREST and CGL_LINEAR etc are now
+ replaced by a namespaced typedef 'CoglTextureFilter' so they should be
+ replaced with COGL_TEXTURE_FILTER_NEAREST and COGL_TEXTURE_FILTER_LINEAR etc.
+
+* The shader type defines CGL_VERTEX_SHADER and CGL_FRAGMENT_SHADER are handled
+ by a CoglShaderType typedef and should be replaced with
+ COGL_SHADER_TYPE_VERTEX and COGL_SHADER_TYPE_FRAGMENT.
+
+* cogl_shader_get_parameteriv has been replaced by cogl_shader_get_type and
+ cogl_shader_is_compiled. More getters can be added later if desired.
+
+* cogl_enable_depth_test has been renamed to cogl_set_depth_test_enabled and
+ a corresponding cogl_get_depth_test_enabled function has been added.
+
+Release Notes for Clutter 0.8
+-------------------------------------------------------------------------------
+
+* The COGL GL wrapper API has been completely overhauled and now
+ contains many new features including new greatly improved texture
+ abstractions (slicing, mipmapping, deformations etc, greatly
+ simplifying ClutterTexture), image loading and abstraction, path
+ based primitive drawing, clipping, and improved FBO and shader
+ support. It is now also fully documented.
+
+* GL Texture Rectangle ext is no longer used, the regular 2D NPOTS
+ extension is preffered instead but not required.
+
+* Clutter now has basic suppport for multiple input devices assuming
+ the backend supports it (currently X11 based via XInput and Fruity
+ backends). New API supporting this includes
+ clutter_event_get_device_id, clutter_get_input_device_for_id,
+ clutter_grab_pointer_for_device & clutter_ungrab_pointer_for_device.
+
+ XInput support needs to be explicitly enabled at runtime by calling
+ clutter_x11_enable_xinput () before clutter_init. clutter_x11_has_xinput ()
+ can then be called after to check if XInput extension present and use-able.
+
+* The functions that return the transformed position of an actor have
+ been renamed to be more explicit about it:
+
+ clutter_actor_get_abs_position - clutter_actor_get_transformed_position
+ clutter_actor_get_abs_size - clutter_actor_get_transformed_size
+
+ Their behaviour has not been changed.
+
+* To increase portability, Clutter does not strictly depend on
+ GdkPixbuf anymore; this means that you will have to include
+ <gdk-pixbuf/gdk-pixbuf.h> yourself if you are operating with
+ GdkPixbuf objects and not including that header. The GdkPixbuf-based
+ API has been removed from Clutter core:
+
+ clutter_texture_new_from_pixbuf
+ clutter_texture_set_pixbuf
+ clutter_texture_get_pixbuf
+
+ are all deprecated functions. It is still possible to load a GdkPixbuf
+ into a ClutterTexture with this sample code:
+
+ clutter_texture_set_from_rgb_data (texture,
+ gdk_pixbuf_get_pixels (pixbuf),
+ gdk_pixbuf_get_has_alpha (pixbuf),
+ gdk_pixbuf_get_width (pixbuf),
+ gdk_pixbuf_get_height (pixbuf),
+ gdk_pixbuf_get_rowstride (pixbuf),
+ gdk_pixbuf_get_has_alpha (pixbuf) ? 4
+ : 3,
+ 0,
+ &error);
+
+ ClutterTexture also now has a new filename property and
+ clutter_texture_new_from_file which is intended as an alternate to
+ common previous GdkPixbuf primary usage (i.e loading images from
+ disk).
+
+ To read texture data back into a pixbuf or system memory use a combination
+ of clutter_texture_get_cogl_texture & cogl_texture_get_data.
+
+ The clutter-gtk integration library has API for using GdkPixbuf with
+ ClutterTextures (among others).
+
+ ClutterTexture now supports a keep-aspect property which is set to FALSE
+ by default.
+
+* clutter_texture_from_actor will now reparent source actors if they
+ are not parented. This behaviour may change in future releases.
+ There are known not yet fixed issues with source actors that set
+ depth or use clipping.
+
+* The size negotiation API has been completely changed in order to allow
+ the creation of non-fixed layout managers. These functions have been
+ removed:
+
+ clutter_actor_request_coords()
+ clutter_actor_query_coords()
+
+ from the ClutterActor API, as well as their virtual functions inside
+ the ClutterActorClass. The size of an actor is now split into two
+ different concepts: the preferred size (width and height
+ separatedly) and the size that has been allocated by the container
+ to which that actor belongs. Clutter still defaults to the fixed
+ layout management (i.e ClutterGroup) of the actors, but supports
+ fluid layout managers written using the new API.
+
+ Composite actors (actors with 'private' children not implementing the
+ container interface) now need to implement an allocate method here pass
+ an allocation to any composite children.
+
+* Clutter now depends on PangoCairo for the font rendering. The PangoClutter
+ API is still considered semi-private and no guarantees are made on its
+ stability.
+
+* ClutterShader API has been slightly changed: the ClutterStage:bound
+ property, clutter_shader_bind() and clutter_shader_is_bound() have
+ been renamed to :compiled, clutter_shader_compile() and
+ clutter_shader_is_compiled(), respectively. The previously semi-private
+ clutter_shader_release_all() function is now not exported anymore.
+
+* ClutterStage is not an abstract type anymore: it can be instantiated
+ using clutter_stage_new() and it can be properly subclassed. If the
+ backend supports multiple stages, every stage will be a new window,
+ whose lifetime will have to be managed by the developer. Clutter will
+ still create the default stage, and guarantees that every call to
+ clutter_stage_get_default() will return exactly the same pointer.
+
+* Actors now have a new 'show-on-set-parent' property set to TRUE by
+ default. With this property set to TRUE, actors will automatically
+ have clutter_actor_show() called on them when a parent is set (i.e
+ added to a container).
+
+* Clutter now features support for multiple stages assuming supported
+ by the backend. See test-multistage.c for example of usage. This
+ does not change the automatic creation of the default stage.
+ A single GL context is used across all stages meaning GL resources
+ are shared.
+
+* There is now an experimental native iPod Touch/iPhone UIKit backend
+ named 'fruity'.
+
+* There is now an experimental native Win32 WGL backend.
+
+* COGL (and therefor Clutter) now optionally features initial support for
+ OpenGL ES 2.0. It features support for shaders.
+
+* Some more focused timeline unit tests have been added and some tweaks to
+ timeline semantics were made; E.g. For a 10 frame timeline here are some
+ points about the semantics:
+ - When you create a timeline it starts with current_frame_num == 0
+ - After starting a timeline, the first timeout is for current_frame_num == 1
+ (Notably it isn't 0 since there is a delay before the first timeout signals
+ so re-asserting the starting frame (0) wouldn't make sense.)
+ - For a non looping timeline the last timeout would be for
+ current_frame_num == 10
+ - For a looping timeline the timeout for current_frame_num == 10 would be
+ followed by a timeout for current_frame_num == 1 and frame 0 is considered
+ == frame 10.
+ - Asking for a timeline of N frames might better be described as asking for
+ a timeline of _length_ N.
+
+* The behaviour of clutter_actor_get_opacity() has been slightly changed;
+ instead of returning the composited opacity of the entire parents chain
+ of an actor, clutter_actor_get_opacity() does what you mean, and returns
+ the opacity set with clutter_actor_set_opacity(). The composited
+ opacity value is now returned by clutter_actor_get_paint_opacity().
+
+* Until 0.6, clutter_label_get_color() would have returned a ClutterColor
+ with the alpha component equal to the composited opacity of the label.
+ Now, clutter_label_get_color() returns a copy of the exact color set
+ with clutter_label_set_color().
+
+* The ClutterEntry actor will automatically handle key events inside
+ a key-press-event handler. This deprecates the usage of
+ clutter_entry_handle_key_event() to update the contents of the
+ entry using the ClutterKeyEvent.
+
+* The Clutter X11 and GLX backends feature support for wrapping external
+ X Drawables (such as windows as pixmaps) via the 'texture_from_pixmap' GLX
+ extension if available and fallback to slower XGetImage copies if not.
+
+* ClutterContainer can have per child custom properties via ClutterChildMeta.
+
+Release Notes for Clutter 0.6
+-------------------------------------------------------------------------------
+
+* Now that every actor has events, the class signal handlers have been
+ removed from ClutterStageClass and moved into ClutterActorClass.
+
+* The CLUTTER_2BUTTON_PRESS and CLUTTER_3BUTTON_PRESS event types have been
+ removed in favour of the ClutterButtonEvent:click_count counter
+
+* X11 related called for glx and eglx backends are now shared and moved into
+ a clutter_x11 prefix.
+
+* Scaling with gravity functionality was replaced by more generic and
+ powerful anchor point.
+
+* The ClutterLayout interface, the ClutterBox and its implementations have
+ been moved outside Clutter core.
+
+* The Effects API has been simplified, and it only requires the final value
+ of the effect instead of both the start and end value.
+
+* The per-axis rotation API has been deprecated in favour of a single
+ pair of accessors, clutter_actor_set_rotation() and
+ clutter_actor_get_rotation().
+
+* Every actor sub-class that is overriding the ClutterActor::request_coords()
+ virtual function *must* chain up to the parent's implementation in order
+ to store the bounding box inside the ClutterActor private data.
+
+* It is now impossible to call clutter_actor_destroy() on the stage. Backends
+ will have to unset the CLUTTER_ACTOR_IS_TOPLEVEL private flag to actually
+ destroy the stage.
+
+* The default value of the ClutterLabel:wrap property has been changed from
+ TRUE to FALSE.
+
+* All the behaviours properties have been renamed to match the $PROPERTY-start
+ and $PROPERTY-end convention.
+
+* The clutter_group_add() function has been "undeprecated" and reimplemented
+ as a commodity macro; a clutter_stage_add() commodity macro has also been
+ added. Both macros just safely wrap clutter_container_add_actor().
+
+* The ClutterContainer::find_child_by_id() virtual function has been removed;
+ Clutter keeps track of every actor, so there's no need to recurse into
+ containers anymore.
+
+* The unused ClutterActor::set_depth() and ClutterActor::get_depth() virtual
+ functions have been removed.
+
+* It is now possible to roundtrip the string created by
+ clutter_color_to_string() to clutter_color_parse().
+
+* The amount of motion events is now being throttled using the default frame
+ rate setting as the base value to compute the default and maximum frequency
+ of motion events to be delivered to every actor.
+
+* ClutterAngle usage has been removed from the public API: it is an internal
+ optimization, which can be used for faster angle computations; users of
+ ClutterAngle now take a fixed point number in form of a ClutterFixed.
+
+* ClutterGravity usage when scaling has been superceded by the anchor point.
+
+* The precision of the clutter_sqrti() algorithm has been improved for small
+ values.
+
+* ClutterBehaviourScale constructor, scale properties and accessors have
+ been changed to accomodate the scaling factors on both the X and Y axis,
+ matching the clutter_actor_set_scale() function. This also changed the
+ clutter_effect_scale() function, which now accepts the final scale
+ factor on both the X and Y axis. The gravity property has also been
+ removed, as it behaved incorrectly with regards to the anchor point. When
+ scaling an actor using a BehaviourScale, the anchor point should be set
+ before applying the behaviour (remember to adjust the positioning as
+ well by factoring in the anchor point).
+
+* The clutter_do_event() is now public; it can be used to feed an event to
+ Clutter and let it generate the capture-bubble signal emissions; it should
+ not be used by applications.
+
+* In the X11-based backends, the DestroyNotify event is not propagated to
+ Clutter core if the stage is using a foreign window.
+
+* To avoid method name collisions between ClutterActor and ClutterEntry
+ in high-level languages, the clutter_entry_set_position() and
+ clutter_entry_get_position() functions have been renamed to
+ clutter_entry_set_cursor_position() and clutter_entry_get_cursor_position()
+ respectively.
+
+Release Notes for Clutter 0.4.0
+-------------------------------------------------------------------------------
+
+* clutter_actor_show_all does not recurse for groups at least (this is to
+ match the original group_show_all behaviour). This is like 0.3 but was
+ never noted.
+
+* ClutterBox API has changed: clutter_box_pack_start() and
+ clutter_box_pack_end() have been removed in favour of the clutter_box_pack()
+ API.
+
+* Both clutter_threads_enter() and clutter_threads_leave() have been
+ removed from the API, as they just created confusion and the wrong
+ idea that Clutter is either thread-safe or thread-aware. Full
+ thread-awareness is arriving in the next revision (see bug #429).
+
+* The ClutterBehaviourRotate and ClutterBehaviourEllsipse APIs have been
+ overhauled.
+
+Release Notes for Clutter 0.3.1
+-------------------------------------------------------------------------------
+
+* clutter_actor_apply_transform_to_point() parameters changed to use
+ ClutterVertices.
+
+* New 'Native API' backend expects EGL implementation to provide a
+ CreateNativeWindow() API call.
+
+* Exisiting X11 based egl backend public API calls now prefixed eglx.
+
+Release Notes for Clutter 0.3
+-------------------------------------------------------------------------------
+
+* ClutterTexture changes:
+ + clutter_texture_set_pixbuf() now takes a GError paremeter.
+ + clutter_texture_upload_data has been split into two new and
+ more functional versions; clutter_texture_set_from_rgb_data(),
+ clutter_texture_set_from_yuv_data().
+
+* The GLX specific API has been moved to the GLX backend code and
+ it's now under the ClutterGlx namespace.
+
+* The priority of the various users of the GLib main loop has been
+ reviewed and changed were necessary. Every paint is queued with a
+ priority of G_PRIORITY_DEFAULT + 10; timelines are allocated with
+ a G_PRIORITY_DEFAULT + 30 priority; events are processed with a
+ G_PRIORITY_DEFAULT priority. This ensures that events are processed
+ before the paints take place.
+
+* The ClutterActor::allocate_coords() has been renamed to
+ ClutterActor::query_coords(), in order to clarify its usage.
+
+* Actors overriding ClutterActor::request_coords() and
+ ClutterActor::query_coords() must convert sizes obtained from the
+ public API from pixels to ClutterUnits, using the conversion
+ macros found in clutter-units.h. The conversion will be necessary
+ until the public API will switch over to returning the generic
+ units too.
+
+* Users of Intel video cards should find that disabling sync-to-vblank
+ is no longer necessary. In case Clutter applications take really
+ long times for redrawing and appear stuck and unresponsive, the
+ sync-to-vblank feature might still be the culprit; in that case, use
+ "export CLUTTER_VBLANK=none" to disable it and file a bug reporting the
+ video card model, the driver version and the X server version.
+
+* ClutterTimeline objects now share the same timeout pool (see the
+ ClutterTimeoutPool API). This might cause problems with heavily
+ threaded libraries without integration with the GLib main loop.
+ If an application experiences bad behaviours during animations
+ use "export CLUTTER_TIMELINE=no-pool" to disable the timeout pool.
+
+* clutter_color_parse() now handles color definitions with alpha. Alpha
+ will default to fully Opaque rather than fully transparent if not specified.
+
+* The Clutter examples/ directory has been removed and replaced with a
+ tests/ directory.
+
+* The ClutterEvent API has been changed, and specific functions have been
+ removed in favour of event-agnostic ones.
+
+* The ClutterStage::input-event signal has been removed. All the events now
+ emit the ClutterStage::event and ClutterStage::event-after signals, for
+ generic event handling.
+
+* Runtime options now dependant on backend.
+
+* ClutterGroup API to add, remove and list children has been deprecated in
+ favour of ClutterContainer API. The ClutterGroup::add and
+ ClutterGroup::remove signals have been deprecated:
+ ClutterContainer::actor-added and ClutterContainer::actor-removed should
+ be used instead.