]> gitweb.factorcode.org Git - factor.git/commitdiff
add clutter (clutter, cogl and json) and clutter-gtk bindings
authorAnton Gorenko <ex.rzrjck@gmail.com>
Sun, 25 Jul 2010 16:20:43 +0000 (22:20 +0600)
committerAnton Gorenko <ex.rzrjck@gmail.com>
Sun, 25 Jul 2010 16:20:43 +0000 (22:20 +0600)
15 files changed:
extra/clutter/Clutter-1.0.gir [new file with mode: 0644]
extra/clutter/authors.txt [new file with mode: 0644]
extra/clutter/clutter.factor [new file with mode: 0644]
extra/clutter/cogl/Cogl-1.0.gir [new file with mode: 0644]
extra/clutter/cogl/cogl.factor [new file with mode: 0644]
extra/clutter/cogl/ffi/ffi.factor [new file with mode: 0644]
extra/clutter/ffi/ffi.factor [new file with mode: 0644]
extra/clutter/gtk/GtkClutter-0.10.gir [new file with mode: 0644]
extra/clutter/gtk/ffi/ffi.factor [new file with mode: 0644]
extra/clutter/gtk/gtk.factor [new file with mode: 0644]
extra/clutter/json/ClutterJson-1.0.gir [new file with mode: 0644]
extra/clutter/json/ffi/ffi.factor [new file with mode: 0644]
extra/clutter/json/json.factor [new file with mode: 0644]
extra/clutter/summary.txt [new file with mode: 0644]
extra/clutter/tags.txt [new file with mode: 0755]

diff --git a/extra/clutter/Clutter-1.0.gir b/extra/clutter/Clutter-1.0.gir
new file mode 100644 (file)
index 0000000..fd67f1e
--- /dev/null
@@ -0,0 +1,27859 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="ClutterJson" version="1.0"/>
+  <include name="Cogl" version="1.0"/>
+  <include name="GL" version="1.0"/>
+  <include name="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Pango" version="1.0"/>
+  <include name="PangoCairo" version="1.0"/>
+  <include name="PangoFT2" version="1.0"/>
+  <include name="cairo" version="1.0"/>
+  <include name="fontconfig" version="2.0"/>
+  <include name="freetype2" version="2.0"/>
+  <package name="gobject-2.0"/>
+  <package name="pango"/>
+  <package name="pangocairo"/>
+  <c:include name="clutter/clutter.h"/>
+  <namespace name="Clutter"
+             version="1.0"
+             shared-library="libclutter-glx-1.0.so.0"
+             c:prefix="Clutter">
+    <constant name="0" value="48">
+      <type name="int"/>
+    </constant>
+    <constant name="1" value="49">
+      <type name="int"/>
+    </constant>
+    <constant name="2" value="50">
+      <type name="int"/>
+    </constant>
+    <constant name="3" value="51">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_AltCursor" value="64784">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Attn" value="64782">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_BackTab" value="64773">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_ChangeScreen" value="64793">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Copy" value="64789">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_CursorBlink" value="64783">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_CursorSelect" value="64796">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_DeleteWord" value="64794">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Duplicate" value="64769">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Enter" value="64798">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_EraseEOF" value="64774">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_EraseInput" value="64775">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_ExSelect" value="64795">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_FieldMark" value="64770">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Ident" value="64787">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Jump" value="64786">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_KeyClick" value="64785">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Left2" value="64772">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_PA1" value="64778">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_PA2" value="64779">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_PA3" value="64780">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Play" value="64790">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_PrintScreen" value="64797">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Quit" value="64777">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Record" value="64792">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Reset" value="64776">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Right2" value="64771">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Rule" value="64788">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Setup" value="64791">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Test" value="64781">
+      <type name="int"/>
+    </constant>
+    <constant name="4" value="52">
+      <type name="int"/>
+    </constant>
+    <constant name="5" value="53">
+      <type name="int"/>
+    </constant>
+    <constant name="6" value="54">
+      <type name="int"/>
+    </constant>
+    <constant name="7" value="55">
+      <type name="int"/>
+    </constant>
+    <constant name="8" value="56">
+      <type name="int"/>
+    </constant>
+    <constant name="9" value="57">
+      <type name="int"/>
+    </constant>
+    <constant name="A" value="65">
+      <type name="int"/>
+    </constant>
+    <constant name="AE" value="198">
+      <type name="int"/>
+    </constant>
+    <constant name="Aacute" value="193">
+      <type name="int"/>
+    </constant>
+    <constant name="Abelowdot" value="16785056">
+      <type name="int"/>
+    </constant>
+    <constant name="Abreve" value="451">
+      <type name="int"/>
+    </constant>
+    <constant name="Abreveacute" value="16785070">
+      <type name="int"/>
+    </constant>
+    <constant name="Abrevebelowdot" value="16785078">
+      <type name="int"/>
+    </constant>
+    <constant name="Abrevegrave" value="16785072">
+      <type name="int"/>
+    </constant>
+    <constant name="Abrevehook" value="16785074">
+      <type name="int"/>
+    </constant>
+    <constant name="Abrevetilde" value="16785076">
+      <type name="int"/>
+    </constant>
+    <constant name="AccessX_Enable" value="65136">
+      <type name="int"/>
+    </constant>
+    <constant name="AccessX_Feedback_Enable" value="65137">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflex" value="194">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflexacute" value="16785060">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflexbelowdot" value="16785068">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflexgrave" value="16785062">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflexhook" value="16785064">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflextilde" value="16785066">
+      <type name="int"/>
+    </constant>
+    <class name="Actor"
+           c:type="ClutterActor"
+           doc="Base class for actors."
+           parent="GObject.InitiallyUnowned"
+           abstract="1"
+           glib:type-name="ClutterActor"
+           glib:get-type="clutter_actor_get_type"
+           glib:type-struct="ActorClass">
+      <implements name="Scriptable"/>
+      <virtual-method name="show_all" invoker="show_all">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="hide_all" invoker="hide_all">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="map"
+                      invoker="map"
+                      doc="The ::map virtual functon must be overridden in order to call
+clutter_actor_map() on any child actors if the actor is not a
+#ClutterContainer.  When overriding, it is mandatory to chain up
+to the parent implementation."
+                      version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unmap"
+                      invoker="unmap"
+                      doc="The ::unmap virtual functon must be overridden in order to call
+clutter_actor_unmap() on any child actors if the actor is not a
+#ClutterContainer.  When overriding, it is mandatory to chain up
+to the parent implementation."
+                      version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_preferred_width" invoker="get_preferred_width">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_height" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_preferred_height"
+                      invoker="get_preferred_height">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_width" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="allocate" invoker="allocate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="box" transfer-ownership="none">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="apply_transform">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="matrix" transfer-ownership="none">
+            <type name="Cogl.Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_flags"
+              c:identifier="clutter_actor_set_flags"
+              doc="Sets @flags on @self
+This function will emit notifications for the changed properties"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="ActorFlags" c:type="ClutterActorFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_flags"
+              c:identifier="clutter_actor_unset_flags"
+              doc="Unsets @flags on @self
+This function will emit notifications for the changed properties"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="ActorFlags" c:type="ClutterActorFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_flags"
+              c:identifier="clutter_actor_get_flags"
+              doc="Retrieves the flags set on @self"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="ActorFlags" c:type="ClutterActorFlags"/>
+        </return-value>
+      </method>
+      <method name="show"
+              c:identifier="clutter_actor_show"
+              doc="Flags an actor to be displayed. An actor that isn&apos;t shown will not
+be rendered on the stage.
+Actors are visible by default.
+If this function is called on an actor without a parent, the
+#ClutterActor:show-on-set-parent will be set to %TRUE as a side
+effect.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="show_all"
+              c:identifier="clutter_actor_show_all"
+              doc="Calls clutter_actor_show() on all children of an actor (if any)."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="hide"
+              c:identifier="clutter_actor_hide"
+              doc="Flags an actor to be hidden. A hidden actor will not be
+rendered on the stage.
+Actors are visible by default.
+If this function is called on an actor without a parent, the
+#ClutterActor:show-on-set-parent property will be set to %FALSE
+as a side-effect.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="hide_all"
+              c:identifier="clutter_actor_hide_all"
+              doc="Calls clutter_actor_hide() on all child actors (if any)."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="realize"
+              c:identifier="clutter_actor_realize"
+              doc="Realization informs the actor that it is attached to a stage. It
+can use this to allocate resources if it wanted to delay allocation
+until it would be rendered. However it is perfectly acceptable for
+an actor to create resources before being realized because Clutter
+only ever has a single rendering context so that actor is free to
+be moved from one stage to another.
+This function does nothing if the actor is already realized.
+Because a realized actor must have realized parent actors, calling
+clutter_actor_realize() will also realize all parents of the actor.
+This function does not realize child actors, except in the special
+case that realizing the stage, when the stage is visible, will
+suddenly map (and thus realize) the children of the stage.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unrealize"
+              c:identifier="clutter_actor_unrealize"
+              doc="Unrealization informs the actor that it may be being destroyed or
+moved to another stage. The actor may want to destroy any
+underlying graphics resources at this point. However it is
+perfectly acceptable for it to retain the resources until the actor
+is destroyed because Clutter only ever uses a single rendering
+context and all of the graphics resources are valid on any stage.
+Because mapped actors must be realized, actors may not be
+unrealized if they are mapped. This function hides the actor to be
+sure it isn&apos;t mapped, an application-visible side effect that you
+may not be expecting.
+This function should not really be in the public API, because
+there isn&apos;t a good reason to call it. ClutterActor will already
+unrealize things for you when it&apos;s important to do so.
+If you were using clutter_actor_unrealize() in a dispose
+implementation, then don&apos;t, just chain up to ClutterActor&apos;s
+dispose.
+If you were using clutter_actor_unrealize() to implement
+unrealizing children of your container, then don&apos;t, ClutterActor
+will already take care of that.
+If you were using clutter_actor_unrealize() to re-realize to
+create your resources in a different way, then use
+_clutter_actor_rerealize() (inside Clutter) or just call your
+code that recreates your resources directly (outside Clutter).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="map"
+              c:identifier="clutter_actor_map"
+              doc="Sets the %CLUTTER_ACTOR_MAPPED flag on the actor and possibly maps
+and realizes its children if they are visible. Does nothing if the
+actor is not visible.
+#ClutterActor::map virtual function in an actor and you need to map
+the children of that actor. It is not necessary to call this
+if you implement #ClutterContainer because the default implementation
+will automatically map children of containers.
+When overriding map, it is mandatory to chain up to the parent
+implementation."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unmap"
+              c:identifier="clutter_actor_unmap"
+              doc="Unsets the %CLUTTER_ACTOR_MAPPED flag on the actor and possibly
+unmaps its children if they were mapped.
+#ClutterActor::unmap virtual function in an actor and you need to
+unmap the children of that actor. It is not necessary to call this
+if you implement #ClutterContainer because the default implementation
+will automatically unmap children of containers.
+When overriding unmap, it is mandatory to chain up to the parent
+implementation."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="paint"
+              c:identifier="clutter_actor_paint"
+              doc="Renders the actor to display.
+This function should not be called directly by applications.
+Call clutter_actor_queue_redraw() to queue paints, instead.
+This function will emit the #ClutterActor::paint signal.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="queue_redraw"
+              c:identifier="clutter_actor_queue_redraw"
+              doc="Queues up a redraw of an actor and any children. The redraw occurs
+once the main loop becomes idle (after the current batch of events
+has been processed, roughly).
+Applications rarely need to call this, as redraws are handled
+automatically by modification functions.
+This function will not do anything if @self is not visible, or
+if the actor is inside an invisible part of the scenegraph.
+Also be aware that painting is a NOP for actors with an opacity of
+0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="queue_relayout"
+              c:identifier="clutter_actor_queue_relayout"
+              doc="Indicates that the actor&apos;s size request or other layout-affecting
+properties may have changed. This function is used inside #ClutterActor
+subclass implementations, not by applications directly.
+Queueing a new layout automatically queues a redraw as well."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="destroy"
+              c:identifier="clutter_actor_destroy"
+              doc="Destroys an actor.  When an actor is destroyed, it will break any
+references it holds to other objects.  If the actor is inside a
+container, the actor will be removed.
+When you destroy a container, its children will be destroyed as well.
+clutter_stage_get_default().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_request_mode"
+              c:identifier="clutter_actor_set_request_mode"
+              doc="Sets the geometry request mode of @self.
+The @mode determines the order for invoking
+clutter_actor_get_preferred_width() and
+clutter_actor_get_preferred_height()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="RequestMode" c:type="ClutterRequestMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_request_mode"
+              c:identifier="clutter_actor_get_request_mode"
+              doc="Retrieves the geometry request mode of @self"
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="RequestMode" c:type="ClutterRequestMode"/>
+        </return-value>
+      </method>
+      <method name="get_preferred_width"
+              c:identifier="clutter_actor_get_preferred_width"
+              doc="Computes the requested minimum and natural widths for an actor,
+optionally depending on the specified height, or if they are
+already computed, returns the cached values.
+An actor may not get its request - depending on the layout
+manager that&apos;s in effect.
+A request should not incorporate the actor&apos;s scale or anchor point;
+those transformations do not affect layout, only rendering."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_height"
+                     transfer-ownership="none"
+                     doc=" or a negative value to indicate that no height is defined">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for minimum width, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the natural width, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preferred_height"
+              c:identifier="clutter_actor_get_preferred_height"
+              doc="Computes the requested minimum and natural heights for an actor,
+or if they are already computed, returns the cached values.
+An actor may not get its request - depending on the layout
+manager that&apos;s in effect.
+A request should not incorporate the actor&apos;s scale or anchor point;
+those transformations do not affect layout, only rendering."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_width"
+                     transfer-ownership="none"
+                     doc=" or a negative value to indicate that no width is defined">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for minimum height, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for natural height, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preferred_size"
+              c:identifier="clutter_actor_get_preferred_size"
+              doc="Computes the preferred minimum and natural size of an actor, taking into
+account the actor&apos;s geometry management (either height-for-width
+or width-for-height).
+The width and height used to compute the preferred height and preferred
+width are the actor&apos;s natural ones.
+If you need to control the height for the preferred width, or the width for
+the preferred height, you should use clutter_actor_get_preferred_width()
+and clutter_actor_get_preferred_height(), and check the actor&apos;s preferred
+geometry management using the #ClutterActor:request-mode property."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the minimum width, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="min_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the minimum height, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the natural width, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the natural height, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="allocate"
+              c:identifier="clutter_actor_allocate"
+              doc="Called by the parent of an actor to assign the actor its size.
+Should never be called by applications (except when implementing
+a container or layout manager).
+Actors can know from their allocation box whether they have moved
+with respect to their parent actor. The @flags parameter describes
+additional information about the allocation, for instance whether
+the parent has moved with respect to the stage, for example because
+a grandparent&apos;s origin has moved."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="box" transfer-ownership="none">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="allocate_preferred_size"
+              c:identifier="clutter_actor_allocate_preferred_size"
+              doc="Allocates the natural size of @self.
+This function is a utility call for #ClutterActor implementations
+that allocates the actor&apos;s preferred natural size. It can be used
+by fixed layout managers (like #ClutterGroup or so called
+&apos;composite actors&apos;) inside the ClutterActor::allocate
+implementation to give each child exactly how much space it
+requires.
+This function is not meant to be used by applications. It is also
+not meant to be used outside the implementation of the
+ClutterActor::allocate virtual function."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="allocate_available_size"
+              c:identifier="clutter_actor_allocate_available_size"
+              doc="Allocates @self taking into account the #ClutterActor&lt;!-- --&gt;&apos;s
+preferred size, but limiting it to the maximum available width
+and height provided.
+This function will do the right thing when dealing with the
+actor&apos;s request mode.
+The implementation of this function is equivalent to:
+|[
+if (request_mode == CLUTTER_REQUEST_HEIGHT_FOR_WIDTH)
+{
+clutter_actor_get_preferred_width (self, available_height,
+&amp;amp;min_width,
+&amp;amp;natural_width);
+width = CLAMP (natural_width, min_width, available_width);
+clutter_actor_get_preferred_height (self, width,
+&amp;amp;min_height,
+&amp;amp;natural_height);
+height = CLAMP (natural_height, min_height, available_height);
+}
+else
+{
+clutter_actor_get_preferred_height (self, available_width,
+&amp;amp;min_height,
+&amp;amp;natural_height);
+height = CLAMP (natural_height, min_height, available_height);
+clutter_actor_get_preferred_width (self, height,
+&amp;amp;min_width,
+&amp;amp;natural_width);
+width = CLAMP (natural_width, min_width, available_width);
+}
+box.x1 = x; box.y1 = y;
+box.x2 = box.x1 + available_width;
+box.y2 = box.y1 + available_height;
+clutter_actor_allocate (self, &amp;amp;box, flags);
+]|
+This function can be used by fluid layout managers to allocate
+an actor&apos;s preferred size without making it bigger than the area
+available for the container."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="available_width"
+                     transfer-ownership="none"
+                     doc=" actor&apos;s natural width">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="available_height"
+                     transfer-ownership="none"
+                     doc=" actor&apos;s natural height">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_allocation_box"
+              c:identifier="clutter_actor_get_allocation_box"
+              doc="Gets the layout box an actor has been assigned. The allocation can
+only be assumed valid inside a paint() method; anywhere else, it
+may be out-of-date.
+An allocation does not incorporate the actor&apos;s scale or anchor point;
+those transformations do not affect layout, only rendering.
+&lt;note&gt;Do not call any of the clutter_actor_get_allocation_*() family
+of functions inside the implementation of the get_preferred_width()
+or get_preferred_height() virtual functions.&lt;/note&gt;"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="box"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="the function fills this in with the actor&apos;s allocation">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_allocation_geometry"
+              c:identifier="clutter_actor_get_allocation_geometry"
+              doc="Gets the layout box an actor has been assigned.  The allocation can
+only be assumed valid inside a paint() method; anywhere else, it
+may be out-of-date.
+An allocation does not incorporate the actor&apos;s scale or anchor point;
+those transformations do not affect layout, only rendering.
+The returned rectangle is in pixels."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geom"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="allocation geometry in pixels">
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_allocation_vertices"
+              c:identifier="clutter_actor_get_allocation_vertices"
+              doc="Calculates the transformed coordinates of the four corners of the
+actor in the plane of @ancestor. The returned vertices relate to
+the #ClutterActorBox coordinates as follows:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;@verts[0] contains (x1, y1)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;@verts[1] contains (x2, y1)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;@verts[2] contains (x1, y2)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;@verts[3] contains (x2, y2)&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+If @ancestor is %NULL the ancestor will be the #ClutterStage. In
+this case, the coordinates returned will be the coordinates on
+the stage before the projection is applied. This is different from
+the behaviour of clutter_actor_get_abs_allocation_vertices()."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ancestor"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #ClutterActor to calculate the vertices against, or %NULL to use the default #ClutterStage">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="verts"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for an array of 4 #ClutterVertex in which to store the result.">
+            <array c:type="ClutterVertex" fixed-size="4">
+              <type name="Vertex"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_geometry"
+              c:identifier="clutter_actor_set_geometry"
+              doc="Sets the actor&apos;s fixed position and forces its minimum and natural
+size, in pixels. This means the untransformed actor will have the
+given geometry. This is the same as calling clutter_actor_set_position()
+and clutter_actor_set_size().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry" transfer-ownership="none">
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_geometry"
+              c:identifier="clutter_actor_get_geometry"
+              doc="Gets the size and position of an actor relative to its parent
+actor. This is the same as calling clutter_actor_get_position() and
+clutter_actor_get_size(). It tries to &quot;do what you mean&quot; and get the
+requested size and position if the actor&apos;s allocation is invalid.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="A location to store actors #ClutterGeometry">
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size" c:identifier="clutter_actor_set_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size"
+              c:identifier="clutter_actor_get_size"
+              doc="This function tries to &quot;do what you mean&quot; and return
+the size an actor will have. If the actor has a valid
+allocation, the allocation will be returned; otherwise,
+the actors natural size request will be returned.
+If you care whether you get the request vs. the allocation, you
+should probably call a different function like
+clutter_actor_get_allocation_box() or
+clutter_actor_get_preferred_width()."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the width, or %NULL.">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the height, or %NULL.">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_transformed_size"
+              c:identifier="clutter_actor_get_transformed_size"
+              doc="Gets the absolute size of an actor in pixels, taking into account the
+scaling factors.
+If the actor has a valid allocation, the allocated size will be used.
+If the actor has not a valid allocation then the preferred size will
+be transformed and returned.
+If you want the transformed allocation, see
+clutter_actor_get_abs_allocation_vertices() instead.
+&lt;note&gt;When the actor (or one of its ancestors) is rotated around the
+X or Y axis, it no longer appears as on the stage as a rectangle, but
+as a generic quadrangle; in that case this function returns the size
+of the smallest rectangle that encapsulates the entire quad. Please
+note that in this case no assumptions can be made about the relative
+position of this envelope to the absolute position of the actor, as
+returned by clutter_actor_get_transformed_position(); if you need this
+information, you need to use clutter_actor_get_abs_allocation_vertices()
+to get the coords of the actual quadrangle.&lt;/note&gt;"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the width, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the height, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_position" c:identifier="clutter_actor_set_position">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_position"
+              c:identifier="clutter_actor_get_position"
+              doc="This function tries to &quot;do what you mean&quot; and tell you where the
+actor is, prior to any transformations. Retrieves the fixed
+position of an actor in pixels, if one has been set; otherwise, if
+the allocation is valid, returns the actor&apos;s allocated position;
+otherwise, returns 0,0.
+The returned position is in pixels."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the X coordinate, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the Y coordinate, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_transformed_position"
+              c:identifier="clutter_actor_get_transformed_position"
+              doc="Gets the absolute position of an actor, in pixels relative to the stage."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the X coordinate, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the Y coordinate, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fixed_position_set"
+              c:identifier="clutter_actor_get_fixed_position_set"
+              doc="Checks whether an actor has a fixed position set (and will thus be
+unaffected by any layout manager)."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_fixed_position_set"
+              c:identifier="clutter_actor_set_fixed_position_set"
+              doc="Sets whether an actor has a fixed position set (and will thus be
+unaffected by any layout manager)."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_set" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width"
+              c:identifier="clutter_actor_get_width"
+              doc="Retrieves the width of a #ClutterActor.
+If the actor has a valid allocation, this function will return the
+width of the allocated area given to the actor.
+If the actor does not have a valid allocation, this function will
+return the actor&apos;s natural width, that is the preferred width of
+the actor.
+If you care whether you get the preferred width or the width that
+has been assigned to the actor, you should probably call a different
+function like clutter_actor_get_allocation_box() to retrieve the
+allocated size or clutter_actor_get_preferred_width() to retrieve the
+preferred width.
+If an actor has a fixed width, for instance a width that has been
+assigned using clutter_actor_set_width(), the width returned will
+be the same value.">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_height"
+              c:identifier="clutter_actor_get_height"
+              doc="Retrieves the height of a #ClutterActor.
+If the actor has a valid allocation, this function will return the
+height of the allocated area given to the actor.
+If the actor does not have a valid allocation, this function will
+return the actor&apos;s natural height, that is the preferred height of
+the actor.
+If you care whether you get the preferred height or the height that
+has been assigned to the actor, you should probably call a different
+function like clutter_actor_get_allocation_box() to retrieve the
+allocated size or clutter_actor_get_preferred_height() to retrieve the
+preferred height.
+If an actor has a fixed height, for instance a height that has been
+assigned using clutter_actor_set_height(), the height returned will
+be the same value.">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_width" c:identifier="clutter_actor_set_width">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_height" c:identifier="clutter_actor_set_height">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="height" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_x" c:identifier="clutter_actor_get_x">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_y" c:identifier="clutter_actor_get_y">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_x"
+              c:identifier="clutter_actor_set_x"
+              doc="Sets the actor&apos;s X coordinate, relative to its parent, in pixels.
+Overrides any layout manager and forces a fixed position for
+the actor."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_y"
+              c:identifier="clutter_actor_set_y"
+              doc="Sets the actor&apos;s Y coordinate, relative to its parent, in pixels.#
+Overrides any layout manager and forces a fixed position for
+the actor."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_rotation"
+              c:identifier="clutter_actor_set_rotation"
+              doc="Sets the rotation angle of @self around the given axis.
+The rotation center coordinates used depend on the value of @axis:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;%CLUTTER_X_AXIS requires @y and @z&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;%CLUTTER_Y_AXIS requires @x and @z&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;%CLUTTER_Z_AXIS requires @x and @y&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+The rotation coordinates are relative to the anchor point of the
+actor, set using clutter_actor_set_anchor_point(). If no anchor
+point is set, the upper left corner is assumed as the origin."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+          <parameter name="angle" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_z_rotation_from_gravity"
+              c:identifier="clutter_actor_set_z_rotation_from_gravity"
+              doc="Sets the rotation angle of @self around the Z axis using the center
+point specified as a compass point. For example to rotate such that
+the center of the actor remains static you can use
+%CLUTTER_GRAVITY_CENTER. If the actor changes size the center point
+will move accordingly."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="gravity" transfer-ownership="none">
+            <type name="Gravity" c:type="ClutterGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_rotation"
+              c:identifier="clutter_actor_get_rotation"
+              doc="Retrieves the angle and center of rotation on the given axis,
+set using clutter_actor_set_rotation()."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return value for the X coordinate of the center of rotation">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return value for the Y coordinate of the center of rotation">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="z"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return value for the Z coordinate of the center of rotation">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_z_rotation_gravity"
+              c:identifier="clutter_actor_get_z_rotation_gravity"
+              doc="Retrieves the center for the rotation around the Z axis as a
+compass direction. If the center was specified in pixels or units
+this will return %CLUTTER_GRAVITY_NONE."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Gravity" c:type="ClutterGravity"/>
+        </return-value>
+      </method>
+      <method name="set_opacity"
+              c:identifier="clutter_actor_set_opacity"
+              doc="Sets the actor&apos;s opacity, with zero being completely transparent and
+255 (0xff) being fully opaque.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opacity" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_opacity"
+              c:identifier="clutter_actor_get_opacity"
+              doc="Retrieves the opacity value of an actor, as set by
+clutter_actor_set_opacity().
+For retrieving the absolute opacity of the actor inside a paint
+virtual function, see clutter_actor_get_paint_opacity().">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </return-value>
+      </method>
+      <method name="get_paint_opacity"
+              c:identifier="clutter_actor_get_paint_opacity"
+              doc="Retrieves the absolute opacity of the actor, as it appears on the stage.
+This function traverses the hierarchy chain and composites the opacity of
+the actor with that of its parents.
+This function is intended for subclasses to use in the paint virtual
+function, to paint themselves with the correct opacity."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </return-value>
+      </method>
+      <method name="get_paint_visibility"
+              c:identifier="clutter_actor_get_paint_visibility"
+              doc="Retrieves the &apos;paint&apos; visibility of an actor recursively checking for non
+visible parents.
+This is by definition the same as CLUTTER_ACTOR_IS_MAPPED()."
+              version="0.8.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_name"
+              c:identifier="clutter_actor_set_name"
+              doc="Sets the given name to @self. The name can be used to identify
+a #ClutterActor.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name"
+              c:identifier="clutter_actor_get_name"
+              doc="Retrieves the name of @self.
+owned by the actor and should not be modified or freed.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_gid"
+              c:identifier="clutter_actor_get_gid"
+              doc="Retrieves the unique id for @self."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="set_clip"
+              c:identifier="clutter_actor_set_clip"
+              doc="Sets clip area for @self. The clip area is always computed from the
+upper left corner of the actor, even if the anchor point is set
+otherwise."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xoff" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yoff" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_clip" c:identifier="clutter_actor_remove_clip">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="has_clip"
+              c:identifier="clutter_actor_has_clip"
+              doc="Determines whether the actor has a clip area set or not."
+              version="0.1.1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_clip"
+              c:identifier="clutter_actor_get_clip"
+              doc="Gets the clip area for @self, if any is set"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xoff"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the X offset of the clip rectangle, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="yoff"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the Y offset of the clip rectangle, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the width of the clip rectangle, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the height of the clip rectangle, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_parent"
+              c:identifier="clutter_actor_set_parent"
+              doc="Sets the parent of @self to @parent.  The opposite function is
+clutter_actor_unparent().
+This function should not be used by applications, but by custom
+container actor subclasses.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_parent"
+              c:identifier="clutter_actor_get_parent"
+              doc="Retrieves the parent of @self.
+if no parent is set">
+        <return-value transfer-ownership="none"
+                      doc="The #ClutterActor parent, or %NULL">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="reparent"
+              c:identifier="clutter_actor_reparent"
+              doc="This function resets the parent actor of @self.  It is
+logically equivalent to calling clutter_actor_unparent()
+and clutter_actor_set_parent(), but more efficiently
+implemented, ensures the child is not finalized
+when unparented, and emits the parent-set signal only
+one time."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_parent" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unparent"
+              c:identifier="clutter_actor_unparent"
+              doc="Removes the parent of @self.
+This function should not be used in applications.  It should be called by
+implementations of container actors, to dissociate a child from the
+container."
+              version="0.1.1">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_stage"
+              c:identifier="clutter_actor_get_stage"
+              doc="Retrieves the #ClutterStage where @actor is contained."
+              version="0.8">
+        <return-value transfer-ownership="none"
+                      doc="the stage containing the actor, or %NULL">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="raise"
+              c:identifier="clutter_actor_raise"
+              doc="Puts @self above @below.
+Both actors must have the same parent, and the parent must implement
+the #ClutterContainer interface
+This function is the equivalent of clutter_container_raise_child().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="below"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #ClutterActor to raise above.">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lower"
+              c:identifier="clutter_actor_lower"
+              doc="Puts @self below @above.
+Both actors must have the same parent, and the parent must implement
+the #ClutterContainer interface.
+This function is the equivalent of clutter_container_lower_child().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="above"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #ClutterActor to lower below">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="raise_top"
+              c:identifier="clutter_actor_raise_top"
+              doc="Raises @self to the top.
+This function calls clutter_actor_raise() internally.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="lower_bottom"
+              c:identifier="clutter_actor_lower_bottom"
+              doc="Lowers @self to the bottom.
+This function calls clutter_actor_lower() internally.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_depth"
+              c:identifier="clutter_actor_set_depth"
+              doc="Sets the Z coordinate of @self to @depth.
+The unit used by @depth is dependant on the perspective setup. See
+also clutter_stage_set_perspective().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_depth"
+              c:identifier="clutter_actor_get_depth"
+              doc="Retrieves the depth of @self.">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_scale"
+              c:identifier="clutter_actor_set_scale"
+              doc="Scales an actor with the given factors. The scaling is relative to
+the scale center and the anchor point. The scale center is
+unchanged by this function and defaults to 0,0."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_scale_full"
+              c:identifier="clutter_actor_set_scale_full"
+              doc="Scales an actor with the given factors around the given center
+point. The center point is specified in pixels relative to the
+anchor point (usually the top left corner of the actor)."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="center_x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="center_y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_scale_with_gravity"
+              c:identifier="clutter_actor_set_scale_with_gravity"
+              doc="Scales an actor with the given factors around the given
+center point. The center point is specified as one of the compass
+directions in #ClutterGravity. For example, setting it to north
+will cause the top of the actor to remain unchanged and the rest of
+the actor to expand left, right and downwards."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="gravity"
+                     transfer-ownership="none"
+                     doc=" direction.">
+            <type name="Gravity" c:type="ClutterGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_scale"
+              c:identifier="clutter_actor_get_scale"
+              doc="Retrieves an actors scale factors."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="Location to store horizonal scale factor, or %NULL.">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="scale_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="Location to store vertical scale factor, or %NULL.">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_scale_center"
+              c:identifier="clutter_actor_get_scale_center"
+              doc="Retrieves the scale center coordinate in pixels relative to the top
+left corner of the actor. If the scale center was specified using a
+#ClutterGravity this will calculate the pixel offset using the
+current size of the actor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="center_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="Location to store the X position of the scale center, or %NULL.">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="center_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="Location to store the Y position of the scale center, or %NULL.">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_scale_gravity"
+              c:identifier="clutter_actor_get_scale_gravity"
+              doc="Retrieves the scale center as a compass direction. If the scale
+center was specified in pixels or units this will return
+%CLUTTER_GRAVITY_NONE."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Gravity" c:type="ClutterGravity"/>
+        </return-value>
+      </method>
+      <method name="move_by"
+              c:identifier="clutter_actor_move_by"
+              doc="Moves an actor by the specified distance relative to its current
+position in pixels.
+This function modifies the fixed position of an actor and thus removes
+it from any layout management. Another way to move an actor is with an
+anchor point, see clutter_actor_set_anchor_point()."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dx" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="dy" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_reactive"
+              c:identifier="clutter_actor_set_reactive"
+              doc="Sets @actor as reactive. Reactive actors will receive events."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="reactive" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_reactive"
+              c:identifier="clutter_actor_get_reactive"
+              doc="Checks whether @actor is marked as reactive."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="event"
+              c:identifier="clutter_actor_event"
+              doc="This function is used to emit an event on the main stage.
+You should rarely need to use this function, except for
+synthetising events.
+if the actor handled the event, or %FALSE if the event was
+not handled"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+          <parameter name="capture" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shader"
+              c:identifier="clutter_actor_set_shader"
+              doc="Sets the #ClutterShader to be used when rendering @self.
+If @shader is %NULL it will unset any currently set shader
+for the actor."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="shader"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #ClutterShader or %NULL to unset the shader.">
+            <type name="Shader" c:type="ClutterShader*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_shader"
+              c:identifier="clutter_actor_get_shader"
+              doc="Queries the currently set #ClutterShader on @self.
+or %NULL if no shader is set."
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="The currently set #ClutterShader">
+          <type name="Shader" c:type="ClutterShader*"/>
+        </return-value>
+      </method>
+      <method name="set_shader_param"
+              c:identifier="clutter_actor_set_shader_param"
+              doc="Sets the value for a named parameter of the shader applied
+to @actor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shader_param_int"
+              c:identifier="clutter_actor_set_shader_param_int"
+              doc="Sets the value for a named int parameter of the shader applied to"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shader_param_float"
+              c:identifier="clutter_actor_set_shader_param_float"
+              doc="Sets the value for a named float parameter of the shader applied
+to @actor."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_anchor_point"
+              c:identifier="clutter_actor_set_anchor_point"
+              doc="Sets an anchor point for @self. The anchor point is a point in the
+coordinate space of an actor to which the actor position within its
+parent is relative; the default is (0, 0), i.e. the top-left corner
+of the actor."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="anchor_x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="anchor_y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_anchor_point"
+              c:identifier="clutter_actor_move_anchor_point"
+              doc="Sets an anchor point for the actor, and adjusts the actor postion so that
+the relative position of the actor toward its parent remains the same."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="anchor_x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="anchor_y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_anchor_point"
+              c:identifier="clutter_actor_get_anchor_point"
+              doc="Gets the current anchor point of the @actor in pixels."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="anchor_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the X coordinate of the anchor point">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="anchor_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the Y coordinate of the anchor point">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_anchor_point_gravity"
+              c:identifier="clutter_actor_get_anchor_point_gravity"
+              doc="Retrieves the anchor position expressed as a #ClutterGravity. If
+the anchor point was specified using pixels or units this will
+return %CLUTTER_GRAVITY_NONE."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Gravity" c:type="ClutterGravity"/>
+        </return-value>
+      </method>
+      <method name="set_anchor_point_from_gravity"
+              c:identifier="clutter_actor_set_anchor_point_from_gravity"
+              doc="Sets an anchor point on the actor, based on the given gravity (this is a
+convenience function wrapping clutter_actor_set_anchor_point()).
+Since version 1.0 the anchor point will be stored as a gravity so
+that if the actor changes size then the anchor point will move. For
+example, if you set the anchor point to %CLUTTER_GRAVITY_SOUTH_EAST
+and later double the size of the actor, the anchor point will move
+to the bottom right."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gravity" transfer-ownership="none">
+            <type name="Gravity" c:type="ClutterGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_anchor_point_from_gravity"
+              c:identifier="clutter_actor_move_anchor_point_from_gravity"
+              doc="Sets an anchor point on the actor based on the given gravity, adjusting the
+actor postion so that its relative position within its parent remains
+unchanged.
+Since version 1.0 the anchor point will be stored as a gravity so
+that if the actor changes size then the anchor point will move. For
+example, if you set the anchor point to %CLUTTER_GRAVITY_SOUTH_EAST
+and later double the size of the actor, the anchor point will move
+to the bottom right."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gravity" transfer-ownership="none">
+            <type name="Gravity" c:type="ClutterGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="transform_stage_point"
+              c:identifier="clutter_actor_transform_stage_point">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="x_out"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y_out"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_rotated"
+              c:identifier="clutter_actor_is_rotated"
+              doc="Checks whether any rotation is applied to the actor."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_scaled"
+              c:identifier="clutter_actor_is_scaled"
+              doc="Checks whether the actor is scaled in either dimension."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="should_pick_paint"
+              c:identifier="clutter_actor_should_pick_paint"
+              doc="Should be called inside the implementation of the
+#ClutterActor::pick virtual function in order to check whether
+the actor should paint itself in pick mode or not.
+This function should never be called directly by applications.
+%FALSE otherwise">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_abs_allocation_vertices"
+              c:identifier="clutter_actor_get_abs_allocation_vertices"
+              doc="Calculates the transformed screen coordinates of the four corners of
+the actor; the returned vertices relate to the #ClutterActorBox
+coordinates  as follows:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;v[0] contains (x1, y1)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;v[1] contains (x2, y1)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;v[2] contains (x1, y2)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;v[3] contains (x2, y2)&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;"
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="verts"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="Pointer to a location of an array of 4 #ClutterVertex where to store the result.">
+            <array c:type="ClutterVertex" fixed-size="4">
+              <type name="Vertex"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="apply_transform_to_point"
+              c:identifier="clutter_actor_apply_transform_to_point"
+              doc="Transforms @point in coordinates relative to the actor
+into screen-relative coordinates with the current actor
+transformation (i.e. scale, rotation, etc)"
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="point" transfer-ownership="none">
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+          <parameter name="vertex" transfer-ownership="none">
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="apply_relative_transform_to_point"
+              c:identifier="clutter_actor_apply_relative_transform_to_point"
+              doc="Transforms @point in coordinates relative to the actor into
+ancestor-relative coordinates using the relevant transform
+stack (i.e. scale, rotation, etc).
+If @ancestor is %NULL the ancestor will be the #ClutterStage. In
+this case, the coordinates returned will be the coordinates on
+the stage before the projection is applied. This is different from
+the behaviour of clutter_actor_apply_transform_to_point()."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ancestor"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #ClutterActor ancestor, or %NULL to use the default #ClutterStage">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="point" transfer-ownership="none">
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+          <parameter name="vertex" transfer-ownership="none">
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="grab_key_focus"
+              c:identifier="clutter_actor_grab_key_focus"
+              doc="Sets the key focus of the #ClutterStage including @self
+to this #ClutterActor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_pango_context"
+              c:identifier="clutter_actor_get_pango_context"
+              doc="Retrieves the #PangoContext for @self. The actor&apos;s #PangoContext
+is already configured using the appropriate font map, resolution
+and font options.
+Unlike clutter_actor_create_pango_context(), this context is owend
+by the #ClutterActor and it will be updated each time the options
+stored by the #ClutterBackend change.
+You can use the returned #PangoContext to create a #PangoLayout
+and render text using cogl_pango_render_layout() to reuse the
+glyphs cache also used by Clutter.
+The returned #PangoContext is owned by the actor and should not be
+unreferenced by the application code"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the #PangoContext for a #ClutterActor.">
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="create_pango_context"
+              c:identifier="clutter_actor_create_pango_context"
+              doc="Creates a #PangoContext for the given actor. The #PangoContext
+is already configured using the appropriate font map, resolution
+and font options.
+See also clutter_actor_get_pango_context().
+on the returned value to deallocate its resources"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="create_pango_layout"
+              c:identifier="clutter_actor_create_pango_layout"
+              doc="Creates a new #PangoLayout from the same #PangoContext used
+by the #ClutterActor. The #PangoLayout is already configured
+with the font map, resolution and font options, and the
+given @text.
+If you want to keep around a #PangoLayout created by this
+function you will have to connect to the #ClutterBackend::font-changed
+and #ClutterBackend::resolution-changed signals, and call
+pango_layout_context_changed() in response to them.
+when done"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+        <parameters>
+          <parameter name="text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the text to set on the #PangoLayout, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_transformation_matrix"
+              c:identifier="clutter_actor_get_transformation_matrix"
+              doc="Retrieves the transformations applied to @self"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="matrix"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="the return location for a #CoglMatrix">
+            <type name="Cogl.Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_in_clone_paint"
+              c:identifier="clutter_actor_is_in_clone_paint"
+              doc="Checks whether @self is being currently painted by a #ClutterClone
+This function is useful only inside the ::paint virtual function
+implementations or within handlers for the #ClutterActor::paint
+signal
+This function should not be used by applications
+by a #ClutterClone, and %FALSE otherwise"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_pointer"
+              c:identifier="clutter_actor_has_pointer"
+              doc="Checks whether an actor contains the the pointer of a
+#ClutterInputDevice
+%FALSE otherwise"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_text_direction"
+              c:identifier="clutter_actor_set_text_direction"
+              doc="Sets the #ClutterTextDirection for an actor
+The passed text direction must not be %CLUTTER_TEXT_DIRECTION_DEFAULT
+If @self implements #ClutterContainer then this function will recurse
+inside all the children of @self (including the internal ones).
+Composite actors not implementing #ClutterContainer, or actors requiring
+special handling when the text direction changes, should connect to
+the #GObject::notify signal for the #ClutterActor:text-direction property"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text_dir" transfer-ownership="none">
+            <type name="TextDirection" c:type="ClutterTextDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text_direction"
+              c:identifier="clutter_actor_get_text_direction"
+              doc="Retrieves the value set using clutter_actor_set_text_direction()
+If no text direction has been previously set, the default text
+direction, as returned by clutter_get_default_text_direction(), will
+be returned instead"
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="TextDirection" c:type="ClutterTextDirection"/>
+        </return-value>
+      </method>
+      <method name="push_internal"
+              c:identifier="clutter_actor_push_internal"
+              doc="Should be used by actors implementing the #ClutterContainer and with
+internal children added through clutter_actor_set_parent(), for instance:
+|[
+static void
+my_actor_init (MyActor *self)
+{
+self-&gt;priv = SELF_ACTOR_GET_PRIVATE (self);
+clutter_actor_push_internal (CLUTTER_ACTOR (self));
+/&amp;ast; calling clutter_actor_set_parent() now will result in
+&amp;ast; the internal flag being set on a child of MyActor
+&amp;ast;/
+self-&gt;priv-&gt;background_tex = clutter_texture_new ();
+clutter_actor_set_parent (self-&gt;priv-&gt;background_tex,
+CLUTTER_ACTOR (self));
+self-&gt;priv-&gt;label = clutter_text_new ();
+clutter_actor_set_parent (self-&gt;priv-&gt;label,
+CLUTTER_ACTOR (self));
+clutter_actor_pop_internal (CLUTTER_ACTOR (self));
+/&amp;ast; calling clutter_actor_set_parent() now will not result in
+&amp;ast; the internal flag being set on a child of MyActor
+&amp;ast;/
+}
+]|
+This function will be used by Clutter to toggle an &quot;internal child&quot;
+flag whenever clutter_actor_set_parent() is called; internal children
+are handled differently by Clutter, specifically when destroying their
+parent.
+Call clutter_actor_pop_internal() when you finished adding internal
+children.
+Nested calls to clutter_actor_push_internal() are allowed, but each
+one must by followed by a clutter_actor_pop_internal() call."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="pop_internal"
+              c:identifier="clutter_actor_pop_internal"
+              doc="Disables the effects of clutter_actor_pop_internal()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="animate"
+              c:identifier="clutter_actor_animate"
+              doc="Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite duration and a speed given by the @mode.
+For example, this:
+|[
+clutter_actor_animate (rectangle, CLUTTER_LINEAR, 250,
+&quot;width&quot;, 100.0,
+&quot;height&quot;, 100.0,
+NULL);
+]|
+will make width and height properties of the #ClutterActor &quot;rectangle&quot;
+grow linearly between the current value and 100 pixels, in 250 milliseconds.
+The animation @mode is a logical id, either from the #ClutterAnimationMode
+enumeration of from clutter_alpha_register_func().
+All the properties specified will be animated between the current value
+and the final value. If a property should be set at the beginning of
+the animation but not updated during the animation, it should be prefixed
+by the &quot;fixed::&quot; string, for instance:
+|[
+clutter_actor_animate (actor, CLUTTER_EASE_IN_SINE, 100,
+&quot;rotation-angle-z&quot;, 360.0,
+&quot;fixed::rotation-center-z&quot;, &amp;amp;center,
+NULL);
+]|
+Will animate the &quot;rotation-angle-z&quot; property between the current value
+and 360 degrees, and set the &quot;rotation-center-z&quot; property to the fixed
+value of the #ClutterVertex &quot;center&quot;.
+This function will implicitly create a #ClutterAnimation object which
+will be assigned to the @actor and will be returned to the developer
+to control the animation or to know when the animation has been
+completed.
+If a name argument starts with &quot;signal::&quot;, &quot;signal-after::&quot;,
+&quot;signal-swapped::&quot; or &quot;signal-swapped-after::&quot; the two following arguments
+are used as callback function and data for a signal handler installed on
+the #ClutterAnimation object for the specified signal name, for instance:
+|[
+static void
+on_animation_completed (ClutterAnimation *animation,
+ClutterActor     *actor)
+{
+clutter_actor_hide (actor);
+}
+clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 100,
+&quot;opacity&quot;, 0,
+&quot;signal::completed&quot;, on_animation_completed, actor,
+NULL);
+]|
+or, to automatically destroy an actor at the end of the animation:
+|[
+clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 100,
+&quot;opacity&quot;, 0,
+&quot;signal-swapped-after::completed&quot;,
+clutter_actor_destroy,
+actor,
+NULL);
+]|
+The &quot;signal::&quot; modifier is the equivalent of using g_signal_connect();
+the &quot;signal-after::&quot; modifier is the equivalent of using
+g_signal_connect_after() or g_signal_connect_data() with the
+%G_CONNECT_AFTER; the &quot;signal-swapped::&quot; modifier is the equivalent
+of using g_signal_connect_swapped() or g_signal_connect_data() with the
+%G_CONNECT_SWAPPED flah; finally, the &quot;signal-swapped-after::&quot; modifier
+is the equivalent of using g_signal_connect_data() with both the
+%G_CONNECT_AFTER and %G_CONNECT_SWAPPED flags. The clutter_actor_animate()
+function will not keep track of multiple connections to the same signal,
+so it is your responsability to avoid them when calling
+clutter_actor_animate() multiple times on the same actor.
+Calling this function on an actor that is already being animated
+will cause the current animation to change with the new final values,
+the new easing mode and the new duration - that is, this code:
+|[
+clutter_actor_animate (actor, CLUTTER_LINEAR, 250,
+&quot;width&quot;, 100.0,
+&quot;height&quot;, 100.0,
+NULL);
+clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 500,
+&quot;x&quot;, 100.0,
+&quot;y&quot;, 100.0,
+&quot;width&quot;, 200.0,
+NULL);
+]|
+is the equivalent of:
+|[
+clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 500,
+&quot;x&quot;, 100.0,
+&quot;y&quot;, 100.0,
+&quot;width&quot;, 200.0,
+&quot;height&quot;, 100.0,
+NULL);
+]|
+&lt;note&gt;Unless the animation is looping, the #ClutterAnimation created by
+clutter_actor_animate() will become invalid as soon as it is
+complete.&lt;/note&gt;
+Since the created #ClutterAnimation instance attached to @actor
+is guaranteed to be valid throughout the #ClutterAnimation::completed
+signal emission chain, you will not be able to create a new animation
+using clutter_actor_animate() on the same @actor from within the
+#ClutterAnimation::completed signal handler unless you use
+g_signal_connect_after() to connect the callback function, for instance:
+|[
+static void
+on_animation_completed (ClutterAnimation *animation,
+ClutterActor     *actor)
+{
+clutter_actor_animate (actor, CLUTTER_EASE_OUT_CUBIC, 250,
+&quot;x&quot;, 500.0,
+&quot;y&quot;, 500.0,
+NULL);
+}
+...
+animation = clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 250,
+&quot;x&quot;, 100.0,
+&quot;y&quot;, 100.0,
+NULL);
+g_signal_connect (animation, &quot;completed&quot;,
+G_CALLBACK (on_animation_completed),
+actor);
+...
+]|
+owned by the #ClutterActor and should not be unreferenced with
+g_object_unref()"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterAnimation object. The object is">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate_with_timeline"
+              c:identifier="clutter_actor_animate_with_timeline"
+              doc="Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite duration given by @timeline and a speed given by the @mode.
+See clutter_actor_animate() for further details.
+This function is useful if you want to use an existing timeline
+to animate @actor.
+owned by the #ClutterActor and should not be unreferenced with
+g_object_unref()"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterAnimation object. The object is">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate_with_alpha"
+              c:identifier="clutter_actor_animate_with_alpha"
+              doc="Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite behaviour given by the passed @alpha.
+See clutter_actor_animate() for further details.
+This function is useful if you want to use an existing #ClutterAlpha
+to animate @actor.
+#ClutterActor and should not be unreferenced with g_object_unref()"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterAnimation object. The object is owned by the">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animatev"
+              c:identifier="clutter_actor_animatev"
+              doc="Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite duration and a speed given by the @mode.
+This is the vector-based variant of clutter_actor_animate(), useful
+for language bindings.
+&lt;warning&gt;Unlike clutter_actor_animate(), this function will not
+allow you to specify &quot;signal::&quot; names and callbacks.&lt;/warning&gt;
+owned by the #ClutterActor and should not be unreferenced with
+g_object_unref()"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterAnimation object. The object is">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="n_properties" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="properties"
+                     transfer-ownership="none"
+                     doc="a vector containing the property names to set">
+            <array length="3" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="values"
+                     transfer-ownership="none"
+                     doc="a vector containing the property values to set">
+            <array length="3" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate_with_timelinev"
+              c:identifier="clutter_actor_animate_with_timelinev"
+              doc="Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite duration given by @timeline and a speed given by the @mode.
+See clutter_actor_animate() for further details.
+This function is useful if you want to use an existing timeline
+to animate @actor.
+This is the vector-based variant of clutter_actor_animate_with_timeline(),
+useful for language bindings.
+&lt;warning&gt;Unlike clutter_actor_animate_with_timeline(), this function
+will not allow you to specify &quot;signal::&quot; names and callbacks.&lt;/warning&gt;
+owned by the #ClutterActor and should not be unreferenced with
+g_object_unref()"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterAnimation object. The object is">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="n_properties" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="properties"
+                     transfer-ownership="none"
+                     doc="a vector containing the property names to set">
+            <array length="3" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="values"
+                     transfer-ownership="none"
+                     doc="a vector containing the property values to set">
+            <array length="3" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate_with_alphav"
+              c:identifier="clutter_actor_animate_with_alphav"
+              doc="Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite behaviour given by the passed @alpha.
+See clutter_actor_animate() for further details.
+This function is useful if you want to use an existing #ClutterAlpha
+to animate @actor.
+This is the vector-based variant of clutter_actor_animate_with_alpha(),
+useful for language bindings.
+&lt;warning&gt;Unlike clutter_actor_animate_with_alpha(), this function will
+not allow you to specify &quot;signal::&quot; names and callbacks.&lt;/warning&gt;
+#ClutterActor and should not be unreferenced with g_object_unref()"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterAnimation object. The object is owned by the">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="n_properties" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="properties"
+                     transfer-ownership="none"
+                     doc="a vector containing the property names to set">
+            <array length="2" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="values"
+                     transfer-ownership="none"
+                     doc="a vector containing the property values to set">
+            <array length="2" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_animation"
+              c:identifier="clutter_actor_get_animation"
+              doc="Retrieves the #ClutterAnimation used by @actor, if clutter_actor_animate()
+has been called on @actor."
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterAnimation, or %NULL">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+      </method>
+      <property name="allocation"
+                version="0.8"
+                doc="The allocation for the actor, in pixels
+This is property is read-only, but you might monitor it to know when an
+actor moves or resizes">
+        <type name="ActorBox" c:type="ClutterActorBox"/>
+      </property>
+      <property name="anchor-gravity"
+                version="1.0"
+                writable="1"
+                doc="The anchor point expressed as a #ClutterGravity">
+        <type name="Gravity" c:type="ClutterGravity"/>
+      </property>
+      <property name="anchor-x"
+                version="0.8"
+                writable="1"
+                doc="The X coordinate of an actor&apos;s anchor point, relative to
+the actor coordinate space, in pixels">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="anchor-y"
+                version="0.8"
+                writable="1"
+                doc="The Y coordinate of an actor&apos;s anchor point, relative to
+the actor coordinate space, in pixels">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="clip"
+                writable="1"
+                doc="The clip region for the actor, in actor-relative coordinates
+Every part of the actor outside the clip region will not be
+painted">
+        <type name="Geometry" c:type="ClutterGeometry"/>
+      </property>
+      <property name="clip-to-allocation"
+                version="1.0"
+                writable="1"
+                doc="Whether the clip region should track the allocated area
+of the actor.
+This property is ignored if a clip area has been explicitly
+set using clutter_actor_set_clip().">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="depth"
+                version="0.6"
+                writable="1"
+                doc="The position of the actor on the Z axis">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="fixed-position-set"
+                version="0.8"
+                writable="1"
+                doc="This flag controls whether the #ClutterActor:fixed-x and
+#ClutterActor:fixed-y properties are used">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="fixed-x"
+                version="0.8"
+                writable="1"
+                doc="The fixed X position of the actor in pixels.
+Writing this property sets #ClutterActor:fixed-position-set
+property as well, as a side effect">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="fixed-y"
+                version="0.8"
+                writable="1"
+                doc="The fixed Y position of the actor in pixels.
+Writing this property sets the #ClutterActor:fixed-position-set
+property as well, as a side effect">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="has-clip"
+                doc="Whether the actor has the #ClutterActor:clip property set or not">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="has-pointer"
+                version="1.2"
+                doc="Whether the actor contains the pointer of a #ClutterInputDevice
+or not.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="height"
+                writable="1"
+                doc="Height of the actor (in pixels).  If written, forces the minimum and
+natural size request of the actor to the given height. If read, returns
+the allocated height if available, otherwise the height request.">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="mapped"
+                version="1.0"
+                doc="Whether the actor is mapped (will be painted when the stage
+to which it belongs is mapped)">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="min-height"
+                version="0.8"
+                writable="1"
+                doc="A forced minimum height request for the actor, in pixels
+Writing this property sets the #ClutterActor:min-height-set property
+as well, as a side effect. This property overrides the usual height
+request of the actor.">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="min-height-set"
+                version="0.8"
+                writable="1"
+                doc="This flag controls whether the #ClutterActor:min-height property
+is used">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="min-width"
+                version="0.8"
+                writable="1"
+                doc="A forced minimum width request for the actor, in pixels
+Writing this property sets the #ClutterActor:min-width-set property
+as well, as a side effect.
+his property overrides the usual width request of the actor.">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="min-width-set"
+                version="0.8"
+                writable="1"
+                doc="This flag controls whether the #ClutterActor:min-width property
+is used">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="name"
+                version="0.2"
+                writable="1"
+                doc="The name of the actor">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="natural-height"
+                version="0.8"
+                writable="1"
+                doc="A forced natural height request for the actor, in pixels
+Writing this property sets the #ClutterActor:natural-height-set
+property as well, as a side effect. This property overrides the
+usual height request of the actor">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="natural-height-set"
+                version="0.8"
+                writable="1"
+                doc="This flag controls whether the #ClutterActor:natural-height property
+is used">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="natural-width"
+                version="0.8"
+                writable="1"
+                doc="A forced natural width request for the actor, in pixels
+Writing this property sets the #ClutterActor:natural-width-set
+property as well, as a side effect. This property overrides the
+usual width request of the actor">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="natural-width-set"
+                version="0.8"
+                writable="1"
+                doc="This flag controls whether the #ClutterActor:natural-width property
+is used">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="opacity"
+                writable="1"
+                doc="Opacity of an actor, between 0 (fully transparent) and
+255 (fully opaque)">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="reactive"
+                version="0.6"
+                writable="1"
+                doc="Whether the actor is reactive to events or not
+Only reactive actors will emit event-related signals">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="realized"
+                version="1.0"
+                doc="Whether the actor has been realized">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="request-mode"
+                version="0.8"
+                writable="1"
+                doc="Request mode for the #ClutterActor. The request mode determines the
+type of geometry management used by the actor, either height for width
+(the default) or width for height.
+For actors implementing height for width, the parent container should get
+the preferred width first, and then the preferred height for that width.
+For actors implementing width for height, the parent container should get
+the preferred height first, and then the preferred width for that height.
+For instance:
+|[
+ClutterRequestMode mode;
+gfloat natural_width, min_width;
+gfloat natural_height, min_height;
+mode = clutter_actor_get_request_mode (child);
+if (mode == CLUTTER_REQUEST_HEIGHT_FOR_WIDTH)
+{
+clutter_actor_get_preferred_width (child, -1,
+&amp;amp;min_width,
+&amp;amp;natural_width);
+clutter_actor_get_preferred_height (child, natural_width,
+&amp;amp;min_height,
+&amp;amp;natural_height);
+}
+else
+{
+clutter_actor_get_preferred_height (child, -1,
+&amp;amp;min_height,
+&amp;amp;natural_height);
+clutter_actor_get_preferred_width (child, natural_height,
+&amp;amp;min_width,
+&amp;amp;natural_width);
+}
+]|
+will retrieve the minimum and natural width and height depending on the
+preferred request mode of the #ClutterActor &quot;child&quot;.
+The clutter_actor_get_preferred_size() function will implement this
+check for you.">
+        <type name="RequestMode" c:type="ClutterRequestMode"/>
+      </property>
+      <property name="rotation-angle-x"
+                version="0.6"
+                writable="1"
+                doc="The rotation angle on the X axis">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="rotation-angle-y"
+                version="0.6"
+                writable="1"
+                doc="The rotation angle on the Y axis">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="rotation-angle-z"
+                version="0.6"
+                writable="1"
+                doc="The rotation angle on the Z axis">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="rotation-center-x"
+                version="0.6"
+                writable="1"
+                doc="The rotation center on the X axis.">
+        <type name="Vertex" c:type="ClutterVertex"/>
+      </property>
+      <property name="rotation-center-y"
+                version="0.6"
+                writable="1"
+                doc="The rotation center on the Y axis.">
+        <type name="Vertex" c:type="ClutterVertex"/>
+      </property>
+      <property name="rotation-center-z"
+                version="0.6"
+                writable="1"
+                doc="The rotation center on the Z axis.">
+        <type name="Vertex" c:type="ClutterVertex"/>
+      </property>
+      <property name="rotation-center-z-gravity"
+                version="1.0"
+                writable="1"
+                doc="The rotation center on the Z axis expressed as a #ClutterGravity.">
+        <type name="Gravity" c:type="ClutterGravity"/>
+      </property>
+      <property name="scale-center-x"
+                version="1.0"
+                writable="1"
+                doc="The horizontal center point for scaling">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="scale-center-y"
+                version="1.0"
+                writable="1"
+                doc="The vertical center point for scaling">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="scale-gravity"
+                version="1.0"
+                writable="1"
+                doc="The center point for scaling expressed as a #ClutterGravity">
+        <type name="Gravity" c:type="ClutterGravity"/>
+      </property>
+      <property name="scale-x"
+                version="0.6"
+                writable="1"
+                doc="The horizontal scale of the actor">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="scale-y"
+                version="0.6"
+                writable="1"
+                doc="The vertical scale of the actor">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="show-on-set-parent"
+                version="0.8"
+                writable="1"
+                doc="If %TRUE, the actor is automatically shown when parented.
+Calling clutter_actor_hide() on an actor which has not been
+parented will set this property to %FALSE as a side effect.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="text-direction" writable="1">
+        <type name="TextDirection" c:type="ClutterTextDirection"/>
+      </property>
+      <property name="visible"
+                writable="1"
+                doc="Whether the actor is set to be visible or not
+See also #ClutterActor:mapped">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="width"
+                writable="1"
+                doc="Width of the actor (in pixels). If written, forces the minimum and
+natural size request of the actor to the given width. If read, returns
+the allocated width if available, otherwise the width request.">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="x"
+                writable="1"
+                doc="X coordinate of the actor in pixels. If written, forces a fixed
+position for the actor. If read, returns the fixed position if any,
+otherwise the allocation if available, otherwise 0.">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="y"
+                writable="1"
+                doc="Y coordinate of the actor in pixels. If written, forces a fixed
+position for the actor.  If read, returns the fixed position if
+any, otherwise the allocation if available, otherwise 0.">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="flags">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="private_flags">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="priv">
+        <type name="ActorPrivate" c:type="ClutterActorPrivate*"/>
+      </field>
+      <glib:signal name="allocation-changed"
+                   doc="The ::allocation-changed signal is emitted when the
+#ClutterActor:allocation property changes. Usually, application
+code should just use the notifications for the :allocation property
+but if you want to track the allocation flags as well, for instance
+to know whether the absolute origin of @actor changed, then you might
+want use this signal instead."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="box" transfer-ownership="none">
+            <type name="ActorBox" c:type="ClutterActorBox"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="button-press-event"
+                   doc="The ::button-press-event signal is emitted each time a mouse button
+is pressed on @actor.
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="button-release-event"
+                   doc="The ::button-release-event signal is emitted each time a mouse button
+is released on @actor.
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="captured-event"
+                   doc="The ::captured-event signal is emitted when an event is captured
+by Clutter. This signal will be emitted starting from the top-level
+container (the #ClutterStage) to the actor which received the event
+going down the hierarchy. This signal can be used to intercept every
+event before the specialized events (like
+ClutterActor::button-press-event or ::key-released-event) are
+emitted.
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="destroy"
+                   doc="The ::destroy signal is emitted when an actor is destroyed,
+either by direct invocation of clutter_actor_destroy() or
+when the #ClutterGroup that contains the actor is destroyed."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="enter-event"
+                   doc="The ::enter-event signal is emitted when the pointer enters the @actor
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="event"
+                   doc="The ::event signal is emitted each time an event is received
+by the @actor. This signal will be emitted on every actor,
+following the hierarchy chain, until it reaches the top-level
+container (the #ClutterStage).
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="hide"
+                   doc="The ::hide signal is emitted when an actor is no longer rendered
+on the stage."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="key-focus-in"
+                   doc="The ::focus-in signal is emitted when @actor recieves key focus."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="key-focus-out"
+                   doc="The ::key-focus-out signal is emitted when @actor loses key focus."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="key-press-event"
+                   doc="The ::key-press-event signal is emitted each time a keyboard button
+is pressed while @actor has key focus (see clutter_stage_set_key_focus()).
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="key-release-event"
+                   doc="The ::key-release-event signal is emitted each time a keyboard button
+is released while @actor has key focus (see
+clutter_stage_set_key_focus()).
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="leave-event"
+                   doc="The ::leave-event signal is emitted when the pointer leaves the @actor.
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="motion-event"
+                   doc="The ::motion-event signal is emitted each time the mouse pointer is
+moved over @actor.
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="paint"
+                   doc="The ::paint signal is emitted each time an actor is being painted.
+Subclasses of #ClutterActor should override the class signal handler
+and paint themselves in that function.
+It is possible to connect a handler to the ::paint signal in order
+to set up some custom aspect of a paint."
+                   version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="parent-set"
+                   doc="This signal is emitted when the parent of the actor changes."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_parent" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pick"
+                   doc="The ::pick signal is emitted each time an actor is being painted
+in &quot;pick mode&quot;. The pick mode is used to identify the actor during
+the event handling phase, or by clutter_stage_get_actor_at_pos().
+The actor should paint its shape using the passed @pick_color.
+Subclasses of #ClutterActor should override the class signal handler
+and paint themselves in that function.
+It is possible to connect a handler to the ::pick signal in order
+to set up some custom aspect of a paint in pick mode."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="queue-redraw"
+                   doc="The ::queue_redraw signal is emitted when clutter_actor_queue_redraw()
+is called on @origin.
+The default implementation for #ClutterActor chains up to the
+parent actor and queues a redraw on the parent, thus &quot;bubbling&quot;
+the redraw queue up through the actor graph. The default
+implementation for #ClutterStage queues a clutter_redraw() in a
+main loop idle handler.
+Note that the @origin actor may be the stage, or a container; it
+does not have to be a leaf node in the actor graph.
+Toolkits embedding a #ClutterStage which require a redraw and
+relayout cycle can stop the emission of this signal using the
+GSignal API, redraw the UI and then call clutter_redraw()
+themselves, like:
+|[
+static void
+on_redraw_complete (void)
+{
+/&amp;ast; execute the Clutter drawing pipeline &amp;ast;/
+clutter_redraw ();
+}
+static void
+on_stage_queue_redraw (ClutterStage *stage)
+{
+/&amp;ast; this prevents the default handler to run &amp;ast;/
+g_signal_stop_emission_by_name (stage, &quot;queue-redraw&quot;);
+/&amp;ast; queue a redraw with the host toolkit and call
+&amp;ast; a function when the redraw has been completed
+&amp;ast;/
+queue_a_redraw (G_CALLBACK (on_redraw_complete));
+}
+]|
+&lt;note&gt;&lt;para&gt;This signal is emitted before the Clutter paint
+pipeline is executed. If you want to know when the pipeline has
+been completed you should connect to the ::paint signal on the
+Stage with g_signal_connect_after().&lt;/para&gt;&lt;/note&gt;"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="origin" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="queue-relayout">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="realize"
+                   doc="The ::realize signal is emitted each time an actor is being
+realized."
+                   version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="scroll-event"
+                   doc="The ::scroll-event signal is emitted each time the mouse is
+scrolled on @actor
+or %FALSE to continue the emission."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="show"
+                   doc="The ::show signal is emitted when an actor is visible and
+rendered on the stage."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unrealize"
+                   doc="The ::unrealize signal is emitted each time an actor is being
+unrealized."
+                   version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ActorBox"
+            c:type="ClutterActorBox"
+            doc="Bounding box of an actor. The coordinates of the top left and right bottom
+corners of an actor. The coordinates of the two points are expressed in
+pixels with sub-pixel precision"
+            glib:type-name="ClutterActorBox"
+            glib:get-type="clutter_actor_box_get_type">
+      <field name="x1" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="y1" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="x2" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="y2" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="clutter_actor_box_new"
+                   doc="Allocates a new #ClutterActorBox using the passed coordinates
+for the top left and bottom right points
+clutter_actor_box_free() to free the resources"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="ActorBox" c:type="ClutterActorBox*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_1" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y_1" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="x_2" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y_2" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="clutter_actor_box_copy"
+              doc="Copies @box
+clutter_actor_box_free() to free the allocated resources"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="ActorBox" c:type="ClutterActorBox*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="clutter_actor_box_free"
+              doc="Frees a #ClutterActorBox allocated using clutter_actor_box_new()
+or clutter_actor_box_copy()"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="equal"
+              c:identifier="clutter_actor_box_equal"
+              doc="Checks @box_a and @box_b for equality"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="box_b" transfer-ownership="none">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_x"
+              c:identifier="clutter_actor_box_get_x"
+              doc="Retrieves the X coordinate of the origin of @box"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_y"
+              c:identifier="clutter_actor_box_get_y"
+              doc="Retrieves the Y coordinate of the origin of @box"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_width"
+              c:identifier="clutter_actor_box_get_width"
+              doc="Retrieves the width of the @box"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_height"
+              c:identifier="clutter_actor_box_get_height"
+              doc="Retrieves the height of the @box"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_origin"
+              c:identifier="clutter_actor_box_get_origin"
+              doc="Retrieves the origin of @box"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the X coordinate, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the Y coordinate, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size"
+              c:identifier="clutter_actor_box_get_size"
+              doc="Retrieves the size of @box"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the width, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the height, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_area"
+              c:identifier="clutter_actor_box_get_area"
+              doc="Retrieves the area of @box"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="contains"
+              c:identifier="clutter_actor_box_contains"
+              doc="Checks whether a point with @x, @y coordinates is contained
+withing @box"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_vertices"
+              c:identifier="clutter_actor_box_from_vertices"
+              doc="Calculates the bounding box represented by the four vertices; for details
+of the vertex array see clutter_actor_get_abs_allocation_vertices()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="verts"
+                     transfer-ownership="none"
+                     doc="array of four #ClutterVertex">
+            <array c:type="ClutterVertex" fixed-size="4">
+              <type name="Vertex"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="interpolate"
+              c:identifier="clutter_actor_box_interpolate"
+              doc="Interpolates between @initial and @final #ClutterActorBox&lt;!-- --&gt;es
+using @progress"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="final" transfer-ownership="none">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for the interpolation">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clamp_to_pixel"
+              c:identifier="clutter_actor_box_clamp_to_pixel"
+              doc="Clamps the components of @box to the nearest integer"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="ActorClass"
+            c:type="ClutterActorClass"
+            glib:is-gtype-struct-for="Actor"
+            doc="Base class for actors.">
+      <field name="parent_class">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="show">
+        <callback name="show" c:type="show">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="show_all">
+        <callback name="show_all" c:type="show_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="hide">
+        <callback name="hide" c:type="hide">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="hide_all">
+        <callback name="hide_all" c:type="hide_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="realize">
+        <callback name="realize" c:type="realize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unrealize">
+        <callback name="unrealize" c:type="unrealize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="map">
+        <callback name="map" c:type="map">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmap">
+        <callback name="unmap" c:type="unmap">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paint">
+        <callback name="paint" c:type="paint">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parent_set">
+        <callback name="parent_set" c:type="parent_set">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="old_parent" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="destroy">
+        <callback name="destroy" c:type="destroy">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pick">
+        <callback name="pick" c:type="pick">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="color" transfer-ownership="none">
+              <type name="Color" c:type="ClutterColor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="queue_redraw">
+        <callback name="queue_redraw" c:type="queue_redraw">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="leaf_that_queued" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_preferred_width">
+        <callback name="get_preferred_width" c:type="get_preferred_width">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="for_height" transfer-ownership="none">
+              <type name="float" c:type="gfloat"/>
+            </parameter>
+            <parameter name="min_width_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <type name="float" c:type="gfloat*"/>
+            </parameter>
+            <parameter name="natural_width_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <type name="float" c:type="gfloat*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_preferred_height">
+        <callback name="get_preferred_height" c:type="get_preferred_height">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="for_width" transfer-ownership="none">
+              <type name="float" c:type="gfloat"/>
+            </parameter>
+            <parameter name="min_height_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <type name="float" c:type="gfloat*"/>
+            </parameter>
+            <parameter name="natural_height_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <type name="float" c:type="gfloat*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="allocate">
+        <callback name="allocate" c:type="allocate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="box" transfer-ownership="none">
+              <type name="ActorBox" c:type="ClutterActorBox*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="apply_transform">
+        <callback name="apply_transform" c:type="apply_transform">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="matrix" transfer-ownership="none">
+              <type name="Cogl.Matrix" c:type="CoglMatrix*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="event">
+        <callback name="event" c:type="event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Event" c:type="ClutterEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="button_press_event">
+        <callback name="button_press_event" c:type="button_press_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="ButtonEvent" c:type="ClutterButtonEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="button_release_event">
+        <callback name="button_release_event" c:type="button_release_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="ButtonEvent" c:type="ClutterButtonEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="scroll_event">
+        <callback name="scroll_event" c:type="scroll_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="ScrollEvent" c:type="ClutterScrollEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_press_event">
+        <callback name="key_press_event" c:type="key_press_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="KeyEvent" c:type="ClutterKeyEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_release_event">
+        <callback name="key_release_event" c:type="key_release_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="KeyEvent" c:type="ClutterKeyEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="motion_event">
+        <callback name="motion_event" c:type="motion_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="MotionEvent" c:type="ClutterMotionEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enter_event">
+        <callback name="enter_event" c:type="enter_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="CrossingEvent" c:type="ClutterCrossingEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="leave_event">
+        <callback name="leave_event" c:type="leave_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="CrossingEvent" c:type="ClutterCrossingEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="captured_event">
+        <callback name="captured_event" c:type="captured_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Event" c:type="ClutterEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_focus_in">
+        <callback name="key_focus_in" c:type="key_focus_in">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_focus_out">
+        <callback name="key_focus_out" c:type="key_focus_out">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="queue_relayout">
+        <callback name="queue_relayout" c:type="queue_relayout">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_padding_dummy">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="31">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="ActorFlags"
+              doc="Flags used to signal the state of an actor."
+              glib:type-name="ClutterActorFlags"
+              glib:get-type="clutter_actor_flags_get_type"
+              c:type="ClutterActorFlags">
+      <member name="mapped"
+              value="2"
+              c:identifier="CLUTTER_ACTOR_MAPPED"
+              glib:nick="mapped"/>
+      <member name="realized"
+              value="4"
+              c:identifier="CLUTTER_ACTOR_REALIZED"
+              glib:nick="realized"/>
+      <member name="reactive"
+              value="8"
+              c:identifier="CLUTTER_ACTOR_REACTIVE"
+              glib:nick="reactive"/>
+      <member name="visible"
+              value="16"
+              c:identifier="CLUTTER_ACTOR_VISIBLE"
+              glib:nick="visible"/>
+      <member name="no_layout"
+              value="32"
+              c:identifier="CLUTTER_ACTOR_NO_LAYOUT"
+              glib:nick="no-layout"/>
+    </bitfield>
+    <record name="ActorPrivate" c:type="ClutterActorPrivate">
+    </record>
+    <constant name="Adiaeresis" value="196">
+      <type name="int"/>
+    </constant>
+    <constant name="Agrave" value="192">
+      <type name="int"/>
+    </constant>
+    <constant name="Ahook" value="16785058">
+      <type name="int"/>
+    </constant>
+    <bitfield name="AllocationFlags"
+              doc="Flags passed to the #ClutterActor::allocate() virtual function and
+to the clutter_actor_allocate() function"
+              version="1.0"
+              glib:type-name="ClutterAllocationFlags"
+              glib:get-type="clutter_allocation_flags_get_type"
+              c:type="ClutterAllocationFlags">
+      <member name="allocation_none"
+              value="0"
+              c:identifier="CLUTTER_ALLOCATION_NONE"
+              glib:nick="allocation-none"/>
+      <member name="absolute_origin_changed"
+              value="2"
+              c:identifier="CLUTTER_ABSOLUTE_ORIGIN_CHANGED"
+              glib:nick="absolute-origin-changed"/>
+    </bitfield>
+    <class name="Alpha"
+           c:type="ClutterAlpha"
+           doc="#ClutterAlpha combines a #ClutterTimeline and a function.
+The contents of the #ClutterAlpha structure are private and should
+only be accessed using the provided API."
+           version="0.2"
+           parent="GObject.InitiallyUnowned"
+           glib:type-name="ClutterAlpha"
+           glib:get-type="clutter_alpha_get_type"
+           glib:type-struct="AlphaClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_alpha_new"
+                   doc="Creates a new #ClutterAlpha instance.  You must set a function
+to compute the alpha value using clutter_alpha_set_func() and
+bind a #ClutterTimeline object to the #ClutterAlpha instance
+using clutter_alpha_set_timeline().
+You should use the newly created #ClutterAlpha instance inside
+a #ClutterBehaviour object."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="clutter_alpha_new_full"
+                   doc="Creates a new #ClutterAlpha instance and sets the timeline
+and animation mode.
+See also clutter_alpha_set_timeline() and clutter_alpha_set_mode()."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_func"
+                   c:identifier="clutter_alpha_new_with_func"
+                   doc="Creates a new #ClutterAlpha instances and sets the timeline
+and the alpha function.
+This function will not register @func as a global alpha function.
+See also clutter_alpha_set_timeline() and clutter_alpha_set_func()."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="AlphaFunc" c:type="ClutterAlphaFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="register_func"
+                c:identifier="clutter_alpha_register_func"
+                doc="Registers a global alpha function and returns its logical id
+to be used by clutter_alpha_set_mode() or by #ClutterAnimation.
+The logical id is always greater than %CLUTTER_ANIMATION_LAST."
+                version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <type name="AlphaFunc" c:type="ClutterAlphaFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="register_closure"
+                c:identifier="clutter_alpha_register_closure"
+                doc="#GClosure variant of clutter_alpha_register_func().
+Registers a global alpha function and returns its logical id
+to be used by clutter_alpha_set_mode() or by #ClutterAnimation.
+The logical id is always greater than %CLUTTER_ANIMATION_LAST."
+                version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="closure" transfer-ownership="none">
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_alpha"
+              c:identifier="clutter_alpha_get_alpha"
+              doc="Query the current alpha value."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_func"
+              c:identifier="clutter_alpha_set_func"
+              doc="Sets the #ClutterAlphaFunc function used to compute
+the alpha value at each frame of the #ClutterTimeline
+bound to @alpha.
+This function will not register @func as a global alpha function."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="AlphaFunc" c:type="ClutterAlphaFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_closure"
+              c:identifier="clutter_alpha_set_closure"
+              doc="Sets the #GClosure used to compute the alpha value at each
+frame of the #ClutterTimeline bound to @alpha."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="closure" transfer-ownership="none">
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_timeline"
+              c:identifier="clutter_alpha_set_timeline"
+              doc="Binds @alpha to @timeline."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_alpha_get_timeline"
+              doc="Gets the #ClutterTimeline bound to @alpha."
+              version="0.2">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterTimeline instance">
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="set_mode"
+              c:identifier="clutter_alpha_set_mode"
+              doc="Sets the progress function of @alpha using the symbolic value
+of @mode, as taken by the #ClutterAnimationMode enumeration or
+using the value returned by clutter_alpha_register_func()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mode"
+              c:identifier="clutter_alpha_get_mode"
+              doc="Retrieves the #ClutterAnimationMode used by @alpha."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <property name="alpha"
+                version="0.2"
+                doc="The alpha value as computed by the alpha function. The linear
+interval is 0.0 to 1.0, but the Alpha allows overshooting by
+one unit in each direction, so the valid interval is -1.0 to 2.0.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="mode"
+                version="1.0"
+                writable="1"
+                construct="1"
+                doc="The progress function logical id - either a value from the
+#ClutterAnimationMode enumeration or a value returned by
+clutter_alpha_register_func().
+If %CLUTTER_CUSTOM_MODE is used then the function set using
+clutter_alpha_set_closure() or clutter_alpha_set_func()
+will be used.">
+        <type name="ulong" c:type="gulong"/>
+      </property>
+      <property name="timeline"
+                version="0.2"
+                writable="1"
+                doc="A #ClutterTimeline instance used to drive the alpha function.">
+        <type name="Timeline" c:type="ClutterTimeline"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="priv">
+        <type name="AlphaPrivate" c:type="ClutterAlphaPrivate*"/>
+      </field>
+    </class>
+    <record name="AlphaClass"
+            c:type="ClutterAlphaClass"
+            glib:is-gtype-struct-for="Alpha"
+            doc="Base class for #ClutterAlpha"
+            version="0.2">
+      <field name="parent_class">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="clutter_alpha_1">
+        <callback name="clutter_alpha_1" c:type="_clutter_alpha_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_alpha_2">
+        <callback name="clutter_alpha_2" c:type="_clutter_alpha_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_alpha_3">
+        <callback name="clutter_alpha_3" c:type="_clutter_alpha_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_alpha_4">
+        <callback name="clutter_alpha_4" c:type="_clutter_alpha_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_alpha_5">
+        <callback name="clutter_alpha_5" c:type="_clutter_alpha_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="AlphaFunc"
+              c:type="ClutterAlphaFunc"
+              doc="A function returning a value depending on the position of
+the #ClutterTimeline bound to @alpha."
+              version="0.2">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="alpha" transfer-ownership="none">
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="AlphaPrivate" c:type="ClutterAlphaPrivate">
+    </record>
+    <constant name="Alt_L" value="65513">
+      <type name="int"/>
+    </constant>
+    <constant name="Alt_R" value="65514">
+      <type name="int"/>
+    </constant>
+    <constant name="Amacron" value="960">
+      <type name="int"/>
+    </constant>
+    <interface name="Animatable"
+               c:type="ClutterAnimatable"
+               doc="#ClutterAnimatable is an opaque structure whose members cannot be directly
+accessed"
+               version="1.0"
+               glib:type-name="ClutterAnimatable"
+               glib:get-type="clutter_animatable_get_type"
+               glib:type-struct="AnimatableIface">
+      <virtual-method name="animate_property" invoker="animate_property">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="animation" transfer-ownership="none">
+            <type name="Animation" c:type="ClutterAnimation*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="initial_value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="final_value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="animate_property"
+              c:identifier="clutter_animatable_animate_property"
+              doc="Calls the animate_property() virtual function for @animatable.
+The @initial_value and @final_value #GValue&lt;!-- --&gt;s must contain
+the same type; @value must have been initialized to the same
+type of @initial_value and @final_value.
+All implementation of the #ClutterAnimatable interface must
+implement this function.
+be applied to the #ClutterAnimatable, and %FALSE otherwise"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="animation" transfer-ownership="none">
+            <type name="Animation" c:type="ClutterAnimation*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="initial_value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="final_value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="AnimatableIface"
+            c:type="ClutterAnimatableIface"
+            glib:is-gtype-struct-for="Animatable"
+            doc="Base interface for #GObject&lt;!-- --&gt;s that can be animated by a
+a #ClutterAnimation."
+            version="1.0">
+      <field name="parent_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="animate_property">
+        <callback name="animate_property" c:type="animate_property">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="animatable" transfer-ownership="none">
+              <type name="Animatable" c:type="ClutterAnimatable*"/>
+            </parameter>
+            <parameter name="animation" transfer-ownership="none">
+              <type name="Animation" c:type="ClutterAnimation*"/>
+            </parameter>
+            <parameter name="property_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="initial_value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="final_value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="progress" transfer-ownership="none">
+              <type name="double" c:type="gdouble"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="Animation"
+           c:type="ClutterAnimation"
+           doc="The #ClutterAnimation structure contains only private data and should
+be accessed using the provided functions."
+           version="1.0"
+           parent="GObject.Object"
+           glib:type-name="ClutterAnimation"
+           glib:get-type="clutter_animation_get_type"
+           glib:type-struct="AnimationClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_animation_new"
+                   doc="Creates a new #ClutterAnimation instance. You should set the
+#GObject to be animated using clutter_animation_set_object(),
+set the duration with clutter_animation_set_duration() and the
+easing mode using clutter_animation_set_mode().
+Use clutter_animation_bind() or clutter_animation_bind_interval()
+to define the properties to be animated. The interval and the
+animated properties can be updated at runtime.
+The clutter_actor_animate() and relative family of functions provide
+an easy way to animate a #ClutterActor and automatically manage the
+lifetime of a #ClutterAnimation instance, so you should consider using
+those functions instead of manually creating an animation.
+to release the associated resources"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+      </constructor>
+      <method name="set_object"
+              c:identifier="clutter_animation_set_object"
+              doc="Attaches @animation to @object. The #ClutterAnimation will take a
+reference on @object."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object"
+              c:identifier="clutter_animation_get_object"
+              doc="Retrieves the #GObject attached to @animation."
+              version="1.0">
+        <return-value transfer-ownership="none" doc="a #GObject">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+      </method>
+      <method name="set_mode"
+              c:identifier="clutter_animation_set_mode"
+              doc="Sets the animation @mode of @animation. The animation @mode is
+a logical id, either coming from the #ClutterAnimationMode enumeration
+or the return value of clutter_alpha_register_func().
+This function will also set #ClutterAnimation:alpha if needed."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mode"
+              c:identifier="clutter_animation_get_mode"
+              doc="Retrieves the animation mode of @animation, as set by
+clutter_animation_set_mode()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="set_duration"
+              c:identifier="clutter_animation_set_duration"
+              doc="Sets the duration of @animation in milliseconds.
+This function will set #ClutterAnimation:alpha and
+#ClutterAnimation:timeline if needed."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_animation_get_duration"
+              doc="Retrieves the duration of @animation, in milliseconds."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_loop"
+              c:identifier="clutter_animation_set_loop"
+              doc="Sets whether @animation should loop over itself once finished.
+A looping #ClutterAnimation will not emit the #ClutterAnimation::completed
+signal when finished.
+This function will set #ClutterAnimation:alpha and
+#ClutterAnimation:timeline if needed."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="loop" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_loop"
+              c:identifier="clutter_animation_get_loop"
+              doc="Retrieves whether @animation is looping."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_timeline"
+              c:identifier="clutter_animation_set_timeline"
+              doc="Sets the #ClutterTimeline used by @animation."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline"
+                     transfer-ownership="none"
+                     doc=" current #ClutterTimeline">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_animation_get_timeline"
+              doc="Retrieves the #ClutterTimeline used by @animation"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the timeline used by the animation">
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="set_alpha"
+              c:identifier="clutter_animation_set_alpha"
+              doc="Sets @alpha as the #ClutterAlpha used by @animation.
+If @alpha is not %NULL, the #ClutterAnimation will take ownership
+of the #ClutterAlpha instance."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alpha"
+              c:identifier="clutter_animation_get_alpha"
+              doc="Retrieves the #ClutterAlpha used by @animation."
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the alpha object used by the animation">
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+      </method>
+      <method name="bind"
+              c:identifier="clutter_animation_bind"
+              doc="Adds a single property with name @property_name to the
+animation @animation.  For more information about animations,
+see clutter_actor_animate().
+This method returns the animation primarily to make chained
+calls convenient in language bindings."
+              version="1.0">
+        <return-value transfer-ownership="none" doc="The animation itself.">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="final" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bind_interval"
+              c:identifier="clutter_animation_bind_interval"
+              doc="Binds @interval to the @property_name of the #GObject
+attached to @animation. The #ClutterAnimation will take
+ownership of the passed #ClutterInterval.  For more information
+about animations, see clutter_actor_animate().
+If you need to update the interval instance use
+clutter_animation_update_property() instead."
+              version="1.0">
+        <return-value transfer-ownership="none" doc="The animation itself.">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interval"
+                     transfer-ownership="full"
+                     doc="a #ClutterInterval">
+            <type name="Interval" c:type="ClutterInterval*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_property"
+              c:identifier="clutter_animation_has_property"
+              doc="Checks whether @animation is controlling @property_name.
+#ClutterAnimation, %FALSE otherwise"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update"
+              c:identifier="clutter_animation_update"
+              doc="Updates the @final value of the interval for @property_name"
+              version="1.0">
+        <return-value transfer-ownership="none" doc="The animation itself.">
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="final" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update_interval"
+              c:identifier="clutter_animation_update_interval"
+              doc="Changes the @interval for @property_name. The #ClutterAnimation
+will take ownership of the passed #ClutterInterval."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interval" transfer-ownership="none">
+            <type name="Interval" c:type="ClutterInterval*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unbind_property"
+              c:identifier="clutter_animation_unbind_property"
+              doc="Removes @property_name from the list of animated properties."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_interval"
+              c:identifier="clutter_animation_get_interval"
+              doc="Retrieves the #ClutterInterval associated to @property_name
+inside @animation.
+property with the same name was found. The returned interval is
+owned by the #ClutterAnimation and should not be unreferenced"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterInterval or %NULL if no">
+          <type name="Interval" c:type="ClutterInterval*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="completed"
+              c:identifier="clutter_animation_completed"
+              doc="Emits the ::completed signal on @animation
+When using this function with a #ClutterAnimation created
+by the clutter_actor_animate() family of functions, @animation
+will be unreferenced and it will not be valid anymore,
+unless g_object_ref() was called before calling this function
+or unless a reference was taken inside a handler for the
+#ClutterAnimation::completed signal"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="alpha"
+                version="1.0"
+                writable="1"
+                doc="The #ClutterAlpha used by the animation.">
+        <type name="Alpha" c:type="ClutterAlpha"/>
+      </property>
+      <property name="duration"
+                version="1.0"
+                writable="1"
+                doc="The duration of the animation, expressed in milliseconds.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="loop"
+                version="1.0"
+                writable="1"
+                doc="Whether the animation should loop.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="mode"
+                version="1.0"
+                writable="1"
+                doc="The animation mode, either a value from #ClutterAnimationMode
+or a value returned by clutter_alpha_register_func(). The
+default value is %CLUTTER_LINEAR.">
+        <type name="ulong" c:type="gulong"/>
+      </property>
+      <property name="object"
+                version="1.0"
+                writable="1"
+                doc="The #GObject to which the animation applies.">
+        <type name="GObject.Object" c:type="GObject"/>
+      </property>
+      <property name="timeline"
+                version="1.0"
+                writable="1"
+                doc="The #ClutterTimeline used by the animation.">
+        <type name="Timeline" c:type="ClutterTimeline"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="AnimationPrivate" c:type="ClutterAnimationPrivate*"/>
+      </field>
+      <glib:signal name="completed"
+                   doc="The ::completed signal is emitted once the animation has
+been completed.
+The @animation instance is guaranteed to be valid for the entire
+duration of the signal emission chain."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="started"
+                   doc="The ::started signal is emitted once the animation has been
+started"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="AnimationClass"
+            c:type="ClutterAnimationClass"
+            glib:is-gtype-struct-for="Animation"
+            doc="The #ClutterAnimationClass structure contains only private data and
+should be accessed using the provided functions."
+            version="1.0">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="started">
+        <callback name="started" c:type="started">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="animation" transfer-ownership="none">
+              <type name="Animation" c:type="ClutterAnimation*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="completed">
+        <callback name="completed" c:type="completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="animation" transfer-ownership="none">
+              <type name="Animation" c:type="ClutterAnimation*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_reserved1">
+        <callback name="clutter_reserved1" c:type="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved2">
+        <callback name="clutter_reserved2" c:type="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved3">
+        <callback name="clutter_reserved3" c:type="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved4">
+        <callback name="clutter_reserved4" c:type="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved5">
+        <callback name="clutter_reserved5" c:type="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved6">
+        <callback name="clutter_reserved6" c:type="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved7">
+        <callback name="clutter_reserved7" c:type="_clutter_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved8">
+        <callback name="clutter_reserved8" c:type="_clutter_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="AnimationMode"
+                 doc="The animation modes used by #ClutterAlpha and #ClutterAnimation. This
+enumeration can be expanded in later versions of Clutter. See the
+#ClutterAlpha documentation for a graph of all the animation modes.
+Every global alpha function registered using clutter_alpha_register_func()
+or clutter_alpha_register_closure() will have a logical id greater than
+%CLUTTER_ANIMATION_LAST."
+                 version="1.0"
+                 glib:type-name="ClutterAnimationMode"
+                 glib:get-type="clutter_animation_mode_get_type"
+                 c:type="ClutterAnimationMode">
+      <member name="custom_mode"
+              value="0"
+              c:identifier="CLUTTER_CUSTOM_MODE"
+              glib:nick="custom-mode"/>
+      <member name="linear"
+              value="1"
+              c:identifier="CLUTTER_LINEAR"
+              glib:nick="linear"/>
+      <member name="ease_in_quad"
+              value="2"
+              c:identifier="CLUTTER_EASE_IN_QUAD"
+              glib:nick="ease-in-quad"/>
+      <member name="ease_out_quad"
+              value="3"
+              c:identifier="CLUTTER_EASE_OUT_QUAD"
+              glib:nick="ease-out-quad"/>
+      <member name="ease_in_out_quad"
+              value="4"
+              c:identifier="CLUTTER_EASE_IN_OUT_QUAD"
+              glib:nick="ease-in-out-quad"/>
+      <member name="ease_in_cubic"
+              value="5"
+              c:identifier="CLUTTER_EASE_IN_CUBIC"
+              glib:nick="ease-in-cubic"/>
+      <member name="ease_out_cubic"
+              value="6"
+              c:identifier="CLUTTER_EASE_OUT_CUBIC"
+              glib:nick="ease-out-cubic"/>
+      <member name="ease_in_out_cubic"
+              value="7"
+              c:identifier="CLUTTER_EASE_IN_OUT_CUBIC"
+              glib:nick="ease-in-out-cubic"/>
+      <member name="ease_in_quart"
+              value="8"
+              c:identifier="CLUTTER_EASE_IN_QUART"
+              glib:nick="ease-in-quart"/>
+      <member name="ease_out_quart"
+              value="9"
+              c:identifier="CLUTTER_EASE_OUT_QUART"
+              glib:nick="ease-out-quart"/>
+      <member name="ease_in_out_quart"
+              value="10"
+              c:identifier="CLUTTER_EASE_IN_OUT_QUART"
+              glib:nick="ease-in-out-quart"/>
+      <member name="ease_in_quint"
+              value="11"
+              c:identifier="CLUTTER_EASE_IN_QUINT"
+              glib:nick="ease-in-quint"/>
+      <member name="ease_out_quint"
+              value="12"
+              c:identifier="CLUTTER_EASE_OUT_QUINT"
+              glib:nick="ease-out-quint"/>
+      <member name="ease_in_out_quint"
+              value="13"
+              c:identifier="CLUTTER_EASE_IN_OUT_QUINT"
+              glib:nick="ease-in-out-quint"/>
+      <member name="ease_in_sine"
+              value="14"
+              c:identifier="CLUTTER_EASE_IN_SINE"
+              glib:nick="ease-in-sine"/>
+      <member name="ease_out_sine"
+              value="15"
+              c:identifier="CLUTTER_EASE_OUT_SINE"
+              glib:nick="ease-out-sine"/>
+      <member name="ease_in_out_sine"
+              value="16"
+              c:identifier="CLUTTER_EASE_IN_OUT_SINE"
+              glib:nick="ease-in-out-sine"/>
+      <member name="ease_in_expo"
+              value="17"
+              c:identifier="CLUTTER_EASE_IN_EXPO"
+              glib:nick="ease-in-expo"/>
+      <member name="ease_out_expo"
+              value="18"
+              c:identifier="CLUTTER_EASE_OUT_EXPO"
+              glib:nick="ease-out-expo"/>
+      <member name="ease_in_out_expo"
+              value="19"
+              c:identifier="CLUTTER_EASE_IN_OUT_EXPO"
+              glib:nick="ease-in-out-expo"/>
+      <member name="ease_in_circ"
+              value="20"
+              c:identifier="CLUTTER_EASE_IN_CIRC"
+              glib:nick="ease-in-circ"/>
+      <member name="ease_out_circ"
+              value="21"
+              c:identifier="CLUTTER_EASE_OUT_CIRC"
+              glib:nick="ease-out-circ"/>
+      <member name="ease_in_out_circ"
+              value="22"
+              c:identifier="CLUTTER_EASE_IN_OUT_CIRC"
+              glib:nick="ease-in-out-circ"/>
+      <member name="ease_in_elastic"
+              value="23"
+              c:identifier="CLUTTER_EASE_IN_ELASTIC"
+              glib:nick="ease-in-elastic"/>
+      <member name="ease_out_elastic"
+              value="24"
+              c:identifier="CLUTTER_EASE_OUT_ELASTIC"
+              glib:nick="ease-out-elastic"/>
+      <member name="ease_in_out_elastic"
+              value="25"
+              c:identifier="CLUTTER_EASE_IN_OUT_ELASTIC"
+              glib:nick="ease-in-out-elastic"/>
+      <member name="ease_in_back"
+              value="26"
+              c:identifier="CLUTTER_EASE_IN_BACK"
+              glib:nick="ease-in-back"/>
+      <member name="ease_out_back"
+              value="27"
+              c:identifier="CLUTTER_EASE_OUT_BACK"
+              glib:nick="ease-out-back"/>
+      <member name="ease_in_out_back"
+              value="28"
+              c:identifier="CLUTTER_EASE_IN_OUT_BACK"
+              glib:nick="ease-in-out-back"/>
+      <member name="ease_in_bounce"
+              value="29"
+              c:identifier="CLUTTER_EASE_IN_BOUNCE"
+              glib:nick="ease-in-bounce"/>
+      <member name="ease_out_bounce"
+              value="30"
+              c:identifier="CLUTTER_EASE_OUT_BOUNCE"
+              glib:nick="ease-out-bounce"/>
+      <member name="ease_in_out_bounce"
+              value="31"
+              c:identifier="CLUTTER_EASE_IN_OUT_BOUNCE"
+              glib:nick="ease-in-out-bounce"/>
+      <member name="animation_last"
+              value="32"
+              c:identifier="CLUTTER_ANIMATION_LAST"
+              glib:nick="animation-last"/>
+    </enumeration>
+    <record name="AnimationPrivate" c:type="ClutterAnimationPrivate">
+    </record>
+    <class name="Animator"
+           c:type="ClutterAnimator"
+           doc="The #ClutterAnimator structure contains only private data and
+should be accessed using the provided API"
+           version="1.2"
+           parent="GObject.Object"
+           glib:type-name="ClutterAnimator"
+           glib:get-type="clutter_animator_get_type"
+           glib:type-struct="AnimatorClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_animator_new"
+                   doc="Creates a new #ClutterAnimator instance"
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="Animator" c:type="ClutterAnimator*"/>
+        </return-value>
+      </constructor>
+      <method name="set_key"
+              c:identifier="clutter_animator_set_key"
+              doc="Sets a single key in the #ClutterAnimator for the @property_name of"
+              version="1.2">
+        <return-value transfer-ownership="none" doc="The animator instance">
+          <type name="Animator" c:type="ClutterAnimator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="progress"
+                     transfer-ownership="none"
+                     doc=" value applies">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="clutter_animator_set"
+              doc="Adds multiple keys to a #ClutterAnimator, specifying the value a given
+property should have at a given progress of the animation. The mode
+specified is the mode used when going to this key from the previous key of
+the @property_name
+If a given (object, property, progress) tuple already exist the mode and
+value will be replaced with the new values."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="first_mode" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="first_progress"
+                     transfer-ownership="none"
+                     doc=" range is a normalized floating point value between 0 and 1">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_keys"
+              c:identifier="clutter_animator_get_keys"
+              doc="Returns a list of pointers to opaque structures with accessor functions
+that describe the keys added to an animator.
+list of #ClutterAnimatorKey&lt;!-- --&gt;s; the contents of the list are owned
+by the #ClutterAnimator, but you should free the returned list when done,
+using g_list_free()"
+              version="1.2">
+        <return-value transfer-ownership="container" doc="a">
+          <type name="GLib.List" c:type="GList*">
+            <type name="AnimatorKey"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="object"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GObject to search for, or %NULL for all objects">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a specific property name to query for, or %NULL for all properties">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="progress"
+                     transfer-ownership="none"
+                     doc=" progresses">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_key"
+              c:identifier="clutter_animator_remove_key"
+              doc="Removes all keys matching the conditions specificed in the arguments."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GObject to search for, or %NULL for all">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a specific property name to query for, or %NULL for all">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none" doc=" for all">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start"
+              c:identifier="clutter_animator_start"
+              doc="Start the ClutterAnimator, this is a thin wrapper that rewinds
+and starts the animators current timeline."
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="compute_value"
+              c:identifier="clutter_animator_compute_value"
+              doc="Compute the value for a managed property at a given progress.
+If the property is an ease-in property, the current value of the property
+on the object will be used as the starting point for computation.
+an error occurs or the progress is before any of the keys) %FALSE is
+returned and the #GValue is left untouched"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_animator_get_timeline"
+              doc="Get the timeline hooked up for driving the #ClutterAnimator"
+              version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="the #ClutterTimeline that drives the animator">
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="set_timeline"
+              c:identifier="clutter_animator_set_timeline"
+              doc="Sets an external timeline that will be used for driving the animation"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_animator_get_duration"
+              doc="Retrieves the current duration of an animator"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_duration"
+              c:identifier="clutter_animator_set_duration"
+              doc="Runs the timeline of the #ClutterAnimator with a duration in msecs
+as specified."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="property_get_ease_in"
+              c:identifier="clutter_animator_property_get_ease_in"
+              doc="Checks if a property value is to be eased into the animation."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="property_set_ease_in"
+              c:identifier="clutter_animator_property_set_ease_in"
+              doc="Sets whether a property value is to be eased into the animation."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="ease_in" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="property_get_interpolation"
+              c:identifier="clutter_animator_property_get_interpolation"
+              doc="Get the interpolation used by animator for a property on a particular
+object."
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="Interpolation" c:type="ClutterInterpolation"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="property_set_interpolation"
+              c:identifier="clutter_animator_property_set_interpolation"
+              doc="Set the interpolation method to use, %CLUTTER_INTERPOLATION_LINEAR causes
+the values to linearly change between the values, and
+%CLUTTER_INTERPOLATION_CUBIC causes the values to smoothly change between
+the values."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interpolation" transfer-ownership="none">
+            <type name="Interpolation" c:type="ClutterInterpolation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="duration"
+                version="1.2"
+                writable="1"
+                doc="The duration of the #ClutterTimeline used by the #ClutterAnimator
+to drive the animation">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="timeline"
+                version="1.2"
+                writable="1"
+                doc="The #ClutterTimeline used by the #ClutterAnimator to drive the
+animation">
+        <type name="Timeline" c:type="ClutterTimeline"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="AnimatorPrivate" c:type="ClutterAnimatorPrivate*"/>
+      </field>
+    </class>
+    <record name="AnimatorClass"
+            c:type="ClutterAnimatorClass"
+            glib:is-gtype-struct-for="Animator"
+            doc="The #ClutterAnimatorClass structure contains only private data"
+            version="1.2">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_padding_dummy">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="16">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="AnimatorKey"
+            c:type="ClutterAnimatorKey"
+            doc="A key frame inside a #ClutterAnimator"
+            version="1.2"
+            glib:type-name="ClutterAnimatorKey"
+            glib:get-type="clutter_animator_key_get_type">
+      <method name="get_object"
+              c:identifier="clutter_animator_key_get_object"
+              doc="Retrieves the object a key applies to."
+              version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="the object an animator_key exist for.">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+      </method>
+      <method name="get_property_name"
+              c:identifier="clutter_animator_key_get_property_name"
+              doc="Retrieves the name of the property a key applies to."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_property_type"
+              c:identifier="clutter_animator_key_get_property_type"
+              doc="Retrieves the #GType of the property a key applies to
+You can use this type to initialize the #GValue to pass to
+clutter_animator_key_get_value()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="get_mode"
+              c:identifier="clutter_animator_key_get_mode"
+              doc="Retrieves the mode of a #ClutterAnimator key, for the first key of a
+property for an object this represents the whether the animation is
+open ended and or curved for the remainding keys for the property it
+represents the easing mode."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="get_progress"
+              c:identifier="clutter_animator_key_get_progress"
+              doc="Retrieves the progress of an clutter_animator_key"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_value"
+              c:identifier="clutter_animator_key_get_value"
+              doc="Retrieves a copy of the value for a #ClutterAnimatorKey.
+The passed in #GValue needs to be already initialized for the value
+type of the key or to a type that allow transformation from the value
+type of the key.
+Use g_value_unset() when done.
+%FALSE otherwise"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="AnimatorPrivate" c:type="ClutterAnimatorPrivate">
+    </record>
+    <record name="AnyEvent"
+            c:type="ClutterAnyEvent"
+            doc="Common members for a #ClutterEvent"
+            version="0.2">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+    </record>
+    <constant name="Aogonek" value="417">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_0" value="16778848">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_1" value="16778849">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_2" value="16778850">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_3" value="16778851">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_4" value="16778852">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_5" value="16778853">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_6" value="16778854">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_7" value="16778855">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_8" value="16778856">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_9" value="16778857">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_ain" value="1497">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_alef" value="1479">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_alefmaksura" value="1513">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_beh" value="1480">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_comma" value="1452">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_dad" value="1494">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_dal" value="1487">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_damma" value="1519">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_dammatan" value="1516">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_ddal" value="16778888">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_farsi_yeh" value="16778956">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_fatha" value="1518">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_fathatan" value="1515">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_feh" value="1505">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_fullstop" value="16778964">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_gaf" value="16778927">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_ghain" value="1498">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_ha" value="1511">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hah" value="1485">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamza" value="1473">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamza_above" value="16778836">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamza_below" value="16778837">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamzaonalef" value="1475">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamzaonwaw" value="1476">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamzaonyeh" value="1478">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamzaunderalef" value="1477">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_heh" value="1511">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_heh_doachashmee" value="16778942">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_heh_goal" value="16778945">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_jeem" value="1484">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_jeh" value="16778904">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_kaf" value="1507">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_kasra" value="1520">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_kasratan" value="1517">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_keheh" value="16778921">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_khah" value="1486">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_lam" value="1508">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_madda_above" value="16778835">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_maddaonalef" value="1474">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_meem" value="1509">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_noon" value="1510">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_noon_ghunna" value="16778938">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_peh" value="16778878">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_percent" value="16778858">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_qaf" value="1506">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_question_mark" value="1471">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_ra" value="1489">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_rreh" value="16778897">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_sad" value="1493">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_seen" value="1491">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_semicolon" value="1467">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_shadda" value="1521">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_sheen" value="1492">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_sukun" value="1522">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_superscript_alef" value="16778864">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_tah" value="1495">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_tatweel" value="1504">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_tcheh" value="16778886">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_teh" value="1482">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_tehmarbuta" value="1481">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_thal" value="1488">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_theh" value="1483">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_tteh" value="16778873">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_veh" value="16778916">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_waw" value="1512">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_yeh" value="1514">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_yeh_baree" value="16778962">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_zah" value="1496">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_zain" value="1490">
+      <type name="int"/>
+    </constant>
+    <constant name="Aring" value="197">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_AT" value="16778552">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_AYB" value="16778545">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_BEN" value="16778546">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_CHA" value="16778569">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_DA" value="16778548">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_DZA" value="16778561">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_E" value="16778551">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_FE" value="16778582">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_GHAT" value="16778562">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_GIM" value="16778547">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_HI" value="16778565">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_HO" value="16778560">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_INI" value="16778555">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_JE" value="16778571">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_KE" value="16778580">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_KEN" value="16778559">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_KHE" value="16778557">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_LYUN" value="16778556">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_MEN" value="16778564">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_NU" value="16778566">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_O" value="16778581">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_PE" value="16778570">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_PYUR" value="16778579">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_RA" value="16778572">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_RE" value="16778576">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_SE" value="16778573">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_SHA" value="16778567">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_TCHE" value="16778563">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_TO" value="16778553">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_TSA" value="16778558">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_TSO" value="16778577">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_TYUN" value="16778575">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_VEV" value="16778574">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_VO" value="16778568">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_VYUN" value="16778578">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_YECH" value="16778549">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ZA" value="16778550">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ZHE" value="16778554">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_accent" value="16778587">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_amanak" value="16778588">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_apostrophe" value="16778586">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_at" value="16778600">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ayb" value="16778593">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ben" value="16778594">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_but" value="16778589">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_cha" value="16778617">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_da" value="16778596">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_dza" value="16778609">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_e" value="16778599">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_exclam" value="16778588">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_fe" value="16778630">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_full_stop" value="16778633">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ghat" value="16778610">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_gim" value="16778595">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_hi" value="16778613">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ho" value="16778608">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_hyphen" value="16778634">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ini" value="16778603">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_je" value="16778619">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ke" value="16778628">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ken" value="16778607">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_khe" value="16778605">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ligature_ew" value="16778631">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_lyun" value="16778604">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_men" value="16778612">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_nu" value="16778614">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_o" value="16778629">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_paruyk" value="16778590">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_pe" value="16778618">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_pyur" value="16778627">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_question" value="16778590">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ra" value="16778620">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_re" value="16778624">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_se" value="16778621">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_separation_mark" value="16778589">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_sha" value="16778615">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_shesht" value="16778587">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_tche" value="16778611">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_to" value="16778601">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_tsa" value="16778606">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_tso" value="16778625">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_tyun" value="16778623">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_verjaket" value="16778633">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_vev" value="16778622">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_vo" value="16778616">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_vyun" value="16778626">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_yech" value="16778597">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_yentamna" value="16778634">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_za" value="16778598">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_zhe" value="16778602">
+      <type name="int"/>
+    </constant>
+    <constant name="Atilde" value="195">
+      <type name="int"/>
+    </constant>
+    <constant name="AudibleBell_Enable" value="65146">
+      <type name="int"/>
+    </constant>
+    <constant name="B" value="66">
+      <type name="int"/>
+    </constant>
+    <constant name="Babovedot" value="16784898">
+      <type name="int"/>
+    </constant>
+    <constant name="BackSpace" value="65288">
+      <type name="int"/>
+    </constant>
+    <class name="Backend"
+           c:type="ClutterBackend"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterBackend"
+           glib:get-type="clutter_backend_get_type"
+           glib:type-struct="BackendClass">
+      <virtual-method name="pre_parse" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="post_parse" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="create_stage" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="StageWindow" c:type="ClutterStageWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrapper" transfer-ownership="none">
+            <type name="Stage" c:type="ClutterStage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="init_events">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="init_features">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="add_options">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_features">
+        <return-value transfer-ownership="full">
+          <type name="FeatureFlags" c:type="ClutterFeatureFlags"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="redraw">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <type name="Stage" c:type="ClutterStage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_context" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="ensure_context">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <type name="Stage" c:type="ClutterStage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_device_manager">
+        <return-value transfer-ownership="full">
+          <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+        </return-value>
+      </virtual-method>
+      <method name="set_resolution"
+              c:identifier="clutter_backend_set_resolution"
+              doc="Sets the resolution for font handling on the screen. This is a
+scale factor between points specified in a #PangoFontDescription
+and cairo units. The default value is 96, meaning that a 10 point
+font will be 13 units high. (10 * 96. / 72. = 13.3).
+Applications should never need to call this function."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dpi"
+                     transfer-ownership="none"
+                     doc=" actually involved; the terminology is conventional).">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_resolution"
+              c:identifier="clutter_backend_get_resolution"
+              doc="Gets the resolution for font handling on the screen; see
+clutter_backend_set_resolution() for full details.
+has been set."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_double_click_time"
+              c:identifier="clutter_backend_set_double_click_time"
+              doc="Sets the maximum time between two button press events, used to
+verify whether it&apos;s a double click event or not."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msec" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_click_time"
+              c:identifier="clutter_backend_get_double_click_time"
+              doc="Gets the maximum time between two button press events, as set
+by clutter_backend_set_double_click_time()."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_double_click_distance"
+              c:identifier="clutter_backend_set_double_click_distance"
+              doc="Sets the maximum distance used to verify a double click event."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="distance" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_click_distance"
+              c:identifier="clutter_backend_get_double_click_distance"
+              doc="Retrieves the distance used to verify a double click event"
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_font_options"
+              c:identifier="clutter_backend_set_font_options"
+              doc="Sets the new font options for @backend. The #ClutterBackend will
+copy the #cairo_font_options_t.
+If @options is %NULL, the first following call to
+clutter_backend_get_font_options() will return the default font
+options for @backend.
+This function is intended for actors creating a Pango layout
+using the PangoCairo API."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="options" transfer-ownership="none">
+            <type name="cairo.FontOptions" c:type="cairo_font_options_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font_options"
+              c:identifier="clutter_backend_get_font_options"
+              doc="Retrieves the font options for @backend.
+The returned #cairo_font_options_t is owned by the backend and should
+not be modified or freed"
+              version="0.8">
+        <return-value transfer-ownership="none"
+                      doc="the font options of the #ClutterBackend.">
+          <type name="cairo.FontOptions" c:type="cairo_font_options_t*"/>
+        </return-value>
+      </method>
+      <method name="set_font_name"
+              c:identifier="clutter_backend_set_font_name"
+              doc="Sets the default font to be used by Clutter. The @font_name string
+must either be %NULL, which means that the font name from the
+default #ClutterBackend will be used; or be something that can
+be parsed by the pango_font_description_from_string() function."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font_name"
+              c:identifier="clutter_backend_get_font_name"
+              doc="Retrieves the default font name as set by
+clutter_backend_set_font_name().
+owned by the #ClutterBackend and should never be modified or freed"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="BackendPrivate" c:type="ClutterBackendPrivate*"/>
+      </field>
+      <glib:signal name="font-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="resolution-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="BackendClass"
+            c:type="ClutterBackendClass"
+            glib:is-gtype-struct-for="Backend">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="pre_parse">
+        <callback name="pre_parse" c:type="pre_parse" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="post_parse">
+        <callback name="post_parse" c:type="post_parse" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_stage">
+        <callback name="create_stage" c:type="create_stage" throws="1">
+          <return-value transfer-ownership="full">
+            <type name="StageWindow" c:type="ClutterStageWindow*"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+            <parameter name="wrapper" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="init_events">
+        <callback name="init_events" c:type="init_events">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="init_features">
+        <callback name="init_features" c:type="init_features">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_options">
+        <callback name="add_options" c:type="add_options">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+            <parameter name="group" transfer-ownership="none">
+              <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_features">
+        <callback name="get_features" c:type="get_features">
+          <return-value transfer-ownership="full">
+            <type name="FeatureFlags" c:type="ClutterFeatureFlags"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="redraw">
+        <callback name="redraw" c:type="redraw">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_context">
+        <callback name="create_context" c:type="create_context" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ensure_context">
+        <callback name="ensure_context" c:type="ensure_context">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_device_manager">
+        <callback name="get_device_manager" c:type="get_device_manager">
+          <return-value transfer-ownership="full">
+            <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="resolution_changed">
+        <callback name="resolution_changed" c:type="resolution_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="font_changed">
+        <callback name="font_changed" c:type="font_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="BackendPrivate" c:type="ClutterBackendPrivate">
+    </record>
+    <constant name="Begin" value="65368">
+      <type name="int"/>
+    </constant>
+    <class name="Behaviour"
+           c:type="ClutterBehaviour"
+           doc="#ClutterBehaviour-struct contains only private data and should
+be accessed with the functions below."
+           version="0.2"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterBehaviour"
+           glib:get-type="clutter_behaviour_get_type"
+           glib:type-struct="BehaviourClass">
+      <implements name="Scriptable"/>
+      <virtual-method name="alpha_notify">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha_value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="apply"
+              c:identifier="clutter_behaviour_apply"
+              doc="Applies @behave to @actor.  This function adds a reference on
+the actor."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="clutter_behaviour_remove"
+              doc="Removes @actor from the list of #ClutterActor&lt;!-- --&gt;s to which"
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_all"
+              c:identifier="clutter_behaviour_remove_all"
+              doc="Removes every actor from the list that @behave holds."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="actors_foreach"
+              c:identifier="clutter_behaviour_actors_foreach"
+              doc="Calls @func for every actor driven by @behave."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="BehaviourForeachFunc"
+                  c:type="ClutterBehaviourForeachFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_actors"
+              c:identifier="clutter_behaviour_get_n_actors"
+              doc="Gets the number of actors this behaviour is applied too."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_nth_actor"
+              c:identifier="clutter_behaviour_get_nth_actor"
+              doc="Gets an actor the behaviour was applied to referenced by index num."
+              version="0.2">
+        <return-value transfer-ownership="none"
+                      doc="A Clutter actor or NULL if @index_ is invalid.">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_actors"
+              c:identifier="clutter_behaviour_get_actors"
+              doc="Retrieves all the actors to which @behave applies. It is not recommended
+for derived classes to use this in there alpha notify method but use
+#clutter_behaviour_actors_foreach as it avoids alot of needless allocations.
+actors. You should free the returned list with g_slist_free() when
+finished using it."
+              version="0.2">
+        <return-value transfer-ownership="container" doc="a list of">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Actor"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_alpha"
+              c:identifier="clutter_behaviour_get_alpha"
+              doc="Retrieves the #ClutterAlpha object bound to @behave.
+object has been bound to this behaviour."
+              version="0.2">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterAlpha object, or %NULL if no alpha">
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+      </method>
+      <method name="set_alpha"
+              c:identifier="clutter_behaviour_set_alpha"
+              doc="Binds @alpha to a #ClutterBehaviour. The #ClutterAlpha object
+used by #ClutterAlpha a new value of the alpha parameter is
+computed by the alpha function; the value should be used by
+the #ClutterBehaviour to update one or more properties of the
+actors to which the behaviour applies.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_applied"
+              c:identifier="clutter_behaviour_is_applied"
+              doc="Check if @behave applied to  @actor."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="alpha"
+                version="0.2"
+                writable="1"
+                doc="The #ClutterAlpha object used to drive this behaviour. A #ClutterAlpha
+object binds a #ClutterTimeline and a function which computes a value
+(the &quot;alpha&quot;) depending on the time. Each time the alpha value changes
+the alpha-notify virtual function is called.">
+        <type name="Alpha" c:type="ClutterAlpha"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourPrivate" c:type="ClutterBehaviourPrivate*"/>
+      </field>
+      <glib:signal name="applied"
+                   doc="The ::apply signal is emitted each time the behaviour is applied
+to an actor."
+                   version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="removed"
+                   doc="The ::removed signal is emitted each time a behaviour is not applied
+to an actor anymore.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="BehaviourClass"
+            c:type="ClutterBehaviourClass"
+            glib:is-gtype-struct-for="Behaviour">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="alpha_notify">
+        <callback name="alpha_notify" c:type="alpha_notify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="behave" transfer-ownership="none">
+              <type name="Behaviour" c:type="ClutterBehaviour*"/>
+            </parameter>
+            <parameter name="alpha_value" transfer-ownership="none">
+              <type name="double" c:type="gdouble"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="applied">
+        <callback name="applied" c:type="applied">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="behave" transfer-ownership="none">
+              <type name="Behaviour" c:type="ClutterBehaviour*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="removed">
+        <callback name="removed" c:type="removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="behave" transfer-ownership="none">
+              <type name="Behaviour" c:type="ClutterBehaviour*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_behaviour1">
+        <callback name="clutter_behaviour1" c:type="_clutter_behaviour1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_behaviour2">
+        <callback name="clutter_behaviour2" c:type="_clutter_behaviour2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_behaviour3">
+        <callback name="clutter_behaviour3" c:type="_clutter_behaviour3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_behaviour4">
+        <callback name="clutter_behaviour4" c:type="_clutter_behaviour4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_behaviour5">
+        <callback name="clutter_behaviour5" c:type="_clutter_behaviour5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_behaviour6">
+        <callback name="clutter_behaviour6" c:type="_clutter_behaviour6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="BehaviourDepth"
+           c:type="ClutterBehaviourDepth"
+           doc="The #ClutterBehaviourDepth structure contains only private data
+and should be accessed using the provided API"
+           version="0.2"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourDepth"
+           glib:get-type="clutter_behaviour_depth_get_type"
+           glib:type-struct="BehaviourDepthClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_depth_new"
+                   doc="Creates a new #ClutterBehaviourDepth which can be used to control
+the ClutterActor:depth property of a set of #ClutterActor&lt;!-- --&gt;s."
+                   version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="BehaviourDepth" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="depth_start" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="depth_end" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_bounds"
+              c:identifier="clutter_behaviour_depth_set_bounds"
+              doc="Sets the boundaries of the @behaviour."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth_start" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="depth_end" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bounds"
+              c:identifier="clutter_behaviour_depth_get_bounds"
+              doc="Gets the boundaries of the @behaviour"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="depth_end"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="depth-end"
+                version="0.4"
+                writable="1"
+                doc="End depth level to apply to the actors.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="depth-start"
+                version="0.4"
+                writable="1"
+                doc="Start depth level to apply to the actors.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourDepthPrivate"
+              c:type="ClutterBehaviourDepthPrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourDepthClass"
+            c:type="ClutterBehaviourDepthClass"
+            glib:is-gtype-struct-for="BehaviourDepth"
+            doc="The #ClutterBehaviourDepthClass structure contains only private data"
+            version="0.2">
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourDepthPrivate" c:type="ClutterBehaviourDepthPrivate">
+    </record>
+    <class name="BehaviourEllipse"
+           c:type="ClutterBehaviourEllipse"
+           doc="The #ClutterBehaviourEllipse struct contains only private data
+and should be accessed using the provided API"
+           version="0.4"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourEllipse"
+           glib:get-type="clutter_behaviour_ellipse_get_type"
+           glib:type-struct="BehaviourEllipseClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_ellipse_new"
+                   doc="Creates a behaviour that drives actors along an elliptical path with
+given center, width and height; the movement starts at @start
+degrees (with 0 corresponding to 12 o&apos;clock) and ends at @end
+degrees. Angles greated than 360 degrees get clamped to the canonical
+interval &lt;0, 360); if @start is equal to @end, the behaviour will
+rotate by exacly 360 degrees."
+                   version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="BehaviourEllipse" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_center"
+              c:identifier="clutter_behaviour_ellipse_set_center"
+              doc="Sets the center of the elliptical path to the point represented by knot."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_center"
+              c:identifier="clutter_behaviour_ellipse_get_center"
+              doc="Gets the center of the elliptical path path."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_width"
+              c:identifier="clutter_behaviour_ellipse_set_width"
+              doc="Sets the width of the elliptical path."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width"
+              c:identifier="clutter_behaviour_ellipse_get_width"
+              doc="Gets the width of the elliptical path."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_height"
+              c:identifier="clutter_behaviour_ellipse_set_height"
+              doc="Sets the height of the elliptical path."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_height"
+              c:identifier="clutter_behaviour_ellipse_get_height"
+              doc="Gets the height of the elliptical path."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_angle_start"
+              c:identifier="clutter_behaviour_ellipse_set_angle_start"
+              doc="Sets the angle at which movement starts; angles &gt;= 360 degress get clamped
+to the canonical interval &lt;0, 360)."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_start" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_angle_start"
+              c:identifier="clutter_behaviour_ellipse_get_angle_start"
+              doc="Gets the angle at which movements starts."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_angle_end"
+              c:identifier="clutter_behaviour_ellipse_set_angle_end"
+              doc="Sets the angle at which movement ends; angles &gt;= 360 degress get clamped
+to the canonical interval &lt;0, 360)."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_end" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_angle_end"
+              c:identifier="clutter_behaviour_ellipse_get_angle_end"
+              doc="Gets the at which movements ends."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_angle_tilt"
+              c:identifier="clutter_behaviour_ellipse_set_angle_tilt"
+              doc="Sets the angle at which the ellipse should be tilted around it&apos;s center."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+          <parameter name="angle_tilt"
+                     transfer-ownership="none"
+                     doc=" degrees.">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_angle_tilt"
+              c:identifier="clutter_behaviour_ellipse_get_angle_tilt"
+              doc="Gets the tilt of the ellipse around the center in the given axis."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tilt"
+              c:identifier="clutter_behaviour_ellipse_set_tilt"
+              doc="Sets the angles at which the ellipse should be tilted around it&apos;s center."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_tilt_x" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle_tilt_y" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle_tilt_z" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tilt"
+              c:identifier="clutter_behaviour_ellipse_get_tilt"
+              doc="Gets the tilt of the ellipse around the center in Y axis."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_tilt_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="angle_tilt_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="angle_tilt_z"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_direction"
+              c:identifier="clutter_behaviour_ellipse_get_direction"
+              doc="Retrieves the #ClutterRotateDirection used by the ellipse behaviour."
+              version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+        </return-value>
+      </method>
+      <method name="set_direction"
+              c:identifier="clutter_behaviour_ellipse_set_direction"
+              doc="Sets the rotation direction used by the ellipse behaviour."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="angle-end"
+                version="0.4"
+                writable="1"
+                doc="The final angle to where the rotation should end.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="angle-start"
+                version="0.4"
+                writable="1"
+                doc="The initial angle from where the rotation should start.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="angle-tilt-x"
+                version="0.4"
+                writable="1"
+                doc="The tilt angle for the rotation around center in X axis">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="angle-tilt-y"
+                version="0.4"
+                writable="1"
+                doc="The tilt angle for the rotation around center in Y axis">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="angle-tilt-z"
+                version="0.4"
+                writable="1"
+                doc="The tilt angle for the rotation on the Z axis">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="center"
+                version="0.4"
+                writable="1"
+                doc="The center of the ellipse.">
+        <type name="Knot" c:type="ClutterKnot"/>
+      </property>
+      <property name="direction"
+                version="0.4"
+                writable="1"
+                doc="The direction of the rotation.">
+        <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+      </property>
+      <property name="height"
+                version="0.4"
+                writable="1"
+                doc="Height of the ellipse, in pixels">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="width"
+                version="0.4"
+                writable="1"
+                doc="Width of the ellipse, in pixels">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourEllipsePrivate"
+              c:type="ClutterBehaviourEllipsePrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourEllipseClass"
+            c:type="ClutterBehaviourEllipseClass"
+            glib:is-gtype-struct-for="BehaviourEllipse"
+            doc="The #ClutterBehaviourEllipseClass struct contains only private data"
+            version="0.4">
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourEllipsePrivate"
+            c:type="ClutterBehaviourEllipsePrivate">
+    </record>
+    <callback name="BehaviourForeachFunc"
+              c:type="ClutterBehaviourForeachFunc"
+              doc="This function is passed to clutter_behaviour_foreach_actor() and
+will be called for each actor driven by @behaviour."
+              version="0.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="behaviour" transfer-ownership="none">
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </parameter>
+        <parameter name="actor" transfer-ownership="none">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="BehaviourOpacity"
+           c:type="ClutterBehaviourOpacity"
+           doc="The #ClutterBehaviourOpacity structure contains only private data and
+should be accessed using the provided API"
+           version="0.2"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourOpacity"
+           glib:get-type="clutter_behaviour_opacity_get_type"
+           glib:type-struct="BehaviourOpacityClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_opacity_new"
+                   doc="Creates a new #ClutterBehaviourOpacity object, driven by @alpha
+which controls the opacity property of every actor, making it
+change in the interval between @opacity_start and @opacity_end."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="BehaviourOpacity" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="opacity_start" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="opacity_end" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_bounds"
+              c:identifier="clutter_behaviour_opacity_set_bounds"
+              doc="Sets the initial and final levels of the opacity applied by @behaviour
+on each actor it controls."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opacity_start" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="opacity_end" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bounds"
+              c:identifier="clutter_behaviour_opacity_get_bounds"
+              doc="Gets the initial and final levels of the opacity applied by @behaviour
+on each actor it controls."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opacity_start" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="opacity_end" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="opacity-end"
+                version="0.2"
+                writable="1"
+                doc="Final opacity level of the behaviour.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="opacity-start"
+                version="0.2"
+                writable="1"
+                doc="Initial opacity level of the behaviour.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="parent">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourOpacityPrivate"
+              c:type="ClutterBehaviourOpacityPrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourOpacityClass"
+            c:type="ClutterBehaviourOpacityClass"
+            glib:is-gtype-struct-for="BehaviourOpacity"
+            doc="The #ClutterBehaviourOpacityClas structure contains only private data"
+            version="0.2">
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourOpacityPrivate"
+            c:type="ClutterBehaviourOpacityPrivate">
+    </record>
+    <class name="BehaviourPath"
+           c:type="ClutterBehaviourPath"
+           doc="The #ClutterBehaviourPath structure contains only private data
+and should be accessed using the provided API"
+           version="0.2"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourPath"
+           glib:get-type="clutter_behaviour_path_get_type"
+           glib:type-struct="BehaviourPathClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_path_new"
+                   doc="Creates a new path behaviour. You can use this behaviour to drive
+actors along the nodes of a path, described by @path.
+This will claim the floating reference on the #ClutterPath so you
+do not need to unref if it."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="BehaviourPath" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <type name="Path" c:type="ClutterPath*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_description"
+                   c:identifier="clutter_behaviour_path_new_with_description"
+                   doc="Creates a new path behaviour using the path described by @desc. See
+clutter_path_add_string() for a description of the format."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="BehaviourPath" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="desc" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_knots"
+                   c:identifier="clutter_behaviour_path_new_with_knots"
+                   doc="Creates a new path behaviour that will make the actors visit all of
+the given knots in order with straight lines in between.
+A path will be created where the first knot is used in a
+%CLUTTER_PATH_MOVE_TO and the subsequent knots are used in
+%CLUTTER_PATH_LINE_TO&lt;!-- --&gt;s."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="BehaviourPath" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="knots" transfer-ownership="none">
+            <type name="Knot" c:type="ClutterKnot*"/>
+          </parameter>
+          <parameter name="n_knots" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_path"
+              c:identifier="clutter_behaviour_path_set_path"
+              doc="Change the path that the actors will follow. This will take the
+floating reference on the #ClutterPath so you do not need to unref
+it."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="Path" c:type="ClutterPath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_path"
+              c:identifier="clutter_behaviour_path_get_path"
+              doc="Get the current path of the behaviour"
+              version="1.0">
+        <return-value transfer-ownership="none" doc="the path">
+          <type name="Path" c:type="ClutterPath*"/>
+        </return-value>
+      </method>
+      <property name="path" writable="1">
+        <type name="Path" c:type="ClutterPath"/>
+      </property>
+      <field name="parent">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourPathPrivate"
+              c:type="ClutterBehaviourPathPrivate*"/>
+      </field>
+      <glib:signal name="knot-reached"
+                   doc="This signal is emitted each time a node defined inside the path
+is reached."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="knot_num" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="BehaviourPathClass"
+            c:type="ClutterBehaviourPathClass"
+            glib:is-gtype-struct-for="BehaviourPath">
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+      <field name="knot_reached">
+        <callback name="knot_reached" c:type="knot_reached">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pathb" transfer-ownership="none">
+              <type name="BehaviourPath" c:type="ClutterBehaviourPath*"/>
+            </parameter>
+            <parameter name="knot_num" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_path_1">
+        <callback name="clutter_path_1" c:type="_clutter_path_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_path_2">
+        <callback name="clutter_path_2" c:type="_clutter_path_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_path_3">
+        <callback name="clutter_path_3" c:type="_clutter_path_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_path_4">
+        <callback name="clutter_path_4" c:type="_clutter_path_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="BehaviourPathPrivate" c:type="ClutterBehaviourPathPrivate">
+    </record>
+    <record name="BehaviourPrivate" c:type="ClutterBehaviourPrivate">
+    </record>
+    <class name="BehaviourRotate"
+           c:type="ClutterBehaviourRotate"
+           doc="The #ClutterBehaviourRotate struct contains only private data and
+should be accessed using the provided API"
+           version="0.4"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourRotate"
+           glib:get-type="clutter_behaviour_rotate_get_type"
+           glib:type-struct="BehaviourRotateClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_rotate_new"
+                   doc="Creates a new #ClutterBehaviourRotate. This behaviour will rotate actors
+bound to it on @axis, following @direction, between @angle_start and
+&lt;0, 360), if angle_start == angle_end, the behaviour will carry out a
+single rotation of 360 degrees."
+                   version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="BehaviourRotate" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="axis" transfer-ownership="none">
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+          </parameter>
+          <parameter name="angle_start" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle_end" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_center"
+              c:identifier="clutter_behaviour_rotate_get_center"
+              doc="Retrieves the center of rotation set using
+clutter_behaviour_rotate_set_center()."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="z"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_center"
+              c:identifier="clutter_behaviour_rotate_set_center"
+              doc="Sets the center of rotation. The coordinates are relative to the plane
+normal to the rotation axis set with clutter_behaviour_rotate_set_axis()."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_axis"
+              c:identifier="clutter_behaviour_rotate_get_axis"
+              doc="Retrieves the #ClutterRotateAxis used by the rotate behaviour."
+              version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+        </return-value>
+      </method>
+      <method name="set_axis"
+              c:identifier="clutter_behaviour_rotate_set_axis"
+              doc="Sets the axis used by the rotate behaviour."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_direction"
+              c:identifier="clutter_behaviour_rotate_get_direction"
+              doc="Retrieves the #ClutterRotateDirection used by the rotate behaviour."
+              version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+        </return-value>
+      </method>
+      <method name="set_direction"
+              c:identifier="clutter_behaviour_rotate_set_direction"
+              doc="Sets the rotation direction used by the rotate behaviour."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bounds"
+              c:identifier="clutter_behaviour_rotate_get_bounds"
+              doc="Retrieves the rotation boundaries of the rotate behaviour."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="angle_end"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_bounds"
+              c:identifier="clutter_behaviour_rotate_set_bounds"
+              doc="Sets the initial and final angles of a rotation behaviour; angles &gt;= 360
+degrees get clamped to the canonical interval &lt;0, 360)."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_start" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle_end" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="angle-end"
+                version="0.4"
+                writable="1"
+                doc="The final angle to where the rotation should end.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="angle-start"
+                version="0.4"
+                writable="1"
+                doc="The initial angle from whence the rotation should start.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="axis"
+                version="0.4"
+                writable="1"
+                doc="The axis of rotation.">
+        <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+      </property>
+      <property name="center-x"
+                version="0.4"
+                writable="1"
+                doc="The x center of rotation.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="center-y"
+                version="0.4"
+                writable="1"
+                doc="The y center of rotation.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="center-z"
+                version="0.4"
+                writable="1"
+                doc="The z center of rotation.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="direction"
+                version="0.4"
+                writable="1"
+                doc="The direction of the rotation.">
+        <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourRotatePrivate"
+              c:type="ClutterBehaviourRotatePrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourRotateClass"
+            c:type="ClutterBehaviourRotateClass"
+            glib:is-gtype-struct-for="BehaviourRotate"
+            doc="The #ClutterBehaviourRotateClass struct contains only private data"
+            version="0.4">
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourRotatePrivate"
+            c:type="ClutterBehaviourRotatePrivate">
+    </record>
+    <class name="BehaviourScale"
+           c:type="ClutterBehaviourScale"
+           doc="The #ClutterBehaviourScale struct contains only private data and
+should be accessed using the provided API"
+           version="0.2"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourScale"
+           glib:get-type="clutter_behaviour_scale_get_type"
+           glib:type-struct="BehaviourScaleClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_scale_new"
+                   doc="Creates a new  #ClutterBehaviourScale instance."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="BehaviourScale" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="x_scale_start" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_scale_start" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="x_scale_end" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_scale_end" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_bounds"
+              c:identifier="clutter_behaviour_scale_set_bounds"
+              doc="Sets the bounds used by scale behaviour."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_scale_start" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_scale_start" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="x_scale_end" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_scale_end" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bounds"
+              c:identifier="clutter_behaviour_scale_get_bounds"
+              doc="Retrieves the bounds used by scale behaviour."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_scale_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc=" axis, or %NULL">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="y_scale_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc=" axis, or %NULL">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="x_scale_end"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc=" or %NULL">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="y_scale_end"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc=" or %NULL">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="x-scale-end"
+                version="0.6"
+                writable="1"
+                doc="The final scaling factor on the X axis for the actors.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="x-scale-start"
+                version="0.6"
+                writable="1"
+                doc="The initial scaling factor on the X axis for the actors.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="y-scale-end"
+                version="0.6"
+                writable="1"
+                doc="The final scaling factor on the Y axis for the actors.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="y-scale-start"
+                version="0.6"
+                writable="1"
+                doc="The initial scaling factor on the Y axis for the actors.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourScalePrivate"
+              c:type="ClutterBehaviourScalePrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourScaleClass"
+            c:type="ClutterBehaviourScaleClass"
+            glib:is-gtype-struct-for="BehaviourScale"
+            doc="The #ClutterBehaviourScaleClass struct contains only private data"
+            version="0.2">
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourScalePrivate" c:type="ClutterBehaviourScalePrivate">
+    </record>
+    <enumeration name="BinAlignment"
+                 doc="The alignment policies available on each axis for #ClutterBinLayout"
+                 version="1.2"
+                 glib:type-name="ClutterBinAlignment"
+                 glib:get-type="clutter_bin_alignment_get_type"
+                 c:type="ClutterBinAlignment">
+      <member name="fixed"
+              value="0"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_FIXED"
+              glib:nick="fixed"/>
+      <member name="fill"
+              value="1"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_FILL"
+              glib:nick="fill"/>
+      <member name="start"
+              value="2"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_START"
+              glib:nick="start"/>
+      <member name="end"
+              value="3"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_END"
+              glib:nick="end"/>
+      <member name="center"
+              value="4"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_CENTER"
+              glib:nick="center"/>
+    </enumeration>
+    <class name="BinLayout"
+           c:type="ClutterBinLayout"
+           doc="The #ClutterBinLayout structure contains only private data
+and should be accessed using the provided API"
+           version="1.2"
+           parent="LayoutManager"
+           glib:type-name="ClutterBinLayout"
+           glib:get-type="clutter_bin_layout_get_type"
+           glib:type-struct="BinLayoutClass">
+      <constructor name="new"
+                   c:identifier="clutter_bin_layout_new"
+                   doc="Creates a new #ClutterBinLayout layout manager"
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="BinLayout" c:type="ClutterLayoutManager*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_align"
+                     transfer-ownership="none"
+                     doc=" horizontal axis">
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+          <parameter name="y_align"
+                     transfer-ownership="none"
+                     doc=" vertical axis">
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_alignment"
+              c:identifier="clutter_bin_layout_set_alignment"
+              doc="Sets the horizontal and vertical alignment policies to be applied
+to a @child of @self
+If @child is %NULL then the @x_align and @y_align values will
+be set as the default alignment policies"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a child of @container">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align"
+                     transfer-ownership="none"
+                     doc=" inside @container">
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+          <parameter name="y_align"
+                     transfer-ownership="none"
+                     doc=" inside @container">
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alignment"
+              c:identifier="clutter_bin_layout_get_alignment"
+              doc="Retrieves the horizontal and vertical alignment policies for
+a child of @self
+If @child is %NULL the default alignment policies will be returned
+instead"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a child of @container">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="return location for the horizontal alignment policy">
+            <type name="BinAlignment" c:type="ClutterBinAlignment*"/>
+          </parameter>
+          <parameter name="y_align"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="return location for the vertical alignment policy">
+            <type name="BinAlignment" c:type="ClutterBinAlignment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add"
+              c:identifier="clutter_bin_layout_add"
+              doc="Adds a #ClutterActor to the container using @self and
+sets the alignment policies for it
+This function is equivalent to clutter_container_add_actor()
+and clutter_layout_manager_child_set_property() but it does not
+require a pointer to the #ClutterContainer associated to the
+#ClutterBinLayout"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="x-align"
+                version="1.2"
+                writable="1"
+                doc="The default horizontal alignment policy for actors managed
+by the #ClutterBinLayout">
+        <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+      </property>
+      <property name="y-align"
+                version="1.2"
+                writable="1"
+                doc="The default vertical alignment policy for actors managed
+by the #ClutterBinLayout">
+        <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+      </property>
+      <field name="parent_instance">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+      <field name="priv">
+        <type name="BinLayoutPrivate" c:type="ClutterBinLayoutPrivate*"/>
+      </field>
+    </class>
+    <record name="BinLayoutClass"
+            c:type="ClutterBinLayoutClass"
+            glib:is-gtype-struct-for="BinLayout"
+            doc="The #ClutterBinLayoutClass structure contains only private
+data and should be accessed using the provided API"
+            version="1.2">
+      <field name="parent_class">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <record name="BinLayoutPrivate" c:type="ClutterBinLayoutPrivate">
+    </record>
+    <callback name="BindingActionFunc"
+              c:type="ClutterBindingActionFunc"
+              doc="The prototype for the callback function registered with
+clutter_binding_pool_install_action() and invoked by
+clutter_binding_pool_activate().
+binding has been handled, and return %FALSE otherwise"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="gobject" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="action_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="key_val" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <type name="ModifierType" c:type="ClutterModifierType"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="BindingPool"
+           c:type="ClutterBindingPool"
+           doc="Container of key bindings. The #ClutterBindingPool struct is
+private."
+           version="1.0"
+           parent="GObject.Object"
+           glib:type-name="ClutterBindingPool"
+           glib:get-type="clutter_binding_pool_get_type">
+      <constructor name="new"
+                   c:identifier="clutter_binding_pool_new"
+                   doc="Creates a new #ClutterBindingPool that can be used to store
+key bindings for an actor. The @name must be a unique identifier
+for the binding pool, so that clutter_binding_pool_find() will
+be able to return the correct binding pool.
+name. Use g_object_unref() when done."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="BindingPool" c:type="ClutterBindingPool*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="get_for_class"
+                c:identifier="clutter_binding_pool_get_for_class"
+                doc="Retrieves the #ClutterBindingPool for the given #GObject class
+and, eventually, creates it. This function is a wrapper around
+clutter_binding_pool_new() and uses the class type name as the
+unique name for the binding pool.
+Calling this function multiple times will return the same
+#ClutterBindingPool.
+A binding pool for a class can also be retrieved using
+clutter_binding_pool_find() with the class type name:
+|[
+pool = clutter_binding_pool_find (G_OBJECT_TYPE_NAME (instance));
+]|
+The returned #ClutterBindingPool is owned by Clutter and should not
+be freed directly"
+                version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the binding pool for the given class.">
+          <type name="BindingPool" c:type="ClutterBindingPool*"/>
+        </return-value>
+        <parameters>
+          <parameter name="klass" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="find"
+                c:identifier="clutter_binding_pool_find"
+                doc="Finds the #ClutterBindingPool with @name."
+                version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a pointer to the #ClutterBindingPool, or %NULL">
+          <type name="BindingPool" c:type="ClutterBindingPool*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="install_action"
+              c:identifier="clutter_binding_pool_install_action"
+              doc="Installs a new action inside a #ClutterBindingPool. The action
+is bound to @key_val and @modifiers.
+The same action name can be used for multiple @key_val, @modifiers
+pairs.
+When an action has been activated using clutter_binding_pool_activate()
+the passed @callback will be invoked (with @data).
+Actions can be blocked with clutter_binding_pool_block_action()
+and then unblocked using clutter_binding_pool_unblock_action()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key_val" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="5"
+                     destroy="6">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify"
+                     transfer-ownership="none"
+                     scope="call"
+                     doc=" from the pool">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="install_closure"
+              c:identifier="clutter_binding_pool_install_closure"
+              doc="A #GClosure variant of clutter_binding_pool_install_action().
+Installs a new action inside a #ClutterBindingPool. The action
+is bound to @key_val and @modifiers.
+The same action name can be used for multiple @key_val, @modifiers
+pairs.
+When an action has been activated using clutter_binding_pool_activate()
+the passed @closure will be invoked.
+Actions can be blocked with clutter_binding_pool_block_action()
+and then unblocked using clutter_binding_pool_unblock_action()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key_val" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="closure" transfer-ownership="none">
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="override_action"
+              c:identifier="clutter_binding_pool_override_action"
+              doc="Allows overriding the action for @key_val and @modifiers inside a
+#ClutterBindingPool. See clutter_binding_pool_install_action().
+When an action has been activated using clutter_binding_pool_activate()
+the passed @callback will be invoked (with @data).
+Actions can be blocked with clutter_binding_pool_block_action()
+and then unblocked using clutter_binding_pool_unblock_action()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="4"
+                     destroy="5">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify"
+                     transfer-ownership="none"
+                     scope="call"
+                     doc=" from the pool">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="override_closure"
+              c:identifier="clutter_binding_pool_override_closure"
+              doc="A #GClosure variant of clutter_binding_pool_override_action().
+Allows overriding the action for @key_val and @modifiers inside a
+#ClutterBindingPool. See clutter_binding_pool_install_closure().
+When an action has been activated using clutter_binding_pool_activate()
+the passed @callback will be invoked (with @data).
+Actions can be blocked with clutter_binding_pool_block_action()
+and then unblocked using clutter_binding_pool_unblock_action()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="closure" transfer-ownership="none">
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_action"
+              c:identifier="clutter_binding_pool_find_action"
+              doc="Retrieves the name of the action matching the given key symbol
+and modifiers bitmask.
+returned string is owned by the binding pool and should never
+be modified or freed"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_action"
+              c:identifier="clutter_binding_pool_remove_action"
+              doc="Removes the action matching the given @key_val, @modifiers pair,
+if any exists."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="activate"
+              c:identifier="clutter_binding_pool_activate"
+              doc="Activates the callback associated to the action that is
+bound to the @key_val and @modifiers pair.
+The callback has the following signature:
+|[
+void (* callback) (GObject             *gobject,
+const gchar         *action_name,
+guint                key_val,
+ClutterModifierType  modifiers,
+gpointer             user_data);
+]|
+Where the #GObject instance is @gobject and the user data
+is the one passed when installing the action with
+clutter_binding_pool_install_action().
+If the action bound to the @key_val, @modifiers pair has been
+blocked using clutter_binding_pool_block_action(), the callback
+will not be invoked, and this function will return %FALSE."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="gobject" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="block_action"
+              c:identifier="clutter_binding_pool_block_action"
+              doc="Blocks all the actions with name @action_name inside @pool."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unblock_action"
+              c:identifier="clutter_binding_pool_unblock_action"
+              doc="Unblockes all the actions with name @action_name inside @pool.
+Unblocking an action does not cause the callback bound to it to
+be invoked in case clutter_binding_pool_activate() was called on
+an action previously blocked with clutter_binding_pool_block_action()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="name"
+                version="1.0"
+                writable="1"
+                construct-only="1"
+                doc="The unique name of the #ClutterBindingPool.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+    </class>
+    <constant name="BounceKeys_Enable" value="65140">
+      <type name="int"/>
+    </constant>
+    <class name="Box"
+           c:type="ClutterBox"
+           doc="The #ClutterBox structure contains only private data and should
+be accessed using the provided API"
+           version="1.2"
+           parent="Actor"
+           glib:type-name="ClutterBox"
+           glib:get-type="clutter_box_get_type"
+           glib:type-struct="BoxClass">
+      <implements name="Container"/>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_box_new"
+                   doc="Creates a new #ClutterBox. The children of the box will be layed
+out by the passed @manager"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Box" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="manager" transfer-ownership="none">
+            <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_layout_manager"
+              c:identifier="clutter_box_set_layout_manager"
+              doc="Sets the #ClutterLayoutManager for @box
+A #ClutterLayoutManager is a delegate object that controls the
+layout of the children of @box"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="manager" transfer-ownership="none">
+            <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layout_manager"
+              c:identifier="clutter_box_get_layout_manager"
+              doc="Retrieves the #ClutterLayoutManager instance used by @box"
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </method>
+      <method name="set_color"
+              c:identifier="clutter_box_set_color"
+              doc="Sets (or unsets) the background color for @box"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the background color, or %NULL to unset">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color"
+              c:identifier="clutter_box_get_color"
+              doc="Retrieves the background color of @box
+If the #ClutterBox:color-set property is set to %FALSE the
+returned #ClutterColor is undefined"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for a #ClutterColor">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack"
+              c:identifier="clutter_box_pack"
+              doc="Adds @actor to @box and sets layout properties at the same time,
+if the #ClutterLayoutManager used by @box has them
+This function is a wrapper around clutter_container_add_actor()
+and clutter_layout_manager_child_set()
+Language bindings should use the vector-based clutter_box_addv()
+variant instead"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="packv"
+              c:identifier="clutter_box_packv"
+              doc="Vector-based variant of clutter_box_pack(), intended for language
+bindings to use"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="n_properties" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="properties"
+                     transfer-ownership="none"
+                     doc="a vector containing the property names to set">
+            <array length="2" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="values"
+                     transfer-ownership="none"
+                     doc="a vector containing the property values to set">
+            <array length="2" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_after"
+              c:identifier="clutter_box_pack_after"
+              doc="Adds @actor to @box, placing it after @sibling, and sets layout
+properties at the same time, if the #ClutterLayoutManager used by
+If @sibling is %NULL then @actor is placed at the end of the
+list of children, to be allocated and painted after every other child
+This function is a wrapper around clutter_container_add_actor(),
+clutter_container_raise_child() and clutter_layout_manager_child_set()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #ClutterActor or %NULL">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_before"
+              c:identifier="clutter_box_pack_before"
+              doc="Adds @actor to @box, placing it before @sibling, and sets layout
+properties at the same time, if the #ClutterLayoutManager used by
+If @sibling is %NULL then @actor is placed at the beginning of the
+list of children, to be allocated and painted below every other child
+This function is a wrapper around clutter_container_add_actor(),
+clutter_container_lower_child() and clutter_layout_manager_child_set()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #ClutterActor or %NULL">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_at"
+              c:identifier="clutter_box_pack_at"
+              doc="Adds @actor to @box, placing it at @position, and sets layout
+properties at the same time, if the #ClutterLayoutManager used by
+If @position is a negative number, or is larger than the number of
+children of @box, the new child is added at the end of the list of
+children"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="color"
+                version="1.2"
+                writable="1"
+                doc="The color to be used to paint the background of the
+#ClutterBox. Setting this property will set the
+#ClutterBox:color-set property as a side effect">
+        <type name="Color" c:type="ClutterColor"/>
+      </property>
+      <property name="color-set"
+                version="1.2"
+                writable="1"
+                doc="Whether the #ClutterBox:color property has been set">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="layout-manager"
+                version="1.2"
+                writable="1"
+                construct="1"
+                doc="The #ClutterLayoutManager used by the #ClutterBox">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="BoxPrivate" c:type="ClutterBoxPrivate*"/>
+      </field>
+    </class>
+    <enumeration name="BoxAlignment"
+                 doc="The alignment policies available on each axis of the #ClutterBoxLayout"
+                 version="1.2"
+                 glib:type-name="ClutterBoxAlignment"
+                 glib:get-type="clutter_box_alignment_get_type"
+                 c:type="ClutterBoxAlignment">
+      <member name="start"
+              value="0"
+              c:identifier="CLUTTER_BOX_ALIGNMENT_START"
+              glib:nick="start"/>
+      <member name="end"
+              value="1"
+              c:identifier="CLUTTER_BOX_ALIGNMENT_END"
+              glib:nick="end"/>
+      <member name="center"
+              value="2"
+              c:identifier="CLUTTER_BOX_ALIGNMENT_CENTER"
+              glib:nick="center"/>
+    </enumeration>
+    <record name="BoxClass"
+            c:type="ClutterBoxClass"
+            glib:is-gtype-struct-for="Box"
+            doc="The #ClutterBoxClass structure contains only private data"
+            version="1.2">
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="padding_1">
+        <callback name="padding_1" c:type="clutter_padding_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="padding_2">
+        <callback name="padding_2" c:type="clutter_padding_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="padding_3">
+        <callback name="padding_3" c:type="clutter_padding_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="padding_4">
+        <callback name="padding_4" c:type="clutter_padding_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="padding_5">
+        <callback name="padding_5" c:type="clutter_padding_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="padding_6">
+        <callback name="padding_6" c:type="clutter_padding_6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="BoxLayout"
+           c:type="ClutterBoxLayout"
+           doc="The #ClutterBoxLayout structure contains only private data
+and should be accessed using the provided API"
+           version="1.2"
+           parent="LayoutManager"
+           glib:type-name="ClutterBoxLayout"
+           glib:get-type="clutter_box_layout_get_type"
+           glib:type-struct="BoxLayoutClass">
+      <constructor name="new"
+                   c:identifier="clutter_box_layout_new"
+                   doc="Creates a new #ClutterBoxLayout layout manager"
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="BoxLayout" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </constructor>
+      <method name="set_spacing"
+              c:identifier="clutter_box_layout_set_spacing"
+              doc="Sets the spacing between children of @layout"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_spacing"
+              c:identifier="clutter_box_layout_get_spacing"
+              doc="Retrieves the spacing set using clutter_box_layout_set_spacing()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_vertical"
+              c:identifier="clutter_box_layout_set_vertical"
+              doc="Sets whether @layout should arrange its children vertically alongside
+the Y axis, instead of horizontally alongside the X axis"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="vertical" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_vertical"
+              c:identifier="clutter_box_layout_get_vertical"
+              doc="Retrieves the orientation of the @layout as set using the
+clutter_box_layout_set_vertical() function
+vertically, and %FALSE otherwise"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_pack_start"
+              c:identifier="clutter_box_layout_set_pack_start"
+              doc="Sets whether children of @layout should be layed out by appending
+them or by prepending them"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pack_start"
+                     transfer-ownership="none"
+                     doc=" beginning of the layout">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pack_start"
+              c:identifier="clutter_box_layout_get_pack_start"
+              doc="Retrieves the value set using clutter_box_layout_set_pack_start()
+at the beginning of the layout, and %FALSE otherwise"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pack"
+              c:identifier="clutter_box_layout_pack"
+              doc="Packs @actor inside the #ClutterContainer associated to @layout
+and sets the layout properties"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="x_fill" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="y_fill" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alignment"
+              c:identifier="clutter_box_layout_set_alignment"
+              doc="Sets the horizontal and vertical alignment policies for @actor
+inside @layout"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alignment"
+              c:identifier="clutter_box_layout_get_alignment"
+              doc="Retrieves the horizontal and vertical alignment policies for @actor
+as set using clutter_box_layout_pack() or clutter_box_layout_set_alignment()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for the horizontal alignment policy">
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment*"/>
+          </parameter>
+          <parameter name="y_align"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for the vertical alignment policy">
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fill"
+              c:identifier="clutter_box_layout_set_fill"
+              doc="Sets the horizontal and vertical fill policies for @actor
+inside @layout"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_fill" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="y_fill" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fill"
+              c:identifier="clutter_box_layout_get_fill"
+              doc="Retrieves the horizontal and vertical fill policies for @actor
+as set using clutter_box_layout_pack() or clutter_box_layout_set_fill()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_fill"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the horizontal fill policy">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="y_fill"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the vertical fill policy">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_expand"
+              c:identifier="clutter_box_layout_set_expand"
+              doc="Sets whether @actor should expand inside @layout"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_expand"
+              c:identifier="clutter_box_layout_get_expand"
+              doc="Retrieves whether @actor should expand inside @layout"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_animations"
+              c:identifier="clutter_box_layout_set_use_animations"
+              doc="Sets whether @layout should animate changes in the layout properties
+The duration of the animations is controlled by
+clutter_box_layout_set_easing_duration(); the easing mode to be used
+by the animations is controlled by clutter_box_layout_set_easing_mode()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="animate" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_animations"
+              c:identifier="clutter_box_layout_get_use_animations"
+              doc="Retrieves whether @layout should animate changes in the layout properties
+Since clutter_box_layout_set_use_animations()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_easing_mode"
+              c:identifier="clutter_box_layout_set_easing_mode"
+              doc="Sets the easing mode to be used by @layout when animating changes in layout
+properties
+Use clutter_box_layout_set_use_animations() to enable and disable the
+animations"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode"
+                     transfer-ownership="none"
+                     doc=" from clutter_alpha_register_func()">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_easing_mode"
+              c:identifier="clutter_box_layout_get_easing_mode"
+              doc="Retrieves the easing mode set using clutter_box_layout_set_easing_mode()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="set_easing_duration"
+              c:identifier="clutter_box_layout_set_easing_duration"
+              doc="Sets the duration of the animations used by @layout when animating changes
+in the layout properties
+Use clutter_box_layout_set_use_animations() to enable and disable the
+animations"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_easing_duration"
+              c:identifier="clutter_box_layout_get_easing_duration"
+              doc="Retrieves the duration set using clutter_box_layout_set_easing_duration()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <property name="easing-duration"
+                version="1.2"
+                writable="1"
+                doc="The duration of the animations, in case #ClutterBoxLayout:use-animations
+is set to %TRUE
+The duration is expressed in milliseconds">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="easing-mode"
+                version="1.2"
+                writable="1"
+                doc="The easing mode for the animations, in case
+#ClutterBoxLayout:use-animations is set to %TRUE
+either be a value from the #ClutterAnimationMode enumeration, like
+%CLUTTER_EASE_OUT_CUBIC, or a logical id as returned by
+clutter_alpha_register_func()
+The default value is %CLUTTER_EASE_OUT_CUBIC">
+        <type name="ulong" c:type="gulong"/>
+      </property>
+      <property name="pack-start"
+                version="1.2"
+                writable="1"
+                doc="Whether the #ClutterBoxLayout should pack items at the start
+or append them at the end">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="spacing"
+                version="1.2"
+                writable="1"
+                doc="The spacing between children of the #ClutterBoxLayout, in pixels">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="use-animations"
+                version="1.2"
+                writable="1"
+                doc="Whether the #ClutterBoxLayout should animate changes in the
+layout properties">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="vertical"
+                version="1.2"
+                writable="1"
+                doc="Whether the #ClutterBoxLayout should arrange its children
+alongside the Y axis, instead of alongside the X axis">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+      <field name="priv">
+        <type name="BoxLayoutPrivate" c:type="ClutterBoxLayoutPrivate*"/>
+      </field>
+    </class>
+    <record name="BoxLayoutClass"
+            c:type="ClutterBoxLayoutClass"
+            glib:is-gtype-struct-for="BoxLayout"
+            doc="The #ClutterBoxLayoutClass structure contains only private
+data and should be accessed using the provided API"
+            version="1.2">
+      <field name="parent_class">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <record name="BoxLayoutPrivate" c:type="ClutterBoxLayoutPrivate">
+    </record>
+    <record name="BoxPrivate" c:type="ClutterBoxPrivate">
+    </record>
+    <constant name="Break" value="65387">
+      <type name="int"/>
+    </constant>
+    <record name="ButtonEvent"
+            c:type="ClutterButtonEvent"
+            doc="Button event.
+The event coordinates are relative to the stage that received the
+event, and can be transformed into actor-relative coordinates by
+using clutter_actor_transform_stage_point()."
+            version="0.2">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="modifier_state" writable="1">
+        <type name="ModifierType" c:type="ClutterModifierType"/>
+      </field>
+      <field name="button" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="click_count" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="axes" writable="1">
+        <type name="any" c:type="gdouble*"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+    </record>
+    <constant name="Byelorussian_SHORTU" value="1726">
+      <type name="int"/>
+    </constant>
+    <constant name="Byelorussian_shortu" value="1710">
+      <type name="int"/>
+    </constant>
+    <constant name="C" value="67">
+      <type name="int"/>
+    </constant>
+    <constant name="COGL" value="gl">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CURRENT_TIME" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="Cabovedot" value="709">
+      <type name="int"/>
+    </constant>
+    <constant name="Cacute" value="454">
+      <type name="int"/>
+    </constant>
+    <class name="CairoTexture"
+           c:type="ClutterCairoTexture"
+           doc="The #ClutterCairoTexture struct contains only private data."
+           version="1.0"
+           parent="Texture"
+           glib:type-name="ClutterCairoTexture"
+           glib:get-type="clutter_cairo_texture_get_type"
+           glib:type-struct="CairoTextureClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_cairo_texture_new"
+                   doc="Creates a new #ClutterCairoTexture actor, with a surface of @width by"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="CairoTexture" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="create_region"
+              c:identifier="clutter_cairo_texture_create_region"
+              doc="Creates a new Cairo context that will updat the region defined
+by @x_offset, @y_offset, @width and @height.
+&lt;warning&gt;&lt;para&gt;Do not call this function within the paint virtual
+function or from a callback to the #ClutterActor::paint
+signal.&lt;/para&gt;&lt;/warning&gt;
+to upload the contents of the context when done drawing"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create"
+              c:identifier="clutter_cairo_texture_create"
+              doc="Creates a new Cairo context for the @cairo texture. It is
+similar to using clutter_cairo_texture_create_region() with @x_offset
+and @y_offset of 0, @width equal to the @cairo texture surface width
+and @height equal to the @cairo texture surface height.
+&lt;warning&gt;&lt;para&gt;Do not call this function within the paint virtual
+function or from a callback to the #ClutterActor::paint
+signal.&lt;/para&gt;&lt;/warning&gt;
+to upload the contents of the context when done drawing"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </return-value>
+      </method>
+      <method name="set_surface_size"
+              c:identifier="clutter_cairo_texture_set_surface_size"
+              doc="Resizes the Cairo surface used by @self to @width and @height."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_surface_size"
+              c:identifier="clutter_cairo_texture_get_surface_size"
+              doc="Retrieves the surface width and height for @self."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear"
+              c:identifier="clutter_cairo_texture_clear"
+              doc="Clears @self&apos;s internal drawing surface, so that the next upload
+will replace the previous contents of the #ClutterCairoTexture
+rather than adding to it."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="surface-height"
+                version="1.0"
+                writable="1"
+                doc="The height of the Cairo surface used by the #ClutterCairoTexture
+actor, in pixels.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="surface-width"
+                version="1.0"
+                writable="1"
+                doc="The width of the Cairo surface used by the #ClutterCairoTexture
+actor, in pixels.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Texture" c:type="ClutterTexture"/>
+      </field>
+      <field name="priv">
+        <type name="CairoTexturePrivate" c:type="ClutterCairoTexturePrivate*"/>
+      </field>
+    </class>
+    <record name="CairoTextureClass"
+            c:type="ClutterCairoTextureClass"
+            glib:is-gtype-struct-for="CairoTexture"
+            doc="The #ClutterCairoTextureClass struct contains only private data."
+            version="1.0">
+      <field name="parent_class">
+        <type name="TextureClass" c:type="ClutterTextureClass"/>
+      </field>
+      <field name="clutter_cairo_1">
+        <callback name="clutter_cairo_1" c:type="_clutter_cairo_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_cairo_2">
+        <callback name="clutter_cairo_2" c:type="_clutter_cairo_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_cairo_3">
+        <callback name="clutter_cairo_3" c:type="_clutter_cairo_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_cairo_4">
+        <callback name="clutter_cairo_4" c:type="_clutter_cairo_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="CairoTexturePrivate" c:type="ClutterCairoTexturePrivate">
+    </record>
+    <callback name="Callback" c:type="ClutterCallback" doc="Generic callback">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="actor" transfer-ownership="none">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="Cancel" value="65385">
+      <type name="int"/>
+    </constant>
+    <constant name="Caps_Lock" value="65509">
+      <type name="int"/>
+    </constant>
+    <constant name="Ccaron" value="456">
+      <type name="int"/>
+    </constant>
+    <constant name="Ccedilla" value="199">
+      <type name="int"/>
+    </constant>
+    <constant name="Ccircumflex" value="710">
+      <type name="int"/>
+    </constant>
+    <class name="ChildMeta"
+           c:type="ClutterChildMeta"
+           doc="Base interface for container specific state for child actors. A child
+data is meant to be used when you need to keep track of information
+about each individual child added to a container.
+In order to use it you should create your own subclass of
+#ClutterChildMeta and set the #ClutterContainerIface::child_meta_type
+interface member to your subclass type, like:
+|[
+static void
+my_container_iface_init (ClutterContainerIface *iface)
+{
+/&amp;ast; set the rest of the #ClutterContainer vtable &amp;ast;/
+container_iface-&gt;child_meta_type  = MY_TYPE_CHILD_META;
+}
+]|
+This will automatically create a #ClutterChildMeta of type
+MY_TYPE_CHILD_META for every actor that is added to the container.
+The child data for an actor can be retrieved using the
+clutter_container_get_child_meta() function.
+The properties of the data and your subclass can be manipulated with
+clutter_container_child_set() and clutter_container_child_get() which
+act like g_object_set() and g_object_get().
+You can provide hooks for your own storage as well as control the
+instantiation by overriding #ClutterContainerIface::create_child_meta,
+#ClutterContainerIface::destroy_child_meta and
+#ClutterContainerIface::get_child_meta."
+           version="0.8"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterChildMeta"
+           glib:get-type="clutter_child_meta_get_type"
+           glib:type-struct="ChildMetaClass">
+      <method name="get_container"
+              c:identifier="clutter_child_meta_get_container"
+              doc="Retrieves the container using @data"
+              version="0.8">
+        <return-value transfer-ownership="none" doc="a #ClutterContainer">
+          <type name="Container" c:type="ClutterContainer*"/>
+        </return-value>
+      </method>
+      <method name="get_actor"
+              c:identifier="clutter_child_meta_get_actor"
+              doc="Retrieves the actor wrapped by @data"
+              version="0.8">
+        <return-value transfer-ownership="none" doc="a #ClutterActor">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <property name="actor"
+                version="0.8"
+                writable="1"
+                construct-only="1"
+                doc="The #ClutterActor being wrapped by this #ClutterChildMeta">
+        <type name="Actor" c:type="ClutterActor"/>
+      </property>
+      <property name="container"
+                version="0.8"
+                writable="1"
+                construct-only="1"
+                doc="The #ClutterContainer that created this #ClutterChildMeta.">
+        <type name="Container" c:type="ClutterContainer"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="container">
+        <type name="Container" c:type="ClutterContainer*"/>
+      </field>
+      <field name="actor">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+    </class>
+    <record name="ChildMetaClass"
+            c:type="ClutterChildMetaClass"
+            glib:is-gtype-struct-for="ChildMeta"
+            doc="The #ClutterChildMetaClass contains only private data"
+            version="0.8">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <constant name="Clear" value="65291">
+      <type name="int"/>
+    </constant>
+    <class name="Clone"
+           c:type="ClutterClone"
+           doc="The #ClutterClone structure contains only private data
+and should be accessed using the provided API"
+           version="1.0"
+           parent="Actor"
+           glib:type-name="ClutterClone"
+           glib:get-type="clutter_clone_get_type"
+           glib:type-struct="CloneClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_clone_new"
+                   doc="Creates a new #ClutterActor which clones @source/"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Clone" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_source"
+              c:identifier="clutter_clone_set_source"
+              doc="Sets @source as the source actor to be cloned by @clone."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_source"
+              c:identifier="clutter_clone_get_source"
+              doc="Retrieves the source #ClutterActor being cloned by @clone"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the actor source for the clone">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <property name="source"
+                version="1.0"
+                writable="1"
+                construct="1"
+                doc="This property specifies the source actor being cloned.">
+        <type name="Actor" c:type="ClutterActor"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="ClonePrivate" c:type="ClutterClonePrivate*"/>
+      </field>
+    </class>
+    <record name="CloneClass"
+            c:type="ClutterCloneClass"
+            glib:is-gtype-struct-for="Clone"
+            doc="The #ClutterCloneClass structure contains only private data"
+            version="1.0">
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="clutter_actor_clone1">
+        <callback name="clutter_actor_clone1" c:type="_clutter_actor_clone1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_actor_clone2">
+        <callback name="clutter_actor_clone2" c:type="_clutter_actor_clone2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_actor_clone3">
+        <callback name="clutter_actor_clone3" c:type="_clutter_actor_clone3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_actor_clone4">
+        <callback name="clutter_actor_clone4" c:type="_clutter_actor_clone4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ClonePrivate" c:type="ClutterClonePrivate">
+    </record>
+    <constant name="Codeinput" value="65335">
+      <type name="int"/>
+    </constant>
+    <constant name="ColonSign" value="16785569">
+      <type name="int"/>
+    </constant>
+    <record name="Color"
+            c:type="ClutterColor"
+            doc="Color representation."
+            glib:type-name="ClutterColor"
+            glib:get-type="clutter_color_get_type">
+      <field name="red" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="green" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="blue" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="alpha" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="clutter_color_new"
+                   doc="Creates a new #ClutterColor with the given values.
+when done"
+                   version="0.8.4">
+        <return-value transfer-ownership="full">
+          <type name="Color" c:type="ClutterColor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="clutter_color_copy"
+              doc="Makes a copy of the color structure.  The result must be
+freed using clutter_color_free()."
+              version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="Color" c:type="ClutterColor*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="clutter_color_free"
+              doc="Frees a color structure created with clutter_color_copy()."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add"
+              c:identifier="clutter_color_add"
+              doc="Adds @a to @b and saves the resulting color inside @result.
+The alpha channel of @result is set as as the maximum value
+between the alpha channels of @a and @b.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="b" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for the result">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="subtract"
+              c:identifier="clutter_color_subtract"
+              doc="Subtracts @b from @a and saves the resulting color inside @result.
+This function assumes that the components of @a are greater than the
+components of @b; the result is, otherwise, undefined.
+The alpha channel of @result is set as the minimum value
+between the alpha channels of @a and @b.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="b" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for the result">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lighten"
+              c:identifier="clutter_color_lighten"
+              doc="Lightens @color by a fixed amount, and saves the changed color
+in @result.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for the lighter color">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="darken"
+              c:identifier="clutter_color_darken"
+              doc="Darkens @color by a fixed amount, and saves the changed color
+in @result.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for the darker color">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="shade"
+              c:identifier="clutter_color_shade"
+              doc="Shades @color by @factor and saves the modified color into @result.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="return location for the shaded color">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string"
+              c:identifier="clutter_color_to_string"
+              doc="Returns a textual specification of @color in the hexadecimal form
+&lt;literal&gt;&amp;num;rrggbbaa&lt;/literal&gt;, where &lt;literal&gt;r&lt;/literal&gt;,
+&lt;literal&gt;g&lt;/literal&gt;, &lt;literal&gt;b&lt;/literal&gt; and &lt;literal&gt;a&lt;/literal&gt; are
+hex digits representing the red, green, blue and alpha components
+respectively."
+              version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="from_string"
+              c:identifier="clutter_color_from_string"
+              doc="Parses a string definition of a color, filling the
+&lt;structfield&gt;red&lt;/structfield&gt;, &lt;structfield&gt;green&lt;/structfield&gt;,
+&lt;structfield&gt;blue&lt;/structfield&gt; and &lt;structfield&gt;alpha&lt;/structfield&gt;
+channels of @color. If alpha is not specified it will be set full opaque.
+The @color is not allocated.
+The color may be defined by any of the formats understood by
+pango_color_from_string(); these include literal color names, like
+&lt;literal&gt;Red&lt;/literal&gt; or &lt;literal&gt;DarkSlateGray&lt;/literal&gt;, or
+hexadecimal specifications like &lt;literal&gt;&amp;num;3050b2&lt;/literal&gt; or
+&lt;literal&gt;&amp;num;333&lt;/literal&gt;."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_hls"
+              c:identifier="clutter_color_to_hls"
+              doc="Converts @color to the HLS format.
+The @hue value is in the 0 .. 360 range. The @luminance and">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hue"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="luminance"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="saturation"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_hls"
+              c:identifier="clutter_color_from_hls"
+              doc="Converts a color expressed in HLS (hue, luminance and saturation)
+values into a #ClutterColor.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hue" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="luminance" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="saturation" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_pixel"
+              c:identifier="clutter_color_to_pixel"
+              doc="Converts @color into a packed 32 bit integer, containing
+all the four 8 bit channels used by #ClutterColor.">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="from_pixel"
+              c:identifier="clutter_color_from_pixel"
+              doc="Converts @pixel from the packed representation of a four 8 bit channel
+color to a #ClutterColor.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixel" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <interface name="Container"
+               c:type="ClutterContainer"
+               doc="#ClutterContainer is an opaque structure whose members cannot be directly
+accessed"
+               version="0.4"
+               glib:type-name="ClutterContainer"
+               glib:get-type="clutter_container_get_type"
+               glib:type-struct="ContainerIface">
+      <virtual-method name="add">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="foreach" invoker="foreach">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="Callback" c:type="ClutterCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="2">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="foreach_with_internals"
+                      invoker="foreach_with_internals">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="Callback" c:type="ClutterCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="2">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="raise">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lower">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="sort_depth_order" invoker="sort_depth_order">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="create_child_meta" invoker="create_child_meta">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="destroy_child_meta" invoker="destroy_child_meta">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_child_meta" invoker="get_child_meta">
+        <return-value transfer-ownership="full">
+          <type name="ChildMeta" c:type="ClutterChildMeta*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add"
+              c:identifier="clutter_container_add"
+              doc="Adds a list of #ClutterActor&lt;!-- --&gt;s to @container. Each time and
+actor is added, the &quot;actor-added&quot; signal is emitted. Each actor should
+be parented to @container, which takes a reference on the actor. You
+cannot add a #ClutterActor to more than one #ClutterContainer."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_actor"
+              c:identifier="clutter_container_add_actor"
+              doc="Adds a #ClutterActor to @container. This function will emit the
+&quot;actor-added&quot; signal. The actor should be parented to
+#ClutterContainer."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="clutter_container_remove"
+              doc="Removes a %NULL terminated list of #ClutterActor&lt;!-- --&gt;s from
+around you must hold a reference to it yourself, using g_object_ref().
+Each time an actor is removed, the &quot;actor-removed&quot; signal is
+emitted by @container."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_actor"
+              c:identifier="clutter_container_remove_actor"
+              doc="Removes @actor from @container. The actor should be unparented, so
+if you want to keep it around you must hold a reference to it
+yourself, using g_object_ref(). When the actor has been removed,
+the &quot;actor-removed&quot; signal is emitted by @container."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_children"
+              c:identifier="clutter_container_get_children"
+              doc="Retrieves all the children of @container.
+of #ClutterActor&lt;!-- --&gt;s. Use g_list_free() on the returned
+list when done."
+              version="0.4">
+        <return-value transfer-ownership="container" doc="a list">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Actor"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="foreach"
+              c:identifier="clutter_container_foreach"
+              doc="Calls @callback for each child of @container that was added
+by the application (with clutter_container_add_actor()). Does
+not iterate over &quot;internal&quot; children that are part of the
+container&apos;s own implementation, if any."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="Callback" c:type="ClutterCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach_with_internals"
+              c:identifier="clutter_container_foreach_with_internals"
+              doc="Calls @callback for each child of @container, including &quot;internal&quot;
+children built in to the container itself that were never added
+by the application."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="Callback" c:type="ClutterCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_child_by_name"
+              c:identifier="clutter_container_find_child_by_name"
+              doc="Finds a child actor of a container by its name. Search recurses
+into any child container.
+or %NULL if no actor with that name was found."
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="The child actor with the requested name,">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="raise_child"
+              c:identifier="clutter_container_raise_child"
+              doc="Raises @actor to @sibling level, in the depth ordering."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lower_child"
+              c:identifier="clutter_container_lower_child"
+              doc="Lowers @actor to @sibling level, in the depth ordering."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sort_depth_order"
+              c:identifier="clutter_container_sort_depth_order"
+              doc="Sorts a container&apos;s children using their depth. This function should not
+be normally used by applications."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="create_child_meta"
+              c:identifier="clutter_container_create_child_meta"
+              doc="Creates the #ClutterChildMeta wrapping @actor inside the
+class member is not set to %G_TYPE_INVALID.
+This function is only useful when adding a #ClutterActor to
+a #ClutterContainer implementation outside of the
+#ClutterContainer::add() virtual function implementation.
+Applications should not call this function."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="destroy_child_meta"
+              c:identifier="clutter_container_destroy_child_meta"
+              doc="Destroys the #ClutterChildMeta wrapping @actor inside the
+This function is only useful when removing a #ClutterActor to
+a #ClutterContainer implementation outside of the
+#ClutterContainer::add() virtual function implementation.
+Applications should not call this function."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_meta"
+              c:identifier="clutter_container_get_child_meta"
+              doc="Retrieves the #ClutterChildMeta which contains the data about the
+of @container or %NULL if the specifiec actor does not exist or the
+container is not configured to provide #ClutterChildMeta&lt;!-- --&gt;s"
+              version="0.8">
+        <return-value transfer-ownership="none"
+                      doc="the #ClutterChildMeta for the @actor child">
+          <type name="ChildMeta" c:type="ClutterChildMeta*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set_property"
+              c:identifier="clutter_container_child_set_property"
+              doc="Sets a container-specific property on a child of @container."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="property" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get_property"
+              c:identifier="clutter_container_child_get_property"
+              doc="Gets a container specific property of a child of @container, In general,
+a copy is made of the property contents and the caller is responsible for
+freeing the memory by calling g_value_unset().
+Note that clutter_container_child_set_property() is really intended for
+language bindings, clutter_container_child_set() is much more convenient
+for C programming."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="property" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set"
+              c:identifier="clutter_container_child_set"
+              doc="Sets container specific properties on the child of a container."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_prop" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get"
+              c:identifier="clutter_container_child_get"
+              doc="Gets @container specific properties of an actor.
+In general, a copy is made of the property contents and the caller is
+responsible for freeing the memory in the appropriate manner for the type, for
+instance by calling g_free() or g_object_unref()."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_prop" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="actor-added"
+                   doc="The ::actor-added signal is emitted each time an actor
+has been added to @container."
+                   version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="actor-removed"
+                   doc="The ::actor-removed signal is emitted each time an actor
+is removed from @container."
+                   version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="child-notify"
+                   doc="The ::child-notify signal is emitted each time a property is
+being set through the clutter_container_child_set() and
+clutter_container_child_set_property() calls."
+                   version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor"/>
+          </parameter>
+          <parameter name="since" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParam"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="ContainerIface"
+            c:type="ClutterContainerIface"
+            glib:is-gtype-struct-for="Container"
+            doc="Base interface for container actors. The @add, @remove and @foreach
+virtual functions must be provided by any implementation; the other
+virtual functions are optional."
+            version="0.4">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="add">
+        <callback name="add" c:type="add">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove">
+        <callback name="remove" c:type="remove">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="foreach">
+        <callback name="foreach" c:type="foreach">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="Callback" c:type="ClutterCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="2">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="foreach_with_internals">
+        <callback name="foreach_with_internals"
+                  c:type="foreach_with_internals">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="Callback" c:type="ClutterCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="2">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="raise">
+        <callback name="raise" c:type="raise">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="sibling" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lower">
+        <callback name="lower" c:type="lower">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="sibling" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="sort_depth_order">
+        <callback name="sort_depth_order" c:type="sort_depth_order">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_meta_type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="create_child_meta">
+        <callback name="create_child_meta" c:type="create_child_meta">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="destroy_child_meta">
+        <callback name="destroy_child_meta" c:type="destroy_child_meta">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_child_meta">
+        <callback name="get_child_meta" c:type="get_child_meta">
+          <return-value transfer-ownership="full">
+            <type name="ChildMeta" c:type="ClutterChildMeta*"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="actor_added">
+        <callback name="actor_added" c:type="actor_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="actor_removed">
+        <callback name="actor_removed" c:type="actor_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_notify">
+        <callback name="child_notify" c:type="child_notify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <constant name="Control_L" value="65507">
+      <type name="int"/>
+    </constant>
+    <constant name="Control_R" value="65508">
+      <type name="int"/>
+    </constant>
+    <record name="CrossingEvent"
+            c:type="ClutterCrossingEvent"
+            doc="Event for the movement of the pointer across different actors"
+            version="0.2">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+      <field name="related" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+    </record>
+    <constant name="CruzeiroSign" value="16785570">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_A" value="1761">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_BE" value="1762">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_CHE" value="1790">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_CHE_descender" value="16778422">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_CHE_vertstroke" value="16778424">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_DE" value="1764">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_DZHE" value="1727">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_E" value="1788">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_EF" value="1766">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_EL" value="1772">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_EM" value="1773">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_EN" value="1774">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_EN_descender" value="16778402">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ER" value="1778">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ES" value="1779">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_GHE" value="1767">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_GHE_bar" value="16778386">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_HA" value="1768">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_HARDSIGN" value="1791">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_HA_descender" value="16778418">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_I" value="1769">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_IE" value="1765">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_IO" value="1715">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_I_macron" value="16778466">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_JE" value="1720">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_KA" value="1771">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_KA_descender" value="16778394">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_KA_vertstroke" value="16778396">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_LJE" value="1721">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_NJE" value="1722">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_O" value="1775">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_O_bar" value="16778472">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_PE" value="1776">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SCHWA" value="16778456">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SHA" value="1787">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SHCHA" value="1789">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SHHA" value="16778426">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SHORTI" value="1770">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SOFTSIGN" value="1784">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_TE" value="1780">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_TSE" value="1763">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_U" value="1781">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_U_macron" value="16778478">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_U_straight" value="16778414">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_U_straight_bar" value="16778416">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_VE" value="1783">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_YA" value="1777">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_YERU" value="1785">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_YU" value="1760">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ZE" value="1786">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ZHE" value="1782">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ZHE_descender" value="16778390">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_a" value="1729">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_be" value="1730">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_che" value="1758">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_che_descender" value="16778423">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_che_vertstroke" value="16778425">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_de" value="1732">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_dzhe" value="1711">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_e" value="1756">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ef" value="1734">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_el" value="1740">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_em" value="1741">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_en" value="1742">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_en_descender" value="16778403">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_er" value="1746">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_es" value="1747">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ghe" value="1735">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ghe_bar" value="16778387">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ha" value="1736">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ha_descender" value="16778419">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_hardsign" value="1759">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_i" value="1737">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_i_macron" value="16778467">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ie" value="1733">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_io" value="1699">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_je" value="1704">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ka" value="1739">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ka_descender" value="16778395">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ka_vertstroke" value="16778397">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_lje" value="1705">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_nje" value="1706">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_o" value="1743">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_o_bar" value="16778473">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_pe" value="1744">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_schwa" value="16778457">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_sha" value="1755">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_shcha" value="1757">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_shha" value="16778427">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_shorti" value="1738">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_softsign" value="1752">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_te" value="1748">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_tse" value="1731">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_u" value="1749">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_u_macron" value="16778479">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_u_straight" value="16778415">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_u_straight_bar" value="16778417">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ve" value="1751">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ya" value="1745">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_yeru" value="1753">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_yu" value="1728">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ze" value="1754">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_zhe" value="1750">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_zhe_descender" value="16778391">
+      <type name="int"/>
+    </constant>
+    <constant name="D" value="68">
+      <type name="int"/>
+    </constant>
+    <constant name="Dabovedot" value="16784906">
+      <type name="int"/>
+    </constant>
+    <constant name="Dcaron" value="463">
+      <type name="int"/>
+    </constant>
+    <constant name="Delete" value="65535">
+      <type name="int"/>
+    </constant>
+    <class name="DeviceManager"
+           c:type="ClutterDeviceManager"
+           doc="The #ClutterDeviceManager structure contains only private data"
+           version="1.2"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterDeviceManager"
+           glib:get-type="clutter_device_manager_get_type"
+           glib:type-struct="DeviceManagerClass">
+      <function name="get_default"
+                c:identifier="clutter_device_manager_get_default"
+                doc="Retrieves the device manager singleton
+The returned instance is owned by Clutter and it should not be
+modified or freed"
+                version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="the #ClutterDeviceManager singleton.">
+          <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+        </return-value>
+      </function>
+      <virtual-method name="get_devices">
+        <return-value transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_core_device">
+        <return-value transfer-ownership="full">
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_device">
+        <return-value transfer-ownership="full">
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="add_device">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <type name="InputDevice" c:type="ClutterInputDevice*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_device">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <type name="InputDevice" c:type="ClutterInputDevice*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="list_devices"
+              c:identifier="clutter_device_manager_list_devices"
+              doc="Lists all currently registered input devices
+a newly allocated list of #ClutterInputDevice objects. Use
+g_slist_free() to deallocate it when done"
+              version="1.2">
+        <return-value transfer-ownership="container">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="InputDevice"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="peek_devices"
+              c:identifier="clutter_device_manager_peek_devices"
+              doc="Lists all currently registered input devices
+a pointer to the internal list of #ClutterInputDevice objects. The
+returned list is owned by the #ClutterDeviceManager and should never
+be modified or freed"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="InputDevice"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_device"
+              c:identifier="clutter_device_manager_get_device"
+              doc="Retrieves the #ClutterInputDevice with the given @device_id
+returned device is owned by the #ClutterDeviceManager and should
+never be modified or freed"
+              version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterInputDevice or %NULL. The">
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+        <parameters>
+          <parameter name="device_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_core_device"
+              c:identifier="clutter_device_manager_get_core_device"
+              doc="Retrieves the core #ClutterInputDevice of type @device_type
+Core devices are devices created automatically by the default
+Clutter backend
+returned device is owned by the #ClutterDeviceManager and should
+not be modified or freed"
+              version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterInputDevice or %NULL. The">
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+        <parameters>
+          <parameter name="device_type" transfer-ownership="none">
+            <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="backend" writable="1" construct-only="1">
+        <type name="Backend" c:type="ClutterBackend"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="DeviceManagerPrivate"
+              c:type="ClutterDeviceManagerPrivate*"/>
+      </field>
+      <glib:signal name="device-added"
+                   doc="The ::device-added signal is emitted each time a device has been
+added to the #ClutterDeviceManager"
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <type name="InputDevice" c:type="ClutterInputDevice"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="device-removed"
+                   doc="The ::device-removed signal is emitted each time a device has been
+removed from the #ClutterDeviceManager"
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <type name="InputDevice" c:type="ClutterInputDevice"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="DeviceManagerClass"
+            c:type="ClutterDeviceManagerClass"
+            glib:is-gtype-struct-for="DeviceManager"
+            doc="The #ClutterDeviceManagerClass structure contains only private data"
+            version="1.2">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_devices">
+        <callback name="get_devices" c:type="get_devices">
+          <return-value transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_core_device">
+        <callback name="get_core_device" c:type="get_core_device">
+          <return-value transfer-ownership="full">
+            <type name="InputDevice" c:type="ClutterInputDevice*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_device">
+        <callback name="get_device" c:type="get_device">
+          <return-value transfer-ownership="full">
+            <type name="InputDevice" c:type="ClutterInputDevice*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+            <parameter name="id" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_device">
+        <callback name="add_device" c:type="add_device">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+            <parameter name="device" transfer-ownership="none">
+              <type name="InputDevice" c:type="ClutterInputDevice*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_device">
+        <callback name="remove_device" c:type="remove_device">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+            <parameter name="device" transfer-ownership="none">
+              <type name="InputDevice" c:type="ClutterInputDevice*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_padding">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="DeviceManagerPrivate" c:type="ClutterDeviceManagerPrivate">
+    </record>
+    <constant name="DongSign" value="16785579">
+      <type name="int"/>
+    </constant>
+    <constant name="Down" value="65364">
+      <type name="int"/>
+    </constant>
+    <constant name="Dstroke" value="464">
+      <type name="int"/>
+    </constant>
+    <constant name="E" value="69">
+      <type name="int"/>
+    </constant>
+    <constant name="ENG" value="957">
+      <type name="int"/>
+    </constant>
+    <constant name="ETH" value="208">
+      <type name="int"/>
+    </constant>
+    <constant name="Eabovedot" value="972">
+      <type name="int"/>
+    </constant>
+    <constant name="Eacute" value="201">
+      <type name="int"/>
+    </constant>
+    <constant name="Ebelowdot" value="16785080">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecaron" value="460">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflex" value="202">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflexacute" value="16785086">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflexbelowdot" value="16785094">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflexgrave" value="16785088">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflexhook" value="16785090">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflextilde" value="16785092">
+      <type name="int"/>
+    </constant>
+    <constant name="EcuSign" value="16785568">
+      <type name="int"/>
+    </constant>
+    <constant name="Ediaeresis" value="203">
+      <type name="int"/>
+    </constant>
+    <constant name="Egrave" value="200">
+      <type name="int"/>
+    </constant>
+    <constant name="Ehook" value="16785082">
+      <type name="int"/>
+    </constant>
+    <constant name="Eisu_Shift" value="65327">
+      <type name="int"/>
+    </constant>
+    <constant name="Eisu_toggle" value="65328">
+      <type name="int"/>
+    </constant>
+    <constant name="Emacron" value="938">
+      <type name="int"/>
+    </constant>
+    <constant name="End" value="65367">
+      <type name="int"/>
+    </constant>
+    <constant name="Eogonek" value="458">
+      <type name="int"/>
+    </constant>
+    <constant name="Escape" value="65307">
+      <type name="int"/>
+    </constant>
+    <constant name="Eth" value="208">
+      <type name="int"/>
+    </constant>
+    <constant name="Etilde" value="16785084">
+      <type name="int"/>
+    </constant>
+    <constant name="EuroSign" value="8364">
+      <type name="int"/>
+    </constant>
+    <union name="Event"
+           c:type="ClutterEvent"
+           glib:type-name="ClutterEvent"
+           glib:get-type="clutter_event_get_type">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="any" writable="1">
+        <type name="AnyEvent" c:type="ClutterAnyEvent"/>
+      </field>
+      <field name="button" writable="1">
+        <type name="ButtonEvent" c:type="ClutterButtonEvent"/>
+      </field>
+      <field name="key" writable="1">
+        <type name="KeyEvent" c:type="ClutterKeyEvent"/>
+      </field>
+      <field name="motion" writable="1">
+        <type name="MotionEvent" c:type="ClutterMotionEvent"/>
+      </field>
+      <field name="scroll" writable="1">
+        <type name="ScrollEvent" c:type="ClutterScrollEvent"/>
+      </field>
+      <field name="stage_state" writable="1">
+        <type name="StageStateEvent" c:type="ClutterStageStateEvent"/>
+      </field>
+      <field name="crossing" writable="1">
+        <type name="CrossingEvent" c:type="ClutterCrossingEvent"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="clutter_event_new"
+                   doc="Creates a new #ClutterEvent of the specified type.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="ClutterEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="EventType" c:type="ClutterEventType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="put"
+              c:identifier="clutter_event_put"
+              doc="Puts a copy of the event on the back of the event queue. The event will
+have the %CLUTTER_EVENT_FLAG_SYNTHETIC flag set. If the source is set
+event signals will be emitted for this source and capture/bubbling for
+its ancestors. If the source is not set it will be generated by picking
+or use the actor that currently has keyboard focus"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="clutter_event_copy"
+              doc="Copies @event.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="ClutterEvent*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="clutter_event_free"
+              doc="Frees all resources used by @event.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="type"
+              c:identifier="clutter_event_type"
+              doc="Retrieves the type of the event.">
+        <return-value transfer-ownership="full">
+          <type name="EventType" c:type="ClutterEventType"/>
+        </return-value>
+      </method>
+      <method name="get_flags"
+              c:identifier="clutter_event_get_flags"
+              doc="Retrieves the #ClutterEventFlags of @event"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="EventFlags" c:type="ClutterEventFlags"/>
+        </return-value>
+      </method>
+      <method name="get_time"
+              c:identifier="clutter_event_get_time"
+              doc="Retrieves the time of the event."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_state"
+              c:identifier="clutter_event_get_state"
+              doc="Retrieves the modifier state of the event."
+              version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="ModifierType" c:type="ClutterModifierType"/>
+        </return-value>
+      </method>
+      <method name="get_device_id"
+              c:identifier="clutter_event_get_device_id"
+              doc="Retrieves the events device id if set.
+no specific device set.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_device_type"
+              c:identifier="clutter_event_get_device_type"
+              doc="Retrieves the type of the device for @event
+any is set"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+        </return-value>
+      </method>
+      <method name="get_device"
+              c:identifier="clutter_event_get_device"
+              doc="Retrieves the #ClutterInputDevice for the event.
+The #ClutterInputDevice structure is completely opaque and should
+be cast to the platform-specific implementation."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+      </method>
+      <method name="get_source"
+              c:identifier="clutter_event_get_source"
+              doc="Retrieves the source #ClutterActor the event originated from, or
+NULL if the event has no source."
+              version="0.6">
+        <return-value transfer-ownership="none" doc="a #ClutterActor">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_stage"
+              c:identifier="clutter_event_get_stage"
+              doc="Retrieves the source #ClutterStage the event originated for, or
+%NULL if the event has no stage."
+              version="0.8">
+        <return-value transfer-ownership="none" doc="a #ClutterStage">
+          <type name="Stage" c:type="ClutterStage*"/>
+        </return-value>
+      </method>
+      <method name="get_coords"
+              c:identifier="clutter_event_get_coords"
+              doc="Retrieves the coordinates of @event and puts them into @x and @y."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_key_symbol"
+              c:identifier="clutter_event_get_key_symbol"
+              doc="Retrieves the key symbol of @event"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_key_code"
+              c:identifier="clutter_event_get_key_code"
+              doc="Retrieves the keycode of the key that caused @event"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="get_key_unicode"
+              c:identifier="clutter_event_get_key_unicode"
+              doc="Retrieves the unicode value for the key that caused @keyev.">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_button"
+              c:identifier="clutter_event_get_button"
+              doc="Retrieves the button number of @event"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_click_count"
+              c:identifier="clutter_event_get_click_count"
+              doc="Retrieves the number of clicks of @event"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_related"
+              c:identifier="clutter_event_get_related"
+              doc="Retrieves the related actor of a crossing event."
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the related #ClutterActor, or %NULL">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_scroll_direction"
+              c:identifier="clutter_event_get_scroll_direction"
+              doc="Retrieves the direction of the scrolling of @event"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="ScrollDirection" c:type="ClutterScrollDirection"/>
+        </return-value>
+      </method>
+    </union>
+    <bitfield name="EventFlags"
+              doc="Flags for the #ClutterEvent"
+              version="0.6"
+              glib:type-name="ClutterEventFlags"
+              glib:get-type="clutter_event_flags_get_type"
+              c:type="ClutterEventFlags">
+      <member name="none"
+              value="0"
+              c:identifier="CLUTTER_EVENT_NONE"
+              glib:nick="none"/>
+      <member name="flag_synthetic"
+              value="1"
+              c:identifier="CLUTTER_EVENT_FLAG_SYNTHETIC"
+              glib:nick="flag-synthetic"/>
+    </bitfield>
+    <enumeration name="EventType"
+                 doc="Types of events."
+                 version="0.4"
+                 glib:type-name="ClutterEventType"
+                 glib:get-type="clutter_event_type_get_type"
+                 c:type="ClutterEventType">
+      <member name="nothing"
+              value="0"
+              c:identifier="CLUTTER_NOTHING"
+              glib:nick="nothing"/>
+      <member name="key_press"
+              value="1"
+              c:identifier="CLUTTER_KEY_PRESS"
+              glib:nick="key-press"/>
+      <member name="key_release"
+              value="2"
+              c:identifier="CLUTTER_KEY_RELEASE"
+              glib:nick="key-release"/>
+      <member name="motion"
+              value="3"
+              c:identifier="CLUTTER_MOTION"
+              glib:nick="motion"/>
+      <member name="enter"
+              value="4"
+              c:identifier="CLUTTER_ENTER"
+              glib:nick="enter"/>
+      <member name="leave"
+              value="5"
+              c:identifier="CLUTTER_LEAVE"
+              glib:nick="leave"/>
+      <member name="button_press"
+              value="6"
+              c:identifier="CLUTTER_BUTTON_PRESS"
+              glib:nick="button-press"/>
+      <member name="button_release"
+              value="7"
+              c:identifier="CLUTTER_BUTTON_RELEASE"
+              glib:nick="button-release"/>
+      <member name="scroll"
+              value="8"
+              c:identifier="CLUTTER_SCROLL"
+              glib:nick="scroll"/>
+      <member name="stage_state"
+              value="9"
+              c:identifier="CLUTTER_STAGE_STATE"
+              glib:nick="stage-state"/>
+      <member name="destroy_notify"
+              value="10"
+              c:identifier="CLUTTER_DESTROY_NOTIFY"
+              glib:nick="destroy-notify"/>
+      <member name="client_message"
+              value="11"
+              c:identifier="CLUTTER_CLIENT_MESSAGE"
+              glib:nick="client-message"/>
+      <member name="delete"
+              value="12"
+              c:identifier="CLUTTER_DELETE"
+              glib:nick="delete"/>
+    </enumeration>
+    <constant name="Execute" value="65378">
+      <type name="int"/>
+    </constant>
+    <constant name="F" value="70">
+      <type name="int"/>
+    </constant>
+    <constant name="F1" value="65470">
+      <type name="int"/>
+    </constant>
+    <constant name="F10" value="65479">
+      <type name="int"/>
+    </constant>
+    <constant name="F11" value="65480">
+      <type name="int"/>
+    </constant>
+    <constant name="F12" value="65481">
+      <type name="int"/>
+    </constant>
+    <constant name="F13" value="65482">
+      <type name="int"/>
+    </constant>
+    <constant name="F14" value="65483">
+      <type name="int"/>
+    </constant>
+    <constant name="F15" value="65484">
+      <type name="int"/>
+    </constant>
+    <constant name="F16" value="65485">
+      <type name="int"/>
+    </constant>
+    <constant name="F17" value="65486">
+      <type name="int"/>
+    </constant>
+    <constant name="F18" value="65487">
+      <type name="int"/>
+    </constant>
+    <constant name="F19" value="65488">
+      <type name="int"/>
+    </constant>
+    <constant name="F2" value="65471">
+      <type name="int"/>
+    </constant>
+    <constant name="F20" value="65489">
+      <type name="int"/>
+    </constant>
+    <constant name="F21" value="65490">
+      <type name="int"/>
+    </constant>
+    <constant name="F22" value="65491">
+      <type name="int"/>
+    </constant>
+    <constant name="F23" value="65492">
+      <type name="int"/>
+    </constant>
+    <constant name="F24" value="65493">
+      <type name="int"/>
+    </constant>
+    <constant name="F25" value="65494">
+      <type name="int"/>
+    </constant>
+    <constant name="F26" value="65495">
+      <type name="int"/>
+    </constant>
+    <constant name="F27" value="65496">
+      <type name="int"/>
+    </constant>
+    <constant name="F28" value="65497">
+      <type name="int"/>
+    </constant>
+    <constant name="F29" value="65498">
+      <type name="int"/>
+    </constant>
+    <constant name="F3" value="65472">
+      <type name="int"/>
+    </constant>
+    <constant name="F30" value="65499">
+      <type name="int"/>
+    </constant>
+    <constant name="F31" value="65500">
+      <type name="int"/>
+    </constant>
+    <constant name="F32" value="65501">
+      <type name="int"/>
+    </constant>
+    <constant name="F33" value="65502">
+      <type name="int"/>
+    </constant>
+    <constant name="F34" value="65503">
+      <type name="int"/>
+    </constant>
+    <constant name="F35" value="65504">
+      <type name="int"/>
+    </constant>
+    <constant name="F4" value="65473">
+      <type name="int"/>
+    </constant>
+    <constant name="F5" value="65474">
+      <type name="int"/>
+    </constant>
+    <constant name="F6" value="65475">
+      <type name="int"/>
+    </constant>
+    <constant name="F7" value="65476">
+      <type name="int"/>
+    </constant>
+    <constant name="F8" value="65477">
+      <type name="int"/>
+    </constant>
+    <constant name="F9" value="65478">
+      <type name="int"/>
+    </constant>
+    <constant name="FFrancSign" value="16785571">
+      <type name="int"/>
+    </constant>
+    <constant name="FLAVOUR" value="glx">
+      <type name="utf8"/>
+    </constant>
+    <constant name="Fabovedot" value="16784926">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_0" value="16778992">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_1" value="16778993">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_2" value="16778994">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_3" value="16778995">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_4" value="16778996">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_5" value="16778997">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_6" value="16778998">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_7" value="16778999">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_8" value="16779000">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_9" value="16779001">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_yeh" value="16778956">
+      <type name="int"/>
+    </constant>
+    <bitfield name="FeatureFlags"
+              doc="Runtime flags indicating specific features available via Clutter window
+sysytem and graphics backend."
+              version="0.4"
+              glib:type-name="ClutterFeatureFlags"
+              glib:get-type="clutter_feature_flags_get_type"
+              c:type="ClutterFeatureFlags">
+      <member name="texture_npot"
+              value="4"
+              c:identifier="CLUTTER_FEATURE_TEXTURE_NPOT"
+              glib:nick="texture-npot"/>
+      <member name="sync_to_vblank"
+              value="8"
+              c:identifier="CLUTTER_FEATURE_SYNC_TO_VBLANK"
+              glib:nick="sync-to-vblank"/>
+      <member name="texture_yuv"
+              value="16"
+              c:identifier="CLUTTER_FEATURE_TEXTURE_YUV"
+              glib:nick="texture-yuv"/>
+      <member name="texture_read_pixels"
+              value="32"
+              c:identifier="CLUTTER_FEATURE_TEXTURE_READ_PIXELS"
+              glib:nick="texture-read-pixels"/>
+      <member name="stage_static"
+              value="64"
+              c:identifier="CLUTTER_FEATURE_STAGE_STATIC"
+              glib:nick="stage-static"/>
+      <member name="stage_user_resize"
+              value="128"
+              c:identifier="CLUTTER_FEATURE_STAGE_USER_RESIZE"
+              glib:nick="stage-user-resize"/>
+      <member name="stage_cursor"
+              value="256"
+              c:identifier="CLUTTER_FEATURE_STAGE_CURSOR"
+              glib:nick="stage-cursor"/>
+      <member name="shaders_glsl"
+              value="512"
+              c:identifier="CLUTTER_FEATURE_SHADERS_GLSL"
+              glib:nick="shaders-glsl"/>
+      <member name="offscreen"
+              value="1024"
+              c:identifier="CLUTTER_FEATURE_OFFSCREEN"
+              glib:nick="offscreen"/>
+      <member name="stage_multiple"
+              value="2048"
+              c:identifier="CLUTTER_FEATURE_STAGE_MULTIPLE"
+              glib:nick="stage-multiple"/>
+      <member name="swap_events"
+              value="4096"
+              c:identifier="CLUTTER_FEATURE_SWAP_EVENTS"
+              glib:nick="swap-events"/>
+    </bitfield>
+    <constant name="Find" value="65384">
+      <type name="int"/>
+    </constant>
+    <constant name="First_Virtual_Screen" value="65232">
+      <type name="int"/>
+    </constant>
+    <class name="FixedLayout"
+           c:type="ClutterFixedLayout"
+           doc="The #ClutterFixedLayout structure contains only private data and
+it should be accessed using the provided API"
+           version="1.2"
+           parent="LayoutManager"
+           glib:type-name="ClutterFixedLayout"
+           glib:get-type="clutter_fixed_layout_get_type"
+           glib:type-struct="FixedLayoutClass">
+      <constructor name="new"
+                   c:identifier="clutter_fixed_layout_new"
+                   doc="Creates a new #ClutterFixedLayout"
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="FixedLayout" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </constructor>
+      <field name="parent_instance">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+    </class>
+    <record name="FixedLayoutClass"
+            c:type="ClutterFixedLayoutClass"
+            glib:is-gtype-struct-for="FixedLayout"
+            doc="The #ClutterFixedLayoutClass structure contains only private data
+and it should be accessed using the provided API"
+            version="1.2">
+      <field name="parent_class">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <class name="FlowLayout"
+           c:type="ClutterFlowLayout"
+           doc="The #ClutterFlowLayout structure contains only private data
+and should be accessed using the provided API"
+           version="1.2"
+           parent="LayoutManager"
+           glib:type-name="ClutterFlowLayout"
+           glib:get-type="clutter_flow_layout_get_type"
+           glib:type-struct="FlowLayoutClass">
+      <constructor name="new"
+                   c:identifier="clutter_flow_layout_new"
+                   doc="Creates a new #ClutterFlowLayout with the given @orientation"
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="FlowLayout" c:type="ClutterLayoutManager*"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <type name="FlowOrientation" c:type="ClutterFlowOrientation"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_orientation"
+              c:identifier="clutter_flow_layout_set_orientation"
+              doc="Sets the orientation of the flow layout
+The orientation controls the direction used to allocate
+orientation also controls the direction of the overflowing"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <type name="FlowOrientation" c:type="ClutterFlowOrientation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_orientation"
+              c:identifier="clutter_flow_layout_get_orientation"
+              doc="Retrieves the orientation of the @layout"
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="FlowOrientation" c:type="ClutterFlowOrientation"/>
+        </return-value>
+      </method>
+      <method name="set_homogeneous"
+              c:identifier="clutter_flow_layout_set_homogeneous"
+              doc="Sets whether the @layout should allocate the same space for
+each child"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_homogeneous"
+              c:identifier="clutter_flow_layout_get_homogeneous"
+              doc="Retrieves whether the @layout is homogeneous"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_column_spacing"
+              c:identifier="clutter_flow_layout_set_column_spacing"
+              doc="Sets the space between columns, in pixels"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_spacing"
+              c:identifier="clutter_flow_layout_get_column_spacing"
+              doc="Retrieves the spacing between columns
+in pixels"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_row_spacing"
+              c:identifier="clutter_flow_layout_set_row_spacing"
+              doc="Sets the spacing between rows, in pixels"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_spacing"
+              c:identifier="clutter_flow_layout_get_row_spacing"
+              doc="Retrieves the spacing between rows
+in pixels"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_column_width"
+              c:identifier="clutter_flow_layout_set_column_width"
+              doc="Sets the minimum and maximum widths that a column can have"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_width" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="max_width" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_width"
+              c:identifier="clutter_flow_layout_get_column_width"
+              doc="Retrieves the minimum and maximum column widths"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the minimum column width, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="max_width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the maximum column width, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_height"
+              c:identifier="clutter_flow_layout_set_row_height"
+              doc="Sets the minimum and maximum heights that a row can have"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_height" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="max_height" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_height"
+              c:identifier="clutter_flow_layout_get_row_height"
+              doc="Retrieves the minimum and maximum row heights"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the minimum row height, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="max_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the maximum row height, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="column-spacing"
+                version="1.2"
+                writable="1"
+                doc="The spacing between columns, in pixels; the value of this
+property is honoured by horizontal non-overflowing layouts
+and by vertical overflowing layouts">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="homogeneous"
+                version="1.2"
+                writable="1"
+                doc="Whether each child inside the #ClutterFlowLayout should receive
+the same allocation">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="max-column-width"
+                version="1.2"
+                writable="1"
+                doc="Maximum width for each column in the layout, in pixels. If
+set to -1 the width will be the maximum child width">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="max-row-height"
+                version="1.2"
+                writable="1"
+                doc="Maximum height for each row in the layout, in pixels. If
+set to -1 the width will be the maximum child height">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="min-column-width"
+                version="1.2"
+                writable="1"
+                doc="Minimum width for each column in the layout, in pixels">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="min-row-height"
+                version="1.2"
+                writable="1"
+                doc="Minimum height for each row in the layout, in pixels">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="orientation"
+                version="1.2"
+                writable="1"
+                construct="1"
+                doc="The orientation of the #ClutterFlowLayout. The children
+of the layout will be layed out following the orientation.
+This property also controls the overflowing directions">
+        <type name="FlowOrientation" c:type="ClutterFlowOrientation"/>
+      </property>
+      <property name="row-spacing"
+                version="1.2"
+                writable="1"
+                doc="The spacing between rows, in pixels; the value of this
+property is honoured by vertical non-overflowing layouts and
+by horizontal overflowing layouts">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <field name="parent_instance">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+      <field name="priv">
+        <type name="FlowLayoutPrivate" c:type="ClutterFlowLayoutPrivate*"/>
+      </field>
+    </class>
+    <record name="FlowLayoutClass"
+            c:type="ClutterFlowLayoutClass"
+            glib:is-gtype-struct-for="FlowLayout"
+            doc="The #ClutterFlowLayoutClass structure contains only private data
+and should be accessed using the provided API"
+            version="1.2">
+      <field name="parent_class">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <record name="FlowLayoutPrivate" c:type="ClutterFlowLayoutPrivate">
+    </record>
+    <enumeration name="FlowOrientation"
+                 doc="The direction of the arrangement of the children inside
+a #ClutterFlowLayout"
+                 version="1.2"
+                 glib:type-name="ClutterFlowOrientation"
+                 glib:get-type="clutter_flow_orientation_get_type"
+                 c:type="ClutterFlowOrientation">
+      <member name="horizontal"
+              value="0"
+              c:identifier="CLUTTER_FLOW_HORIZONTAL"
+              glib:nick="horizontal"/>
+      <member name="vertical"
+              value="1"
+              c:identifier="CLUTTER_FLOW_VERTICAL"
+              glib:nick="vertical"/>
+    </enumeration>
+    <record name="Fog"
+            c:type="ClutterFog"
+            doc="Fog settings used to create the depth cueing effect."
+            version="0.6"
+            glib:type-name="ClutterFog"
+            glib:get-type="clutter_fog_get_type">
+      <field name="z_near" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="z_far" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+    </record>
+    <bitfield name="FontFlags"
+              doc="Runtime flags to change the font quality. To be used with
+clutter_set_font_flags()."
+              version="1.0"
+              glib:type-name="ClutterFontFlags"
+              glib:get-type="clutter_font_flags_get_type"
+              c:type="ClutterFontFlags">
+      <member name="mipmapping"
+              value="1"
+              c:identifier="CLUTTER_FONT_MIPMAPPING"
+              glib:nick="mipmapping"/>
+      <member name="hinting"
+              value="2"
+              c:identifier="CLUTTER_FONT_HINTING"
+              glib:nick="hinting"/>
+    </bitfield>
+    <constant name="G" value="71">
+      <type name="int"/>
+    </constant>
+    <constant name="Gabovedot" value="725">
+      <type name="int"/>
+    </constant>
+    <constant name="Gbreve" value="683">
+      <type name="int"/>
+    </constant>
+    <constant name="Gcaron" value="16777702">
+      <type name="int"/>
+    </constant>
+    <constant name="Gcedilla" value="939">
+      <type name="int"/>
+    </constant>
+    <constant name="Gcircumflex" value="728">
+      <type name="int"/>
+    </constant>
+    <record name="Geometry"
+            c:type="ClutterGeometry"
+            doc="The rectangle containing an actor&apos;s bounding box, measured in pixels."
+            glib:type-name="ClutterGeometry"
+            glib:get-type="clutter_geometry_get_type">
+      <field name="x" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <constant name="Georgian_an" value="16781520">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_ban" value="16781521">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_can" value="16781546">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_char" value="16781549">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_chin" value="16781545">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_cil" value="16781548">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_don" value="16781523">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_en" value="16781524">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_fi" value="16781558">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_gan" value="16781522">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_ghan" value="16781542">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_hae" value="16781552">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_har" value="16781556">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_he" value="16781553">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_hie" value="16781554">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_hoe" value="16781557">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_in" value="16781528">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_jhan" value="16781551">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_jil" value="16781547">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_kan" value="16781529">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_khar" value="16781541">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_las" value="16781530">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_man" value="16781531">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_nar" value="16781532">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_on" value="16781533">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_par" value="16781534">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_phar" value="16781540">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_qar" value="16781543">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_rae" value="16781536">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_san" value="16781537">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_shin" value="16781544">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_tan" value="16781527">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_tar" value="16781538">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_un" value="16781539">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_vin" value="16781525">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_we" value="16781555">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_xan" value="16781550">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_zen" value="16781526">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_zhar" value="16781535">
+      <type name="int"/>
+    </constant>
+    <enumeration name="Gravity"
+                 doc="Gravity of the scaling operations. When a gravity different than
+%CLUTTER_GRAVITY_NONE is used, an actor is scaled keeping the position
+of the specified portion at the same coordinates."
+                 version="0.2"
+                 glib:type-name="ClutterGravity"
+                 glib:get-type="clutter_gravity_get_type"
+                 c:type="ClutterGravity">
+      <member name="none"
+              value="0"
+              c:identifier="CLUTTER_GRAVITY_NONE"
+              glib:nick="none"/>
+      <member name="north"
+              value="1"
+              c:identifier="CLUTTER_GRAVITY_NORTH"
+              glib:nick="north"/>
+      <member name="north_east"
+              value="2"
+              c:identifier="CLUTTER_GRAVITY_NORTH_EAST"
+              glib:nick="north-east"/>
+      <member name="east"
+              value="3"
+              c:identifier="CLUTTER_GRAVITY_EAST"
+              glib:nick="east"/>
+      <member name="south_east"
+              value="4"
+              c:identifier="CLUTTER_GRAVITY_SOUTH_EAST"
+              glib:nick="south-east"/>
+      <member name="south"
+              value="5"
+              c:identifier="CLUTTER_GRAVITY_SOUTH"
+              glib:nick="south"/>
+      <member name="south_west"
+              value="6"
+              c:identifier="CLUTTER_GRAVITY_SOUTH_WEST"
+              glib:nick="south-west"/>
+      <member name="west"
+              value="7"
+              c:identifier="CLUTTER_GRAVITY_WEST"
+              glib:nick="west"/>
+      <member name="north_west"
+              value="8"
+              c:identifier="CLUTTER_GRAVITY_NORTH_WEST"
+              glib:nick="north-west"/>
+      <member name="center"
+              value="9"
+              c:identifier="CLUTTER_GRAVITY_CENTER"
+              glib:nick="center"/>
+    </enumeration>
+    <constant name="Greek_ALPHA" value="1985">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_ALPHAaccent" value="1953">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_BETA" value="1986">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_CHI" value="2007">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_DELTA" value="1988">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_EPSILON" value="1989">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_EPSILONaccent" value="1954">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_ETA" value="1991">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_ETAaccent" value="1955">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_GAMMA" value="1987">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_IOTA" value="1993">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_IOTAaccent" value="1956">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_IOTAdiaeresis" value="1957">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_IOTAdieresis" value="1957">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_KAPPA" value="1994">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_LAMBDA" value="1995">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_LAMDA" value="1995">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_MU" value="1996">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_NU" value="1997">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_OMEGA" value="2009">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_OMEGAaccent" value="1963">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_OMICRON" value="1999">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_OMICRONaccent" value="1959">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_PHI" value="2006">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_PI" value="2000">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_PSI" value="2008">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_RHO" value="2001">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_SIGMA" value="2002">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_TAU" value="2004">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_THETA" value="1992">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_UPSILON" value="2005">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_UPSILONaccent" value="1960">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_UPSILONdieresis" value="1961">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_XI" value="1998">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_ZETA" value="1990">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_accentdieresis" value="1966">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_alpha" value="2017">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_alphaaccent" value="1969">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_beta" value="2018">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_chi" value="2039">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_delta" value="2020">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_epsilon" value="2021">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_epsilonaccent" value="1970">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_eta" value="2023">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_etaaccent" value="1971">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_finalsmallsigma" value="2035">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_gamma" value="2019">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_horizbar" value="1967">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_iota" value="2025">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_iotaaccent" value="1972">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_iotaaccentdieresis" value="1974">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_iotadieresis" value="1973">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_kappa" value="2026">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_lambda" value="2027">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_lamda" value="2027">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_mu" value="2028">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_nu" value="2029">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_omega" value="2041">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_omegaaccent" value="1979">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_omicron" value="2031">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_omicronaccent" value="1975">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_phi" value="2038">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_pi" value="2032">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_psi" value="2040">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_rho" value="2033">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_sigma" value="2034">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_tau" value="2036">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_theta" value="2024">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_upsilon" value="2037">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_upsilonaccent" value="1976">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_upsilonaccentdieresis" value="1978">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_upsilondieresis" value="1977">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_xi" value="2030">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_zeta" value="2022">
+      <type name="int"/>
+    </constant>
+    <class name="Group"
+           c:type="ClutterGroup"
+           doc="The #ClutterGroup structure contains only private data
+and should be accessed using the provided API"
+           version="0.1"
+           parent="Actor"
+           glib:type-name="ClutterGroup"
+           glib:get-type="clutter_group_get_type"
+           glib:type-struct="GroupClass">
+      <implements name="Container"/>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_group_new"
+                   doc="Create a new  #ClutterGroup.">
+        <return-value transfer-ownership="full">
+          <type name="Group" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <method name="get_nth_child"
+              c:identifier="clutter_group_get_nth_child"
+              doc="Gets a groups child held at @index_ in stack."
+              version="0.2">
+        <return-value transfer-ownership="none"
+                      doc="A Clutter actor, or %NULL if">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_children"
+              c:identifier="clutter_group_get_n_children"
+              doc="Gets the number of actors held in the group."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="remove_all"
+              c:identifier="clutter_group_remove_all"
+              doc="Removes all children actors from the #ClutterGroup.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="GroupPrivate" c:type="ClutterGroupPrivate*"/>
+      </field>
+    </class>
+    <record name="GroupClass"
+            c:type="ClutterGroupClass"
+            glib:is-gtype-struct-for="Group"
+            doc="The #ClutterGroupClass structure contains only private data"
+            version="0.1">
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="clutter_reserved1">
+        <callback name="clutter_reserved1" c:type="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved2">
+        <callback name="clutter_reserved2" c:type="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved3">
+        <callback name="clutter_reserved3" c:type="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved4">
+        <callback name="clutter_reserved4" c:type="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved5">
+        <callback name="clutter_reserved5" c:type="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved6">
+        <callback name="clutter_reserved6" c:type="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="GroupPrivate" c:type="ClutterGroupPrivate">
+    </record>
+    <constant name="H" value="72">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul" value="65329">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_A" value="3775">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_AE" value="3776">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_AraeA" value="3830">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_AraeAE" value="3831">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Banja" value="65337">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Cieuc" value="3770">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Codeinput" value="65335">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Dikeud" value="3751">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_E" value="3780">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_EO" value="3779">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_EU" value="3793">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_End" value="65331">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Hanja" value="65332">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Hieuh" value="3774">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_I" value="3795">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Ieung" value="3767">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Cieuc" value="3818">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Dikeud" value="3802">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Hieuh" value="3822">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Ieung" value="3816">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Jieuj" value="3817">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Khieuq" value="3819">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Kiyeog" value="3796">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_KiyeogSios" value="3798">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_KkogjiDalrinIeung" value="3833">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Mieum" value="3811">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Nieun" value="3799">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_NieunHieuh" value="3801">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_NieunJieuj" value="3800">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_PanSios" value="3832">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Phieuf" value="3821">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Pieub" value="3812">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_PieubSios" value="3813">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Rieul" value="3803">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulHieuh" value="3810">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulKiyeog" value="3804">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulMieum" value="3805">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulPhieuf" value="3809">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulPieub" value="3806">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulSios" value="3807">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulTieut" value="3808">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Sios" value="3814">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_SsangKiyeog" value="3797">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_SsangSios" value="3815">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Tieut" value="3820">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_YeorinHieuh" value="3834">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Jamo" value="65333">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Jeonja" value="65336">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Jieuj" value="3768">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Khieuq" value="3771">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Kiyeog" value="3745">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_KiyeogSios" value="3747">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_KkogjiDalrinIeung" value="3827">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Mieum" value="3761">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_MultipleCandidate" value="65341">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Nieun" value="3748">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_NieunHieuh" value="3750">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_NieunJieuj" value="3749">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_O" value="3783">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_OE" value="3786">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_PanSios" value="3826">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Phieuf" value="3773">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Pieub" value="3762">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_PieubSios" value="3764">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_PostHanja" value="65339">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_PreHanja" value="65338">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_PreviousCandidate" value="65342">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Rieul" value="3753">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulHieuh" value="3760">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulKiyeog" value="3754">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulMieum" value="3755">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulPhieuf" value="3759">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulPieub" value="3756">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulSios" value="3757">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulTieut" value="3758">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulYeorinHieuh" value="3823">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Romaja" value="65334">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SingleCandidate" value="65340">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Sios" value="3765">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Special" value="65343">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SsangDikeud" value="3752">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SsangJieuj" value="3769">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SsangKiyeog" value="3746">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SsangPieub" value="3763">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SsangSios" value="3766">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Start" value="65330">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SunkyeongeumMieum" value="3824">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SunkyeongeumPhieuf" value="3828">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SunkyeongeumPieub" value="3825">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Tieut" value="3772">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_U" value="3788">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_WA" value="3784">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_WAE" value="3785">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_WE" value="3790">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_WEO" value="3789">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_WI" value="3791">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YA" value="3777">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YAE" value="3778">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YE" value="3782">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YEO" value="3781">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YI" value="3794">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YO" value="3787">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YU" value="3792">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YeorinHieuh" value="3829">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="Hankaku" value="65321">
+      <type name="int"/>
+    </constant>
+    <constant name="Hcircumflex" value="678">
+      <type name="int"/>
+    </constant>
+    <constant name="Hebrew_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="Help" value="65386">
+      <type name="int"/>
+    </constant>
+    <constant name="Henkan" value="65315">
+      <type name="int"/>
+    </constant>
+    <constant name="Henkan_Mode" value="65315">
+      <type name="int"/>
+    </constant>
+    <constant name="Hiragana" value="65317">
+      <type name="int"/>
+    </constant>
+    <constant name="Hiragana_Katakana" value="65319">
+      <type name="int"/>
+    </constant>
+    <constant name="Home" value="65360">
+      <type name="int"/>
+    </constant>
+    <constant name="Hstroke" value="673">
+      <type name="int"/>
+    </constant>
+    <constant name="Hyper_L" value="65517">
+      <type name="int"/>
+    </constant>
+    <constant name="Hyper_R" value="65518">
+      <type name="int"/>
+    </constant>
+    <constant name="I" value="73">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Center_Object" value="65075">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Continuous_Underline" value="65072">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Discontinuous_Underline" value="65073">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Emphasize" value="65074">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Enter" value="65076">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Down" value="65071">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Left" value="65068">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Right" value="65069">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Up" value="65070">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_First_Group" value="65036">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_First_Group_Lock" value="65037">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Group_Latch" value="65030">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Group_Lock" value="65031">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Group_Shift" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Last_Group" value="65038">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Last_Group_Lock" value="65039">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Left_Tab" value="65056">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level2_Latch" value="65026">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level3_Latch" value="65028">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level3_Lock" value="65029">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level3_Shift" value="65027">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level5_Latch" value="65042">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level5_Lock" value="65043">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level5_Shift" value="65041">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Lock" value="65025">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Move_Line_Down" value="65058">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Move_Line_Up" value="65057">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Next_Group" value="65032">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Next_Group_Lock" value="65033">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Partial_Line_Down" value="65060">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Partial_Line_Up" value="65059">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Partial_Space_Left" value="65061">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Partial_Space_Right" value="65062">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Prev_Group" value="65034">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Prev_Group_Lock" value="65035">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Release_Both_Margins" value="65067">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Release_Margin_Left" value="65065">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Release_Margin_Right" value="65066">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Set_Margin_Left" value="65063">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Set_Margin_Right" value="65064">
+      <type name="int"/>
+    </constant>
+    <constant name="Iabovedot" value="681">
+      <type name="int"/>
+    </constant>
+    <constant name="Iacute" value="205">
+      <type name="int"/>
+    </constant>
+    <constant name="Ibelowdot" value="16785098">
+      <type name="int"/>
+    </constant>
+    <constant name="Ibreve" value="16777516">
+      <type name="int"/>
+    </constant>
+    <constant name="Icircumflex" value="206">
+      <type name="int"/>
+    </constant>
+    <constant name="Idiaeresis" value="207">
+      <type name="int"/>
+    </constant>
+    <constant name="Igrave" value="204">
+      <type name="int"/>
+    </constant>
+    <constant name="Ihook" value="16785096">
+      <type name="int"/>
+    </constant>
+    <constant name="Imacron" value="975">
+      <type name="int"/>
+    </constant>
+    <enumeration name="InitError"
+                 doc="Error conditions returned by clutter_init() and clutter_init_with_args()."
+                 version="0.2"
+                 glib:type-name="ClutterInitError"
+                 glib:get-type="clutter_init_error_get_type"
+                 c:type="ClutterInitError"
+                 glib:error-quark="clutter_init_error_quark">
+      <member name="success"
+              value="1"
+              c:identifier="CLUTTER_INIT_SUCCESS"
+              glib:nick="success"/>
+      <member name="error_unknown"
+              value="0"
+              c:identifier="CLUTTER_INIT_ERROR_UNKNOWN"
+              glib:nick="error-unknown"/>
+      <member name="error_threads"
+              value="-1"
+              c:identifier="CLUTTER_INIT_ERROR_THREADS"
+              glib:nick="error-threads"/>
+      <member name="error_backend"
+              value="-2"
+              c:identifier="CLUTTER_INIT_ERROR_BACKEND"
+              glib:nick="error-backend"/>
+      <member name="error_internal"
+              value="-3"
+              c:identifier="CLUTTER_INIT_ERROR_INTERNAL"
+              glib:nick="error-internal"/>
+    </enumeration>
+    <class name="InputDevice"
+           c:type="ClutterInputDevice"
+           doc="Generic representation of an input device. The actual contents of this
+structure depend on the backend used."
+           parent="GObject.Object"
+           glib:type-name="ClutterInputDevice"
+           glib:get-type="clutter_input_device_get_type"
+           glib:type-struct="InputDeviceClass">
+      <method name="get_device_type"
+              c:identifier="clutter_input_device_get_device_type"
+              doc="Retrieves the type of @device"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+        </return-value>
+      </method>
+      <method name="get_device_id"
+              c:identifier="clutter_input_device_get_device_id"
+              doc="Retrieves the unique identifier of @device"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_device_coords"
+              c:identifier="clutter_input_device_get_device_coords"
+              doc="Retrieves the latest coordinates of the pointer of @device"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the X coordinate">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the Y coordinate">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pointer_actor"
+              c:identifier="clutter_input_device_get_pointer_actor"
+              doc="Retrieves the #ClutterActor underneath the pointer of @device"
+              version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="a pointer to the #ClutterActor or %NULL">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_pointer_stage"
+              c:identifier="clutter_input_device_get_pointer_stage"
+              doc="Retrieves the #ClutterStage underneath the pointer of @device"
+              version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="a pointer to the #ClutterStage or %NULL">
+          <type name="Stage" c:type="ClutterStage*"/>
+        </return-value>
+      </method>
+      <method name="get_device_name"
+              c:identifier="clutter_input_device_get_device_name"
+              doc="Retrieves the name of the @device
+is owned by the #ClutterInputDevice and should never be modified
+or freed"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="update_from_event"
+              c:identifier="clutter_input_device_update_from_event"
+              doc="Forcibly updates the state of the @device using a #ClutterEvent
+for integration with embedding toolkits, like clutter-gtk
+Embedding toolkits that disable the event collection inside Clutter
+need to use this function to update the state of input devices depending
+on a #ClutterEvent that they are going to submit to the event handling code
+in Clutter though clutter_do_event(). Since the input devices hold the state
+that is going to be used to fill in fields like the #ClutterButtonEvent
+click count, or to emit synthesized events like %CLUTTER_ENTER and
+%CLUTTER_LEAVE, it is necessary for embedding toolkits to also be
+responsible of updating the input device state.
+For instance, this might be the code to translate an embedding toolkit
+native motion notification into a Clutter #ClutterMotionEvent and ask
+Clutter to process it:
+|[
+ClutterEvent c_event;
+translate_native_event_to_clutter (native_event, &amp;amp;c_event);
+clutter_do_event (&amp;amp;c_event);
+]|
+Before letting clutter_do_event() process the event, it is necessary to call
+clutter_input_device_update_from_event():
+|[
+ClutterEvent c_event;
+ClutterDeviceManager *manager;
+ClutterInputDevice *device;
+translate_native_event_to_clutter (native_event, &amp;amp;c_event);
+/&amp;ast; get the device manager &amp;ast;/
+manager = clutter_device_manager_get_default ();
+/&amp;ast; use the default Core Pointer that Clutter
+&amp;ast; backends register by default
+&amp;ast;/
+device = clutter_device_manager_get_core_device (manager, %CLUTTER_POINTER_DEVICE);
+/&amp;ast; update the state of the input device &amp;ast;/
+clutter_input_device_update_from_event (device, &amp;amp;c_event, FALSE);
+clutter_do_event (&amp;amp;c_event);
+]|
+The @update_stage boolean argument should be used when the input device
+enters and leaves a #ClutterStage; it will use the #ClutterStage field
+of the passed @event to update the stage associated to the input device."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+          <parameter name="update_stage"
+                     transfer-ownership="none"
+                     doc=" using the stage of the event">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="device-type"
+                version="1.2"
+                writable="1"
+                construct-only="1"
+                doc="The type of the device">
+        <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+      </property>
+      <property name="id"
+                version="1.2"
+                writable="1"
+                construct-only="1"
+                doc="The unique identifier of the device">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="name"
+                version="1.2"
+                writable="1"
+                construct-only="1"
+                doc="The name of the device">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+    </class>
+    <record name="InputDeviceClass"
+            c:type="ClutterInputDeviceClass"
+            glib:is-gtype-struct-for="InputDevice"
+            doc="The #ClutterInputDeviceClass structure contains only private
+data and should not be accessed directly"
+            version="1.2">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <enumeration name="InputDeviceType"
+                 doc="The types of input devices available.
+The #ClutterInputDeviceType enumeration can be extended at later
+date; not every platform supports every input device type."
+                 version="1.0"
+                 glib:type-name="ClutterInputDeviceType"
+                 glib:get-type="clutter_input_device_type_get_type"
+                 c:type="ClutterInputDeviceType">
+      <member name="pointer_device"
+              value="0"
+              c:identifier="CLUTTER_POINTER_DEVICE"
+              glib:nick="pointer-device"/>
+      <member name="keyboard_device"
+              value="1"
+              c:identifier="CLUTTER_KEYBOARD_DEVICE"
+              glib:nick="keyboard-device"/>
+      <member name="extension_device"
+              value="2"
+              c:identifier="CLUTTER_EXTENSION_DEVICE"
+              glib:nick="extension-device"/>
+      <member name="n_device_types"
+              value="3"
+              c:identifier="CLUTTER_N_DEVICE_TYPES"
+              glib:nick="n-device-types"/>
+    </enumeration>
+    <constant name="Insert" value="65379">
+      <type name="int"/>
+    </constant>
+    <enumeration name="Interpolation"
+                 doc="The mode of interpolation between key frames"
+                 version="1.2"
+                 glib:type-name="ClutterInterpolation"
+                 glib:get-type="clutter_interpolation_get_type"
+                 c:type="ClutterInterpolation">
+      <member name="linear"
+              value="0"
+              c:identifier="CLUTTER_INTERPOLATION_LINEAR"
+              glib:nick="linear"/>
+      <member name="cubic"
+              value="1"
+              c:identifier="CLUTTER_INTERPOLATION_CUBIC"
+              glib:nick="cubic"/>
+    </enumeration>
+    <class name="Interval"
+           c:type="ClutterInterval"
+           doc="The #ClutterInterval structure contains only private data and should
+be accessed using the provided functions."
+           version="1.0"
+           parent="GObject.InitiallyUnowned"
+           glib:type-name="ClutterInterval"
+           glib:get-type="clutter_interval_get_type"
+           glib:type-struct="IntervalClass">
+      <constructor name="new"
+                   c:identifier="clutter_interval_new"
+                   doc="Creates a new #ClutterInterval holding values of type @gtype.
+This function avoids using a #GValue for the initial and final values
+of the interval:
+|[
+interval = clutter_interval_new (G_TYPE_FLOAT, 0.0, 1.0);
+interval = clutter_interval_new (G_TYPE_BOOLEAN, FALSE, TRUE);
+interval = clutter_interval_new (G_TYPE_INT, 0, 360);
+]|"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Interval" c:type="ClutterInterval*"/>
+        </return-value>
+        <parameters>
+          <parameter name="gtype" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_values"
+                   c:identifier="clutter_interval_new_with_values"
+                   doc="Creates a new #ClutterInterval of type @gtype, between @initial
+and @final.
+This function is useful for language bindings."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Interval" c:type="ClutterInterval*"/>
+        </return-value>
+        <parameters>
+          <parameter name="gtype" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="initial" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="final" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="register_progress_func"
+                c:identifier="clutter_interval_register_progress_func"
+                doc="Sets the progress function for a given @value_type, like:
+|[
+clutter_interval_register_progress_func (MY_TYPE_FOO,
+my_foo_progress);
+]|
+Whenever a #ClutterInterval instance using the default
+#ClutterInterval::compute_value implementation is set as an
+interval between two #GValue of type @value_type, it will call
+for instance:
+|[
+static gboolean
+my_int_progress (const GValue *a,
+const GValue *b,
+gdouble       progress,
+GValue       *retval)
+{
+gint ia = g_value_get_int (a);
+gint ib = g_value_get_int (b);
+gint res = factor * (ib - ia) + ia;
+g_value_set_int (retval, res);
+return TRUE;
+}
+clutter_interval_register_progress_func (G_TYPE_INT, my_int_progress);
+]|
+To unset a previously set progress function of a #GType, pass %NULL
+for @func."
+                version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     doc=" set progress function">
+            <type name="ProgressFunc" c:type="ClutterProgressFunc"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="validate" invoker="validate">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="compute_value" invoker="compute_value">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="clone"
+              c:identifier="clutter_interval_clone"
+              doc="Creates a copy of @interval."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Interval" c:type="ClutterInterval*"/>
+        </return-value>
+      </method>
+      <method name="get_value_type"
+              c:identifier="clutter_interval_get_value_type"
+              doc="Retrieves the #GType of the values inside @interval."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="set_initial_value"
+              c:identifier="clutter_interval_set_initial_value"
+              doc="Sets the initial value of @interval to @value. The value is copied
+inside the #ClutterInterval."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_initial_value"
+              c:identifier="clutter_interval_get_initial_value"
+              doc="Retrieves the initial value of @interval and copies
+it into @value.
+The passed #GValue must be initialized to the value held by
+the #ClutterInterval."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_initial_value"
+              c:identifier="clutter_interval_peek_initial_value"
+              doc="Gets the pointer to the initial value of @interval
+The value is owned by the #ClutterInterval and it should not be
+modified or freed"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the initial value of the interval.">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+      </method>
+      <method name="set_final_value"
+              c:identifier="clutter_interval_set_final_value"
+              doc="Sets the final value of @interval to @value. The value is
+copied inside the #ClutterInterval."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_final_value"
+              c:identifier="clutter_interval_get_final_value"
+              doc="Retrieves the final value of @interval and copies
+it into @value.
+The passed #GValue must be initialized to the value held by
+the #ClutterInterval."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_final_value"
+              c:identifier="clutter_interval_peek_final_value"
+              doc="Gets the pointer to the final value of @interval
+The value is owned by the #ClutterInterval and it should not be
+modified or freed"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the final value of the interval.">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+      </method>
+      <method name="set_interval"
+              c:identifier="clutter_interval_set_interval"
+              doc="Variable arguments wrapper for clutter_interval_set_initial_value()
+and clutter_interval_set_final_value() that avoids using the
+#GValue arguments:
+|[
+clutter_interval_set_interval (interval, 0, 50);
+clutter_interval_set_interval (interval, 1.0, 0.0);
+clutter_interval_set_interval (interval, FALSE, TRUE);
+]|
+This function is meant for the convenience of the C API; bindings
+should reimplement this function using the #GValue-based API."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_interval"
+              c:identifier="clutter_interval_get_interval"
+              doc="Variable arguments wrapper for clutter_interval_get_initial_value()
+and clutter_interval_get_final_value() that avoids using the
+#GValue arguments:
+|[
+gint a = 0, b = 0;
+clutter_interval_get_interval (interval, &amp;a, &amp;b);
+]|
+This function is meant for the convenience of the C API; bindings
+should reimplement this function using the #GValue-based API."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="validate"
+              c:identifier="clutter_interval_validate"
+              doc="Validates the initial and final values of @interval against
+a #GParamSpec."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="compute_value"
+              c:identifier="clutter_interval_compute_value"
+              doc="Computes the value between the @interval boundaries given the
+progress @factor and puts it into @value."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="value-type"
+                version="1.0"
+                writable="1"
+                construct-only="1"
+                doc="The type of the values in the interval.">
+        <type name="GType" c:type="GType"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="priv">
+        <type name="IntervalPrivate" c:type="ClutterIntervalPrivate*"/>
+      </field>
+    </class>
+    <record name="IntervalClass"
+            c:type="ClutterIntervalClass"
+            glib:is-gtype-struct-for="Interval"
+            doc="The #ClutterIntervalClass contains only private data."
+            version="1.0">
+      <field name="parent_class">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="validate">
+        <callback name="validate" c:type="validate">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="interval" transfer-ownership="none">
+              <type name="Interval" c:type="ClutterInterval*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="compute_value">
+        <callback name="compute_value" c:type="compute_value">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="interval" transfer-ownership="none">
+              <type name="Interval" c:type="ClutterInterval*"/>
+            </parameter>
+            <parameter name="factor" transfer-ownership="none">
+              <type name="double" c:type="gdouble"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_reserved1">
+        <callback name="clutter_reserved1" c:type="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved2">
+        <callback name="clutter_reserved2" c:type="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved3">
+        <callback name="clutter_reserved3" c:type="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved4">
+        <callback name="clutter_reserved4" c:type="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved5">
+        <callback name="clutter_reserved5" c:type="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved6">
+        <callback name="clutter_reserved6" c:type="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="IntervalPrivate" c:type="ClutterIntervalPrivate">
+    </record>
+    <constant name="Iogonek" value="967">
+      <type name="int"/>
+    </constant>
+    <constant name="Itilde" value="933">
+      <type name="int"/>
+    </constant>
+    <constant name="J" value="74">
+      <type name="int"/>
+    </constant>
+    <constant name="Jcircumflex" value="684">
+      <type name="int"/>
+    </constant>
+    <constant name="K" value="75">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_0" value="65456">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_1" value="65457">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_2" value="65458">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_3" value="65459">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_4" value="65460">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_5" value="65461">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_6" value="65462">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_7" value="65463">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_8" value="65464">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_9" value="65465">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Add" value="65451">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Begin" value="65437">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Decimal" value="65454">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Delete" value="65439">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Divide" value="65455">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Down" value="65433">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_End" value="65436">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Enter" value="65421">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Equal" value="65469">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_F1" value="65425">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_F2" value="65426">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_F3" value="65427">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_F4" value="65428">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Home" value="65429">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Insert" value="65438">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Left" value="65430">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Multiply" value="65450">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Next" value="65435">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Page_Down" value="65435">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Page_Up" value="65434">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Prior" value="65434">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Right" value="65432">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Separator" value="65452">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Space" value="65408">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Subtract" value="65453">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Tab" value="65417">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Up" value="65431">
+      <type name="int"/>
+    </constant>
+    <constant name="Kana_Lock" value="65325">
+      <type name="int"/>
+    </constant>
+    <constant name="Kana_Shift" value="65326">
+      <type name="int"/>
+    </constant>
+    <constant name="Kanji" value="65313">
+      <type name="int"/>
+    </constant>
+    <constant name="Kanji_Bangou" value="65335">
+      <type name="int"/>
+    </constant>
+    <constant name="Katakana" value="65318">
+      <type name="int"/>
+    </constant>
+    <constant name="Kcedilla" value="979">
+      <type name="int"/>
+    </constant>
+    <record name="KeyEvent"
+            c:type="ClutterKeyEvent"
+            doc="Key event"
+            version="0.2">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="modifier_state" writable="1">
+        <type name="ModifierType" c:type="ClutterModifierType"/>
+      </field>
+      <field name="keyval" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="hardware_keycode" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="unicode_value" writable="1">
+        <type name="GLib.unichar" c:type="gunichar"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+    </record>
+    <record name="Knot"
+            c:type="ClutterKnot"
+            doc="Point in a path behaviour."
+            version="0.2"
+            glib:type-name="ClutterKnot"
+            glib:get-type="clutter_knot_get_type">
+      <field name="x" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <method name="copy"
+              c:identifier="clutter_knot_copy"
+              doc="Makes an allocated copy of a knot."
+              version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="Knot" c:type="ClutterKnot*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="clutter_knot_free"
+              doc="Frees the memory of an allocated knot."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="equal"
+              c:identifier="clutter_knot_equal"
+              doc="Compares to knot and checks if the point to the same location."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="knot_b" transfer-ownership="none">
+            <type name="Knot" c:type="ClutterKnot*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="Korean_Won" value="3839">
+      <type name="int"/>
+    </constant>
+    <constant name="L" value="76">
+      <type name="int"/>
+    </constant>
+    <constant name="L1" value="65480">
+      <type name="int"/>
+    </constant>
+    <constant name="L10" value="65489">
+      <type name="int"/>
+    </constant>
+    <constant name="L2" value="65481">
+      <type name="int"/>
+    </constant>
+    <constant name="L3" value="65482">
+      <type name="int"/>
+    </constant>
+    <constant name="L4" value="65483">
+      <type name="int"/>
+    </constant>
+    <constant name="L5" value="65484">
+      <type name="int"/>
+    </constant>
+    <constant name="L6" value="65485">
+      <type name="int"/>
+    </constant>
+    <constant name="L7" value="65486">
+      <type name="int"/>
+    </constant>
+    <constant name="L8" value="65487">
+      <type name="int"/>
+    </constant>
+    <constant name="L9" value="65488">
+      <type name="int"/>
+    </constant>
+    <constant name="Lacute" value="453">
+      <type name="int"/>
+    </constant>
+    <constant name="Last_Virtual_Screen" value="65236">
+      <type name="int"/>
+    </constant>
+    <class name="LayoutManager"
+           c:type="ClutterLayoutManager"
+           doc="The #ClutterLayoutManager structure contains only private data
+and should be accessed using the provided API"
+           version="1.2"
+           parent="GObject.InitiallyUnowned"
+           abstract="1"
+           glib:type-name="ClutterLayoutManager"
+           glib:get-type="clutter_layout_manager_get_type"
+           glib:type-struct="LayoutManagerClass">
+      <virtual-method name="get_preferred_width">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="for_height" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="minimum_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_preferred_height">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="for_width" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="minimum_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="allocate" invoker="allocate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="allocation" transfer-ownership="none">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_container" invoker="set_container">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_child_meta_type">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="create_child_meta">
+        <return-value transfer-ownership="full">
+          <type name="LayoutMeta" c:type="ClutterLayoutMeta*"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="begin_animation" invoker="begin_animation">
+        <return-value transfer-ownership="full">
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+        <parameters>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_animation_progress"
+                      invoker="get_animation_progress">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="end_animation" invoker="end_animation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_preferred_width"
+              c:identifier="clutter_layout_manager_get_preferred_width"
+              doc="Computes the minimum and natural widths of the @container according
+to @manager.
+See also clutter_actor_get_preferred_width()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="for_height" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the minimum width of the layout, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="nat_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the natural width of the layout, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preferred_height"
+              c:identifier="clutter_layout_manager_get_preferred_height"
+              doc="Computes the minimum and natural heights of the @container according
+to @manager.
+See also clutter_actor_get_preferred_height()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="for_width" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the minimum height of the layout, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="nat_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the natural height of the layout, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="allocate"
+              c:identifier="clutter_layout_manager_allocate"
+              doc="Allocates the children of @container given an area
+See also clutter_actor_allocate()"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="allocation"
+                     transfer-ownership="none"
+                     doc=" of @container">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_container"
+              c:identifier="clutter_layout_manager_set_container"
+              doc="If the #ClutterLayoutManager sub-class allows it, allow
+adding a weak reference of the @container using @manager
+from within the layout manager
+The layout manager should not increase the reference
+count of the @container"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #ClutterContainer using @manager">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="layout_changed"
+              c:identifier="clutter_layout_manager_layout_changed"
+              doc="Emits the #ClutterLayoutManager::layout-changed signal on @manager
+This function should only be called by implementations of the
+#ClutterLayoutManager class"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="find_child_property"
+              c:identifier="clutter_layout_manager_find_child_property"
+              doc="Retrieves the #GParamSpec for the layout property @name inside
+the #ClutterLayoutMeta sub-class used by @manager
+or %NULL if no property with that name exists. The returned
+#GParamSpec is owned by the layout manager and should not be
+modified or freed"
+              version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="a #GParamSpec describing the property,">
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_child_properties"
+              c:identifier="clutter_layout_manager_list_child_properties"
+              doc="Retrieves all the #GParamSpec&lt;!-- --&gt;s for the layout properties
+stored inside the #ClutterLayoutMeta sub-class used by @manager
+array of #GParamSpec&lt;!-- --&gt;s. Use g_free() to free the resources
+allocated for the array"
+              version="1.2">
+        <return-value transfer-ownership="full"
+                      doc="the newly-allocated, %NULL-terminated">
+          <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_pspecs"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the number of returned #GParamSpec&lt;!-- --&gt;s">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_meta"
+              c:identifier="clutter_layout_manager_get_child_meta"
+              doc="Retrieves the #ClutterLayoutMeta that the layout @manager associated
+to the @actor child of @container, eventually by creating one if the
+#ClutterLayoutManager supports layout properties
+does not have layout properties"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="LayoutMeta" c:type="ClutterLayoutMeta*"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set"
+              c:identifier="clutter_layout_manager_child_set"
+              doc="Sets a list of properties and their values on the #ClutterLayoutMeta
+associated by @manager to a child of @container
+Languages bindings should use clutter_layout_manager_child_set_property()
+instead"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get"
+              c:identifier="clutter_layout_manager_child_get"
+              doc="Retrieves the values for a list of properties out of the
+#ClutterLayoutMeta created by @manager and attached to the
+child of a @container"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set_property"
+              c:identifier="clutter_layout_manager_child_set_property"
+              doc="Sets a property on the #ClutterLayoutMeta created by @manager and
+attached to a child of @container"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get_property"
+              c:identifier="clutter_layout_manager_child_get_property"
+              doc="Gets a property on the #ClutterLayoutMeta created by @manager and
+attached to a child of @container
+The #GValue must already be initialized to the type of the property
+and has to be unset with g_value_unset() after extracting the real
+value out of it"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_animation"
+              c:identifier="clutter_layout_manager_begin_animation"
+              doc="Begins an animation of @duration milliseconds, using the provided
+easing @mode
+The easing mode can be specified either as a #ClutterAnimationMode
+or as a logical id returned by clutter_alpha_register_func()
+The result of this function depends on the @manager implementation
+layout manager; the returned instance is owned by the layout
+manager and should not be unreferenced"
+              version="1.2">
+        <return-value transfer-ownership="none"
+                      doc="The #ClutterAlpha created by the">
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+        <parameters>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="end_animation"
+              c:identifier="clutter_layout_manager_end_animation"
+              doc="Ends an animation started by clutter_layout_manager_begin_animation()
+The result of this call depends on the @manager implementation"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_animation_progress"
+              c:identifier="clutter_layout_manager_get_animation_progress"
+              doc="Retrieves the progress of the animation, if one has been started by
+clutter_layout_manager_begin_animation()
+The returned value has the same semantics of the #ClutterAlpha:alpha
+value"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="dummy">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <glib:signal name="layout-changed"
+                   doc="The ::layout-changed signal is emitted each time a layout manager
+has been changed. Every #ClutterActor using the @manager instance
+as a layout manager should connect a handler to the ::layout-changed
+signal and queue a relayout on themselves:
+|[
+static void layout_changed (ClutterLayoutManager *manager,
+ClutterActor         *self)
+{
+clutter_actor_queue_relayout (self);
+}
+...
+self-&gt;manager = g_object_ref_sink (manager);
+g_signal_connect (self-&gt;manager, &quot;layout-changed&quot;,
+G_CALLBACK (layout_changed),
+self);
+]|
+Sub-classes of #ClutterLayoutManager that implement a layout that
+can be controlled or changed using parameters should emit the
+::layout-changed signal whenever one of the parameters changes,
+by using clutter_layout_manager_layout_changed()."
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="LayoutManagerClass"
+            c:type="ClutterLayoutManagerClass"
+            glib:is-gtype-struct-for="LayoutManager"
+            doc="The #ClutterLayoutManagerClass structure contains only private
+data and should be accessed using the provided API"
+            version="1.2">
+      <field name="parent_class">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="get_preferred_width">
+        <callback name="get_preferred_width" c:type="get_preferred_width">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="for_height" transfer-ownership="none">
+              <type name="float" c:type="gfloat"/>
+            </parameter>
+            <parameter name="minimum_width_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <type name="float" c:type="gfloat*"/>
+            </parameter>
+            <parameter name="natural_width_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <type name="float" c:type="gfloat*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_preferred_height">
+        <callback name="get_preferred_height" c:type="get_preferred_height">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="for_width" transfer-ownership="none">
+              <type name="float" c:type="gfloat"/>
+            </parameter>
+            <parameter name="minimum_height_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <type name="float" c:type="gfloat*"/>
+            </parameter>
+            <parameter name="natural_height_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <type name="float" c:type="gfloat*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="allocate">
+        <callback name="allocate" c:type="allocate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="allocation" transfer-ownership="none">
+              <type name="ActorBox" c:type="ClutterActorBox*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_container">
+        <callback name="set_container" c:type="set_container">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_child_meta_type">
+        <callback name="get_child_meta_type" c:type="get_child_meta_type">
+          <return-value transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_child_meta">
+        <callback name="create_child_meta" c:type="create_child_meta">
+          <return-value transfer-ownership="full">
+            <type name="LayoutMeta" c:type="ClutterLayoutMeta*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="begin_animation">
+        <callback name="begin_animation" c:type="begin_animation">
+          <return-value transfer-ownership="full">
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="duration" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="mode" transfer-ownership="none">
+              <type name="ulong" c:type="gulong"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_animation_progress">
+        <callback name="get_animation_progress"
+                  c:type="get_animation_progress">
+          <return-value transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="end_animation">
+        <callback name="end_animation" c:type="end_animation">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="layout_changed">
+        <callback name="layout_changed" c:type="layout_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_padding_1">
+        <callback name="clutter_padding_1" c:type="_clutter_padding_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_2">
+        <callback name="clutter_padding_2" c:type="_clutter_padding_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_3">
+        <callback name="clutter_padding_3" c:type="_clutter_padding_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_4">
+        <callback name="clutter_padding_4" c:type="_clutter_padding_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_5">
+        <callback name="clutter_padding_5" c:type="_clutter_padding_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_6">
+        <callback name="clutter_padding_6" c:type="_clutter_padding_6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_7">
+        <callback name="clutter_padding_7" c:type="_clutter_padding_7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_8">
+        <callback name="clutter_padding_8" c:type="_clutter_padding_8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="LayoutMeta"
+           c:type="ClutterLayoutMeta"
+           parent="ChildMeta"
+           abstract="1"
+           glib:type-name="ClutterLayoutMeta"
+           glib:get-type="clutter_layout_meta_get_type"
+           glib:type-struct="LayoutMetaClass">
+      <method name="get_manager"
+              c:identifier="clutter_layout_meta_get_manager"
+              doc="Retrieves the actor wrapped by @data"
+              version="1.2">
+        <return-value transfer-ownership="none" doc="a #ClutterLayoutManager">
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </method>
+      <property name="manager"
+                version="1.2"
+                writable="1"
+                construct-only="1"
+                doc="The #ClutterLayoutManager that created this #ClutterLayoutMeta.">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </property>
+      <field name="parent_instance">
+        <type name="ChildMeta" c:type="ClutterChildMeta"/>
+      </field>
+      <field name="manager">
+        <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+      </field>
+      <field name="dummy0">
+        <type name="int32" c:type="gint32"/>
+      </field>
+      <field name="dummy1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </class>
+    <record name="LayoutMetaClass"
+            c:type="ClutterLayoutMetaClass"
+            glib:is-gtype-struct-for="LayoutMeta"
+            doc="The #ClutterLayoutMetaClass contains only private data and
+should never be accessed directly"
+            version="1.2">
+      <field name="parent_class">
+        <type name="ChildMetaClass" c:type="ClutterChildMetaClass"/>
+      </field>
+      <field name="clutter_padding1">
+        <callback name="clutter_padding1" c:type="_clutter_padding1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding2">
+        <callback name="clutter_padding2" c:type="_clutter_padding2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding3">
+        <callback name="clutter_padding3" c:type="_clutter_padding3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding4">
+        <callback name="clutter_padding4" c:type="_clutter_padding4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <constant name="Lbelowdot" value="16784950">
+      <type name="int"/>
+    </constant>
+    <constant name="Lcaron" value="421">
+      <type name="int"/>
+    </constant>
+    <constant name="Lcedilla" value="934">
+      <type name="int"/>
+    </constant>
+    <constant name="Left" value="65361">
+      <type name="int"/>
+    </constant>
+    <constant name="Linefeed" value="65290">
+      <type name="int"/>
+    </constant>
+    <constant name="LiraSign" value="16785572">
+      <type name="int"/>
+    </constant>
+    <class name="ListModel"
+           c:type="ClutterListModel"
+           doc="The #ClutterListModel struct contains only private data."
+           version="0.6"
+           parent="Model"
+           glib:type-name="ClutterListModel"
+           glib:get-type="clutter_list_model_get_type"
+           glib:type-struct="ListModelClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_list_model_new"
+                   doc="Creates a new default model with @n_columns columns with the types
+and names passed in.
+For example:
+&lt;informalexample&gt;&lt;programlisting&gt;
+model = clutter_list_model_new (3,
+G_TYPE_INT,      &quot;Score&quot;,
+G_TYPE_STRING,   &quot;Team&quot;,
+GDK_TYPE_PIXBUF, &quot;Logo&quot;);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+will create a new #ClutterModel with three columns of type int,
+string and #GdkPixbuf respectively.
+Note that the name of the column can be set to %NULL, in which case
+the canonical name of the type held by the column will be used as
+the title."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="ListModel" c:type="ClutterModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="newv"
+                   c:identifier="clutter_list_model_newv"
+                   doc="Non-vararg version of clutter_list_model_new(). This function is
+useful for language bindings."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="ListModel" c:type="ClutterModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="types"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="GType" c:type="GType*"/>
+          </parameter>
+          <parameter name="names" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="parent_instance">
+        <type name="Model" c:type="ClutterModel"/>
+      </field>
+      <field name="priv">
+        <type name="ListModelPrivate" c:type="ClutterListModelPrivate*"/>
+      </field>
+    </class>
+    <record name="ListModelClass"
+            c:type="ClutterListModelClass"
+            glib:is-gtype-struct-for="ListModel"
+            doc="The #ClutterListModelClass struct contains only private data."
+            version="0.6">
+      <field name="parent_class">
+        <type name="ModelClass" c:type="ClutterModelClass"/>
+      </field>
+    </record>
+    <record name="ListModelPrivate" c:type="ClutterListModelPrivate">
+    </record>
+    <constant name="Lstroke" value="419">
+      <type name="int"/>
+    </constant>
+    <constant name="M" value="77">
+      <type name="int"/>
+    </constant>
+    <constant name="MAJOR_VERSION" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="MICRO_VERSION" value="10">
+      <type name="int"/>
+    </constant>
+    <constant name="MINOR_VERSION" value="2">
+      <type name="int"/>
+    </constant>
+    <constant name="Mabovedot" value="16784960">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_DSE" value="1717">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_GJE" value="1714">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_KJE" value="1724">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_dse" value="1701">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_gje" value="1698">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_kje" value="1708">
+      <type name="int"/>
+    </constant>
+    <constant name="Mae_Koho" value="65342">
+      <type name="int"/>
+    </constant>
+    <constant name="Massyo" value="65324">
+      <type name="int"/>
+    </constant>
+    <interface name="Media"
+               c:type="ClutterMedia"
+               doc="#ClutterMedia is an opaque structure whose members cannot be directly
+accessed"
+               version="0.2"
+               glib:type-name="ClutterMedia"
+               glib:get-type="clutter_media_get_type"
+               glib:type-struct="MediaIface">
+      <method name="set_uri"
+              c:identifier="clutter_media_set_uri"
+              doc="Sets the URI of @media to @uri."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uri"
+              c:identifier="clutter_media_get_uri"
+              doc="Retrieves the URI from @media.
+to free the returned string"
+              version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_filename"
+              c:identifier="clutter_media_set_filename"
+              doc="Sets the source of @media using a file path."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_playing"
+              c:identifier="clutter_media_set_playing"
+              doc="Starts or stops playing of @media."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="playing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_playing"
+              c:identifier="clutter_media_get_playing"
+              doc="Retrieves the playing status of @media."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_progress"
+              c:identifier="clutter_media_set_progress"
+              doc="Sets the playback progress of @media. The @progress is
+a normalized value between 0.0 (begin) and 1.0 (end)."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="progress" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_progress"
+              c:identifier="clutter_media_get_progress"
+              doc="Retrieves the playback progress of @media."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_subtitle_uri"
+              c:identifier="clutter_media_set_subtitle_uri"
+              doc="Sets the location of a subtitle file to display while playing @media."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_subtitle_uri"
+              c:identifier="clutter_media_get_subtitle_uri"
+              doc="Retrieves the URI of the subtitle file in use.
+to free the returned string"
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_subtitle_font_name"
+              c:identifier="clutter_media_set_subtitle_font_name"
+              doc="Sets the font used by the subtitle renderer. The @font_name string must be
+either %NULL, which means that the default font name of the underlying
+implementation will be used; or must follow the grammar recognized by
+pango_font_description_from_string() like:
+|[
+clutter_media_set_subtitle_font_name (media, &quot;Sans 24pt&quot;);
+]|"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_subtitle_font_name"
+              c:identifier="clutter_media_get_subtitle_font_name"
+              doc="Retrieves the font name currently used.
+to free the returned string"
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_audio_volume"
+              c:identifier="clutter_media_set_audio_volume"
+              doc="Sets the playback volume of @media to @volume."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="volume" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_audio_volume"
+              c:identifier="clutter_media_get_audio_volume"
+              doc="Retrieves the playback volume of @media."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_can_seek"
+              c:identifier="clutter_media_get_can_seek"
+              doc="Retrieves whether @media is seekable or not."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_buffer_fill"
+              c:identifier="clutter_media_get_buffer_fill"
+              doc="Retrieves the amount of the stream that is buffered."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_media_get_duration"
+              doc="Retrieves the duration of the media stream that @media represents."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <property name="audio-volume"
+                version="1.0"
+                writable="1"
+                doc="The volume of the audio, as a normalized value between
+0.0 and 1.0.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="buffer-fill"
+                version="1.0"
+                doc="The fill level of the buffer for the current stream,
+as a value between 0.0 and 1.0.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="can-seek"
+                version="0.2"
+                doc="Whether the current stream is seekable.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="duration"
+                version="0.2"
+                doc="The duration of the current stream, in seconds">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="playing"
+                version="0.2"
+                writable="1"
+                doc="Whether the #ClutterMedia actor is playing.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="progress"
+                version="1.0"
+                writable="1"
+                doc="The current progress of the playback, as a normalized
+value between 0.0 and 1.0.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="subtitle-font-name"
+                version="1.2"
+                writable="1"
+                doc="The font used to display subtitles. The font description has to
+follow the same grammar as the one recognized by
+pango_font_description_from_string().">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="subtitle-uri"
+                version="1.2"
+                writable="1"
+                doc="The location of a subtitle file, expressed as a valid URI.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="uri"
+                version="0.2"
+                writable="1"
+                doc="The location of a media file, expressed as a valid URI.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <glib:signal name="eos"
+                   doc="The ::eos signal is emitted each time the media stream ends."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="error"
+                   doc="The ::error signal is emitted each time an error occurred."
+                   version="0.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="MediaIface"
+            c:type="ClutterMediaIface"
+            glib:is-gtype-struct-for="Media"
+            doc="Interface vtable for #ClutterMedia implementations"
+            version="0.2">
+      <field name="base_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="eos">
+        <callback name="eos" c:type="eos">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="media" transfer-ownership="none">
+              <type name="Media" c:type="ClutterMedia*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="error">
+        <callback name="error" c:type="error">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="media" transfer-ownership="none">
+              <type name="Media" c:type="ClutterMedia*"/>
+            </parameter>
+            <parameter name="error" transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <constant name="Menu" value="65383">
+      <type name="int"/>
+    </constant>
+    <constant name="Meta_L" value="65511">
+      <type name="int"/>
+    </constant>
+    <constant name="Meta_R" value="65512">
+      <type name="int"/>
+    </constant>
+    <constant name="MillSign" value="16785573">
+      <type name="int"/>
+    </constant>
+    <constant name="Mode_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <class name="Model"
+           c:type="ClutterModel"
+           doc="Base class for list models. The #ClutterModel structure contains
+only private data and should be manipulated using the provided
+API."
+           version="0.6"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterModel"
+           glib:get-type="clutter_model_get_type"
+           glib:type-struct="ModelClass">
+      <implements name="Scriptable"/>
+      <virtual-method name="get_n_rows" invoker="get_n_rows">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_n_columns" invoker="get_n_columns">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_column_name" invoker="get_column_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_column_type" invoker="get_column_type">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="insert_row">
+        <return-value transfer-ownership="full">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_row">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_iter_at_row" invoker="get_iter_at_row">
+        <return-value transfer-ownership="full">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="resort">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none">
+            <type name="ModelSortFunc" c:type="ClutterModelSortFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_types"
+              c:identifier="clutter_model_set_types"
+              doc="Sets the types of the columns inside a #ClutterModel.
+This function is meant primarily for #GObjects that inherit from
+#ClutterModel, and should only be used when contructing a #ClutterModel.
+It will not work after the initial creation of the #ClutterModel."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="types"
+                     transfer-ownership="none"
+                     doc="an array of #GType types">
+            <array length="1" c:type="GType*">
+              <type name="GType"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_names"
+              c:identifier="clutter_model_set_names"
+              doc="Assigns a name to the columns of a #ClutterModel.
+This function is meant primarily for #GObjects that inherit from
+#ClutterModel, and should only be used when contructing a #ClutterModel.
+It will not work after the initial creation of the #ClutterModel."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="names"
+                     transfer-ownership="none"
+                     doc="an array of strings">
+            <array length="1" c:type="gchar*">
+              <type name="int8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append"
+              c:identifier="clutter_model_append"
+              doc="Creates and appends a new row to the #ClutterModel, setting the
+row values upon creation. For example, to append a new row where
+column 0 is type %G_TYPE_INT and column 1 is of type %G_TYPE_STRING:
+&lt;informalexample&gt;&lt;programlisting&gt;
+ClutterModel *model;
+model = clutter_model_default_new (2,
+G_TYPE_INT,    &quot;Score&quot;,
+G_TYPE_STRING, &quot;Team&quot;);
+clutter_model_append (model, 0, 42, 1, &quot;Team #1&quot;, -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="appendv"
+              c:identifier="clutter_model_appendv"
+              doc="Creates and appends a new row to the #ClutterModel, setting the row
+values for the given @columns upon creation."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="columns"
+                     transfer-ownership="none"
+                     doc="a vector with the columns to set">
+            <array length="1" c:type="guint*">
+              <type name="uint"/>
+            </array>
+          </parameter>
+          <parameter name="values"
+                     transfer-ownership="none"
+                     doc="a vector with the values">
+            <array length="1" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend"
+              c:identifier="clutter_model_prepend"
+              doc="Creates and prepends a new row to the #ClutterModel, setting the row
+values upon creation. For example, to prepend a new row where column 0
+is type %G_TYPE_INT and column 1 is of type %G_TYPE_STRING:
+&lt;informalexample&gt;&lt;programlisting&gt;
+ClutterModel *model;
+model = clutter_model_default_new (2,
+G_TYPE_INT,    &quot;Score&quot;,
+G_TYPE_STRING, &quot;Team&quot;);
+clutter_model_prepend (model, 0, 42, 1, &quot;Team #1&quot;, -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prependv"
+              c:identifier="clutter_model_prependv"
+              doc="Creates and prepends a new row to the #ClutterModel, setting the row
+values for the given @columns upon creation."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="columns"
+                     transfer-ownership="none"
+                     doc="a vector containing the columns to set">
+            <array length="1" c:type="guint*">
+              <type name="uint"/>
+            </array>
+          </parameter>
+          <parameter name="values"
+                     transfer-ownership="none"
+                     doc="a vector containing the values for the cells">
+            <array length="1" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert"
+              c:identifier="clutter_model_insert"
+              doc="Inserts a new row to the #ClutterModel at @row, setting the row
+values upon creation. For example, to insert a new row at index 100,
+where column 0 is type %G_TYPE_INT and column 1 is of type
+%G_TYPE_STRING:
+&lt;informalexample&gt;&lt;programlisting&gt;
+ClutterModel *model;
+model = clutter_model_default_new (2,
+G_TYPE_INT,    &quot;Score&quot;,
+G_TYPE_STRING, &quot;Team&quot;);
+clutter_model_insert (model, 3, 0, 42, 1, &quot;Team #1&quot;, -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insertv"
+              c:identifier="clutter_model_insertv"
+              doc="Inserts data at @row into the #ClutterModel, setting the row
+values for the given @columns upon creation."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="columns"
+                     transfer-ownership="none"
+                     doc="a vector containing the columns to set">
+            <array length="2" c:type="guint*">
+              <type name="uint"/>
+            </array>
+          </parameter>
+          <parameter name="values"
+                     transfer-ownership="none"
+                     doc="a vector containing the values for the cells">
+            <array length="2" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_value"
+              c:identifier="clutter_model_insert_value"
+              doc="Sets the data in the cell specified by @iter and @column. The type of
+not exist then it is created."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="clutter_model_remove"
+              doc="Removes the row at the given position from the model."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_rows"
+              c:identifier="clutter_model_get_n_rows"
+              doc="Retrieves the number of rows inside @model, eventually taking
+into account any filtering function set using clutter_model_set_filter().
+the length of the filtered @model is returned."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_n_columns"
+              c:identifier="clutter_model_get_n_columns"
+              doc="Retrieves the number of columns inside @model."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_column_name"
+              c:identifier="clutter_model_get_column_name"
+              doc="Retrieves the name of the @column
+string, and it should not be modified or freed"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_type"
+              c:identifier="clutter_model_get_column_type"
+              doc="Retrieves the type of the @column."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_first_iter"
+              c:identifier="clutter_model_get_first_iter"
+              doc="Retrieves a #ClutterModelIter representing the first non-filtered
+row in @model.
+Call g_object_unref() when done using it"
+              version="0.6">
+        <return-value transfer-ownership="full" doc="A new #ClutterModelIter.">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="get_last_iter"
+              c:identifier="clutter_model_get_last_iter"
+              doc="Retrieves a #ClutterModelIter representing the last non-filtered
+row in @model.
+Call g_object_unref() when done using it"
+              version="0.6">
+        <return-value transfer-ownership="full" doc="A new #ClutterModelIter.">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="get_iter_at_row"
+              c:identifier="clutter_model_get_iter_at_row"
+              doc="Retrieves a #ClutterModelIter representing the row at the given index.
+If a filter function has been set using clutter_model_set_filter()
+then the @model implementation will return the first non filtered
+row.
+out of bounds. When done using the iterator object, call g_object_unref()
+to deallocate its resources"
+              version="0.6">
+        <return-value transfer-ownership="full"
+                      doc="A new #ClutterModelIter, or %NULL if @row was">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sorting_column"
+              c:identifier="clutter_model_set_sorting_column"
+              doc="Sets the model to sort by @column. If @column is a negative value
+the sorting column will be unset."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sorting_column"
+              c:identifier="clutter_model_get_sorting_column"
+              doc="Retrieves the number of column used for sorting the @model."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="foreach"
+              c:identifier="clutter_model_foreach"
+              doc="Calls @func for each row in the model."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="ModelForeachFunc" c:type="ClutterModelForeachFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort"
+              c:identifier="clutter_model_set_sort"
+              doc="Sorts @model using the given sorting function."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="ModelSortFunc" c:type="ClutterModelSortFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filter"
+              c:identifier="clutter_model_set_filter"
+              doc="Filters the @model using the given filtering function."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="ModelFilterFunc" c:type="ClutterModelFilterFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_filter_set"
+              c:identifier="clutter_model_get_filter_set"
+              doc="Returns whether the @model has a filter in place, set
+using clutter_model_set_filter()"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="resort"
+              c:identifier="clutter_model_resort"
+              doc="Force a resort on the @model. This function should only be
+used by subclasses of #ClutterModel."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="filter_row"
+              c:identifier="clutter_model_filter_row"
+              doc="Checks whether @row should be filtered or not using the
+filtering function set on @model.
+This function should be used only by subclasses of #ClutterModel.
+%FALSE otherwise"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="filter_iter"
+              c:identifier="clutter_model_filter_iter"
+              doc="Checks whether the row pointer by @iter should be filtered or not using
+the filtering function set on @model.
+This function should be used only by subclasses of #ClutterModel.
+%FALSE otherwise"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="filter-set"
+                version="1.0"
+                doc="Whether the #ClutterModel has a filter set
+This property is set to %TRUE if a filter function has been
+set using clutter_model_set_filter()">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ModelPrivate" c:type="ClutterModelPrivate*"/>
+      </field>
+      <glib:signal name="filter-changed"
+                   doc="The ::filter-changed signal is emitted when a new filter has been applied"
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="row-added"
+                   doc="The ::row-added signal is emitted when a new row has been added.
+The data on the row has already been set when the ::row-added signal
+has been emitted."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="ModelIter" c:type="ClutterModelIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-changed"
+                   doc="The ::row-removed signal is emitted when a row has been changed.
+The data on the row has already been updated when the ::row-changed
+signal has been emitted."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="ModelIter" c:type="ClutterModelIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-removed"
+                   doc="The ::row-removed signal is emitted when a row has been removed.
+The data on the row pointed by the passed iterator is still valid
+when the ::row-removed signal has been emitted."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="ModelIter" c:type="ClutterModelIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="sort-changed"
+                   doc="The ::sort-changed signal is emitted after the model has been sorted"
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ModelClass"
+            c:type="ClutterModelClass"
+            glib:is-gtype-struct-for="Model"
+            doc="Class for #ClutterModel instances."
+            version="0.6">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_n_rows">
+        <callback name="get_n_rows" c:type="get_n_rows">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_columns">
+        <callback name="get_n_columns" c:type="get_n_columns">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_column_name">
+        <callback name="get_column_name" c:type="get_column_name">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_column_type">
+        <callback name="get_column_type" c:type="get_column_type">
+          <return-value transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_row">
+        <callback name="insert_row" c:type="insert_row">
+          <return-value transfer-ownership="full">
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="index_" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_row">
+        <callback name="remove_row" c:type="remove_row">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_iter_at_row">
+        <callback name="get_iter_at_row" c:type="get_iter_at_row">
+          <return-value transfer-ownership="full">
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="resort">
+        <callback name="resort" c:type="resort">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="func" transfer-ownership="none">
+              <type name="ModelSortFunc" c:type="ClutterModelSortFunc"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_added">
+        <callback name="row_added" c:type="row_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_removed">
+        <callback name="row_removed" c:type="row_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_changed">
+        <callback name="row_changed" c:type="row_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="sort_changed">
+        <callback name="sort_changed" c:type="sort_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="filter_changed">
+        <callback name="filter_changed" c:type="filter_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_model_1">
+        <callback name="clutter_model_1" c:type="_clutter_model_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_2">
+        <callback name="clutter_model_2" c:type="_clutter_model_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_3">
+        <callback name="clutter_model_3" c:type="_clutter_model_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_4">
+        <callback name="clutter_model_4" c:type="_clutter_model_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_5">
+        <callback name="clutter_model_5" c:type="_clutter_model_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_6">
+        <callback name="clutter_model_6" c:type="_clutter_model_6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_7">
+        <callback name="clutter_model_7" c:type="_clutter_model_7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_8">
+        <callback name="clutter_model_8" c:type="_clutter_model_8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="ModelFilterFunc"
+              c:type="ClutterModelFilterFunc"
+              doc="Filters the content of a row in the model."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <type name="Model" c:type="ClutterModel*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ModelForeachFunc"
+              c:type="ClutterModelForeachFunc"
+              doc="Iterates on the content of a row in the model"
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <type name="Model" c:type="ClutterModel*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="ModelIter"
+           c:type="ClutterModelIter"
+           doc="Base class for list models iters. The #ClutterModelIter structure
+contains only private data and should be manipulated using the
+provided API."
+           version="0.6"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterModelIter"
+           glib:get-type="clutter_model_iter_get_type"
+           glib:type-struct="ModelIterClass">
+      <virtual-method name="get_value" invoker="get_value">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_value" invoker="set_value">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="is_first" invoker="is_first">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_last" invoker="is_last">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="next" invoker="next">
+        <return-value transfer-ownership="full">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="prev" invoker="prev">
+        <return-value transfer-ownership="full">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_model" invoker="get_model">
+        <return-value transfer-ownership="full">
+          <type name="Model" c:type="ClutterModel*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_row" invoker="get_row">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="copy" invoker="copy">
+        <return-value transfer-ownership="full">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </virtual-method>
+      <method name="get"
+              c:identifier="clutter_model_iter_get"
+              doc="Gets the value of one or more cells in the row referenced by @iter. The
+variable argument list should contain integer column numbers, each column
+column number followed by a place to store the value being retrieved. The
+list is terminated by a -1.
+For example, to get a value from column 0 with type %G_TYPE_STRING use:
+&lt;informalexample&gt;&lt;programlisting&gt;
+clutter_model_iter_get (iter, 0, &amp;place_string_here, -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+where place_string_here is a gchar* to be filled with the string. If
+appropriate, the returned values have to be freed or unreferenced."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value"
+              c:identifier="clutter_model_iter_get_value"
+              doc="Sets an initializes @value to that at @column. When done with @value,
+g_value_unset() needs to be called to free any allocated memory."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="clutter_model_iter_set"
+              doc="Sets the value of one or more cells in the row referenced by @iter. The
+variable argument list should contain integer column numbers, each column
+column number followed by the value to be set. The  list is terminated by a
+-1.
+For example, to set column 0 with type %G_TYPE_STRING, use:
+&lt;informalexample&gt;&lt;programlisting&gt;
+clutter_model_iter_set (iter, 0, &quot;foo&quot;, -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value"
+              c:identifier="clutter_model_iter_set_value"
+              doc="Sets the data in the cell specified by @iter and @column. The type of"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_first"
+              c:identifier="clutter_model_iter_is_first"
+              doc="Gets whether the current iterator is at the beginning of the model
+to which it belongs."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_last"
+              c:identifier="clutter_model_iter_is_last"
+              doc="Gets whether the iterator is at the end of the model to which it
+belongs."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="next"
+              c:identifier="clutter_model_iter_next"
+              doc="Updates the @iter to point at the next position in the model.
+The model implementation should take into account the presence of
+a filter function.
+row in the model."
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="The passed iterator, updated to point at the next">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="prev"
+              c:identifier="clutter_model_iter_prev"
+              doc="Sets the @iter to point at the previous position in the model.
+The model implementation should take into account the presence of
+a filter function.
+row in the model."
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="The passed iterator, updated to point at the previous">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="get_model"
+              c:identifier="clutter_model_iter_get_model"
+              doc="Retrieves a pointer to the #ClutterModel that this iter is part of."
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="a pointer to a #ClutterModel.">
+          <type name="Model" c:type="ClutterModel*"/>
+        </return-value>
+      </method>
+      <method name="get_row"
+              c:identifier="clutter_model_iter_get_row"
+              doc="Retrieves the position of the row that the @iter points to."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="clutter_model_iter_copy"
+              doc="Copies the passed iterator."
+              version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <property name="model"
+                version="0.6"
+                writable="1"
+                doc="A reference to the #ClutterModel that this iter belongs to.">
+        <type name="Model" c:type="ClutterModel"/>
+      </property>
+      <property name="row"
+                version="0.6"
+                writable="1"
+                doc="The row number to which this iter points to.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ModelIterPrivate" c:type="ClutterModelIterPrivate*"/>
+      </field>
+    </class>
+    <record name="ModelIterClass"
+            c:type="ClutterModelIterClass"
+            glib:is-gtype-struct-for="ModelIter"
+            doc="Class for #ClutterModelIter instances."
+            version="0.6">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_value">
+        <callback name="get_value" c:type="get_value">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_value">
+        <callback name="set_value" c:type="set_value">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_first">
+        <callback name="is_first" c:type="is_first">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_last">
+        <callback name="is_last" c:type="is_last">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="next">
+        <callback name="next" c:type="next">
+          <return-value transfer-ownership="full">
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="prev">
+        <callback name="prev" c:type="prev">
+          <return-value transfer-ownership="full">
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_model">
+        <callback name="get_model" c:type="get_model">
+          <return-value transfer-ownership="full">
+            <type name="Model" c:type="ClutterModel*"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_row">
+        <callback name="get_row" c:type="get_row">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy">
+        <callback name="copy" c:type="copy">
+          <return-value transfer-ownership="full">
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_model_iter_1">
+        <callback name="clutter_model_iter_1" c:type="_clutter_model_iter_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_iter_2">
+        <callback name="clutter_model_iter_2" c:type="_clutter_model_iter_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_iter_3">
+        <callback name="clutter_model_iter_3" c:type="_clutter_model_iter_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_iter_4">
+        <callback name="clutter_model_iter_4" c:type="_clutter_model_iter_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_iter_5">
+        <callback name="clutter_model_iter_5" c:type="_clutter_model_iter_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_iter_6">
+        <callback name="clutter_model_iter_6" c:type="_clutter_model_iter_6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_iter_7">
+        <callback name="clutter_model_iter_7" c:type="_clutter_model_iter_7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_model_iter_8">
+        <callback name="clutter_model_iter_8" c:type="_clutter_model_iter_8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ModelIterPrivate" c:type="ClutterModelIterPrivate">
+    </record>
+    <record name="ModelPrivate" c:type="ClutterModelPrivate">
+    </record>
+    <callback name="ModelSortFunc"
+              c:type="ClutterModelSortFunc"
+              doc="Compares the content of two rows in the model."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <type name="Model" c:type="ClutterModel*"/>
+        </parameter>
+        <parameter name="a" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="ModifierType"
+              doc="Masks applied to a #ClutterEvent by modifiers."
+              version="0.4"
+              glib:type-name="ClutterModifierType"
+              glib:get-type="clutter_modifier_type_get_type"
+              c:type="ClutterModifierType">
+      <member name="shift_mask"
+              value="1"
+              c:identifier="CLUTTER_SHIFT_MASK"
+              glib:nick="shift-mask"/>
+      <member name="lock_mask"
+              value="2"
+              c:identifier="CLUTTER_LOCK_MASK"
+              glib:nick="lock-mask"/>
+      <member name="control_mask"
+              value="4"
+              c:identifier="CLUTTER_CONTROL_MASK"
+              glib:nick="control-mask"/>
+      <member name="mod1_mask"
+              value="8"
+              c:identifier="CLUTTER_MOD1_MASK"
+              glib:nick="mod1-mask"/>
+      <member name="mod2_mask"
+              value="16"
+              c:identifier="CLUTTER_MOD2_MASK"
+              glib:nick="mod2-mask"/>
+      <member name="mod3_mask"
+              value="32"
+              c:identifier="CLUTTER_MOD3_MASK"
+              glib:nick="mod3-mask"/>
+      <member name="mod4_mask"
+              value="64"
+              c:identifier="CLUTTER_MOD4_MASK"
+              glib:nick="mod4-mask"/>
+      <member name="mod5_mask"
+              value="128"
+              c:identifier="CLUTTER_MOD5_MASK"
+              glib:nick="mod5-mask"/>
+      <member name="button1_mask"
+              value="256"
+              c:identifier="CLUTTER_BUTTON1_MASK"
+              glib:nick="button1-mask"/>
+      <member name="button2_mask"
+              value="512"
+              c:identifier="CLUTTER_BUTTON2_MASK"
+              glib:nick="button2-mask"/>
+      <member name="button3_mask"
+              value="1024"
+              c:identifier="CLUTTER_BUTTON3_MASK"
+              glib:nick="button3-mask"/>
+      <member name="button4_mask"
+              value="2048"
+              c:identifier="CLUTTER_BUTTON4_MASK"
+              glib:nick="button4-mask"/>
+      <member name="button5_mask"
+              value="4096"
+              c:identifier="CLUTTER_BUTTON5_MASK"
+              glib:nick="button5-mask"/>
+      <member name="super_mask"
+              value="67108864"
+              c:identifier="CLUTTER_SUPER_MASK"
+              glib:nick="super-mask"/>
+      <member name="hyper_mask"
+              value="134217728"
+              c:identifier="CLUTTER_HYPER_MASK"
+              glib:nick="hyper-mask"/>
+      <member name="meta_mask"
+              value="268435456"
+              c:identifier="CLUTTER_META_MASK"
+              glib:nick="meta-mask"/>
+      <member name="release_mask"
+              value="1073741824"
+              c:identifier="CLUTTER_RELEASE_MASK"
+              glib:nick="release-mask"/>
+      <member name="modifier_mask"
+              value="1543512063"
+              c:identifier="CLUTTER_MODIFIER_MASK"
+              glib:nick="modifier-mask"/>
+    </bitfield>
+    <record name="MotionEvent"
+            c:type="ClutterMotionEvent"
+            doc="Event for the pointer motion"
+            version="0.2">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="modifier_state" writable="1">
+        <type name="ModifierType" c:type="ClutterModifierType"/>
+      </field>
+      <field name="axes" writable="1">
+        <type name="any" c:type="gdouble*"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+    </record>
+    <constant name="MouseKeys_Accel_Enable" value="65143">
+      <type name="int"/>
+    </constant>
+    <constant name="MouseKeys_Enable" value="65142">
+      <type name="int"/>
+    </constant>
+    <constant name="Muhenkan" value="65314">
+      <type name="int"/>
+    </constant>
+    <constant name="Multi_key" value="65312">
+      <type name="int"/>
+    </constant>
+    <constant name="MultipleCandidate" value="65341">
+      <type name="int"/>
+    </constant>
+    <constant name="N" value="78">
+      <type name="int"/>
+    </constant>
+    <constant name="Nacute" value="465">
+      <type name="int"/>
+    </constant>
+    <constant name="NairaSign" value="16785574">
+      <type name="int"/>
+    </constant>
+    <constant name="Ncaron" value="466">
+      <type name="int"/>
+    </constant>
+    <constant name="Ncedilla" value="977">
+      <type name="int"/>
+    </constant>
+    <constant name="NewSheqelSign" value="16785578">
+      <type name="int"/>
+    </constant>
+    <constant name="Next" value="65366">
+      <type name="int"/>
+    </constant>
+    <constant name="Next_Virtual_Screen" value="65234">
+      <type name="int"/>
+    </constant>
+    <constant name="Ntilde" value="209">
+      <type name="int"/>
+    </constant>
+    <constant name="Num_Lock" value="65407">
+      <type name="int"/>
+    </constant>
+    <constant name="O" value="79">
+      <type name="int"/>
+    </constant>
+    <constant name="OE" value="5052">
+      <type name="int"/>
+    </constant>
+    <constant name="Oacute" value="211">
+      <type name="int"/>
+    </constant>
+    <constant name="Obarred" value="16777631">
+      <type name="int"/>
+    </constant>
+    <constant name="Obelowdot" value="16785100">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocaron" value="16777681">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflex" value="212">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflexacute" value="16785104">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflexbelowdot" value="16785112">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflexgrave" value="16785106">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflexhook" value="16785108">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflextilde" value="16785110">
+      <type name="int"/>
+    </constant>
+    <constant name="Odiaeresis" value="214">
+      <type name="int"/>
+    </constant>
+    <constant name="Odoubleacute" value="469">
+      <type name="int"/>
+    </constant>
+    <constant name="Ograve" value="210">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohook" value="16785102">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohorn" value="16777632">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohornacute" value="16785114">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohornbelowdot" value="16785122">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohorngrave" value="16785116">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohornhook" value="16785118">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohorntilde" value="16785120">
+      <type name="int"/>
+    </constant>
+    <constant name="Omacron" value="978">
+      <type name="int"/>
+    </constant>
+    <constant name="Ooblique" value="216">
+      <type name="int"/>
+    </constant>
+    <constant name="Oslash" value="216">
+      <type name="int"/>
+    </constant>
+    <constant name="Otilde" value="213">
+      <type name="int"/>
+    </constant>
+    <constant name="Overlay1_Enable" value="65144">
+      <type name="int"/>
+    </constant>
+    <constant name="Overlay2_Enable" value="65145">
+      <type name="int"/>
+    </constant>
+    <constant name="P" value="80">
+      <type name="int"/>
+    </constant>
+    <constant name="PATH_RELATIVE" value="32">
+      <type name="int"/>
+    </constant>
+    <constant name="PRIORITY_REDRAW" value="50">
+      <type name="int"/>
+    </constant>
+    <constant name="Pabovedot" value="16784982">
+      <type name="int"/>
+    </constant>
+    <constant name="Page_Down" value="65366">
+      <type name="int"/>
+    </constant>
+    <constant name="Page_Up" value="65365">
+      <type name="int"/>
+    </constant>
+    <record name="ParamSpecColor"
+            c:type="ClutterParamSpecColor"
+            doc="A #GParamSpec subclass for defining properties holding
+a #ClutterColor."
+            version="1.0">
+      <field name="parent_instance" writable="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="Color" c:type="ClutterColor*"/>
+      </field>
+    </record>
+    <record name="ParamSpecFixed" c:type="ClutterParamSpecFixed">
+      <field name="parent_instance" writable="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="Cogl.Fixed" c:type="CoglFixed"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="Cogl.Fixed" c:type="CoglFixed"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="Cogl.Fixed" c:type="CoglFixed"/>
+      </field>
+    </record>
+    <record name="ParamSpecUnits"
+            c:type="ClutterParamSpecUnits"
+            doc="#GParamSpec subclass for unit based properties."
+            version="1.0">
+      <field name="parent_instance" writable="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="default_type" writable="1">
+        <type name="UnitType" c:type="ClutterUnitType"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+    </record>
+    <class name="Path"
+           c:type="ClutterPath"
+           doc="The #ClutterPath struct contains only private data and should
+be accessed with the functions below."
+           version="1.0"
+           parent="GObject.InitiallyUnowned"
+           glib:type-name="ClutterPath"
+           glib:get-type="clutter_path_get_type"
+           glib:type-struct="PathClass">
+      <constructor name="new"
+                   c:identifier="clutter_path_new"
+                   doc="Creates a new #ClutterPath instance with no nodes.
+The object has a floating reference so if you add it to a
+#ClutterBehaviourPath then you do not need to unref it."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Path" c:type="ClutterPath*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_description"
+                   c:identifier="clutter_path_new_with_description"
+                   doc="Creates a new #ClutterPath instance with the nodes described in
+the string.
+The object has a floating reference so if you add it to a
+#ClutterBehaviourPath then you do not need to unref it."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Path" c:type="ClutterPath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_move_to"
+              c:identifier="clutter_path_add_move_to"
+              doc="Adds a %CLUTTER_PATH_MOVE_TO type node to the path. This is usually
+used as the first node in a path. It can also be used in the middle
+of the path to cause the actor to jump to the new coordinate."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_rel_move_to"
+              c:identifier="clutter_path_add_rel_move_to"
+              doc="Same as clutter_path_add_move_to() except the coordinates are
+relative to the previous node."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_line_to"
+              c:identifier="clutter_path_add_line_to"
+              doc="Adds a %CLUTTER_PATH_LINE_TO type node to the path. This causes the
+actor to move to the new coordinates in a straight line."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_rel_line_to"
+              c:identifier="clutter_path_add_rel_line_to"
+              doc="Same as clutter_path_add_line_to() except the coordinates are
+relative to the previous node."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_curve_to"
+              c:identifier="clutter_path_add_curve_to"
+              doc="Adds a %CLUTTER_PATH_CURVE_TO type node to the path. This causes
+the actor to follow a bezier from the last node to (@x_3, @y_3) using
+(@x_1, @y_1) and (@x_2,@y_2) as control points."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_1" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y_1" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="x_2" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y_2" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="x_3" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y_3" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_rel_curve_to"
+              c:identifier="clutter_path_add_rel_curve_to"
+              doc="Same as clutter_path_add_curve_to() except the coordinates are
+relative to the previous node."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_1" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y_1" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="x_2" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y_2" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="x_3" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y_3" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_close"
+              c:identifier="clutter_path_add_close"
+              doc="Adds a %CLUTTER_PATH_CLOSE type node to the path. This creates a
+straight line from the last node to the last %CLUTTER_PATH_MOVE_TO
+type node."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_string"
+              c:identifier="clutter_path_add_string"
+              doc="Adds new nodes to the end of the path as described in @str. The
+format is a subset of the SVG path format. Each node is represented
+by a letter and is followed by zero, one or three pairs of
+coordinates. The coordinates can be separated by spaces or a
+comma. The types are:
+&lt;variablelist&gt;
+&lt;varlistentry&gt;&lt;term&gt;M&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+Adds a %CLUTTER_PATH_MOVE_TO node. Takes one pair of coordinates.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term&gt;L&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+Adds a %CLUTTER_PATH_LINE_TO node. Takes one pair of coordinates.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term&gt;C&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+Adds a %CLUTTER_PATH_CURVE_TO node. Takes three pairs of coordinates.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term&gt;z&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+Adds a %CLUTTER_PATH_CLOSE node. No coordinates are needed.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;/variablelist&gt;
+The M, L and C commands can also be specified in lower case which
+means the coordinates are relative to the previous node.
+For example, to move an actor in a 100 by 100 pixel square centered
+on the point 300,300 you could use the following path:
+&lt;informalexample&gt;
+&lt;programlisting&gt;
+M 250,350 l 0 -100 L 350,250 l 0 100 z
+&lt;/programlisting&gt;
+&lt;/informalexample&gt;
+If the path description isn&apos;t valid %FALSE will be returned and no
+nodes will be added.
+otherwise."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_node"
+              c:identifier="clutter_path_add_node"
+              doc="Adds @node to the end of the path."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_cairo_path"
+              c:identifier="clutter_path_add_cairo_path"
+              doc="Add the nodes of the Cairo path to the end of @path."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cpath" transfer-ownership="none">
+            <type name="cairo.Path" c:type="cairo_path_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_nodes"
+              c:identifier="clutter_path_get_n_nodes"
+              doc="Retrieves the number of nodes in the path."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_node"
+              c:identifier="clutter_path_get_node"
+              doc="Retrieves the node of the path indexed by @index."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_nodes"
+              c:identifier="clutter_path_get_nodes"
+              doc="Returns a #GSList of #ClutterPathNode&lt;!-- --&gt;s. The list should be
+freed with g_slist_free(). The nodes are owned by the path and
+should not be freed. Altering the path may cause the nodes in the
+list to become invalid so you should copy them if you want to keep
+the list."
+              version="1.0">
+        <return-value transfer-ownership="container"
+                      doc="a list of nodes in the path.">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="PathNode"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="foreach"
+              c:identifier="clutter_path_foreach"
+              doc="Calls a function for each node of the path."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="PathCallback" c:type="ClutterPathCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_node"
+              c:identifier="clutter_path_insert_node"
+              doc="Inserts @node into the path before the node at the given offset. If"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_node"
+              c:identifier="clutter_path_remove_node"
+              doc="Removes the node at the given offset from the path."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_node"
+              c:identifier="clutter_path_replace_node"
+              doc="Replaces the node at offset @index_ with @node."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_description"
+              c:identifier="clutter_path_get_description"
+              doc="Returns a newly allocated string describing the path in the same
+format as used by clutter_path_add_string()."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_description"
+              c:identifier="clutter_path_set_description"
+              doc="Replaces all of the nodes in the path with nodes described by
+If the string is invalid then %FALSE is returned and the path is
+unaltered."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear"
+              c:identifier="clutter_path_clear"
+              doc="Removes all nodes from the path."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="to_cairo_path"
+              c:identifier="clutter_path_to_cairo_path"
+              doc="Add the nodes of the ClutterPath to the path in the Cairo context."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cr" transfer-ownership="none">
+            <type name="cairo.Context" c:type="cairo_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_position"
+              c:identifier="clutter_path_get_position"
+              doc="The value in @progress represents a position along the path where
+0.0 is the beginning and 1.0 is the end of the path. An
+interpolated position is then stored in @position."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="progress" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="Knot" c:type="ClutterKnot*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_length"
+              c:identifier="clutter_path_get_length"
+              doc="Retrieves an approximation of the total length of the path."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <property name="description" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="length">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="priv">
+        <type name="PathPrivate" c:type="ClutterPathPrivate*"/>
+      </field>
+    </class>
+    <callback name="PathCallback"
+              c:type="ClutterPathCallback"
+              doc="This function is passed to clutter_path_foreach() and will be
+called for each node contained in the path."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <type name="PathNode" c:type="ClutterPathNode*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="PathClass"
+            c:type="ClutterPathClass"
+            glib:is-gtype-struct-for="Path"
+            doc="The #ClutterPathClass struct contains only private data."
+            version="1.0">
+      <field name="parent_class">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+    </record>
+    <record name="PathNode"
+            c:type="ClutterPathNode"
+            doc="Represents a single node of a #ClutterPath.
+Some of the coordinates in @points may be unused for some node
+types. %CLUTTER_PATH_MOVE_TO and %CLUTTER_PATH_LINE_TO use only one
+pair of coordinates, %CLUTTER_PATH_CURVE_TO uses all three and
+%CLUTTER_PATH_CLOSE uses none."
+            version="1.0"
+            glib:type-name="ClutterPathNode"
+            glib:get-type="clutter_path_node_get_type">
+      <field name="type" writable="1">
+        <type name="PathNodeType" c:type="ClutterPathNodeType"/>
+      </field>
+      <field name="points" writable="1">
+        <array zero-terminated="0" c:type="ClutterKnot" fixed-size="3">
+          <type name="Knot"/>
+        </array>
+      </field>
+      <method name="copy"
+              c:identifier="clutter_path_node_copy"
+              doc="Makes an allocated copy of a node."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="PathNode" c:type="ClutterPathNode*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="clutter_path_node_free"
+              doc="Frees the memory of an allocated node."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="equal"
+              c:identifier="clutter_path_node_equal"
+              doc="Compares two nodes and checks if they are the same type with the
+same coordinates."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="node_b" transfer-ownership="none">
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="PathNodeType"
+                 doc="Types of nodes in a #ClutterPath."
+                 version="1.0"
+                 glib:type-name="ClutterPathNodeType"
+                 glib:get-type="clutter_path_node_type_get_type"
+                 c:type="ClutterPathNodeType">
+      <member name="move_to"
+              value="0"
+              c:identifier="CLUTTER_PATH_MOVE_TO"
+              glib:nick="move-to"/>
+      <member name="line_to"
+              value="1"
+              c:identifier="CLUTTER_PATH_LINE_TO"
+              glib:nick="line-to"/>
+      <member name="curve_to"
+              value="2"
+              c:identifier="CLUTTER_PATH_CURVE_TO"
+              glib:nick="curve-to"/>
+      <member name="close"
+              value="3"
+              c:identifier="CLUTTER_PATH_CLOSE"
+              glib:nick="close"/>
+      <member name="rel_move_to"
+              value="32"
+              c:identifier="CLUTTER_PATH_REL_MOVE_TO"
+              glib:nick="rel-move-to"/>
+      <member name="rel_line_to"
+              value="33"
+              c:identifier="CLUTTER_PATH_REL_LINE_TO"
+              glib:nick="rel-line-to"/>
+      <member name="rel_curve_to"
+              value="34"
+              c:identifier="CLUTTER_PATH_REL_CURVE_TO"
+              glib:nick="rel-curve-to"/>
+    </enumeration>
+    <record name="PathPrivate" c:type="ClutterPathPrivate">
+    </record>
+    <constant name="Pause" value="65299">
+      <type name="int"/>
+    </constant>
+    <record name="Perspective"
+            c:type="ClutterPerspective"
+            doc="Stage perspective definition. #ClutterPerspective is only used by
+the fixed point version of clutter_stage_set_perspective()."
+            version="0.4"
+            glib:type-name="ClutterPerspective"
+            glib:get-type="clutter_perspective_get_type">
+      <field name="fovy" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="aspect" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="z_near" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="z_far" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+    </record>
+    <constant name="PesetaSign" value="16785575">
+      <type name="int"/>
+    </constant>
+    <enumeration name="PickMode"
+                 doc="Controls the paint cycle of the scene graph when in pick mode"
+                 version="1.0"
+                 glib:type-name="ClutterPickMode"
+                 glib:get-type="clutter_pick_mode_get_type"
+                 c:type="ClutterPickMode">
+      <member name="none"
+              value="0"
+              c:identifier="CLUTTER_PICK_NONE"
+              glib:nick="none"/>
+      <member name="reactive"
+              value="1"
+              c:identifier="CLUTTER_PICK_REACTIVE"
+              glib:nick="reactive"/>
+      <member name="all"
+              value="2"
+              c:identifier="CLUTTER_PICK_ALL"
+              glib:nick="all"/>
+    </enumeration>
+    <constant name="Pointer_Accelerate" value="65274">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button1" value="65257">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button2" value="65258">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button3" value="65259">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button4" value="65260">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button5" value="65261">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button_Dflt" value="65256">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick1" value="65263">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick2" value="65264">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick3" value="65265">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick4" value="65266">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick5" value="65267">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick_Dflt" value="65262">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DfltBtnNext" value="65275">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DfltBtnPrev" value="65276">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Down" value="65251">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DownLeft" value="65254">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DownRight" value="65255">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag1" value="65269">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag2" value="65270">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag3" value="65271">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag4" value="65272">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag5" value="65277">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag_Dflt" value="65268">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_EnableKeys" value="65273">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Left" value="65248">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Right" value="65249">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Up" value="65250">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_UpLeft" value="65252">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_UpRight" value="65253">
+      <type name="int"/>
+    </constant>
+    <constant name="Prev_Virtual_Screen" value="65233">
+      <type name="int"/>
+    </constant>
+    <constant name="PreviousCandidate" value="65342">
+      <type name="int"/>
+    </constant>
+    <constant name="Print" value="65377">
+      <type name="int"/>
+    </constant>
+    <constant name="Prior" value="65365">
+      <type name="int"/>
+    </constant>
+    <callback name="ProgressFunc"
+              c:type="ClutterProgressFunc"
+              doc="Prototype of the progress function used to compute the value
+between the two ends @a and @b of an interval depending on
+the value of @progress.
+The #GValue in @retval is already initialized with the same
+type as @a and @b.
+This function will be called by #ClutterInterval if the
+type of the values of the interval was registered using
+clutter_interval_register_progress_func().
+the value and stored it inside @retval"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="progress" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="retval" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="Q" value="81">
+      <type name="int"/>
+    </constant>
+    <constant name="R" value="82">
+      <type name="int"/>
+    </constant>
+    <constant name="R1" value="65490">
+      <type name="int"/>
+    </constant>
+    <constant name="R10" value="65499">
+      <type name="int"/>
+    </constant>
+    <constant name="R11" value="65500">
+      <type name="int"/>
+    </constant>
+    <constant name="R12" value="65501">
+      <type name="int"/>
+    </constant>
+    <constant name="R13" value="65502">
+      <type name="int"/>
+    </constant>
+    <constant name="R14" value="65503">
+      <type name="int"/>
+    </constant>
+    <constant name="R15" value="65504">
+      <type name="int"/>
+    </constant>
+    <constant name="R2" value="65491">
+      <type name="int"/>
+    </constant>
+    <constant name="R3" value="65492">
+      <type name="int"/>
+    </constant>
+    <constant name="R4" value="65493">
+      <type name="int"/>
+    </constant>
+    <constant name="R5" value="65494">
+      <type name="int"/>
+    </constant>
+    <constant name="R6" value="65495">
+      <type name="int"/>
+    </constant>
+    <constant name="R7" value="65496">
+      <type name="int"/>
+    </constant>
+    <constant name="R8" value="65497">
+      <type name="int"/>
+    </constant>
+    <constant name="R9" value="65498">
+      <type name="int"/>
+    </constant>
+    <constant name="Racute" value="448">
+      <type name="int"/>
+    </constant>
+    <constant name="Rcaron" value="472">
+      <type name="int"/>
+    </constant>
+    <constant name="Rcedilla" value="931">
+      <type name="int"/>
+    </constant>
+    <class name="Rectangle"
+           c:type="ClutterRectangle"
+           doc="The #ClutterRectangle structure contains only private data
+and should be accessed using the provided API"
+           version="0.1"
+           parent="Actor"
+           glib:type-name="ClutterRectangle"
+           glib:get-type="clutter_rectangle_get_type"
+           glib:type-struct="RectangleClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_rectangle_new"
+                   doc="Creates a new #ClutterActor with a rectangular shape.">
+        <return-value transfer-ownership="full">
+          <type name="Rectangle" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_color"
+                   c:identifier="clutter_rectangle_new_with_color"
+                   doc="Creates a new #ClutterActor with a rectangular shape
+and of the given @color.">
+        <return-value transfer-ownership="full">
+          <type name="Rectangle" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_color"
+              c:identifier="clutter_rectangle_get_color"
+              doc="Retrieves the color of @rectangle.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color"
+              c:identifier="clutter_rectangle_set_color"
+              doc="Sets the color of @rectangle.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_border_width"
+              c:identifier="clutter_rectangle_get_border_width"
+              doc="Gets the width (in pixels) of the border used by @rectangle"
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_border_width"
+              c:identifier="clutter_rectangle_set_border_width"
+              doc="Sets the width (in pixel) of the border used by @rectangle.
+A @width of 0 will unset the border."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_border_color"
+              c:identifier="clutter_rectangle_get_border_color"
+              doc="Gets the color of the border used by @rectangle and places
+it into @color."
+              version="0.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_border_color"
+              c:identifier="clutter_rectangle_set_border_color"
+              doc="Sets the color of the border used by @rectangle using @color">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="border-color"
+                version="0.2"
+                writable="1"
+                doc="The color of the border of the rectangle.">
+        <type name="Color" c:type="ClutterColor"/>
+      </property>
+      <property name="border-width"
+                version="0.2"
+                writable="1"
+                doc="The width of the border of the rectangle, in pixels.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="color" writable="1" doc="The color of the rectangle.">
+        <type name="Color" c:type="ClutterColor"/>
+      </property>
+      <property name="has-border"
+                version="0.2"
+                writable="1"
+                doc="Whether the #ClutterRectangle should be displayed with a border.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="RectanglePrivate" c:type="ClutterRectanglePrivate*"/>
+      </field>
+    </class>
+    <record name="RectangleClass"
+            c:type="ClutterRectangleClass"
+            glib:is-gtype-struct-for="Rectangle"
+            doc="The #ClutterRectangleClass structure contains only private data"
+            version="0.1">
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="clutter_rectangle1">
+        <callback name="clutter_rectangle1" c:type="_clutter_rectangle1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_rectangle2">
+        <callback name="clutter_rectangle2" c:type="_clutter_rectangle2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_rectangle3">
+        <callback name="clutter_rectangle3" c:type="_clutter_rectangle3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_rectangle4">
+        <callback name="clutter_rectangle4" c:type="_clutter_rectangle4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="RectanglePrivate" c:type="ClutterRectanglePrivate">
+    </record>
+    <constant name="Redo" value="65382">
+      <type name="int"/>
+    </constant>
+    <bitfield name="RedrawFlags"
+              doc="Flags passed to the clutter_actor_queue_redraw_with_clip ()
+function"
+              version="1.2"
+              glib:type-name="ClutterRedrawFlags"
+              glib:get-type="clutter_redraw_flags_get_type"
+              c:type="ClutterRedrawFlags">
+      <member name="box"
+              value="0"
+              c:identifier="CLUTTER_REDRAW_CLIPPED_TO_BOX"
+              glib:nick="box"/>
+      <member name="allocation"
+              value="2"
+              c:identifier="CLUTTER_REDRAW_CLIPPED_TO_ALLOCATION"
+              glib:nick="allocation"/>
+    </bitfield>
+    <constant name="RepeatKeys_Enable" value="65138">
+      <type name="int"/>
+    </constant>
+    <enumeration name="RequestMode"
+                 doc="Specifies the type of requests for a #ClutterActor."
+                 version="0.8"
+                 glib:type-name="ClutterRequestMode"
+                 glib:get-type="clutter_request_mode_get_type"
+                 c:type="ClutterRequestMode">
+      <member name="height_for_width"
+              value="0"
+              c:identifier="CLUTTER_REQUEST_HEIGHT_FOR_WIDTH"
+              glib:nick="height-for-width"/>
+      <member name="width_for_height"
+              value="1"
+              c:identifier="CLUTTER_REQUEST_WIDTH_FOR_HEIGHT"
+              glib:nick="width-for-height"/>
+    </enumeration>
+    <constant name="Return" value="65293">
+      <type name="int"/>
+    </constant>
+    <constant name="Right" value="65363">
+      <type name="int"/>
+    </constant>
+    <constant name="Romaji" value="65316">
+      <type name="int"/>
+    </constant>
+    <enumeration name="RotateAxis"
+                 doc="Axis of a rotation."
+                 version="0.4"
+                 glib:type-name="ClutterRotateAxis"
+                 glib:get-type="clutter_rotate_axis_get_type"
+                 c:type="ClutterRotateAxis">
+      <member name="x_axis"
+              value="0"
+              c:identifier="CLUTTER_X_AXIS"
+              glib:nick="x-axis"/>
+      <member name="y_axis"
+              value="1"
+              c:identifier="CLUTTER_Y_AXIS"
+              glib:nick="y-axis"/>
+      <member name="z_axis"
+              value="2"
+              c:identifier="CLUTTER_Z_AXIS"
+              glib:nick="z-axis"/>
+    </enumeration>
+    <enumeration name="RotateDirection"
+                 doc="Direction of a rotation."
+                 version="0.4"
+                 glib:type-name="ClutterRotateDirection"
+                 glib:get-type="clutter_rotate_direction_get_type"
+                 c:type="ClutterRotateDirection">
+      <member name="cw"
+              value="0"
+              c:identifier="CLUTTER_ROTATE_CW"
+              glib:nick="cw"/>
+      <member name="ccw"
+              value="1"
+              c:identifier="CLUTTER_ROTATE_CCW"
+              glib:nick="ccw"/>
+    </enumeration>
+    <constant name="RupeeSign" value="16785576">
+      <type name="int"/>
+    </constant>
+    <constant name="S" value="83">
+      <type name="int"/>
+    </constant>
+    <constant name="SCHWA" value="16777615">
+      <type name="int"/>
+    </constant>
+    <constant name="Sabovedot" value="16784992">
+      <type name="int"/>
+    </constant>
+    <constant name="Sacute" value="422">
+      <type name="int"/>
+    </constant>
+    <constant name="Scaron" value="425">
+      <type name="int"/>
+    </constant>
+    <constant name="Scedilla" value="426">
+      <type name="int"/>
+    </constant>
+    <constant name="Scircumflex" value="734">
+      <type name="int"/>
+    </constant>
+    <class name="Score"
+           c:type="ClutterScore"
+           doc="The #ClutterScore structure contains only private data
+and should be accessed using the provided API"
+           version="0.6"
+           parent="GObject.Object"
+           glib:type-name="ClutterScore"
+           glib:get-type="clutter_score_get_type"
+           glib:type-struct="ScoreClass">
+      <constructor name="new"
+                   c:identifier="clutter_score_new"
+                   doc="Creates a new #ClutterScore. A #ClutterScore is an object that can
+hold multiple #ClutterTimeline&lt;!-- --&gt;s in a sequential order.
+when done."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="Score" c:type="ClutterScore*"/>
+        </return-value>
+      </constructor>
+      <method name="set_loop"
+              c:identifier="clutter_score_set_loop"
+              doc="Sets whether @score should loop. A looping #ClutterScore will start
+from its initial state after the ::complete signal has been fired."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="loop" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_loop"
+              c:identifier="clutter_score_get_loop"
+              doc="Gets whether @score is looping"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="append"
+              c:identifier="clutter_score_append"
+              doc="Appends a timeline to another one existing in the score; the newly
+appended timeline will be started when @parent is complete.
+If @parent is %NULL, the new #ClutterTimeline will be started when
+clutter_score_start() is called.
+#ClutterScore will take a reference on @timeline.
+0 on failure. The returned id can be used with clutter_score_remove()
+or clutter_score_get_timeline()."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_at_marker"
+              c:identifier="clutter_score_append_at_marker"
+              doc="Appends @timeline at the given @marker_name on the @parent
+#ClutterTimeline.
+If you want to append @timeline at the end of @parent, use
+clutter_score_append().
+The #ClutterScore will take a reference on @timeline.
+0 on failure. The returned id can be used with clutter_score_remove()
+or clutter_score_get_timeline()."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="marker_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="clutter_score_remove"
+              doc="Removes the #ClutterTimeline with the given id inside @score. If
+the timeline has other timelines attached to it, those are removed
+as well."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_all"
+              c:identifier="clutter_score_remove_all"
+              doc="Removes all the timelines inside @score."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_score_get_timeline"
+              doc="Retrieves the #ClutterTimeline for @id inside @score.
+function does not increase the reference count on the returned
+#ClutterTimeline"
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="the requested timeline, or %NULL. This">
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_timelines"
+              c:identifier="clutter_score_list_timelines"
+              doc="Retrieves a list of all the #ClutterTimelines managed by @score.
+containing all the timelines in the score. This function does not increase
+the reference count of the returned timelines. Use g_slist_free() on the
+returned list to deallocate its resources."
+              version="0.6">
+        <return-value transfer-ownership="container" doc="a #GSList">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Timeline"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="start"
+              c:identifier="clutter_score_start"
+              doc="Starts the score."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop"
+              c:identifier="clutter_score_stop"
+              doc="Stops and rewinds a playing #ClutterScore instance."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="pause"
+              c:identifier="clutter_score_pause"
+              doc="Pauses a playing score @score."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="rewind"
+              c:identifier="clutter_score_rewind"
+              doc="Rewinds a #ClutterScore to its initial state."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_playing"
+              c:identifier="clutter_score_is_playing"
+              doc="Query state of a #ClutterScore instance."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="loop"
+                version="0.6"
+                writable="1"
+                doc="Whether the #ClutterScore should restart once finished.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ScorePrivate" c:type="ClutterScorePrivate*"/>
+      </field>
+      <glib:signal name="completed"
+                   doc="The ::completed signal is emitted each time a #ClutterScore terminates."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="paused"
+                   doc="The ::paused signal is emitted each time a #ClutterScore
+is paused."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="started"
+                   doc="The ::started signal is emitted each time a #ClutterScore starts playing."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="timeline-completed"
+                   doc="The ::timeline-completed signal is emitted each time a timeline
+inside a #ClutterScore terminates."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="timeline-started"
+                   doc="The ::timeline-started signal is emitted each time a new timeline
+inside a #ClutterScore starts playing."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ScoreClass"
+            c:type="ClutterScoreClass"
+            glib:is-gtype-struct-for="Score"
+            doc="The #ClutterScoreClass structure contains only private data"
+            version="0.6">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="timeline_started">
+        <callback name="timeline_started" c:type="timeline_started">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="timeline_completed">
+        <callback name="timeline_completed" c:type="timeline_completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="started">
+        <callback name="started" c:type="started">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="completed">
+        <callback name="completed" c:type="completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paused">
+        <callback name="paused" c:type="paused">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_score_1">
+        <callback name="clutter_score_1" c:type="_clutter_score_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_score_2">
+        <callback name="clutter_score_2" c:type="_clutter_score_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_score_3">
+        <callback name="clutter_score_3" c:type="_clutter_score_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_score_4">
+        <callback name="clutter_score_4" c:type="_clutter_score_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_score_5">
+        <callback name="clutter_score_5" c:type="_clutter_score_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ScorePrivate" c:type="ClutterScorePrivate">
+    </record>
+    <class name="Script"
+           c:type="ClutterScript"
+           doc="The #ClutterScript structure contains only private data
+and should be accessed using the provided API"
+           version="0.6"
+           parent="GObject.Object"
+           glib:type-name="ClutterScript"
+           glib:get-type="clutter_script_get_type"
+           glib:type-struct="ScriptClass">
+      <constructor name="new"
+                   c:identifier="clutter_script_new"
+                   doc="Creates a new #ClutterScript instance. #ClutterScript can be used
+to load objects definitions for scenegraph elements, like actors,
+or behavioural elements, like behaviours and timelines. The
+definitions must be encoded using the JavaScript Object Notation (JSON)
+language.
+g_object_unref() when done."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="Script" c:type="ClutterScript*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="get_type_from_name" invoker="get_type_from_name">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="load_from_file"
+              c:identifier="clutter_script_load_from_file"
+              doc="Loads the definitions from @filename into @script and merges with
+the currently loaded ones, if any.
+accordingly. On success, the merge id for the UI definitions is
+returned. You can use the merge id with clutter_script_unmerge()."
+              version="0.6"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_data"
+              c:identifier="clutter_script_load_from_data"
+              doc="Loads the definitions from @data into @script and merges with
+the currently loaded ones, if any.
+accordingly. On success, the merge id for the UI definitions is
+returned. You can use the merge id with clutter_script_unmerge()."
+              version="0.6"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none" doc=" buffer">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object"
+              c:identifier="clutter_script_get_object"
+              doc="Retrieves the object bound to @name. This function does not increment
+the reference count of the returned object.
+with the given name was available"
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="the named object, or %NULL if no object">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_objects"
+              c:identifier="clutter_script_get_objects"
+              doc="Retrieves a list of objects for the given names. After @script, object
+names/return location pairs should be listed, with a %NULL pointer
+ending the list, like:
+&lt;informalexample&gt;&lt;programlisting&gt;
+GObject *my_label, *a_button, *main_timeline;
+clutter_script_get_objects (script,
+&quot;my-label&quot;, &amp;amp;my_label,
+&quot;a-button&quot;, &amp;amp;a_button,
+&quot;main-timeline&quot;, &amp;amp;main_timeline,
+NULL);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+returned objects."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_objects"
+              c:identifier="clutter_script_list_objects"
+              doc="Retrieves all the objects created by @script.
+objects it returns.
+or %NULL. The objects are owned by the #ClutterScript instance. Use g_list_free() on the
+returned value when done."
+              version="0.8.2">
+        <return-value transfer-ownership="container"
+                      doc="a list of #GObject&lt;!-- --&gt;s,">
+          <type name="GLib.List" c:type="GList*">
+            <type name="GObject.Object"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="unmerge_objects"
+              c:identifier="clutter_script_unmerge_objects"
+              doc="Unmerges the objects identified by @merge_id."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="merge_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ensure_objects"
+              c:identifier="clutter_script_ensure_objects"
+              doc="Ensure that every object defined inside @script is correctly
+constructed. You should rarely need to use this function."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_type_from_name"
+              c:identifier="clutter_script_get_type_from_name"
+              doc="Looks up a type by name, using the virtual function that
+#ClutterScript has for that purpose. This function should
+rarely be used.
+%G_TYPE_INVALID if not corresponding type was found."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_signals"
+              c:identifier="clutter_script_connect_signals"
+              doc="Connects all the signals defined into a UI definition file to their
+handlers.
+This method invokes clutter_script_connect_signals_full() internally
+and uses  #GModule&apos;s introspective features (by opening the current
+module&apos;s scope) to look at the application&apos;s symbol table.
+Note that this function will not work if #GModule is not supported by
+the platform Clutter is running on."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_signals_full"
+              c:identifier="clutter_script_connect_signals_full"
+              doc="Connects all the signals defined into a UI definition file to their
+handlers.
+This function allows to control how the signal handlers are
+going to be connected to their respective signals. It is meant
+primarily for language bindings to allow resolving the function
+names using the native API.
+Applications should use clutter_script_connect_signals()."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="ScriptConnectFunc" c:type="ClutterScriptConnectFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_search_paths"
+              c:identifier="clutter_script_add_search_paths"
+              doc="Adds @paths to the list of search paths held by @script.
+The search paths are used by clutter_script_lookup_filename(), which
+can be used to define search paths for the textures source file name
+or other custom, file-based properties."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="paths" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="n_paths" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_filename"
+              c:identifier="clutter_script_lookup_filename"
+              doc="Looks up @filename inside the search paths of @script. If @filename
+is found, its full path will be returned .
+found."
+              version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="filename"
+                version="0.6"
+                doc="The path of the currently parsed file. If #ClutterScript:filename-set
+is %FALSE then the value of this property is undefined.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="filename-set"
+                version="0.6"
+                doc="Whether the #ClutterScript:filename property is set. If this property
+is %TRUE then the currently parsed data comes from a file, and the
+file name is stored inside the #ClutterScript:filename property.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ScriptPrivate" c:type="ClutterScriptPrivate*"/>
+      </field>
+    </class>
+    <record name="ScriptClass"
+            c:type="ClutterScriptClass"
+            glib:is-gtype-struct-for="Script"
+            doc="The #ClutterScriptClass structure contains only private data"
+            version="0.6">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_type_from_name">
+        <callback name="get_type_from_name" c:type="get_type_from_name">
+          <return-value transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </return-value>
+          <parameters>
+            <parameter name="script" transfer-ownership="none">
+              <type name="Script" c:type="ClutterScript*"/>
+            </parameter>
+            <parameter name="type_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_reserved1">
+        <callback name="clutter_reserved1" c:type="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved2">
+        <callback name="clutter_reserved2" c:type="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved3">
+        <callback name="clutter_reserved3" c:type="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved4">
+        <callback name="clutter_reserved4" c:type="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved5">
+        <callback name="clutter_reserved5" c:type="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved6">
+        <callback name="clutter_reserved6" c:type="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved7">
+        <callback name="clutter_reserved7" c:type="_clutter_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved8">
+        <callback name="clutter_reserved8" c:type="_clutter_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="ScriptConnectFunc"
+              c:type="ClutterScriptConnectFunc"
+              doc="This is the signature of a function used to connect signals.  It is used
+by the clutter_script_connect_signals_full() function.  It is mainly
+intended for interpreted language bindings, but could be useful where the
+programmer wants more control over the signal connection process."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="script" transfer-ownership="none">
+          <type name="Script" c:type="ClutterScript*"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="signal_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="handler_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="connect_object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.ConnectFlags" c:type="GConnectFlags"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="6">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="ScriptError"
+                 doc="#ClutterScript error enumeration."
+                 version="0.6"
+                 glib:type-name="ClutterScriptError"
+                 glib:get-type="clutter_script_error_get_type"
+                 c:type="ClutterScriptError"
+                 glib:error-quark="clutter_script_error_quark">
+      <member name="type_function"
+              value="0"
+              c:identifier="CLUTTER_SCRIPT_ERROR_INVALID_TYPE_FUNCTION"
+              glib:nick="type-function"/>
+      <member name="property"
+              value="1"
+              c:identifier="CLUTTER_SCRIPT_ERROR_INVALID_PROPERTY"
+              glib:nick="property"/>
+      <member name="value"
+              value="2"
+              c:identifier="CLUTTER_SCRIPT_ERROR_INVALID_VALUE"
+              glib:nick="value"/>
+    </enumeration>
+    <record name="ScriptPrivate" c:type="ClutterScriptPrivate">
+    </record>
+    <interface name="Scriptable"
+               c:type="ClutterScriptable"
+               doc="#ClutterScriptable is an opaque structure whose members cannot be directly
+accessed"
+               version="0.6"
+               glib:type-name="ClutterScriptable"
+               glib:get-type="clutter_scriptable_get_type"
+               glib:type-struct="ScriptableIface">
+      <virtual-method name="set_id">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_id" invoker="get_id">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="parse_custom_node" invoker="parse_custom_node">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <type name="Script" c:type="ClutterScript*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="ClutterJson.JsonNode" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_custom_property" invoker="set_custom_property">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <type name="Script" c:type="ClutterScript*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_id"
+              c:identifier="clutter_scriptable_set_id"
+              doc="Sets @id as the unique Clutter script it for this instance of
+#ClutterScriptableIface.
+This name can be used by user interface designer applications to
+define a unique name for an object constructable using the UI
+definition language parsed by #ClutterScript."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_id"
+              c:identifier="clutter_scriptable_get_id"
+              doc="Retrieves the id of @scriptable set using clutter_scriptable_set_id().
+the scriptable object and should never be modified of freed"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="parse_custom_node"
+              c:identifier="clutter_scriptable_parse_custom_node"
+              doc="Parses the passed JSON node. The implementation must set the type
+of the passed #GValue pointer using g_value_init()."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <type name="Script" c:type="ClutterScript*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="ClutterJson.JsonNode" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_custom_property"
+              c:identifier="clutter_scriptable_set_custom_property"
+              doc="Overrides the common properties setting. The underlying virtual
+function should be used when implementing custom properties."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <type name="Script" c:type="ClutterScript*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="ScriptableIface"
+            c:type="ClutterScriptableIface"
+            glib:is-gtype-struct-for="Scriptable"
+            doc="Interface for implementing &quot;scriptable&quot; objects. An object implementing
+this interface can override the parsing and properties setting sequence
+when loading a UI definition data with #ClutterScript"
+            version="0.6">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="set_id">
+        <callback name="set_id" c:type="set_id">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="scriptable" transfer-ownership="none">
+              <type name="Scriptable" c:type="ClutterScriptable*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_id">
+        <callback name="get_id" c:type="get_id">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="scriptable" transfer-ownership="none">
+              <type name="Scriptable" c:type="ClutterScriptable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parse_custom_node">
+        <callback name="parse_custom_node" c:type="parse_custom_node">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="scriptable" transfer-ownership="none">
+              <type name="Scriptable" c:type="ClutterScriptable*"/>
+            </parameter>
+            <parameter name="script" transfer-ownership="none">
+              <type name="Script" c:type="ClutterScript*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="node" transfer-ownership="none">
+              <type name="ClutterJson.JsonNode" c:type="JsonNode*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_custom_property">
+        <callback name="set_custom_property" c:type="set_custom_property">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="scriptable" transfer-ownership="none">
+              <type name="Scriptable" c:type="ClutterScriptable*"/>
+            </parameter>
+            <parameter name="script" transfer-ownership="none">
+              <type name="Script" c:type="ClutterScript*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="ScrollDirection"
+                 doc="Direction of a pointer scroll event."
+                 version="0.4"
+                 glib:type-name="ClutterScrollDirection"
+                 glib:get-type="clutter_scroll_direction_get_type"
+                 c:type="ClutterScrollDirection">
+      <member name="up"
+              value="0"
+              c:identifier="CLUTTER_SCROLL_UP"
+              glib:nick="up"/>
+      <member name="down"
+              value="1"
+              c:identifier="CLUTTER_SCROLL_DOWN"
+              glib:nick="down"/>
+      <member name="left"
+              value="2"
+              c:identifier="CLUTTER_SCROLL_LEFT"
+              glib:nick="left"/>
+      <member name="right"
+              value="3"
+              c:identifier="CLUTTER_SCROLL_RIGHT"
+              glib:nick="right"/>
+    </enumeration>
+    <record name="ScrollEvent"
+            c:type="ClutterScrollEvent"
+            doc="Scroll wheel (or similar device) event"
+            version="0.2">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="direction" writable="1">
+        <type name="ScrollDirection" c:type="ClutterScrollDirection"/>
+      </field>
+      <field name="modifier_state" writable="1">
+        <type name="ModifierType" c:type="ClutterModifierType"/>
+      </field>
+      <field name="axes" writable="1">
+        <type name="any" c:type="gdouble*"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+    </record>
+    <constant name="Scroll_Lock" value="65300">
+      <type name="int"/>
+    </constant>
+    <constant name="Select" value="65376">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_DJE" value="1713">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_DZE" value="1727">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_JE" value="1720">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_LJE" value="1721">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_NJE" value="1722">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_TSHE" value="1723">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_dje" value="1697">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_dze" value="1711">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_je" value="1704">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_lje" value="1705">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_nje" value="1706">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_tshe" value="1707">
+      <type name="int"/>
+    </constant>
+    <class name="Shader"
+           c:type="ClutterShader"
+           doc="The #ClutterShader structure contains only private data
+and should be accessed using the provided API"
+           version="0.6"
+           parent="GObject.Object"
+           glib:type-name="ClutterShader"
+           glib:get-type="clutter_shader_get_type"
+           glib:type-struct="ShaderClass">
+      <constructor name="new"
+                   c:identifier="clutter_shader_new"
+                   doc="Create a new #ClutterShader instance."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="Shader" c:type="ClutterShader*"/>
+        </return-value>
+      </constructor>
+      <method name="set_is_enabled"
+              c:identifier="clutter_shader_set_is_enabled"
+              doc="Enables a shader. This function will attempt to compile and link
+the shader, if it isn&apos;t already.
+When @enabled is %FALSE the default state of the GL pipeline will be
+used instead."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_is_enabled"
+              c:identifier="clutter_shader_get_is_enabled"
+              doc="Checks whether @shader is enabled."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="compile"
+              c:identifier="clutter_shader_compile"
+              doc="Compiles and links GLSL sources set for vertex and fragment shaders for
+a #ClutterShader. If the compilation fails and a #GError return location is
+provided the error will contain the errors from the compiler, if any."
+              version="0.8"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="release"
+              c:identifier="clutter_shader_release"
+              doc="Frees up any GL context resources held by the shader."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_compiled"
+              c:identifier="clutter_shader_is_compiled"
+              doc="Checks whether @shader is is currently compiled, linked and bound
+to the GL context."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_vertex_source"
+              c:identifier="clutter_shader_set_vertex_source"
+              doc="Sets the GLSL source code to be used by a #ClutterShader for the vertex
+program."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fragment_source"
+              c:identifier="clutter_shader_set_fragment_source"
+              doc="Sets the GLSL source code to be used by a #ClutterShader for the fragment
+program."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_vertex_source"
+              c:identifier="clutter_shader_get_vertex_source"
+              doc="Query the current GLSL vertex source set on @shader.
+ClutterShader object or %NULL. The returned string is owned by the
+shader object and should never be modified or freed"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_fragment_source"
+              c:identifier="clutter_shader_get_fragment_source"
+              doc="Query the current GLSL fragment source set on @shader.
+ClutterShader object or %NULL. The returned string is owned by the
+shader object and should never be modified or freed"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_uniform"
+              c:identifier="clutter_shader_set_uniform"
+              doc="Sets a user configurable variable in the GLSL shader programs attached to
+a #ClutterShader."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none" doc=" #GValue.">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cogl_program"
+              c:identifier="clutter_shader_get_cogl_program"
+              doc="Retrieves the underlying #CoglHandle for the shader program."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_cogl_fragment_shader"
+              c:identifier="clutter_shader_get_cogl_fragment_shader"
+              doc="Retrieves the underlying #CoglHandle for the fragment shader."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_cogl_vertex_shader"
+              c:identifier="clutter_shader_get_cogl_vertex_shader"
+              doc="Retrieves the underlying #CoglHandle for the vertex shader."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <property name="compiled"
+                version="0.8"
+                doc="Whether the shader is compiled and linked, ready for use
+in the GL context.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="enabled"
+                version="0.6"
+                writable="1"
+                doc="Whether the shader is currently used in the GL rendering pipeline.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="fragment-source"
+                version="0.6"
+                writable="1"
+                doc="GLSL source code for the fragment shader part of the shader program.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="vertex-source"
+                version="0.6"
+                writable="1"
+                doc="GLSL source code for the vertex shader part of the shader
+program, if any">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ShaderPrivate" c:type="ClutterShaderPrivate*"/>
+      </field>
+    </class>
+    <record name="ShaderClass"
+            c:type="ClutterShaderClass"
+            glib:is-gtype-struct-for="Shader"
+            doc="The #ClutterShaderClass structure contains only private data"
+            version="0.6">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <enumeration name="ShaderError"
+                 doc="#ClutterShader error enumeration"
+                 version="0.6"
+                 glib:type-name="ClutterShaderError"
+                 glib:get-type="clutter_shader_error_get_type"
+                 c:type="ClutterShaderError"
+                 glib:error-quark="clutter_shader_error_quark">
+      <member name="no_asm"
+              value="0"
+              c:identifier="CLUTTER_SHADER_ERROR_NO_ASM"
+              glib:nick="no-asm"/>
+      <member name="no_glsl"
+              value="1"
+              c:identifier="CLUTTER_SHADER_ERROR_NO_GLSL"
+              glib:nick="no-glsl"/>
+      <member name="compile"
+              value="2"
+              c:identifier="CLUTTER_SHADER_ERROR_COMPILE"
+              glib:nick="compile"/>
+    </enumeration>
+    <record name="ShaderFloat" c:type="ClutterShaderFloat">
+    </record>
+    <record name="ShaderInt" c:type="ClutterShaderInt">
+    </record>
+    <record name="ShaderMatrix" c:type="ClutterShaderMatrix">
+    </record>
+    <record name="ShaderPrivate" c:type="ClutterShaderPrivate">
+    </record>
+    <constant name="Shift_L" value="65505">
+      <type name="int"/>
+    </constant>
+    <constant name="Shift_Lock" value="65510">
+      <type name="int"/>
+    </constant>
+    <constant name="Shift_R" value="65506">
+      <type name="int"/>
+    </constant>
+    <constant name="SingleCandidate" value="65340">
+      <type name="int"/>
+    </constant>
+    <constant name="SlowKeys_Enable" value="65139">
+      <type name="int"/>
+    </constant>
+    <class name="Stage"
+           c:type="ClutterStage"
+           doc="The #ClutterStage structure contains only private data
+and should be accessed using the provided API"
+           version="0.1"
+           parent="Group"
+           glib:type-name="ClutterStage"
+           glib:get-type="clutter_stage_get_type"
+           glib:type-struct="StageClass">
+      <implements name="Container"/>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_stage_new"
+                   doc="Creates a new, non-default stage. A non-default stage is a new
+top-level actor which can be used as another container. It works
+exactly like the default stage, but while clutter_stage_get_default()
+will always return the same instance, you will have to keep a pointer
+to any #ClutterStage returned by clutter_stage_create().
+The ability to support multiple stages depends on the current
+backend. Use clutter_feature_available() and
+%CLUTTER_FEATURE_STAGE_MULTIPLE to check at runtime whether a
+backend supports multiple stages.
+not support multiple stages. Use clutter_actor_destroy() to
+programmatically close the returned stage."
+                   version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="Stage" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <function name="get_default"
+                c:identifier="clutter_stage_get_default"
+                doc="Returns the main stage. The default #ClutterStage is a singleton,
+so the stage will be created the first time this function is
+called (typically, inside clutter_init()); all the subsequent
+calls to clutter_stage_get_default() will return the same instance.
+Clutter guarantess the existence of the default stage.
+destroy or unref the returned actor.">
+        <return-value transfer-ownership="none"
+                      doc="the main #ClutterStage.  You should never">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </function>
+      <method name="set_color"
+              c:identifier="clutter_stage_set_color"
+              doc="Sets the stage color.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color"
+              c:identifier="clutter_stage_get_color"
+              doc="Retrieves the stage color.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_perspective"
+              c:identifier="clutter_stage_set_perspective"
+              doc="Sets the stage perspective.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="perspective" transfer-ownership="none">
+            <type name="Perspective" c:type="ClutterPerspective*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_perspective"
+              c:identifier="clutter_stage_get_perspective"
+              doc="Retrieves the stage perspective.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="perspective" transfer-ownership="none">
+            <type name="Perspective" c:type="ClutterPerspective*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fullscreen"
+              c:identifier="clutter_stage_set_fullscreen"
+              doc="Asks to place the stage window in the fullscreen or unfullscreen
+states.
+Note that you shouldn&apos;t assume the window is definitely full screen
+afterward, because other entities (e.g. the user or window manager)
+could unfullscreen it again, and not all window managers honor
+requests to fullscreen windows.
+If you want to receive notification of the fullscreen state you
+should either use the #ClutterStage::fullscreen and
+#ClutterStage::unfullscreen signals, or use the notify signal
+for the #ClutterStage:fullscreen-set property"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fullscreen" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fullscreen"
+              c:identifier="clutter_stage_get_fullscreen"
+              doc="Retrieves whether the stage is full screen or not"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="show_cursor"
+              c:identifier="clutter_stage_show_cursor"
+              doc="Shows the cursor on the stage window">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="hide_cursor"
+              c:identifier="clutter_stage_hide_cursor"
+              doc="Makes the cursor invisible on the stage window"
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_actor_at_pos"
+              c:identifier="clutter_stage_get_actor_at_pos"
+              doc="Checks the scene at the coordinates @x and @y and returns a pointer
+to the #ClutterActor at those coordinates.
+By using @pick_mode it is possible to control which actors will be
+painted and thus available.
+if any">
+        <return-value transfer-ownership="none"
+                      doc="the actor at the specified coordinates,">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pick_mode" transfer-ownership="none">
+            <type name="PickMode" c:type="ClutterPickMode"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_pixels"
+              c:identifier="clutter_stage_read_pixels"
+              doc="Makes a screenshot of the stage in RGBA 8bit data, returns a
+linear buffer with @width * 4 as rowstride.
+The alpha data contained in the returned buffer is driver-dependent,
+and not guaranteed to hold any sensible value.
+or %NULL if the read failed. Use g_free() on the returned data
+to release the resources it has allocated.">
+        <return-value transfer-ownership="full">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="width"
+                     transfer-ownership="none"
+                     doc=" entire stage width">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height"
+                     transfer-ownership="none"
+                     doc=" entire stage height">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="event"
+              c:identifier="clutter_stage_event"
+              doc="This function is used to emit an event on the main stage.
+You should rarely need to use this function, except for
+synthetised events."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_title" c:identifier="clutter_stage_set_title">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_title" c:identifier="clutter_stage_get_title">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_user_resizable"
+              c:identifier="clutter_stage_set_user_resizable"
+              doc="Sets if the stage is resizable by user interaction (e.g. via
+window manager controls)"
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resizable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_user_resizable"
+              c:identifier="clutter_stage_get_user_resizable"
+              doc="Retrieves the value set with clutter_stage_set_user_resizable()."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_use_fog"
+              c:identifier="clutter_stage_set_use_fog"
+              doc="Sets whether the depth cueing effect on the stage should be enabled
+or not.
+Depth cueing is a 3D effect that makes actors farther away from the
+viewing point less opaque, by fading them with the stage color.
+The parameters of the GL fog used can be changed using the
+clutter_stage_set_fog() function."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fog" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_fog"
+              c:identifier="clutter_stage_get_use_fog"
+              doc="Gets whether the depth cueing effect is enabled on @stage."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_fog"
+              c:identifier="clutter_stage_set_fog"
+              doc="Sets the fog (also known as &quot;depth cueing&quot;) settings for the @stage.
+A #ClutterStage will only use a linear fog progression, which
+depends solely on the distance from the viewer. The cogl_set_fog()
+function in COGL exposes more of the underlying implementation,
+and allows changing the for progression function. It can be directly
+used by disabling the #ClutterStage:use-fog property and connecting
+a signal handler to the #ClutterActor::paint signal on the @stage,
+like:
+|[
+clutter_stage_set_use_fog (stage, FALSE);
+g_signal_connect (stage, &quot;paint&quot;, G_CALLBACK (on_stage_paint), NULL);
+]|
+The paint signal handler will call cogl_set_fog() with the
+desired settings:
+|[
+static void
+on_stage_paint (ClutterActor *actor)
+{
+ClutterColor stage_color = { 0, };
+CoglColor fog_color = { 0, };
+/&amp;ast; set the fog color to the stage background color &amp;ast;/
+clutter_stage_get_color (CLUTTER_STAGE (actor), &amp;amp;stage_color);
+cogl_color_set_from_4ub (&amp;amp;fog_color,
+stage_color.red,
+stage_color.green,
+stage_color.blue,
+stage_color.alpha);
+/&amp;ast; enable fog &amp;ast;/
+cogl_set_fog (&amp;amp;fog_color,
+COGL_FOG_MODE_EXPONENTIAL, /&amp;ast; mode &amp;ast;/
+0.5,                       /&amp;ast; density &amp;ast;/
+5.0, 30.0);                /&amp;ast; z_near and z_far &amp;ast;/
+}
+]|
+unmultiplied alpha colors. By default Cogl will premultiply textures
+and cogl_set_source_color will premultiply colors, so unless you
+explicitly load your textures requesting an unmultiplied
+internal_format and use cogl_material_set_color you can only use
+fogging with fully opaque actors.
+We can look to improve this in the future when we can depend on
+fragment shaders."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fog" transfer-ownership="none">
+            <type name="Fog" c:type="ClutterFog*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fog"
+              c:identifier="clutter_stage_get_fog"
+              doc="Retrieves the current depth cueing settings from the stage."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fog" transfer-ownership="none">
+            <type name="Fog" c:type="ClutterFog*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_key_focus"
+              c:identifier="clutter_stage_set_key_focus"
+              doc="Sets the key focus on @actor. An actor with key focus will receive
+all the key events. If @actor is %NULL, the stage will receive
+focus."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the actor to set key focus to, or %NULL">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_key_focus"
+              c:identifier="clutter_stage_get_key_focus"
+              doc="Retrieves the actor that is currently under key focus."
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="the actor with key focus, or the stage">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="ensure_current"
+              c:identifier="clutter_stage_ensure_current"
+              doc="This function essentially makes sure the right GL context is
+current for the passed stage. It is not intended to
+be used by applications."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="queue_redraw"
+              c:identifier="clutter_stage_queue_redraw"
+              doc="Queues a redraw for the passed stage.
+&lt;note&gt;Applications should call clutter_actor_queue_redraw() and not
+this function.&lt;/note&gt;
+&lt;note&gt;This function is just a wrapper for clutter_actor_queue_redraw()
+and should probably go away.&lt;/note&gt;"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_default"
+              c:identifier="clutter_stage_is_default"
+              doc="Checks if @stage is the default stage, or an instance created using
+clutter_stage_new() but internally using the same implementation."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="ensure_viewport"
+              c:identifier="clutter_stage_ensure_viewport"
+              doc="Ensures that the GL viewport is updated with the current
+stage window size.
+This function will queue a redraw of @stage.
+This function should not be called by applications; it is used
+when embedding a #ClutterStage into a toolkit with another
+windowing system, like GTK+."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="ensure_redraw"
+              c:identifier="clutter_stage_ensure_redraw"
+              doc="Ensures that @stage is redrawn
+used when embedding a #ClutterStage into a toolkit with
+another windowing system, like GTK+."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_throttle_motion_events"
+              c:identifier="clutter_stage_set_throttle_motion_events"
+              doc="Sets whether motion events received between redraws should
+be throttled or not. If motion events are throttled, those
+events received by the windowing system between redraws will
+be compressed so that only the last event will be propagated
+to the @stage and its actors.
+This function should only be used if you want to have all
+the motion events delivered to your application code."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="throttle" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_throttle_motion_events"
+              c:identifier="clutter_stage_get_throttle_motion_events"
+              doc="Retrieves the value set with clutter_stage_set_throttle_motion_events()
+and %FALSE otherwise"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_use_alpha"
+              c:identifier="clutter_stage_set_use_alpha"
+              doc="Sets whether the @stage should honour the #ClutterActor:opacity and
+the alpha channel of the #ClutterStage:color"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_alpha"
+                     transfer-ownership="none"
+                     doc=" alpha channel of the stage color">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_alpha"
+              c:identifier="clutter_stage_get_use_alpha"
+              doc="Retrieves the value set using clutter_stage_set_use_alpha()
+alpha channel of the stage color"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_minimum_size"
+              c:identifier="clutter_stage_set_minimum_size"
+              doc="Sets the minimum size for a stage window, if the default backend
+uses #ClutterStage inside a window
+This is a convenience function, and it is equivalent to setting the
+#ClutterActor:min-width and #ClutterActor:min-height on @stage
+If the current size of @stage is smaller than the minimum size, the
+This function has no effect if @stage is fullscreen"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_minimum_size"
+              c:identifier="clutter_stage_get_minimum_size"
+              doc="Retrieves the minimum size for a stage window as set using
+clutter_stage_set_minimum_size().
+The returned size may not correspond to the actual minimum size and
+it is specific to the #ClutterStage implementation inside the
+Clutter backend"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the minimum width, in pixels, or %NULL">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the minimum height, in pixels, or %NULL">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="color" writable="1" doc="The color of the main stage.">
+        <type name="Color" c:type="ClutterColor"/>
+      </property>
+      <property name="cursor-visible"
+                writable="1"
+                doc="Whether the mouse pointer should be visible">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="fog"
+                version="1.0"
+                writable="1"
+                doc="The settings for the GL &quot;fog&quot;, used only if #ClutterStage:use-fog
+is set to %TRUE">
+        <type name="Fog" c:type="ClutterFog"/>
+      </property>
+      <property name="fullscreen-set">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="key-focus"
+                version="1.2"
+                writable="1"
+                doc="The #ClutterActor that will receive key events from the underlying
+windowing system.
+If %NULL, the #ClutterStage will receive the events.">
+        <type name="Actor" c:type="ClutterActor"/>
+      </property>
+      <property name="offscreen"
+                writable="1"
+                doc="Whether the stage should be rendered in an offscreen buffer.
+&lt;warning&gt;&lt;para&gt;Not every backend supports redirecting the
+stage to an offscreen buffer. This property might not work
+and it might be deprecated at any later date.&lt;/para&gt;&lt;/warning&gt;">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="perspective"
+                version="0.8.2"
+                writable="1"
+                doc="The parameters used for the perspective projection from 3D
+coordinates to 2D">
+        <type name="Perspective" c:type="ClutterPerspective"/>
+      </property>
+      <property name="title"
+                version="0.4"
+                writable="1"
+                doc="The stage&apos;s title - usually displayed in stage windows title decorations.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="use-alpha"
+                version="1.2"
+                writable="1"
+                doc="Whether the #ClutterStage should honour the alpha component of the
+#ClutterStage:color property when painting. If Clutter is run under
+a compositing manager this will result in the stage being blended
+with the underlying window(s)">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="use-fog"
+                version="0.6"
+                writable="1"
+                doc="Whether the stage should use a linear GL &quot;fog&quot; in creating the
+depth-cueing effect, to enhance the perception of depth by fading
+actors farther from the viewpoint.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="user-resizable"
+                version="0.4"
+                writable="1"
+                doc="Whether the stage is resizable via user interaction.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Group" c:type="ClutterGroup"/>
+      </field>
+      <field name="priv">
+        <type name="StagePrivate" c:type="ClutterStagePrivate*"/>
+      </field>
+      <glib:signal name="activate">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="deactivate">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="delete-event"
+                   doc="The ::delete-event signal is emitted when the user closes a
+#ClutterStage window using the window controls.
+Clutter by default will call clutter_main_quit() if @stage is
+the default stage, and clutter_actor_destroy() for any other
+stage.
+It is possible to override the default behaviour by connecting
+a new handler and returning %TRUE there.
+&lt;note&gt;This signal is emitted only on Clutter backends that
+embed #ClutterStage in native windows. It is not emitted for
+backends that use a static frame buffer.&lt;/note&gt;"
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="fullscreen">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unfullscreen">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="StageClass"
+            c:type="ClutterStageClass"
+            glib:is-gtype-struct-for="Stage"
+            doc="The #ClutterStageClass structure contains only private data"
+            version="0.1">
+      <field name="parent_class">
+        <type name="GroupClass" c:type="ClutterGroupClass"/>
+      </field>
+      <field name="fullscreen">
+        <callback name="fullscreen" c:type="fullscreen">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unfullscreen">
+        <callback name="unfullscreen" c:type="unfullscreen">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate">
+        <callback name="activate" c:type="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="deactivate">
+        <callback name="deactivate" c:type="deactivate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_event">
+        <callback name="delete_event" c:type="delete_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Event" c:type="ClutterEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_padding_dummy">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="31">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="StageManager"
+           c:type="ClutterStageManager"
+           doc="The #ClutterStageManager structure is private."
+           version="1.0"
+           parent="GObject.Object"
+           glib:type-name="ClutterStageManager"
+           glib:get-type="clutter_stage_manager_get_type"
+           glib:type-struct="StageManagerClass">
+      <function name="get_default"
+                c:identifier="clutter_stage_manager_get_default"
+                doc="Returns the default #ClutterStageManager.
+object is owned by Clutter and you should not reference or unreference it."
+                version="0.8">
+        <return-value transfer-ownership="none"
+                      doc="the default stage manager instance. The returned">
+          <type name="StageManager" c:type="ClutterStageManager*"/>
+        </return-value>
+      </function>
+      <method name="get_default_stage"
+              c:identifier="clutter_stage_manager_get_default_stage"
+              doc="Returns the default #ClutterStage.
+is owned by Clutter and you should never reference or unreference it"
+              version="0.8">
+        <return-value transfer-ownership="none"
+                      doc="the default stage. The returned object">
+          <type name="Stage" c:type="ClutterStage*"/>
+        </return-value>
+      </method>
+      <method name="list_stages"
+              c:identifier="clutter_stage_manager_list_stages"
+              doc="Lists all currently used stages.
+allocated list of #ClutterStage objects. Use g_slist_free() to
+deallocate it when done."
+              version="0.8">
+        <return-value transfer-ownership="container" doc="a newly">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Stage"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="peek_stages"
+              c:identifier="clutter_stage_manager_peek_stages"
+              doc="Lists all currently used stages.
+to the internal list of #ClutterStage objects. The returned list
+is owned by the #ClutterStageManager and should never be modified
+or freed"
+              version="1.0">
+        <return-value transfer-ownership="none" doc="a pointer">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Stage"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="set_default_stage"
+              c:identifier="clutter_stage_manager_set_default_stage"
+              doc="Sets @stage as the default stage."
+              version="0.8"
+              deprecated="Calling this function has no effect"
+              deprecated-version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <type name="Stage" c:type="ClutterStage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="default-stage"
+                version="0.8"
+                doc="The default stage used by Clutter.">
+        <type name="Stage" c:type="ClutterStage"/>
+      </property>
+      <glib:signal name="stage-added"
+                   doc="The ::stage-added signal is emitted each time a new #ClutterStage
+has been added to the stage manager."
+                   version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <type name="Stage" c:type="ClutterStage"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="stage-removed"
+                   doc="The ::stage-removed signal is emitted each time a #ClutterStage
+has been removed from the stage manager."
+                   version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <type name="Stage" c:type="ClutterStage"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="StageManagerClass"
+            c:type="ClutterStageManagerClass"
+            glib:is-gtype-struct-for="StageManager"
+            doc="The #ClutterStageManagerClass structure contains only private data
+and should be accessed using the provided API"
+            version="1.0">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="stage_added">
+        <callback name="stage_added" c:type="stage_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_manager" transfer-ownership="none">
+              <type name="StageManager" c:type="ClutterStageManager*"/>
+            </parameter>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stage_removed">
+        <callback name="stage_removed" c:type="stage_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_manager" transfer-ownership="none">
+              <type name="StageManager" c:type="ClutterStageManager*"/>
+            </parameter>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="StagePrivate" c:type="ClutterStagePrivate">
+    </record>
+    <bitfield name="StageState"
+              doc="Stage state masks"
+              version="0.4"
+              glib:type-name="ClutterStageState"
+              glib:get-type="clutter_stage_state_get_type"
+              c:type="ClutterStageState">
+      <member name="fullscreen"
+              value="2"
+              c:identifier="CLUTTER_STAGE_STATE_FULLSCREEN"
+              glib:nick="fullscreen"/>
+      <member name="offscreen"
+              value="4"
+              c:identifier="CLUTTER_STAGE_STATE_OFFSCREEN"
+              glib:nick="offscreen"/>
+      <member name="activated"
+              value="8"
+              c:identifier="CLUTTER_STAGE_STATE_ACTIVATED"
+              glib:nick="activated"/>
+    </bitfield>
+    <record name="StageStateEvent"
+            c:type="ClutterStageStateEvent"
+            doc="Event signalling a change in the #ClutterStage state."
+            version="0.2">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="changed_mask" writable="1">
+        <type name="StageState" c:type="ClutterStageState"/>
+      </field>
+      <field name="new_state" writable="1">
+        <type name="StageState" c:type="ClutterStageState"/>
+      </field>
+    </record>
+    <interface name="StageWindow"
+               c:type="ClutterStageWindow"
+               glib:type-name="ClutterStageWindow"
+               glib:get-type="clutter_stage_window_get_type"
+               glib:type-struct="StageWindowIface">
+      <virtual-method name="get_wrapper">
+        <return-value transfer-ownership="full">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_title">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_fullscreen">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_fullscreen" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_cursor_visible">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cursor_visible" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_user_resizable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_resizable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="realize">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unrealize">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="show">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="do_raise" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="hide">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="resize">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_geometry">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry" transfer-ownership="none">
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_pending_swaps">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="add_redraw_clip">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage_rectangle" transfer-ownership="none">
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="has_redraw_clips">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="ignoring_redraw_clips">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+    </interface>
+    <record name="StageWindowIface"
+            c:type="ClutterStageWindowIface"
+            glib:is-gtype-struct-for="StageWindow">
+      <field name="parent_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_wrapper">
+        <callback name="get_wrapper" c:type="get_wrapper">
+          <return-value transfer-ownership="full">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_title">
+        <callback name="set_title" c:type="set_title">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="title" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_fullscreen">
+        <callback name="set_fullscreen" c:type="set_fullscreen">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="is_fullscreen" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_cursor_visible">
+        <callback name="set_cursor_visible" c:type="set_cursor_visible">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="cursor_visible" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_user_resizable">
+        <callback name="set_user_resizable" c:type="set_user_resizable">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="is_resizable" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="realize">
+        <callback name="realize" c:type="realize">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unrealize">
+        <callback name="unrealize" c:type="unrealize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="show">
+        <callback name="show" c:type="show">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="do_raise" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="hide">
+        <callback name="hide" c:type="hide">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="resize">
+        <callback name="resize" c:type="resize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_geometry">
+        <callback name="get_geometry" c:type="get_geometry">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="geometry" transfer-ownership="none">
+              <type name="Geometry" c:type="ClutterGeometry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_pending_swaps">
+        <callback name="get_pending_swaps" c:type="get_pending_swaps">
+          <return-value transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_redraw_clip">
+        <callback name="add_redraw_clip" c:type="add_redraw_clip">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="stage_rectangle" transfer-ownership="none">
+              <type name="Geometry" c:type="ClutterGeometry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="has_redraw_clips">
+        <callback name="has_redraw_clips" c:type="has_redraw_clips">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ignoring_redraw_clips">
+        <callback name="ignoring_redraw_clips" c:type="ignoring_redraw_clips">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <constant name="StickyKeys_Enable" value="65141">
+      <type name="int"/>
+    </constant>
+    <constant name="Super_L" value="65515">
+      <type name="int"/>
+    </constant>
+    <constant name="Super_R" value="65516">
+      <type name="int"/>
+    </constant>
+    <constant name="Sys_Req" value="65301">
+      <type name="int"/>
+    </constant>
+    <constant name="T" value="84">
+      <type name="int"/>
+    </constant>
+    <constant name="THORN" value="222">
+      <type name="int"/>
+    </constant>
+    <constant name="Tab" value="65289">
+      <type name="int"/>
+    </constant>
+    <constant name="Tabovedot" value="16785002">
+      <type name="int"/>
+    </constant>
+    <constant name="Tcaron" value="427">
+      <type name="int"/>
+    </constant>
+    <constant name="Tcedilla" value="478">
+      <type name="int"/>
+    </constant>
+    <constant name="Terminate_Server" value="65237">
+      <type name="int"/>
+    </constant>
+    <class name="Text"
+           c:type="ClutterText"
+           doc="The #ClutterText struct contains only private data."
+           version="1.0"
+           parent="Actor"
+           glib:type-name="ClutterText"
+           glib:get-type="clutter_text_get_type"
+           glib:type-struct="TextClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_text_new"
+                   doc="Creates a new #ClutterText actor. This actor can be used to
+display and edit text."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Text" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="clutter_text_new_full"
+                   doc="Creates a new #ClutterText actor, using @font_name as the font
+description; @text will be used to set the contents of the actor;
+and @color will be used as the color to render @text.
+This function is equivalent to calling clutter_text_new(),
+clutter_text_set_font_name(), clutter_text_set_text() and
+clutter_text_set_color()."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Text" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_text"
+                   c:identifier="clutter_text_new_with_text"
+                   doc="Creates a new #ClutterText actor, using @font_name as the font
+description; @text will be used to set the contents of the actor.
+This function is equivalent to calling clutter_text_new(),
+clutter_text_set_font_name(), and clutter_text_set_text()."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Text" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_text"
+              c:identifier="clutter_text_get_text"
+              doc="Retrieves a pointer to the current contents of a #ClutterText
+actor.
+If you need a copy of the contents for manipulating, either
+use g_strdup() on the returned string, or use:
+|[
+copy = clutter_text_get_chars (text, 0, -1);
+]|
+Which will return a newly allocated string.
+is owned by the #ClutterText actor and should never be
+modified or freed"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_text"
+              c:identifier="clutter_text_set_text"
+              doc="Sets the contents of a #ClutterText actor.
+If the #ClutterText:use-markup property was set to %TRUE it
+will be reset to %FALSE as a side effect. If you want to
+maintain the #ClutterText:use-markup you should use the
+clutter_text_set_markup() function instead"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text"
+                     transfer-ownership="none"
+                     doc=" empty string)">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_markup"
+              c:identifier="clutter_text_set_markup"
+              doc="Sets @markup as the contents of a #ClutterText.
+This is a convenience function for setting a string containing
+Pango markup, and it is logically equivalent to:
+|[
+clutter_text_set_text (CLUTTER_TEXT (actor), markup);
+clutter_text_set_use_markup (CLUTTER_TEXT (actor), TRUE);
+]|"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup"
+                     transfer-ownership="none"
+                     doc=" as passing &quot;&quot; (the empty string)">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color"
+              c:identifier="clutter_text_set_color"
+              doc="Sets the color of the contents of a #ClutterText actor.
+The overall opacity of the #ClutterText actor will be the
+result of the alpha value of @color and the composited
+opacity of the actor itself on the scenegraph, as returned
+by clutter_actor_get_paint_opacity()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color"
+              c:identifier="clutter_text_get_color"
+              doc="Retrieves the text color as set by clutter_text_set_color()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font_name"
+              c:identifier="clutter_text_set_font_name"
+              doc="Sets the font used by a #ClutterText. The @font_name string
+must either be %NULL, which means that the font name from the
+default #ClutterBackend will be used; or be something that can
+be parsed by the pango_font_description_from_string() function,
+like:
+|[
+clutter_text_set_font_name (text, &quot;Sans 10pt&quot;);
+clutter_text_set_font_name (text, &quot;Serif 16px&quot;);
+clutter_text_set_font_name (text, &quot;Helvetica 10&quot;);
+]|"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font_name"
+              c:identifier="clutter_text_get_font_name"
+              doc="Retrieves the font name as set by clutter_text_set_font_name().
+string is owned by the #ClutterText actor and should not be
+modified or freed"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_font_description"
+              c:identifier="clutter_text_set_font_description"
+              doc="Sets @font_desc as the font description for a #ClutterText
+The #PangoFontDescription is copied by the #ClutterText actor
+so you can safely call pango_font_description_free() on it after
+calling this function."
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_desc" transfer-ownership="none">
+            <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font_description"
+              c:identifier="clutter_text_get_font_description"
+              doc="Retrieves the #PangoFontDescription used by @self
+by the #ClutterText actor and it should not be modified or freed"
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="set_ellipsize"
+              c:identifier="clutter_text_set_ellipsize"
+              doc="text if there is not enough space to render the entire contents
+of a #ClutterText actor"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ellipsize"
+              c:identifier="clutter_text_get_ellipsize"
+              doc="Returns the ellipsizing position of a #ClutterText actor, as
+set by clutter_text_set_ellipsize()."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </method>
+      <method name="set_line_wrap"
+              c:identifier="clutter_text_set_line_wrap"
+              doc="Sets whether the contents of a #ClutterText actor should wrap,
+if they don&apos;t fit the size assigned to the actor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="line_wrap" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_wrap"
+              c:identifier="clutter_text_get_line_wrap"
+              doc="Retrieves the value set using clutter_text_set_line_wrap().
+its contents"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_line_wrap_mode"
+              c:identifier="clutter_text_set_line_wrap_mode"
+              doc="If line wrapping is enabled (see clutter_text_set_line_wrap()) this
+function controls how the line wrapping is performed. The default is
+%PANGO_WRAP_WORD which means wrap on word boundaries."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrap_mode" transfer-ownership="none">
+            <type name="Pango.WrapMode" c:type="PangoWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_wrap_mode"
+              c:identifier="clutter_text_get_line_wrap_mode"
+              doc="Retrieves the line wrap mode used by the #ClutterText actor.
+See clutter_text_set_line_wrap_mode ()."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Pango.WrapMode" c:type="PangoWrapMode"/>
+        </return-value>
+      </method>
+      <method name="get_layout"
+              c:identifier="clutter_text_get_layout"
+              doc="Retrieves the current #PangoLayout used by a #ClutterText actor.
+the #ClutterText actor and should not be modified or freed"
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="a #PangoLayout. The returned object is owned by">
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="set_attributes"
+              c:identifier="clutter_text_set_attributes"
+              doc="Sets the attributes list that are going to be applied to the
+#ClutterText contents.
+The #ClutterText actor will take a reference on the #PangoAttrList
+passed to this function."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attrs" transfer-ownership="none">
+            <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attributes"
+              c:identifier="clutter_text_get_attributes"
+              doc="Gets the attribute list that was set on the #ClutterText actor
+clutter_text_set_attributes(), if any.
+returned value is owned by the #ClutterText and should not be unreferenced."
+              version="1.0">
+        <return-value transfer-ownership="none"
+                      doc="the attribute list, or %NULL if none was set. The">
+          <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+        </return-value>
+      </method>
+      <method name="set_use_markup"
+              c:identifier="clutter_text_set_use_markup"
+              doc="Sets whether the contents of the #ClutterText actor contains markup
+in &lt;link linkend=&quot;PangoMarkupFormat&quot;&gt;Pango&apos;s text markup language&lt;/link&gt;.
+Setting #ClutterText:use-markup on an editable #ClutterText will
+make the actor discard any markup."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_markup"
+              c:identifier="clutter_text_get_use_markup"
+              doc="Retrieves whether the contents of the #ClutterText actor should be
+parsed for the Pango text markup."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_line_alignment"
+              c:identifier="clutter_text_set_line_alignment"
+              doc="Sets the way that the lines of a wrapped label are aligned with
+respect to each other. This does not affect the overall alignment
+of the label within its allocated or specified width.
+To align a #ClutterText actor you should add it to a container
+that supports alignment, or use the anchor point."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alignment" transfer-ownership="none">
+            <type name="Pango.Alignment" c:type="PangoAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_alignment"
+              c:identifier="clutter_text_get_line_alignment"
+              doc="Retrieves the alignment of a #ClutterText, as set by
+clutter_text_set_line_alignment()."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Pango.Alignment" c:type="PangoAlignment"/>
+        </return-value>
+      </method>
+      <method name="set_justify"
+              c:identifier="clutter_text_set_justify"
+              doc="Sets whether the text of the #ClutterText actor should be justified
+on both margins. This setting is ignored if Clutter is compiled
+against Pango &amp;lt; 1.18."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="justify" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_justify"
+              c:identifier="clutter_text_get_justify"
+              doc="Retrieves whether the #ClutterText actor should justify its contents
+on both margins."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="insert_unichar"
+              c:identifier="clutter_text_insert_unichar"
+              doc="Inserts @wc at the current cursor position of a
+#ClutterText actor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wc" transfer-ownership="none">
+            <type name="GLib.unichar" c:type="gunichar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_chars"
+              c:identifier="clutter_text_delete_chars"
+              doc="Deletes @n_chars inside a #ClutterText actor, starting from the
+current cursor position."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_chars" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_text"
+              c:identifier="clutter_text_insert_text"
+              doc="Inserts @text into a #ClutterActor at the given position.
+If @position is a negative number, the text will be appended
+at the end of the current contents of the #ClutterText.
+The position is expressed in characters, not in bytes."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_text"
+              c:identifier="clutter_text_delete_text"
+              doc="Deletes the text inside a #ClutterText actor between @start_pos
+and @end_pos.
+The starting and ending positions are expressed in characters,
+not in bytes."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_chars"
+              c:identifier="clutter_text_get_chars"
+              doc="Retrieves the contents of the #ClutterText actor between
+The positions are specified in characters, not in bytes.
+the text actor between the specified positions. Use g_free()
+to free the resources when done"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_editable"
+              c:identifier="clutter_text_set_editable"
+              doc="Sets whether the #ClutterText actor should be editable.
+An editable #ClutterText with key focus set using
+clutter_actor_grab_key_focus() or clutter_stage_take_key_focus()
+will receive key events and will update its contents accordingly."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="editable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_editable"
+              c:identifier="clutter_text_get_editable"
+              doc="Retrieves whether a #ClutterText is editable or not."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_activatable"
+              c:identifier="clutter_text_set_activatable"
+              doc="Sets whether a #ClutterText actor should be activatable.
+An activatable #ClutterText actor will emit the #ClutterText::activate
+signal whenever the &apos;Enter&apos; (or &apos;Return&apos;) key is pressed; if it is not
+activatable, a new line will be appended to the current content.
+An activatable #ClutterText must also be set as editable using
+clutter_text_set_editable()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="activatable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_activatable"
+              c:identifier="clutter_text_get_activatable"
+              doc="Retrieves whether a #ClutterText is activatable or not."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_cursor_position"
+              c:identifier="clutter_text_get_cursor_position"
+              doc="Retrieves the cursor position."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_cursor_position"
+              c:identifier="clutter_text_set_cursor_position"
+              doc="Sets the cursor of a #ClutterText actor at @position.
+The position is expressed in characters, not in bytes."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_visible"
+              c:identifier="clutter_text_set_cursor_visible"
+              doc="Sets whether the cursor of a #ClutterText actor should be
+visible or not.
+The color of the cursor will be the same as the text color
+unless clutter_text_set_cursor_color() has been called.
+The size of the cursor can be set using clutter_text_set_cursor_size().
+The position of the cursor can be changed programmatically using
+clutter_text_set_cursor_position()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cursor_visible" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cursor_visible"
+              c:identifier="clutter_text_get_cursor_visible"
+              doc="Retrieves whether the cursor of a #ClutterText actor is visible."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_cursor_color"
+              c:identifier="clutter_text_set_cursor_color"
+              doc="Sets the color of the cursor of a #ClutterText actor.
+If @color is %NULL, the cursor color will be the same as the
+text color."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cursor_color"
+              c:identifier="clutter_text_get_cursor_color"
+              doc="Retrieves the color of the cursor of a #ClutterText actor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_size"
+              c:identifier="clutter_text_set_cursor_size"
+              doc="Sets the size of the cursor of a #ClutterText. The cursor
+will only be visible if the #ClutterText:cursor-visible property
+is set to %TRUE."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size"
+                     transfer-ownership="none"
+                     doc=" default value">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cursor_size"
+              c:identifier="clutter_text_get_cursor_size"
+              doc="Retrieves the size of the cursor of a #ClutterText actor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_selectable"
+              c:identifier="clutter_text_set_selectable"
+              doc="Sets whether a #ClutterText actor should be selectable.
+A selectable #ClutterText will allow selecting its contents using
+the pointer or the keyboard."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="selectable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selectable"
+              c:identifier="clutter_text_get_selectable"
+              doc="Retrieves whether a #ClutterText is selectable or not."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_selection_bound"
+              c:identifier="clutter_text_set_selection_bound"
+              doc="Sets the other end of the selection, starting from the current
+cursor position.
+If @selection_bound is -1, the selection unset."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection_bound" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selection_bound"
+              c:identifier="clutter_text_get_selection_bound"
+              doc="Retrieves the other end of the selection of a #ClutterText actor,
+in characters from the current cursor position."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_selection"
+              c:identifier="clutter_text_set_selection"
+              doc="Selects the region of text between @start_pos and @end_pos.
+This function changes the position of the cursor to match"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selection"
+              c:identifier="clutter_text_get_selection"
+              doc="Retrieves the currently selected text.
+selected text, or %NULL. Use g_free() to free the returned
+string."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_selection_color"
+              c:identifier="clutter_text_set_selection_color"
+              doc="Sets the color of the selection of a #ClutterText actor.
+If @color is %NULL, the selection color will be the same as the
+cursor color, or if no cursor color is set either then it will be
+the same as the text color."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selection_color"
+              c:identifier="clutter_text_get_selection_color"
+              doc="Retrieves the color of the selection of a #ClutterText actor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_selection"
+              c:identifier="clutter_text_delete_selection"
+              doc="Deletes the currently selected text
+This function is only useful in subclasses of #ClutterText
+is empty, and %FALSE otherwise"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_password_char"
+              c:identifier="clutter_text_set_password_char"
+              doc="Sets the character to use in place of the actual text in a
+password text actor.
+If @wc is 0 the text will be displayed as it is entered in the
+#ClutterText actor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wc" transfer-ownership="none">
+            <type name="GLib.unichar" c:type="gunichar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_password_char"
+              c:identifier="clutter_text_get_password_char"
+              doc="Retrieves the character to use in place of the actual text
+as set by clutter_text_set_password_char().
+character is not set"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="GLib.unichar" c:type="gunichar"/>
+        </return-value>
+      </method>
+      <method name="set_max_length"
+              c:identifier="clutter_text_set_max_length"
+              doc="Sets the maximum allowed length of the contents of the actor. If the
+current contents are longer than the given length, then they will be
+truncated to fit."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max"
+                     transfer-ownership="none"
+                     doc=" to disable or -1 to set the length of the current string">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_max_length"
+              c:identifier="clutter_text_get_max_length"
+              doc="Gets the maximum length of text that can be set into a text actor.
+See clutter_text_set_max_length()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_single_line_mode"
+              c:identifier="clutter_text_set_single_line_mode"
+              doc="Sets whether a #ClutterText actor should be in single line mode
+or not.
+A text actor in single line mode will not wrap text and will clip
+the the visible area to the predefined size. The contents of the
+text actor will scroll to display the end of the text if its length
+is bigger than the allocated width.
+When setting the single line mode the #ClutterText:activatable
+property is also set as a side effect. Instead of entering a new
+line character, the text actor will emit the #ClutterText::activate
+signal."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="single_line" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_single_line_mode"
+              c:identifier="clutter_text_get_single_line_mode"
+              doc="Retrieves whether the #ClutterText actor is in single line mode."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="activate"
+              c:identifier="clutter_text_activate"
+              doc="Emits the #ClutterText::activate signal, if @self has been set
+as activatable using clutter_text_set_activatable().
+This function can be used to emit the ::activate signal inside
+a #ClutterActor::captured-event or #ClutterActor::key-press-event
+signal handlers before the default signal handler for the
+#ClutterText is invoked.
+and %FALSE otherwise"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="position_to_coords"
+              c:identifier="clutter_text_position_to_coords"
+              doc="Retrieves the coordinates of the given @position."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="line_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_preedit_string"
+              c:identifier="clutter_text_set_preedit_string"
+              doc="Sets, or unsets, the pre-edit string. This function is useful
+for input methods to display a string (with eventual specific
+Pango attributes) before it is entered inside the #ClutterText
+buffer.
+The preedit string and attributes are ignored if the #ClutterText
+actor is not editable.
+This function should not be used by applications"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="preedit_str"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the pre-edit string, or %NULL to unset it">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="preedit_attrs"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the pre-edit string attributes">
+            <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+          </parameter>
+          <parameter name="cursor_pos" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="activatable"
+                version="1.0"
+                writable="1"
+                doc="Toggles whether return invokes the activate signal or not.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="attributes"
+                version="1.0"
+                writable="1"
+                doc="A list of #PangoStyleAttribute&lt;!-- --&gt;s to be applied to the
+contents of the #ClutterText actor.">
+        <type name="Pango.AttrList" c:type="PangoAttrList"/>
+      </property>
+      <property name="color"
+                version="1.0"
+                writable="1"
+                doc="The color used to render the text.">
+        <type name="Color" c:type="ClutterColor"/>
+      </property>
+      <property name="cursor-color"
+                version="1.0"
+                writable="1"
+                doc="The color of the cursor.">
+        <type name="Color" c:type="ClutterColor"/>
+      </property>
+      <property name="cursor-color-set"
+                version="1.0"
+                doc="Will be set to %TRUE if #ClutterText:cursor-color has been set.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="cursor-size"
+                version="1.0"
+                writable="1"
+                doc="The size of the cursor, in pixels. If set to -1 the size used will
+be the default cursor size of 2 pixels.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="cursor-visible"
+                version="1.0"
+                writable="1"
+                doc="Whether the input cursor is visible or not, it will only be visible
+if both #ClutterText:cursor-visible and #ClutterText:editable are
+set to %TRUE.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="editable"
+                version="1.0"
+                writable="1"
+                doc="Whether key events delivered to the actor causes editing.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="ellipsize"
+                version="1.0"
+                writable="1"
+                doc="The preferred place to ellipsize the contents of the #ClutterText actor">
+        <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+      </property>
+      <property name="font-description"
+                version="1.2"
+                writable="1"
+                doc="The #PangoFontDescription that should be used by the #ClutterText
+If you have a string describing the font then you should look at
+#ClutterText:font-name instead">
+        <type name="Pango.FontDescription" c:type="PangoFontDescription"/>
+      </property>
+      <property name="font-name"
+                version="1.0"
+                writable="1"
+                doc="The font to be used by the #ClutterText, as a string
+that can be parsed by pango_font_description_from_string().">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="justify"
+                version="1.0"
+                writable="1"
+                doc="Whether the contents of the #ClutterText should be justified
+on both margins.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="line-alignment"
+                version="1.0"
+                writable="1"
+                doc="The preferred alignment for the text. This property controls
+the alignment of multi-line paragraphs.">
+        <type name="Pango.Alignment" c:type="PangoAlignment"/>
+      </property>
+      <property name="line-wrap"
+                version="1.0"
+                writable="1"
+                doc="Whether to wrap the lines of #ClutterText:text if the contents
+exceed the available allocation. The wrapping strategy is
+controlled by the #ClutterText:line-wrap-mode property.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="line-wrap-mode"
+                version="1.0"
+                writable="1"
+                doc="If #ClutterText:line-wrap is set to %TRUE, this property will
+control how the text is wrapped.">
+        <type name="Pango.WrapMode" c:type="PangoWrapMode"/>
+      </property>
+      <property name="max-length"
+                version="1.0"
+                writable="1"
+                doc="The maximum length of the contents of the #ClutterText actor.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="password-char"
+                version="1.0"
+                writable="1"
+                doc="If non-zero, the character that should be used in place of
+the actual text in a password text actor.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="position"
+                version="1.0"
+                writable="1"
+                doc="The current input cursor position. -1 is taken to be the end of the text">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="selectable"
+                version="1.0"
+                writable="1"
+                doc="Whether it is possible to select text, either using the pointer
+or the keyboard.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="selection-bound"
+                version="1.0"
+                writable="1"
+                doc="The current input cursor position. -1 is taken to be the end of the text">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="selection-color"
+                version="1.0"
+                writable="1"
+                doc="The color of the selection.">
+        <type name="Color" c:type="ClutterColor"/>
+      </property>
+      <property name="selection-color-set"
+                version="1.0"
+                doc="Will be set to %TRUE if #ClutterText:selection-color has been set.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="single-line-mode"
+                version="1.0"
+                writable="1"
+                doc="Whether the #ClutterText actor should be in single line mode
+or not. A single line #ClutterText actor will only contain a
+single line of text, scrolling it in case its length is bigger
+than the allocated size.
+Setting this property will also set the #ClutterText:activatable
+property as a side-effect.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="text"
+                version="1.0"
+                writable="1"
+                doc="The text to render inside the actor.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="use-markup"
+                version="1.0"
+                writable="1"
+                doc="Whether the text includes Pango markup. See pango_layout_set_markup()
+in the Pango documentation.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="TextPrivate" c:type="ClutterTextPrivate*"/>
+      </field>
+      <glib:signal name="activate">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cursor-event"
+                   doc="The ::cursor-event signal is emitted whenever the cursor position
+changes inside a #ClutterText actor. Inside @geometry it is stored
+the current position and size of the cursor, relative to the actor
+itself."
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry" transfer-ownership="none">
+            <type name="Geometry" c:type="ClutterGeometry"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="delete-text"
+                   doc="This signal is emitted when text is deleted from the actor by
+the user. It is emitted before @self text changes."
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="insert-text"
+                   doc="This signal is emitted when text is inserted into the actor by
+the user. It is emitted before @self text changes."
+                   version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_text" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="new_text_length"
+                     transfer-ownership="none"
+                     doc=" new_text is nul-terminated">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="position"
+                     transfer-ownership="none"
+                     doc=" new text. this is an in-out parameter.  After the signal emission is finished, it should point after the newly inserted text.">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="text-changed"
+                   doc="The ::text-changed signal is emitted after @actor&apos;s text changes"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="TextClass"
+            c:type="ClutterTextClass"
+            glib:is-gtype-struct-for="Text"
+            doc="The #ClutterTextClass struct contains only private data."
+            version="1.0">
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="text_changed">
+        <callback name="text_changed" c:type="text_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Text" c:type="ClutterText*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate">
+        <callback name="activate" c:type="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Text" c:type="ClutterText*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cursor_event">
+        <callback name="cursor_event" c:type="cursor_event">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Text" c:type="ClutterText*"/>
+            </parameter>
+            <parameter name="geometry" transfer-ownership="none">
+              <type name="Geometry" c:type="ClutterGeometry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_reserved1">
+        <callback name="clutter_reserved1" c:type="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved2">
+        <callback name="clutter_reserved2" c:type="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved3">
+        <callback name="clutter_reserved3" c:type="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved4">
+        <callback name="clutter_reserved4" c:type="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved5">
+        <callback name="clutter_reserved5" c:type="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved6">
+        <callback name="clutter_reserved6" c:type="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved7">
+        <callback name="clutter_reserved7" c:type="_clutter_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_reserved8">
+        <callback name="clutter_reserved8" c:type="_clutter_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="TextDirection"
+                 doc="The text direction to be used by #ClutterActor&lt;!-- --&gt;s"
+                 version="1.2"
+                 glib:type-name="ClutterTextDirection"
+                 glib:get-type="clutter_text_direction_get_type"
+                 c:type="ClutterTextDirection">
+      <member name="default"
+              value="0"
+              c:identifier="CLUTTER_TEXT_DIRECTION_DEFAULT"
+              glib:nick="default"/>
+      <member name="ltr"
+              value="1"
+              c:identifier="CLUTTER_TEXT_DIRECTION_LTR"
+              glib:nick="ltr"/>
+      <member name="rtl"
+              value="2"
+              c:identifier="CLUTTER_TEXT_DIRECTION_RTL"
+              glib:nick="rtl"/>
+    </enumeration>
+    <record name="TextPrivate" c:type="ClutterTextPrivate">
+    </record>
+    <class name="Texture"
+           c:type="ClutterTexture"
+           doc="The #ClutterTexture structure contains only private data
+and should be accessed using the provided API"
+           version="0.1"
+           parent="Actor"
+           glib:type-name="ClutterTexture"
+           glib:get-type="clutter_texture_get_type"
+           glib:type-struct="TextureClass">
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_texture_new"
+                   doc="Creates a new empty #ClutterTexture object.">
+        <return-value transfer-ownership="full">
+          <type name="Texture" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_file"
+                   c:identifier="clutter_texture_new_from_file"
+                   doc="Creates a new ClutterTexture actor to display the image contained a
+file. If the image failed to load then NULL is returned and @error
+is set.
+error."
+                   version="0.8"
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Texture" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_actor"
+                   c:identifier="clutter_texture_new_from_actor"
+                   doc="Creates a new #ClutterTexture object with its source a prexisting
+actor (and associated children). The textures content will contain
+&apos;live&apos; redirected output of the actors scene.
+Note this function is intented as a utility call for uniformly applying
+shaders to groups and other potential visual effects. It requires that
+the %CLUTTER_FEATURE_OFFSCREEN feature is supported by the current backend
+and the target system.
+Some tips on usage:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;
+&lt;para&gt;The source actor must be made visible (i.e by calling
+#clutter_actor_show).&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;The source actor must have a parent in order for it to be
+allocated a size from the layouting mechanism. If the source
+actor does not have a parent when this function is called then
+the ClutterTexture will adopt it and allocate it at its
+preferred size. Using this you can clone an actor that is
+otherwise not displayed. Because of this feature if you do
+intend to display the source actor then you must make sure that
+the actor is parented before calling
+clutter_texture_new_from_actor() or that you unparent it before
+adding it to a container.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;When getting the image for the clone texture, Clutter
+will attempt to render the source actor exactly as it would
+appear if it was rendered on screen. The source actor&apos;s parent
+transformations are taken into account. Therefore if your
+source actor is rotated along the X or Y axes so that it has
+some depth, the texture will appear differently depending on
+the on-screen location of the source actor. While painting the
+source actor, Clutter will set up a temporary asymmetric
+perspective matrix as the projection matrix so that the source
+actor will be projected as if a small section of the screen was
+being viewed. Before version 0.8.2, an orthogonal identity
+projection was used which meant that the source actor would be
+clipped if any part of it was not on the zero Z-plane.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;Avoid reparenting the source with the created texture.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;A group can be padded with a transparent rectangle as to
+provide a border to contents for shader output (blurring text
+for example).&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;The texture will automatically resize to contain a further
+transformed source. However, this involves overhead and can be
+avoided by placing the source actor in a bounding group
+sized large enough to contain any child tranformations.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;Uploading pixel data to the texture (e.g by using
+clutter_actor_set_from_file()) will destroy the offscreen texture data
+and end redirection.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;cogl_texture_get_data() with the handle returned by
+clutter_texture_get_cogl_texture() can be used to read the
+offscreen texture pixels into a pixbuf.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;/itemizedlist&gt;"
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="Texture" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_from_file"
+              c:identifier="clutter_texture_set_from_file"
+              doc="Sets the #ClutterTexture image data from an image file. In case of
+failure, %FALSE is returned and @error is set.
+If #ClutterTexture:load-async is set to %TRUE, this function
+will return as soon as possible, and the actual image loading
+from disk will be performed asynchronously. #ClutterTexture::size-change
+will be emitten when the size of the texture is available and
+#ClutterTexture::load-finished will be emitted when the image has been
+loaded or if an error occurred."
+              version="0.8"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_rgb_data"
+              c:identifier="clutter_texture_set_from_rgb_data"
+              doc="Sets #ClutterTexture image data."
+              version="0.4."
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="has_alpha" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="rowstride" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="bpp"
+                     transfer-ownership="none"
+                     doc=" depending on @has_alpha)">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="TextureFlags" c:type="ClutterTextureFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_yuv_data"
+              c:identifier="clutter_texture_set_from_yuv_data"
+              doc="Sets a #ClutterTexture from YUV image data. If an error occurred,
+%FALSE is returned and @error is set."
+              version="0.4"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="TextureFlags" c:type="ClutterTextureFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_area_from_rgb_data"
+              c:identifier="clutter_texture_set_area_from_rgb_data"
+              doc="Updates a sub-region of the pixel data in a #ClutterTexture."
+              version="0.6"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="has_alpha" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="rowstride" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="bpp"
+                     transfer-ownership="none"
+                     doc=" depending on @has_alpha)">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="TextureFlags" c:type="ClutterTextureFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_base_size"
+              c:identifier="clutter_texture_get_base_size"
+              doc="Gets the size in pixels of the untransformed underlying image">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the width, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the height, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filter_quality"
+              c:identifier="clutter_texture_set_filter_quality"
+              doc="Sets the filter quality when scaling a texture. The quality is an
+enumeration currently the following values are supported:
+%CLUTTER_TEXTURE_QUALITY_LOW which is fast but only uses nearest neighbour
+interpolation. %CLUTTER_TEXTURE_QUALITY_MEDIUM which is computationally a
+bit more expensive (bilinear interpolation), and
+%CLUTTER_TEXTURE_QUALITY_HIGH which uses extra texture memory resources to
+improve scaled down rendering as well (by using mipmaps). The default value
+is %CLUTTER_TEXTURE_QUALITY_MEDIUM."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter_quality" transfer-ownership="none">
+            <type name="TextureQuality" c:type="ClutterTextureQuality"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_filter_quality"
+              c:identifier="clutter_texture_get_filter_quality">
+        <return-value transfer-ownership="full">
+          <type name="TextureQuality" c:type="ClutterTextureQuality"/>
+        </return-value>
+      </method>
+      <method name="get_cogl_texture"
+              c:identifier="clutter_texture_get_cogl_texture">
+        <return-value transfer-ownership="full">
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="set_cogl_texture"
+              c:identifier="clutter_texture_set_cogl_texture">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cogl_tex" transfer-ownership="none">
+            <type name="Cogl.Handle" c:type="CoglHandle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cogl_material"
+              c:identifier="clutter_texture_get_cogl_material"
+              doc="Returns a handle to the underlying COGL material used for drawing
+the actor. No extra reference is taken so if you need to keep the
+handle then you should call cogl_handle_ref() on it."
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="set_cogl_material"
+              c:identifier="clutter_texture_set_cogl_material"
+              doc="Replaces the underlying Cogl material drawn by this actor with
+handle is no longer needed it should be deref&apos;d with
+cogl_handle_unref. Texture data is attached to the material so
+calling this function also replaces the Cogl
+texture. #ClutterTexture requires that the material have a texture
+layer so you should set one on the material before calling this
+function."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cogl_material" transfer-ownership="none">
+            <type name="Cogl.Handle" c:type="CoglHandle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sync_size"
+              c:identifier="clutter_texture_set_sync_size"
+              doc="Sets whether @texture should have the same preferred size as the
+underlying image data."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sync_size"
+                     transfer-ownership="none"
+                     doc=" underlying image data">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sync_size"
+              c:identifier="clutter_texture_get_sync_size"
+              doc="Retrieves the value set with clutter_texture_get_sync_size()
+preferred size of the underlying image data"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_repeat"
+              c:identifier="clutter_texture_set_repeat"
+              doc="Sets whether the @texture should repeat horizontally or
+vertically when the actor size is bigger than the image size"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="repeat_x" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="repeat_y" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_repeat"
+              c:identifier="clutter_texture_get_repeat"
+              doc="Retrieves the horizontal and vertical repeat values set
+using clutter_texture_set_repeat()"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="repeat_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the horizontal repeat">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="repeat_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for the vertical repeat">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixel_format"
+              c:identifier="clutter_texture_get_pixel_format"
+              doc="Retrieves the pixel format used by @texture. This is
+equivalent to:
+|[
+handle = clutter_texture_get_pixel_format (texture);
+if (handle != COGL_INVALID_HANDLE)
+format = cogl_texture_get_format (handle);
+]|"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Cogl.PixelFormat" c:type="CoglPixelFormat"/>
+        </return-value>
+      </method>
+      <method name="get_max_tile_waste"
+              c:identifier="clutter_texture_get_max_tile_waste">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_keep_aspect_ratio"
+              c:identifier="clutter_texture_set_keep_aspect_ratio"
+              doc="Sets whether @texture should have a preferred size maintaining
+the aspect ratio of the underlying image"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="keep_aspect" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_keep_aspect_ratio"
+              c:identifier="clutter_texture_get_keep_aspect_ratio"
+              doc="Retrieves the value set using clutter_texture_get_keep_aspect_ratio()
+aspect ratio of the underlying image"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_load_async"
+              c:identifier="clutter_texture_set_load_async"
+              doc="Sets whether @texture should use a worker thread to load the data
+from disk asynchronously. Setting @load_async to %TRUE will make
+clutter_texture_set_from_file() return immediately.
+See the #ClutterTexture:load-async property documentation, and
+clutter_texture_set_load_data_async()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="load_async"
+                     transfer-ownership="none"
+                     doc=" from a filename">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_load_async"
+              c:identifier="clutter_texture_get_load_async"
+              doc="Retrieves the value set using clutter_texture_get_load_async()
+disk asynchronously"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_load_data_async"
+              c:identifier="clutter_texture_set_load_data_async"
+              doc="Sets whether @texture should use a worker thread to load the data
+from disk asynchronously. Setting @load_async to %TRUE will make
+clutter_texture_set_from_file() block until the #ClutterTexture has
+determined the width and height of the image data.
+See the #ClutterTexture:load-async property documentation, and
+clutter_texture_set_load_async()."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="load_async"
+                     transfer-ownership="none"
+                     doc=" from a filename">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_load_data_async"
+              c:identifier="clutter_texture_get_load_data_async"
+              doc="Retrieves the value set by clutter_texture_set_load_data_async()
+data from a file asynchronously"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="cogl-material" writable="1">
+        <type name="Cogl.Handle" c:type="CoglHandle"/>
+      </property>
+      <property name="cogl-texture" writable="1">
+        <type name="Cogl.Handle" c:type="CoglHandle"/>
+      </property>
+      <property name="disable-slicing" writable="1" construct-only="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="filename" readable="0" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="filter-quality" writable="1" construct="1">
+        <type name="TextureQuality" c:type="ClutterTextureQuality"/>
+      </property>
+      <property name="keep-aspect-ratio" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="load-async"
+                version="1.0"
+                readable="0"
+                writable="1"
+                doc="Tries to load a texture from a filename by using a local thread to perform
+the read operations. The initially created texture has dimensions 0x0 when
+the true size becomes available the #ClutterTexture::size-change signal is
+emitted and when the image has completed loading the
+#ClutterTexture::load-finished signal is emitted.
+Threading is only enabled if g_thread_init() has been called prior to
+clutter_init(), otherwise #ClutterTexture will use the main loop to load
+the image.
+The upload of the texture data on the GL pipeline is not asynchronous, as
+it must be performed from within the same thread that called
+clutter_main().">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="load-data-async"
+                version="1.0"
+                readable="0"
+                writable="1"
+                doc="Like #ClutterTexture:load-async but loads the width and height
+synchronously causing some blocking.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="pixel-format">
+        <type name="Cogl.PixelFormat" c:type="CoglPixelFormat"/>
+      </property>
+      <property name="repeat-x" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="repeat-y" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="sync-size" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="tile-waste">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="parent">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="TexturePrivate" c:type="ClutterTexturePrivate*"/>
+      </field>
+      <glib:signal name="load-finished"
+                   doc="The ::load-finished signal is emitted when a texture load has
+completed. If there was an error during loading, @error will
+be set, otherwise it will be %NULL"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pixbuf-change"
+                   doc="The ::pixbuf-change signal is emitted each time the pixbuf
+used by @texture changes.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="size-change"
+                   doc="The ::size-change signal is emitted each time the size of the
+pixbuf used by @texture changes.  The new size is given as
+argument to the callback.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="TextureClass"
+            c:type="ClutterTextureClass"
+            glib:is-gtype-struct-for="Texture"
+            doc="The #ClutterTextureClass structure contains only private data"
+            version="0.1">
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="size_change">
+        <callback name="size_change" c:type="size_change">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="texture" transfer-ownership="none">
+              <type name="Texture" c:type="ClutterTexture*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pixbuf_change">
+        <callback name="pixbuf_change" c:type="pixbuf_change">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="texture" transfer-ownership="none">
+              <type name="Texture" c:type="ClutterTexture*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="load_finished">
+        <callback name="load_finished" c:type="load_finished">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="texture" transfer-ownership="none">
+              <type name="Texture" c:type="ClutterTexture*"/>
+            </parameter>
+            <parameter name="error" transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_texture1">
+        <callback name="clutter_texture1" c:type="_clutter_texture1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_texture2">
+        <callback name="clutter_texture2" c:type="_clutter_texture2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_texture3">
+        <callback name="clutter_texture3" c:type="_clutter_texture3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_texture4">
+        <callback name="clutter_texture4" c:type="_clutter_texture4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_texture5">
+        <callback name="clutter_texture5" c:type="_clutter_texture5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="TextureError"
+                 doc="Error enumeration for #ClutterTexture"
+                 version="0.4"
+                 glib:type-name="ClutterTextureError"
+                 glib:get-type="clutter_texture_error_get_type"
+                 c:type="ClutterTextureError"
+                 glib:error-quark="clutter_texture_error_quark">
+      <member name="out_of_memory"
+              value="0"
+              c:identifier="CLUTTER_TEXTURE_ERROR_OUT_OF_MEMORY"
+              glib:nick="out-of-memory"/>
+      <member name="no_yuv"
+              value="1"
+              c:identifier="CLUTTER_TEXTURE_ERROR_NO_YUV"
+              glib:nick="no-yuv"/>
+      <member name="bad_format"
+              value="2"
+              c:identifier="CLUTTER_TEXTURE_ERROR_BAD_FORMAT"
+              glib:nick="bad-format"/>
+    </enumeration>
+    <bitfield name="TextureFlags"
+              doc="Flags for clutter_texture_set_from_rgb_data() and
+clutter_texture_set_from_yuv_data()."
+              version="0.4"
+              glib:type-name="ClutterTextureFlags"
+              glib:get-type="clutter_texture_flags_get_type"
+              c:type="ClutterTextureFlags">
+      <member name="none"
+              value="0"
+              c:identifier="CLUTTER_TEXTURE_NONE"
+              glib:nick="none"/>
+      <member name="rgb_flag_bgr"
+              value="2"
+              c:identifier="CLUTTER_TEXTURE_RGB_FLAG_BGR"
+              glib:nick="rgb-flag-bgr"/>
+      <member name="rgb_flag_premult"
+              value="4"
+              c:identifier="CLUTTER_TEXTURE_RGB_FLAG_PREMULT"
+              glib:nick="rgb-flag-premult"/>
+      <member name="yuv_flag_yuv2"
+              value="8"
+              c:identifier="CLUTTER_TEXTURE_YUV_FLAG_YUV2"
+              glib:nick="yuv-flag-yuv2"/>
+    </bitfield>
+    <record name="TexturePrivate" c:type="ClutterTexturePrivate">
+    </record>
+    <enumeration name="TextureQuality"
+                 doc="Enumaration controlling the texture quality."
+                 version="0.8"
+                 glib:type-name="ClutterTextureQuality"
+                 glib:get-type="clutter_texture_quality_get_type"
+                 c:type="ClutterTextureQuality">
+      <member name="low"
+              value="0"
+              c:identifier="CLUTTER_TEXTURE_QUALITY_LOW"
+              glib:nick="low"/>
+      <member name="medium"
+              value="1"
+              c:identifier="CLUTTER_TEXTURE_QUALITY_MEDIUM"
+              glib:nick="medium"/>
+      <member name="high"
+              value="2"
+              c:identifier="CLUTTER_TEXTURE_QUALITY_HIGH"
+              glib:nick="high"/>
+    </enumeration>
+    <constant name="Thai_baht" value="3551">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_bobaimai" value="3514">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_chochan" value="3496">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_chochang" value="3498">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_choching" value="3497">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_chochoe" value="3500">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_dochada" value="3502">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_dodek" value="3508">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_fofa" value="3517">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_fofan" value="3519">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_hohip" value="3531">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_honokhuk" value="3534">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_khokhai" value="3490">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_khokhon" value="3493">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_khokhuat" value="3491">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_khokhwai" value="3492">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_khorakhang" value="3494">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_kokai" value="3489">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lakkhangyao" value="3557">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lekchet" value="3575">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lekha" value="3573">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lekhok" value="3574">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lekkao" value="3577">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_leknung" value="3569">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lekpaet" value="3576">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_leksam" value="3571">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_leksi" value="3572">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_leksong" value="3570">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_leksun" value="3568">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lochula" value="3532">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_loling" value="3525">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lu" value="3526">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maichattawa" value="3563">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maiek" value="3560">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maihanakat" value="3537">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maihanakat_maitho" value="3550">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maitaikhu" value="3559">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maitho" value="3561">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maitri" value="3562">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maiyamok" value="3558">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_moma" value="3521">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_ngongu" value="3495">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_nikhahit" value="3565">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_nonen" value="3507">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_nonu" value="3513">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_oang" value="3533">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_paiyannoi" value="3535">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_phinthu" value="3546">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_phophan" value="3518">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_phophung" value="3516">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_phosamphao" value="3520">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_popla" value="3515">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_rorua" value="3523">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_ru" value="3524">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraa" value="3536">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraaa" value="3538">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraae" value="3553">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraaimaimalai" value="3556">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraaimaimuan" value="3555">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraam" value="3539">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarae" value="3552">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarai" value="3540">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraii" value="3541">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarao" value="3554">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarau" value="3544">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraue" value="3542">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarauee" value="3543">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarauu" value="3545">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sorusi" value="3529">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sosala" value="3528">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_soso" value="3499">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sosua" value="3530">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thanthakhat" value="3564">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thonangmontho" value="3505">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thophuthao" value="3506">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thothahan" value="3511">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thothan" value="3504">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thothong" value="3512">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thothung" value="3510">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_topatak" value="3503">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_totao" value="3509">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_wowaen" value="3527">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_yoyak" value="3522">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_yoying" value="3501">
+      <type name="int"/>
+    </constant>
+    <constant name="Thorn" value="222">
+      <type name="int"/>
+    </constant>
+    <class name="Timeline"
+           c:type="ClutterTimeline"
+           doc="The #ClutterTimeline structure contains only private data
+and should be accessed using the provided API"
+           version="0.2"
+           parent="GObject.Object"
+           glib:type-name="ClutterTimeline"
+           glib:get-type="clutter_timeline_get_type"
+           glib:type-struct="TimelineClass">
+      <constructor name="new"
+                   c:identifier="clutter_timeline_new"
+                   doc="Creates a new #ClutterTimeline with a duration of @msecs.
+g_object_unref() when done using it"
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="clone"
+              c:identifier="clutter_timeline_clone"
+              doc="Create a new #ClutterTimeline instance which has property values
+matching that of supplied timeline. The cloned timeline will not
+be started and will not be positioned to the current position of"
+              version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_timeline_get_duration"
+              doc="Retrieves the duration of a #ClutterTimeline in milliseconds.
+See clutter_timeline_set_duration()."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_duration"
+              c:identifier="clutter_timeline_set_duration"
+              doc="Sets the duration of the timeline, in milliseconds. The speed
+of the timeline depends on the ClutterTimeline:fps setting."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_direction"
+              c:identifier="clutter_timeline_get_direction"
+              doc="Retrieves the direction of the timeline set with
+clutter_timeline_set_direction()."
+              version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="TimelineDirection" c:type="ClutterTimelineDirection"/>
+        </return-value>
+      </method>
+      <method name="set_direction"
+              c:identifier="clutter_timeline_set_direction"
+              doc="Sets the direction of @timeline, either %CLUTTER_TIMELINE_FORWARD or
+%CLUTTER_TIMELINE_BACKWARD."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="TimelineDirection" c:type="ClutterTimelineDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start"
+              c:identifier="clutter_timeline_start"
+              doc="Starts the #ClutterTimeline playing.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="pause"
+              c:identifier="clutter_timeline_pause"
+              doc="Pauses the #ClutterTimeline on current frame">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop"
+              c:identifier="clutter_timeline_stop"
+              doc="Stops the #ClutterTimeline and moves to frame 0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_loop"
+              c:identifier="clutter_timeline_set_loop"
+              doc="Sets whether @timeline should loop.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="loop" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_loop"
+              c:identifier="clutter_timeline_get_loop"
+              doc="Gets whether @timeline is looping">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="rewind"
+              c:identifier="clutter_timeline_rewind"
+              doc="Rewinds #ClutterTimeline to the first frame if its direction is
+%CLUTTER_TIMELINE_FORWARD and the last frame if it is
+%CLUTTER_TIMELINE_BACKWARD.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="skip"
+              c:identifier="clutter_timeline_skip"
+              doc="Advance timeline by the requested time in milliseconds">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="advance"
+              c:identifier="clutter_timeline_advance"
+              doc="Advance timeline to the requested point. The point is given as a
+time in milliseconds since the timeline started.
+&lt;note&gt;&lt;para&gt;The @timeline will not emit the #ClutterTimeline::new-frame
+signal for the given time. The first ::new-frame signal after the call to
+clutter_timeline_advance() will be emit the skipped markers.
+&lt;/para&gt;&lt;/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_elapsed_time"
+              c:identifier="clutter_timeline_get_elapsed_time"
+              doc="Request the current time position of the timeline.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_progress"
+              c:identifier="clutter_timeline_get_progress"
+              doc="The position of the timeline in a [0, 1] interval."
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="is_playing"
+              c:identifier="clutter_timeline_is_playing"
+              doc="Queries state of a #ClutterTimeline.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_delay"
+              c:identifier="clutter_timeline_set_delay"
+              doc="Sets the delay, in milliseconds, before @timeline should start."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_delay"
+              c:identifier="clutter_timeline_get_delay"
+              doc="Retrieves the delay set using clutter_timeline_set_delay()."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_delta"
+              c:identifier="clutter_timeline_get_delta"
+              doc="Retrieves the amount of time elapsed since the last
+ClutterTimeline::new-frame signal.
+This function is only useful inside handlers for the ::new-frame
+signal, and its behaviour is undefined if the timeline is not
+playing.
+last frame"
+              version="0.6">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="add_marker_at_time"
+              c:identifier="clutter_timeline_add_marker_at_time"
+              doc="Adds a named marker that will be hit when the timeline has been
+running for @msecs milliseconds. Markers are unique string
+identifiers for a given time. Once @timeline reaches
+attached to that time.
+A marker can be removed with clutter_timeline_remove_marker(). The
+timeline can be advanced to a marker using
+clutter_timeline_advance_to_marker()."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_marker"
+              c:identifier="clutter_timeline_remove_marker"
+              doc="Removes @marker_name, if found, from @timeline."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_markers"
+              c:identifier="clutter_timeline_list_markers"
+              doc="Retrieves the list of markers at time @msecs. If @frame_num is a
+negative integer, all the markers attached to @timeline will be
+returned.
+allocated, %NULL terminated string array containing the names of
+the markers. Use g_strfreev() when done."
+              version="0.8">
+        <return-value transfer-ownership="full" doc="a newly">
+          <array length="2" c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="n_markers"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_marker"
+              c:identifier="clutter_timeline_has_marker"
+              doc="Checks whether @timeline has a marker set with the given name."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="advance_to_marker"
+              c:identifier="clutter_timeline_advance_to_marker"
+              doc="Advances @timeline to the time of the given @marker_name.
+&lt;note&gt;&lt;para&gt;Like clutter_timeline_advance(), this function will not
+emit the #ClutterTimeline::new-frame for the time where @marker_name
+is set, nor it will emit #ClutterTimeline::marker-reached for"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="do_tick" c:identifier="clutter_timeline_do_tick">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tick_time" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="delay"
+                version="0.4"
+                writable="1"
+                doc="A delay, in milliseconds, that should be observed by the
+timeline before actually starting.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="direction"
+                version="0.6"
+                writable="1"
+                doc="The direction of the timeline, either %CLUTTER_TIMELINE_FORWARD or
+%CLUTTER_TIMELINE_BACKWARD.">
+        <type name="TimelineDirection" c:type="ClutterTimelineDirection"/>
+      </property>
+      <property name="duration"
+                version="0.6"
+                writable="1"
+                doc="Duration of the timeline in milliseconds, depending on the
+ClutterTimeline:fps value.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="loop"
+                writable="1"
+                doc="Whether the timeline should automatically rewind and restart.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="TimelinePrivate" c:type="ClutterTimelinePrivate*"/>
+      </field>
+      <glib:signal name="completed"
+                   doc="The ::completed signal is emitted when the timeline reaches the
+number of frames specified by the ClutterTimeline:num-frames property.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="marker-reached"
+                   doc="The ::marker-reached signal is emitted each time a timeline
+reaches a marker set with
+clutter_timeline_add_marker_at_time(). This signal is detailed
+with the name of the marker as well, so it is possible to connect
+a callback to the ::marker-reached signal for a specific marker
+with:
+&lt;informalexample&gt;&lt;programlisting&gt;
+clutter_timeline_add_marker_at_time (timeline, &quot;foo&quot;, 500);
+clutter_timeline_add_marker_at_time (timeline, &quot;bar&quot;, 750);
+g_signal_connect (timeline, &quot;marker-reached&quot;,
+G_CALLBACK (each_marker_reached), NULL);
+g_signal_connect (timeline, &quot;marker-reached::foo&quot;,
+G_CALLBACK (foo_marker_reached), NULL);
+g_signal_connect (timeline, &quot;marker-reached::bar&quot;,
+G_CALLBACK (bar_marker_reached), NULL);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+In the example, the first callback will be invoked for both
+the &quot;foo&quot; and &quot;bar&quot; marker, while the second and third callbacks
+will be invoked for the &quot;foo&quot; or &quot;bar&quot; markers, respectively."
+                   version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="new-frame"
+                   doc="The ::new-frame signal is emitted for each timeline running
+timeline before a new frame is drawn to give animations a chance
+to update the scene.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="paused"
+                   doc="The ::paused signal is emitted when clutter_timeline_pause() is invoked.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="started"
+                   doc="The ::started signal is emitted when the timeline starts its run.
+This might be as soon as clutter_timeline_start() is invoked or
+after the delay set in the ClutterTimeline:delay property has
+expired.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="TimelineClass"
+            c:type="ClutterTimelineClass"
+            glib:is-gtype-struct-for="Timeline"
+            doc="The #ClutterTimelineClass structure contains only private data"
+            version="0.2">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="started">
+        <callback name="started" c:type="started">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="completed">
+        <callback name="completed" c:type="completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paused">
+        <callback name="paused" c:type="paused">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="new_frame">
+        <callback name="new_frame" c:type="new_frame">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+            <parameter name="frame_num" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="marker_reached">
+        <callback name="marker_reached" c:type="marker_reached">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+            <parameter name="marker_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="frame_num" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clutter_timeline_1">
+        <callback name="clutter_timeline_1" c:type="_clutter_timeline_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_timeline_2">
+        <callback name="clutter_timeline_2" c:type="_clutter_timeline_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_timeline_3">
+        <callback name="clutter_timeline_3" c:type="_clutter_timeline_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_timeline_4">
+        <callback name="clutter_timeline_4" c:type="_clutter_timeline_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_timeline_5">
+        <callback name="clutter_timeline_5" c:type="_clutter_timeline_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="TimelineDirection"
+                 doc="The direction of a #ClutterTimeline"
+                 version="0.6"
+                 glib:type-name="ClutterTimelineDirection"
+                 glib:get-type="clutter_timeline_direction_get_type"
+                 c:type="ClutterTimelineDirection">
+      <member name="forward"
+              value="0"
+              c:identifier="CLUTTER_TIMELINE_FORWARD"
+              glib:nick="forward"/>
+      <member name="backward"
+              value="1"
+              c:identifier="CLUTTER_TIMELINE_BACKWARD"
+              glib:nick="backward"/>
+    </enumeration>
+    <record name="TimelinePrivate" c:type="ClutterTimelinePrivate">
+    </record>
+    <record name="TimeoutPool" c:type="ClutterTimeoutPool">
+      <constructor name="new"
+                   c:identifier="clutter_timeout_pool_new"
+                   doc="Creates a new timeout pool source. A timeout pool should be used when
+multiple timeout functions, running at the same priority, are needed and
+the g_timeout_add() API might lead to starvation of the time slice of
+the main loop. A timeout pool allocates a single time slice of the main
+loop and runs every timeout function inside it. The timeout pool is
+always sorted, so that the extraction of the next timeout function is
+a constant time operation.
+is owned by the GLib default context and will be automatically
+destroyed when the context is destroyed. It is possible to force
+the destruction of the timeout pool using g_source_destroy()"
+                   version="0.4">
+        <return-value transfer-ownership="full">
+          <type name="TimeoutPool" c:type="ClutterTimeoutPool*"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority"
+                     transfer-ownership="none"
+                     doc=" be #G_PRIORITY_DEFAULT">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add"
+              c:identifier="clutter_timeout_pool_add"
+              doc="Sets a function to be called at regular intervals, and puts it inside
+the @pool. The function is repeatedly called until it returns %FALSE,
+at which point the timeout is automatically destroyed and the function
+won&apos;t be called again. If @notify is not %NULL, the @notify function
+will be called. The first call to @func will be at the end of @interval.
+Since Clutter 0.8 this will try to compensate for delays. For
+example, if @func takes half the interval time to execute then the
+function will be called again half the interval time after it
+finished. Before version 0.8 it would not fire until a full
+interval after the function completes so the delay between calls
+would be @interval * 1.5. This function does not however try to
+invoke the function multiple times to catch up missing frames if
+Use clutter_timeout_pool_remove() to stop the timeout."
+              version="0.4">
+        <return-value transfer-ownership="none"
+                      doc="of the timeout inside the pool.">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="fps" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="clutter_timeout_pool_remove"
+              doc="Removes a timeout function with @id from the timeout pool. The id
+is the same returned when adding a function to the timeout pool with
+clutter_timeout_pool_add()."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="Touroku" value="65323">
+      <type name="int"/>
+    </constant>
+    <constant name="Tslash" value="940">
+      <type name="int"/>
+    </constant>
+    <constant name="U" value="85">
+      <type name="int"/>
+    </constant>
+    <constant name="Uacute" value="218">
+      <type name="int"/>
+    </constant>
+    <constant name="Ubelowdot" value="16785124">
+      <type name="int"/>
+    </constant>
+    <constant name="Ubreve" value="733">
+      <type name="int"/>
+    </constant>
+    <constant name="Ucircumflex" value="219">
+      <type name="int"/>
+    </constant>
+    <constant name="Udiaeresis" value="220">
+      <type name="int"/>
+    </constant>
+    <constant name="Udoubleacute" value="475">
+      <type name="int"/>
+    </constant>
+    <constant name="Ugrave" value="217">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhook" value="16785126">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhorn" value="16777647">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhornacute" value="16785128">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhornbelowdot" value="16785136">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhorngrave" value="16785130">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhornhook" value="16785132">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhorntilde" value="16785134">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_GHE_WITH_UPTURN" value="1725">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_I" value="1718">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_IE" value="1716">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_YI" value="1719">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_ghe_with_upturn" value="1709">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_i" value="1702">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_ie" value="1700">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_yi" value="1703">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_I" value="1718">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_JE" value="1716">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_YI" value="1719">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_i" value="1702">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_je" value="1700">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_yi" value="1703">
+      <type name="int"/>
+    </constant>
+    <constant name="Umacron" value="990">
+      <type name="int"/>
+    </constant>
+    <constant name="Undo" value="65381">
+      <type name="int"/>
+    </constant>
+    <enumeration name="UnitType"
+                 doc="The type of unit in which a value is expressed
+This enumeration might be expanded at later date"
+                 version="1.0"
+                 glib:type-name="ClutterUnitType"
+                 glib:get-type="clutter_unit_type_get_type"
+                 c:type="ClutterUnitType">
+      <member name="pixel"
+              value="0"
+              c:identifier="CLUTTER_UNIT_PIXEL"
+              glib:nick="pixel"/>
+      <member name="em"
+              value="1"
+              c:identifier="CLUTTER_UNIT_EM"
+              glib:nick="em"/>
+      <member name="mm"
+              value="2"
+              c:identifier="CLUTTER_UNIT_MM"
+              glib:nick="mm"/>
+      <member name="point"
+              value="3"
+              c:identifier="CLUTTER_UNIT_POINT"
+              glib:nick="point"/>
+      <member name="cm"
+              value="4"
+              c:identifier="CLUTTER_UNIT_CM"
+              glib:nick="cm"/>
+    </enumeration>
+    <record name="Units"
+            c:type="ClutterUnits"
+            doc="An opaque structure, to be used to store sizing and positioning
+values along with their unit."
+            version="1.0"
+            glib:type-name="ClutterUnits"
+            glib:get-type="clutter_units_get_type">
+      <field name="unit_type" writable="1">
+        <type name="UnitType" c:type="ClutterUnitType"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="pixels" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="pixels_set" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="serial" writable="1">
+        <type name="int32" c:type="gint32"/>
+      </field>
+      <field name="__padding_1" writable="1">
+        <type name="int32" c:type="gint32"/>
+      </field>
+      <field name="__padding_2" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <method name="get_unit_type"
+              c:identifier="clutter_units_get_unit_type"
+              doc="Retrieves the unit type of the value stored inside @units"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="UnitType" c:type="ClutterUnitType"/>
+        </return-value>
+      </method>
+      <method name="get_unit_value"
+              c:identifier="clutter_units_get_unit_value"
+              doc="Retrieves the value stored inside @units"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="clutter_units_copy"
+              doc="Copies @units
+Use clutter_units_free() to free the allocated resources"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Units" c:type="ClutterUnits*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="clutter_units_free"
+              doc="Frees the resources allocated by @units
+You should only call this function on a #ClutterUnits
+created using clutter_units_copy()"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="from_pixels"
+              c:identifier="clutter_units_from_pixels"
+              doc="Stores a value in pixels inside @units"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="px" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_em"
+              c:identifier="clutter_units_from_em"
+              doc="Stores a value in em inside @units, using the default font
+name as returned by clutter_backend_get_font_name()"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="em" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_em_for_font"
+              c:identifier="clutter_units_from_em_for_font"
+              doc="Stores a value in em inside @units using @font_name"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="em" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_mm"
+              c:identifier="clutter_units_from_mm"
+              doc="Stores a value in millimiters inside @units"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mm" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_cm"
+              c:identifier="clutter_units_from_cm"
+              doc="Stores a value in centimeters inside @units"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cm" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_pt"
+              c:identifier="clutter_units_from_pt"
+              doc="Stores a value in typographic points inside @units"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pt" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_pixels"
+              c:identifier="clutter_units_to_pixels"
+              doc="Converts a value in #ClutterUnits to pixels"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="from_string"
+              c:identifier="clutter_units_from_string"
+              doc="Parses a value and updates @units with it
+A #ClutterUnits expressed in string should match:
+|[
+| digit* sep digit+
+]|
+For instance, these are valid strings:
+|[
+10 px
+5.1 em
+24 pt
+12.6 mm
+.3 cm
+]|
+While these are not:
+|[
+42 cats
+omg!1!ponies
+]|
+&lt;note&gt;If no unit is specified, pixels are assumed.&lt;/note&gt;
+and %FALSE otherwise"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string"
+              c:identifier="clutter_units_to_string"
+              doc="Converts @units into a string
+See clutter_units_from_string() for the units syntax and for
+examples of output
+&lt;note&gt;Fractional values are truncated to the second decimal
+position for em, mm and cm, and to the first decimal position for
+typographic points. Pixels are integers.&lt;/note&gt;
+#ClutterUnits value. Use g_free() to free the string"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <constant name="Uogonek" value="985">
+      <type name="int"/>
+    </constant>
+    <constant name="Up" value="65362">
+      <type name="int"/>
+    </constant>
+    <constant name="Uring" value="473">
+      <type name="int"/>
+    </constant>
+    <constant name="Utilde" value="989">
+      <type name="int"/>
+    </constant>
+    <constant name="V" value="86">
+      <type name="int"/>
+    </constant>
+    <constant name="VERSION" value="1.2">
+      <type name="double"/>
+    </constant>
+    <constant name="VERSION_HEX" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="VERSION_S" value="1.2.10">
+      <type name="utf8"/>
+    </constant>
+    <record name="Vertex"
+            c:type="ClutterVertex"
+            doc="Vertex of an actor in 3D space, expressed in pixels"
+            version="0.4"
+            glib:type-name="ClutterVertex"
+            glib:get-type="clutter_vertex_get_type">
+      <field name="x" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="z" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="clutter_vertex_new"
+                   doc="Creates a new #ClutterVertex for the point in 3D space
+identified by the 3 coordinates @x, @y, @z
+clutter_vertex_free() to free the resources"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Vertex" c:type="ClutterVertex*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="clutter_vertex_copy"
+              doc="Copies @vertex
+clutter_vertex_free() to free the allocated resources"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Vertex" c:type="ClutterVertex*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="clutter_vertex_free"
+              doc="Frees a #ClutterVertex allocated using clutter_vertex_copy()"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="equal"
+              c:identifier="clutter_vertex_equal"
+              doc="Compares @vertex_a and @vertex_b for equality"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="vertex_b" transfer-ownership="none">
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="VoidSymbol" value="16777215">
+      <type name="int"/>
+    </constant>
+    <constant name="W" value="87">
+      <type name="int"/>
+    </constant>
+    <constant name="Wacute" value="16785026">
+      <type name="int"/>
+    </constant>
+    <constant name="Wcircumflex" value="16777588">
+      <type name="int"/>
+    </constant>
+    <constant name="Wdiaeresis" value="16785028">
+      <type name="int"/>
+    </constant>
+    <constant name="Wgrave" value="16785024">
+      <type name="int"/>
+    </constant>
+    <constant name="WonSign" value="16785577">
+      <type name="int"/>
+    </constant>
+    <constant name="X" value="88">
+      <type name="int"/>
+    </constant>
+    <constant name="Xabovedot" value="16785034">
+      <type name="int"/>
+    </constant>
+    <constant name="Y" value="89">
+      <type name="int"/>
+    </constant>
+    <constant name="Yacute" value="221">
+      <type name="int"/>
+    </constant>
+    <constant name="Ybelowdot" value="16785140">
+      <type name="int"/>
+    </constant>
+    <constant name="Ycircumflex" value="16777590">
+      <type name="int"/>
+    </constant>
+    <constant name="Ydiaeresis" value="5054">
+      <type name="int"/>
+    </constant>
+    <constant name="Ygrave" value="16785138">
+      <type name="int"/>
+    </constant>
+    <constant name="Yhook" value="16785142">
+      <type name="int"/>
+    </constant>
+    <constant name="Ytilde" value="16785144">
+      <type name="int"/>
+    </constant>
+    <constant name="Z" value="90">
+      <type name="int"/>
+    </constant>
+    <constant name="Zabovedot" value="431">
+      <type name="int"/>
+    </constant>
+    <constant name="Zacute" value="428">
+      <type name="int"/>
+    </constant>
+    <constant name="Zcaron" value="430">
+      <type name="int"/>
+    </constant>
+    <constant name="Zen_Koho" value="65341">
+      <type name="int"/>
+    </constant>
+    <constant name="Zenkaku" value="65320">
+      <type name="int"/>
+    </constant>
+    <constant name="Zenkaku_Hankaku" value="65322">
+      <type name="int"/>
+    </constant>
+    <constant name="Zstroke" value="16777653">
+      <type name="int"/>
+    </constant>
+    <constant name="a" value="97">
+      <type name="int"/>
+    </constant>
+    <constant name="aacute" value="225">
+      <type name="int"/>
+    </constant>
+    <constant name="abelowdot" value="16785057">
+      <type name="int"/>
+    </constant>
+    <constant name="abovedot" value="511">
+      <type name="int"/>
+    </constant>
+    <constant name="abreve" value="483">
+      <type name="int"/>
+    </constant>
+    <constant name="abreveacute" value="16785071">
+      <type name="int"/>
+    </constant>
+    <constant name="abrevebelowdot" value="16785079">
+      <type name="int"/>
+    </constant>
+    <constant name="abrevegrave" value="16785073">
+      <type name="int"/>
+    </constant>
+    <constant name="abrevehook" value="16785075">
+      <type name="int"/>
+    </constant>
+    <constant name="abrevetilde" value="16785077">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflex" value="226">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflexacute" value="16785061">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflexbelowdot" value="16785069">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflexgrave" value="16785063">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflexhook" value="16785065">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflextilde" value="16785067">
+      <type name="int"/>
+    </constant>
+    <constant name="acute" value="180">
+      <type name="int"/>
+    </constant>
+    <constant name="adiaeresis" value="228">
+      <type name="int"/>
+    </constant>
+    <constant name="ae" value="230">
+      <type name="int"/>
+    </constant>
+    <constant name="agrave" value="224">
+      <type name="int"/>
+    </constant>
+    <constant name="ahook" value="16785059">
+      <type name="int"/>
+    </constant>
+    <constant name="amacron" value="992">
+      <type name="int"/>
+    </constant>
+    <constant name="ampersand" value="38">
+      <type name="int"/>
+    </constant>
+    <constant name="aogonek" value="433">
+      <type name="int"/>
+    </constant>
+    <constant name="apostrophe" value="39">
+      <type name="int"/>
+    </constant>
+    <constant name="approxeq" value="16785992">
+      <type name="int"/>
+    </constant>
+    <constant name="approximate" value="2248">
+      <type name="int"/>
+    </constant>
+    <constant name="aring" value="229">
+      <type name="int"/>
+    </constant>
+    <constant name="asciicircum" value="94">
+      <type name="int"/>
+    </constant>
+    <constant name="asciitilde" value="126">
+      <type name="int"/>
+    </constant>
+    <constant name="asterisk" value="42">
+      <type name="int"/>
+    </constant>
+    <constant name="at" value="64">
+      <type name="int"/>
+    </constant>
+    <constant name="atilde" value="227">
+      <type name="int"/>
+    </constant>
+    <constant name="b" value="98">
+      <type name="int"/>
+    </constant>
+    <constant name="babovedot" value="16784899">
+      <type name="int"/>
+    </constant>
+    <constant name="backslash" value="92">
+      <type name="int"/>
+    </constant>
+    <constant name="ballotcross" value="2804">
+      <type name="int"/>
+    </constant>
+    <constant name="bar" value="124">
+      <type name="int"/>
+    </constant>
+    <function name="base_init" c:identifier="clutter_base_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <constant name="because" value="16785973">
+      <type name="int"/>
+    </constant>
+    <constant name="blank" value="2527">
+      <type name="int"/>
+    </constant>
+    <constant name="botintegral" value="2213">
+      <type name="int"/>
+    </constant>
+    <constant name="botleftparens" value="2220">
+      <type name="int"/>
+    </constant>
+    <constant name="botleftsqbracket" value="2216">
+      <type name="int"/>
+    </constant>
+    <constant name="botleftsummation" value="2226">
+      <type name="int"/>
+    </constant>
+    <constant name="botrightparens" value="2222">
+      <type name="int"/>
+    </constant>
+    <constant name="botrightsqbracket" value="2218">
+      <type name="int"/>
+    </constant>
+    <constant name="botrightsummation" value="2230">
+      <type name="int"/>
+    </constant>
+    <constant name="bott" value="2550">
+      <type name="int"/>
+    </constant>
+    <constant name="botvertsummationconnector" value="2228">
+      <type name="int"/>
+    </constant>
+    <constant name="braceleft" value="123">
+      <type name="int"/>
+    </constant>
+    <constant name="braceright" value="125">
+      <type name="int"/>
+    </constant>
+    <constant name="bracketleft" value="91">
+      <type name="int"/>
+    </constant>
+    <constant name="bracketright" value="93">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_blank" value="16787456">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_1" value="65521">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_10" value="65530">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_2" value="65522">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_3" value="65523">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_4" value="65524">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_5" value="65525">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_6" value="65526">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_7" value="65527">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_8" value="65528">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_9" value="65529">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1" value="16787457">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12" value="16787459">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123" value="16787463">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1234" value="16787471">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12345" value="16787487">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123456" value="16787519">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1234567" value="16787583">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12345678" value="16787711">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1234568" value="16787647">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123457" value="16787551">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1234578" value="16787679">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123458" value="16787615">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12346" value="16787503">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123467" value="16787567">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1234678" value="16787695">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123468" value="16787631">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12347" value="16787535">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123478" value="16787663">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12348" value="16787599">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1235" value="16787479">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12356" value="16787511">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123567" value="16787575">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1235678" value="16787703">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123568" value="16787639">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12357" value="16787543">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123578" value="16787671">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12358" value="16787607">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1236" value="16787495">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12367" value="16787559">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123678" value="16787687">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12368" value="16787623">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1237" value="16787527">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12378" value="16787655">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1238" value="16787591">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_124" value="16787467">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1245" value="16787483">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12456" value="16787515">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_124567" value="16787579">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1245678" value="16787707">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_124568" value="16787643">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12457" value="16787547">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_124578" value="16787675">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12458" value="16787611">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1246" value="16787499">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12467" value="16787563">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_124678" value="16787691">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12468" value="16787627">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1247" value="16787531">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12478" value="16787659">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1248" value="16787595">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_125" value="16787475">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1256" value="16787507">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12567" value="16787571">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_125678" value="16787699">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12568" value="16787635">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1257" value="16787539">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12578" value="16787667">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1258" value="16787603">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_126" value="16787491">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1267" value="16787555">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12678" value="16787683">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1268" value="16787619">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_127" value="16787523">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1278" value="16787651">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_128" value="16787587">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13" value="16787461">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_134" value="16787469">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1345" value="16787485">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13456" value="16787517">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_134567" value="16787581">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1345678" value="16787709">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_134568" value="16787645">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13457" value="16787549">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_134578" value="16787677">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13458" value="16787613">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1346" value="16787501">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13467" value="16787565">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_134678" value="16787693">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13468" value="16787629">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1347" value="16787533">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13478" value="16787661">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1348" value="16787597">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_135" value="16787477">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1356" value="16787509">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13567" value="16787573">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_135678" value="16787701">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13568" value="16787637">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1357" value="16787541">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13578" value="16787669">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1358" value="16787605">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_136" value="16787493">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1367" value="16787557">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13678" value="16787685">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1368" value="16787621">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_137" value="16787525">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1378" value="16787653">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_138" value="16787589">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_14" value="16787465">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_145" value="16787481">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1456" value="16787513">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_14567" value="16787577">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_145678" value="16787705">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_14568" value="16787641">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1457" value="16787545">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_14578" value="16787673">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1458" value="16787609">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_146" value="16787497">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1467" value="16787561">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_14678" value="16787689">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1468" value="16787625">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_147" value="16787529">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1478" value="16787657">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_148" value="16787593">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_15" value="16787473">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_156" value="16787505">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1567" value="16787569">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_15678" value="16787697">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1568" value="16787633">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_157" value="16787537">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1578" value="16787665">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_158" value="16787601">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_16" value="16787489">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_167" value="16787553">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1678" value="16787681">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_168" value="16787617">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_17" value="16787521">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_178" value="16787649">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_18" value="16787585">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2" value="16787458">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23" value="16787462">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_234" value="16787470">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2345" value="16787486">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23456" value="16787518">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_234567" value="16787582">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2345678" value="16787710">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_234568" value="16787646">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23457" value="16787550">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_234578" value="16787678">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23458" value="16787614">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2346" value="16787502">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23467" value="16787566">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_234678" value="16787694">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23468" value="16787630">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2347" value="16787534">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23478" value="16787662">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2348" value="16787598">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_235" value="16787478">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2356" value="16787510">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23567" value="16787574">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_235678" value="16787702">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23568" value="16787638">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2357" value="16787542">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23578" value="16787670">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2358" value="16787606">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_236" value="16787494">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2367" value="16787558">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23678" value="16787686">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2368" value="16787622">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_237" value="16787526">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2378" value="16787654">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_238" value="16787590">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_24" value="16787466">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_245" value="16787482">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2456" value="16787514">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_24567" value="16787578">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_245678" value="16787706">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_24568" value="16787642">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2457" value="16787546">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_24578" value="16787674">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2458" value="16787610">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_246" value="16787498">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2467" value="16787562">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_24678" value="16787690">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2468" value="16787626">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_247" value="16787530">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2478" value="16787658">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_248" value="16787594">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_25" value="16787474">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_256" value="16787506">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2567" value="16787570">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_25678" value="16787698">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2568" value="16787634">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_257" value="16787538">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2578" value="16787666">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_258" value="16787602">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_26" value="16787490">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_267" value="16787554">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2678" value="16787682">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_268" value="16787618">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_27" value="16787522">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_278" value="16787650">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_28" value="16787586">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3" value="16787460">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_34" value="16787468">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_345" value="16787484">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3456" value="16787516">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_34567" value="16787580">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_345678" value="16787708">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_34568" value="16787644">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3457" value="16787548">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_34578" value="16787676">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3458" value="16787612">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_346" value="16787500">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3467" value="16787564">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_34678" value="16787692">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3468" value="16787628">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_347" value="16787532">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3478" value="16787660">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_348" value="16787596">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_35" value="16787476">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_356" value="16787508">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3567" value="16787572">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_35678" value="16787700">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3568" value="16787636">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_357" value="16787540">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3578" value="16787668">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_358" value="16787604">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_36" value="16787492">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_367" value="16787556">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3678" value="16787684">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_368" value="16787620">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_37" value="16787524">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_378" value="16787652">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_38" value="16787588">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_4" value="16787464">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_45" value="16787480">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_456" value="16787512">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_4567" value="16787576">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_45678" value="16787704">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_4568" value="16787640">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_457" value="16787544">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_4578" value="16787672">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_458" value="16787608">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_46" value="16787496">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_467" value="16787560">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_4678" value="16787688">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_468" value="16787624">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_47" value="16787528">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_478" value="16787656">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_48" value="16787592">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_5" value="16787472">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_56" value="16787504">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_567" value="16787568">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_5678" value="16787696">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_568" value="16787632">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_57" value="16787536">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_578" value="16787664">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_58" value="16787600">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_6" value="16787488">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_67" value="16787552">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_678" value="16787680">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_68" value="16787616">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_7" value="16787520">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_78" value="16787648">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_8" value="16787584">
+      <type name="int"/>
+    </constant>
+    <constant name="breve" value="418">
+      <type name="int"/>
+    </constant>
+    <constant name="brokenbar" value="166">
+      <type name="int"/>
+    </constant>
+    <constant name="c" value="99">
+      <type name="int"/>
+    </constant>
+    <constant name="cabovedot" value="741">
+      <type name="int"/>
+    </constant>
+    <constant name="cacute" value="486">
+      <type name="int"/>
+    </constant>
+    <function name="cairo_set_source_color"
+              c:identifier="clutter_cairo_set_source_color"
+              doc="Utility function for setting the source color of @cr using
+a #ClutterColor."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="careof" value="2744">
+      <type name="int"/>
+    </constant>
+    <constant name="caret" value="2812">
+      <type name="int"/>
+    </constant>
+    <constant name="caron" value="439">
+      <type name="int"/>
+    </constant>
+    <constant name="ccaron" value="488">
+      <type name="int"/>
+    </constant>
+    <constant name="ccedilla" value="231">
+      <type name="int"/>
+    </constant>
+    <constant name="ccircumflex" value="742">
+      <type name="int"/>
+    </constant>
+    <constant name="cedilla" value="184">
+      <type name="int"/>
+    </constant>
+    <constant name="cent" value="162">
+      <type name="int"/>
+    </constant>
+    <function name="check_version"
+              c:identifier="clutter_check_version"
+              doc="Run-time version check, to check the version the Clutter library
+that an application is currently linked against
+This is the run-time equivalent of the compile-time %CLUTTER_CHECK_VERSION
+pre-processor macro
+greater than (@major, @minor, @micro), and %FALSE otherwise"
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="major" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="minor" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="micro" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="checkerboard" value="2529">
+      <type name="int"/>
+    </constant>
+    <constant name="checkmark" value="2803">
+      <type name="int"/>
+    </constant>
+    <constant name="circle" value="3023">
+      <type name="int"/>
+    </constant>
+    <function name="clear_glyph_cache"
+              c:identifier="clutter_clear_glyph_cache"
+              doc="Clears the internal cache of glyphs used by the Pango
+renderer. This will free up some memory and GL texture
+resources. The cache will be automatically refilled as more text is
+drawn."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <constant name="club" value="2796">
+      <type name="int"/>
+    </constant>
+    <constant name="colon" value="58">
+      <type name="int"/>
+    </constant>
+    <function name="color_equal"
+              c:identifier="clutter_color_equal"
+              doc="Compares two #ClutterColor&lt;!-- --&gt;s and checks if they are the same.
+This function can be passed to g_hash_table_new() as the @key_equal_func
+parameter, when using #ClutterColor&lt;!-- --&gt;s as keys in a #GHashTable."
+              version="0.2">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="color_hash"
+              c:identifier="clutter_color_hash"
+              doc="Converts a #ClutterColor to a hash value.
+This function can be passed to g_hash_table_new() as the @hash_func
+parameter, when using #ClutterColor&lt;!-- --&gt;s as keys in a #GHashTable."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="comma" value="44">
+      <type name="int"/>
+    </constant>
+    <function name="container_class_find_child_property"
+              c:identifier="clutter_container_class_find_child_property"
+              doc="Looks up the #GParamSpec for a child property of @klass.
+if no such property exist."
+              version="0.8">
+      <return-value transfer-ownership="none"
+                    doc="The #GParamSpec for the property or %NULL">
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="klass" transfer-ownership="none">
+          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
+        </parameter>
+        <parameter name="property_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="container_class_list_child_properties"
+              c:identifier="clutter_container_class_list_child_properties"
+              doc="Returns an array of #GParamSpec for all child properties.
+of #GParamSpec&lt;!-- --&gt;s which should be freed after use."
+              version="0.8">
+      <return-value transfer-ownership="container" doc="an array">
+        <array length="1" c:type="GParamSpec**">
+          <type name="GObject.ParamSpec"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="klass" transfer-ownership="none">
+          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
+        </parameter>
+        <parameter name="n_properties"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="containsas" value="16785931">
+      <type name="int"/>
+    </constant>
+    <constant name="copyright" value="169">
+      <type name="int"/>
+    </constant>
+    <constant name="cr" value="2532">
+      <type name="int"/>
+    </constant>
+    <constant name="crossinglines" value="2542">
+      <type name="int"/>
+    </constant>
+    <constant name="cuberoot" value="16785947">
+      <type name="int"/>
+    </constant>
+    <constant name="currency" value="164">
+      <type name="int"/>
+    </constant>
+    <constant name="cursor" value="2815">
+      <type name="int"/>
+    </constant>
+    <constant name="d" value="100">
+      <type name="int"/>
+    </constant>
+    <constant name="dabovedot" value="16784907">
+      <type name="int"/>
+    </constant>
+    <constant name="dagger" value="2801">
+      <type name="int"/>
+    </constant>
+    <constant name="dcaron" value="495">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_abovecomma" value="65124">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_abovedot" value="65110">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_abovereversedcomma" value="65125">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_abovering" value="65112">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_acute" value="65105">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowbreve" value="65131">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowcircumflex" value="65129">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowdiaeresis" value="65132">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowdot" value="65120">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowmacron" value="65128">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowring" value="65127">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowtilde" value="65130">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_breve" value="65109">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_caron" value="65114">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_cedilla" value="65115">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_circumflex" value="65106">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_dasia" value="65125">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_diaeresis" value="65111">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_doubleacute" value="65113">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_grave" value="65104">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_hook" value="65121">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_horn" value="65122">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_iota" value="65117">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_macron" value="65108">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_ogonek" value="65116">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_perispomeni" value="65107">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_psili" value="65124">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_semivoiced_sound" value="65119">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_stroke" value="65123">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_tilde" value="65107">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_voiced_sound" value="65118">
+      <type name="int"/>
+    </constant>
+    <constant name="decimalpoint" value="2749">
+      <type name="int"/>
+    </constant>
+    <constant name="degree" value="176">
+      <type name="int"/>
+    </constant>
+    <constant name="diaeresis" value="168">
+      <type name="int"/>
+    </constant>
+    <constant name="diamond" value="2797">
+      <type name="int"/>
+    </constant>
+    <constant name="digitspace" value="2725">
+      <type name="int"/>
+    </constant>
+    <constant name="dintegral" value="16785964">
+      <type name="int"/>
+    </constant>
+    <constant name="division" value="247">
+      <type name="int"/>
+    </constant>
+    <function name="do_event" c:identifier="clutter_do_event">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Event" c:type="ClutterEvent*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="dollar" value="36">
+      <type name="int"/>
+    </constant>
+    <constant name="doubbaselinedot" value="2735">
+      <type name="int"/>
+    </constant>
+    <constant name="doubleacute" value="445">
+      <type name="int"/>
+    </constant>
+    <constant name="doubledagger" value="2802">
+      <type name="int"/>
+    </constant>
+    <constant name="doublelowquotemark" value="2814">
+      <type name="int"/>
+    </constant>
+    <constant name="downarrow" value="2302">
+      <type name="int"/>
+    </constant>
+    <constant name="downcaret" value="2984">
+      <type name="int"/>
+    </constant>
+    <constant name="downshoe" value="3030">
+      <type name="int"/>
+    </constant>
+    <constant name="downstile" value="3012">
+      <type name="int"/>
+    </constant>
+    <constant name="downtack" value="3010">
+      <type name="int"/>
+    </constant>
+    <constant name="dstroke" value="496">
+      <type name="int"/>
+    </constant>
+    <constant name="e" value="101">
+      <type name="int"/>
+    </constant>
+    <constant name="eabovedot" value="1004">
+      <type name="int"/>
+    </constant>
+    <constant name="eacute" value="233">
+      <type name="int"/>
+    </constant>
+    <constant name="ebelowdot" value="16785081">
+      <type name="int"/>
+    </constant>
+    <constant name="ecaron" value="492">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflex" value="234">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflexacute" value="16785087">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflexbelowdot" value="16785095">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflexgrave" value="16785089">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflexhook" value="16785091">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflextilde" value="16785093">
+      <type name="int"/>
+    </constant>
+    <constant name="ediaeresis" value="235">
+      <type name="int"/>
+    </constant>
+    <constant name="egrave" value="232">
+      <type name="int"/>
+    </constant>
+    <constant name="ehook" value="16785083">
+      <type name="int"/>
+    </constant>
+    <constant name="eightsubscript" value="16785544">
+      <type name="int"/>
+    </constant>
+    <constant name="eightsuperior" value="16785528">
+      <type name="int"/>
+    </constant>
+    <constant name="elementof" value="16785928">
+      <type name="int"/>
+    </constant>
+    <constant name="ellipsis" value="2734">
+      <type name="int"/>
+    </constant>
+    <constant name="em3space" value="2723">
+      <type name="int"/>
+    </constant>
+    <constant name="em4space" value="2724">
+      <type name="int"/>
+    </constant>
+    <constant name="emacron" value="954">
+      <type name="int"/>
+    </constant>
+    <constant name="emdash" value="2729">
+      <type name="int"/>
+    </constant>
+    <constant name="emfilledcircle" value="2782">
+      <type name="int"/>
+    </constant>
+    <constant name="emfilledrect" value="2783">
+      <type name="int"/>
+    </constant>
+    <constant name="emopencircle" value="2766">
+      <type name="int"/>
+    </constant>
+    <constant name="emopenrectangle" value="2767">
+      <type name="int"/>
+    </constant>
+    <constant name="emptyset" value="16785925">
+      <type name="int"/>
+    </constant>
+    <constant name="emspace" value="2721">
+      <type name="int"/>
+    </constant>
+    <constant name="endash" value="2730">
+      <type name="int"/>
+    </constant>
+    <constant name="enfilledcircbullet" value="2790">
+      <type name="int"/>
+    </constant>
+    <constant name="enfilledsqbullet" value="2791">
+      <type name="int"/>
+    </constant>
+    <constant name="eng" value="959">
+      <type name="int"/>
+    </constant>
+    <constant name="enopencircbullet" value="2784">
+      <type name="int"/>
+    </constant>
+    <constant name="enopensquarebullet" value="2785">
+      <type name="int"/>
+    </constant>
+    <constant name="enspace" value="2722">
+      <type name="int"/>
+    </constant>
+    <constant name="eogonek" value="490">
+      <type name="int"/>
+    </constant>
+    <constant name="equal" value="61">
+      <type name="int"/>
+    </constant>
+    <constant name="eth" value="240">
+      <type name="int"/>
+    </constant>
+    <constant name="etilde" value="16785085">
+      <type name="int"/>
+    </constant>
+    <function name="event_get"
+              c:identifier="clutter_event_get"
+              doc="Pops an event off the event queue. Applications should not need to call
+this."
+              version="0.4">
+      <return-value transfer-ownership="full">
+        <type name="Event" c:type="ClutterEvent*"/>
+      </return-value>
+    </function>
+    <function name="event_peek"
+              c:identifier="clutter_event_peek"
+              doc="Returns a pointer to the first event from the event queue but
+does not remove it."
+              version="0.4">
+      <return-value transfer-ownership="none"
+                    doc="A #ClutterEvent or NULL if queue empty.">
+        <type name="Event" c:type="ClutterEvent*"/>
+      </return-value>
+    </function>
+    <function name="events_pending"
+              c:identifier="clutter_events_pending"
+              doc="Checks if events are pending in the event queue."
+              version="0.4">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <constant name="exclam" value="33">
+      <type name="int"/>
+    </constant>
+    <constant name="exclamdown" value="161">
+      <type name="int"/>
+    </constant>
+    <constant name="f" value="102">
+      <type name="int"/>
+    </constant>
+    <constant name="fabovedot" value="16784927">
+      <type name="int"/>
+    </constant>
+    <function name="feature_available"
+              c:identifier="clutter_feature_available"
+              doc="Checks whether @feature is available.  @feature can be a logical
+OR of #ClutterFeatureFlags."
+              version="0.1.1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="feature" transfer-ownership="none">
+          <type name="FeatureFlags" c:type="ClutterFeatureFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="feature_get_all"
+              c:identifier="clutter_feature_get_all"
+              doc="Returns all the supported features."
+              version="0.1.1">
+      <return-value transfer-ownership="full">
+        <type name="FeatureFlags" c:type="ClutterFeatureFlags"/>
+      </return-value>
+    </function>
+    <constant name="femalesymbol" value="2808">
+      <type name="int"/>
+    </constant>
+    <constant name="ff" value="2531">
+      <type name="int"/>
+    </constant>
+    <constant name="figdash" value="2747">
+      <type name="int"/>
+    </constant>
+    <constant name="filledlefttribullet" value="2780">
+      <type name="int"/>
+    </constant>
+    <constant name="filledrectbullet" value="2779">
+      <type name="int"/>
+    </constant>
+    <constant name="filledrighttribullet" value="2781">
+      <type name="int"/>
+    </constant>
+    <constant name="filledtribulletdown" value="2793">
+      <type name="int"/>
+    </constant>
+    <constant name="filledtribulletup" value="2792">
+      <type name="int"/>
+    </constant>
+    <constant name="fiveeighths" value="2757">
+      <type name="int"/>
+    </constant>
+    <constant name="fivesixths" value="2743">
+      <type name="int"/>
+    </constant>
+    <constant name="fivesubscript" value="16785541">
+      <type name="int"/>
+    </constant>
+    <constant name="fivesuperior" value="16785525">
+      <type name="int"/>
+    </constant>
+    <constant name="fourfifths" value="2741">
+      <type name="int"/>
+    </constant>
+    <constant name="foursubscript" value="16785540">
+      <type name="int"/>
+    </constant>
+    <constant name="foursuperior" value="16785524">
+      <type name="int"/>
+    </constant>
+    <constant name="fourthroot" value="16785948">
+      <type name="int"/>
+    </constant>
+    <function name="frame_source_add"
+              c:identifier="clutter_frame_source_add"
+              doc="Simple wrapper around clutter_frame_source_add_full()."
+              version="0.8">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="fps" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="frame_source_add_full"
+              c:identifier="clutter_frame_source_add_full"
+              doc="Sets a function to be called at regular intervals with the given
+priority.  The function is called repeatedly until it returns
+%FALSE, at which point the timeout is automatically destroyed and
+the function will not be called again.  The @notify function is
+called when the timeout is destroyed.  The first call to the
+function will be at the end of the first @interval.
+This function is similar to g_timeout_add_full() except that it
+will try to compensate for delays. For example, if @func takes half
+the interval time to execute then the function will be called again
+half the interval time after it finished. In contrast
+g_timeout_add_full() would not fire until a full interval after the
+function completes so the delay between calls would be 1.0 / @fps *
+1.5. This function does not however try to invoke the function
+multiple times to catch up missing frames if @func takes more than"
+              version="0.8">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority"
+                   transfer-ownership="none"
+                   doc=" range between %G_PRIORITY_DEFAULT and %G_PRIORITY_HIGH.">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="fps" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="call">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="function" value="2294">
+      <type name="int"/>
+    </constant>
+    <constant name="g" value="103">
+      <type name="int"/>
+    </constant>
+    <constant name="gabovedot" value="757">
+      <type name="int"/>
+    </constant>
+    <constant name="gbreve" value="699">
+      <type name="int"/>
+    </constant>
+    <constant name="gcaron" value="16777703">
+      <type name="int"/>
+    </constant>
+    <constant name="gcedilla" value="955">
+      <type name="int"/>
+    </constant>
+    <constant name="gcircumflex" value="760">
+      <type name="int"/>
+    </constant>
+    <function name="get_actor_by_gid" c:identifier="clutter_get_actor_by_gid">
+      <return-value transfer-ownership="full">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_current_event"
+              c:identifier="clutter_get_current_event"
+              doc="If an event is currently being processed, return that event.
+This function is intended to be used to access event state
+that might not be exposed by higher-level widgets.  For
+example, to get the key modifier state from a Button &apos;clicked&apos;
+event."
+              version="1.2">
+      <return-value transfer-ownership="none"
+                    doc="The current ClutterEvent, or %NULL if none">
+        <type name="Event" c:type="ClutterEvent*"/>
+      </return-value>
+    </function>
+    <function name="get_current_event_time"
+              c:identifier="clutter_get_current_event_time"
+              doc="Retrieves the timestamp of the last event, if there is an
+event or if the event has a timestamp."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+    </function>
+    <function name="get_debug_enabled"
+              c:identifier="clutter_get_debug_enabled"
+              doc="Check if clutter has debugging turned on.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_default_backend"
+              c:identifier="clutter_get_default_backend"
+              doc="Retrieves the default #ClutterBackend used by Clutter. The
+#ClutterBackend holds backend-specific configuration options.
+not ref or unref the returned object. Applications should rarely
+need to use this."
+              version="0.4">
+      <return-value transfer-ownership="none"
+                    doc="the default backend. You should">
+        <type name="Backend" c:type="ClutterBackend*"/>
+      </return-value>
+    </function>
+    <function name="get_default_frame_rate"
+              c:identifier="clutter_get_default_frame_rate"
+              doc="Retrieves the default frame rate. See clutter_set_default_frame_rate()."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="get_default_text_direction"
+              c:identifier="clutter_get_default_text_direction"
+              doc="Retrieves the default direction for the text. The text direction is
+determined by the locale and/or by the %CLUTTER_TEXT_DIRECTION environment
+variable
+The default text direction can be overridden on a per-actor basis by using
+clutter_actor_set_text_direction()"
+              version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="TextDirection" c:type="ClutterTextDirection"/>
+      </return-value>
+    </function>
+    <function name="get_font_flags"
+              c:identifier="clutter_get_font_flags"
+              doc="Gets the current font flags for rendering text. See
+clutter_set_font_flags()."
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="FontFlags" c:type="ClutterFontFlags"/>
+      </return-value>
+    </function>
+    <function name="get_font_map"
+              c:identifier="clutter_get_font_map"
+              doc="Retrieves the #PangoFontMap instance used by Clutter.
+You can use the global font map object with the COGL
+Pango API.
+value is owned by Clutter and it should never be unreferenced."
+              version="1.0">
+      <return-value transfer-ownership="none"
+                    doc="the #PangoFontMap instance. The returned">
+        <type name="Pango.FontMap" c:type="PangoFontMap*"/>
+      </return-value>
+    </function>
+    <function name="get_input_device_for_id"
+              c:identifier="clutter_get_input_device_for_id"
+              doc="Retrieves the #ClutterInputDevice from its @id. This is a convenience
+wrapper for clutter_device_manager_get_device() and it is functionally
+equivalent to:
+|[
+ClutterDeviceManager *manager;
+ClutterInputDevice *device;
+manager = clutter_device_manager_get_default ();
+device = clutter_device_manager_get_device (manager, id);
+]|"
+              version="0.8">
+      <return-value transfer-ownership="none"
+                    doc="a #ClutterInputDevice, or %NULL">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_keyboard_grab"
+              c:identifier="clutter_get_keyboard_grab"
+              doc="Queries the current keyboard grab of clutter."
+              version="0.6">
+      <return-value transfer-ownership="none"
+                    doc="the actor currently holding the keyboard grab, or NULL if there is no grab.">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </return-value>
+    </function>
+    <function name="get_motion_events_enabled"
+              c:identifier="clutter_get_motion_events_enabled"
+              doc="Gets whether the per-actor motion events are enabled."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_option_group"
+              c:identifier="clutter_get_option_group"
+              doc="Returns a #GOptionGroup for the command line arguments recognized
+by Clutter. You should add this group to your #GOptionContext with
+g_option_context_add_group(), if you are using g_option_context_parse()
+to parse your commandline arguments.
+Calling g_option_context_parse() with Clutter&apos;s #GOptionGroup will result
+in Clutter&apos;s initialization. That is, the following code:
+|[
+g_option_context_set_main_group (context, clutter_get_option_group ());
+res = g_option_context_parse (context, &amp;amp;argc, &amp;amp;argc, NULL);
+]|
+is functionally equivalent to:
+|[
+clutter_init (&amp;amp;argc, &amp;amp;argv);
+]|
+After g_option_context_parse() on a #GOptionContext containing the
+Clutter #GOptionGroup has returned %TRUE, Clutter is guaranteed to be
+initialized.
+recognized by Clutter"
+              version="0.2">
+      <return-value transfer-ownership="full"
+                    doc="a #GOptionGroup for the commandline arguments">
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+    </function>
+    <function name="get_option_group_without_init"
+              c:identifier="clutter_get_option_group_without_init"
+              doc="Returns a #GOptionGroup for the command line arguments recognized
+by Clutter. You should add this group to your #GOptionContext with
+g_option_context_add_group(), if you are using g_option_context_parse()
+to parse your commandline arguments. Unlike clutter_get_option_group(),
+calling g_option_context_parse() with the #GOptionGroup returned by this
+function requires a subsequent explicit call to clutter_init(); use this
+function when needing to set foreign display connection with
+clutter_x11_set_display(), or with gtk_clutter_init().
+recognized by Clutter"
+              version="0.8.2">
+      <return-value transfer-ownership="full"
+                    doc="a #GOptionGroup for the commandline arguments">
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+    </function>
+    <function name="get_pointer_grab"
+              c:identifier="clutter_get_pointer_grab"
+              doc="Queries the current pointer grab of clutter."
+              version="0.6">
+      <return-value transfer-ownership="none"
+                    doc="the actor currently holding the pointer grab, or NULL if there is no grab.">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </return-value>
+    </function>
+    <function name="get_script_id"
+              c:identifier="clutter_get_script_id"
+              doc="Retrieves the Clutter script id, if any.
+a UI definition file. The returned string is owned by the object and
+should never be modified or freed."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gobject" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_show_fps"
+              c:identifier="clutter_get_show_fps"
+              doc="Returns whether Clutter should print out the frames per second on the
+console. You can enable this setting either using the
+&lt;literal&gt;CLUTTER_SHOW_FPS&lt;/literal&gt; environment variable or passing
+the &lt;literal&gt;--clutter-show-fps&lt;/literal&gt; command line argument. *"
+              version="0.4">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_timestamp"
+              c:identifier="clutter_get_timestamp"
+              doc="Returns the approximate number of microseconds passed since clutter was
+intialised.">
+      <return-value transfer-ownership="none" doc="was called.">
+        <type name="ulong" c:type="gulong"/>
+      </return-value>
+    </function>
+    <function name="grab_keyboard"
+              c:identifier="clutter_grab_keyboard"
+              doc="Grabs keyboard events, after the grab is done keyboard
+events (#ClutterActor::key-press-event and #ClutterActor::key-release-event)
+are delivered to this actor directly. The source set in the event will be
+the actor that would have received the event if the keyboard grab was not
+in effect.
+Like pointer grabs, keyboard grabs should only be used as a last
+resource.
+See also clutter_stage_set_key_focus() and clutter_actor_grab_key_focus()
+to perform a &quot;soft&quot; key grab and assign key focus to a specific actor."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="actor" transfer-ownership="none">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="grab_pointer"
+              c:identifier="clutter_grab_pointer"
+              doc="Grabs pointer events, after the grab is done all pointer related events
+(press, motion, release, enter, leave and scroll) are delivered to this
+actor directly without passing through both capture and bubble phases of
+the event delivery chain. The source set in the event will be the actor
+that would have received the event if the pointer grab was not in effect.
+&lt;note&gt;&lt;para&gt;Grabs completely override the entire event delivery chain
+done by Clutter. Pointer grabs should only be used as a last resource;
+using the #ClutterActor::captured-event signal should always be the
+preferred way to intercept event delivery to reactive actors.&lt;/para&gt;&lt;/note&gt;
+If you wish to grab all the pointer events for a specific input device,
+you should use clutter_grab_pointer_for_device()."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="actor" transfer-ownership="none">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="grab_pointer_for_device"
+              c:identifier="clutter_grab_pointer_for_device"
+              doc="Grabs all the pointer events coming from the device @id for @actor.
+If @id is -1 then this function is equivalent to clutter_grab_pointer()."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="actor" transfer-ownership="none">
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+        <parameter name="id" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="grave" value="96">
+      <type name="int"/>
+    </constant>
+    <constant name="greater" value="62">
+      <type name="int"/>
+    </constant>
+    <constant name="greaterthanequal" value="2238">
+      <type name="int"/>
+    </constant>
+    <constant name="guillemotleft" value="171">
+      <type name="int"/>
+    </constant>
+    <constant name="guillemotright" value="187">
+      <type name="int"/>
+    </constant>
+    <constant name="h" value="104">
+      <type name="int"/>
+    </constant>
+    <constant name="hairspace" value="2728">
+      <type name="int"/>
+    </constant>
+    <constant name="hcircumflex" value="694">
+      <type name="int"/>
+    </constant>
+    <constant name="heart" value="2798">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_aleph" value="3296">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_ayin" value="3314">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_bet" value="3297">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_beth" value="3297">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_chet" value="3303">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_dalet" value="3299">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_daleth" value="3299">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_doublelowline" value="3295">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalkaph" value="3306">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalmem" value="3309">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalnun" value="3311">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalpe" value="3315">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalzade" value="3317">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalzadi" value="3317">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_gimel" value="3298">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_gimmel" value="3298">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_he" value="3300">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_het" value="3303">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_kaph" value="3307">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_kuf" value="3319">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_lamed" value="3308">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_mem" value="3310">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_nun" value="3312">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_pe" value="3316">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_qoph" value="3319">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_resh" value="3320">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_samech" value="3313">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_samekh" value="3313">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_shin" value="3321">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_taf" value="3322">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_taw" value="3322">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_tet" value="3304">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_teth" value="3304">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_waw" value="3301">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_yod" value="3305">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_zade" value="3318">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_zadi" value="3318">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_zain" value="3302">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_zayin" value="3302">
+      <type name="int"/>
+    </constant>
+    <constant name="hexagram" value="2778">
+      <type name="int"/>
+    </constant>
+    <constant name="horizconnector" value="2211">
+      <type name="int"/>
+    </constant>
+    <constant name="horizlinescan1" value="2543">
+      <type name="int"/>
+    </constant>
+    <constant name="horizlinescan3" value="2544">
+      <type name="int"/>
+    </constant>
+    <constant name="horizlinescan5" value="2545">
+      <type name="int"/>
+    </constant>
+    <constant name="horizlinescan7" value="2546">
+      <type name="int"/>
+    </constant>
+    <constant name="horizlinescan9" value="2547">
+      <type name="int"/>
+    </constant>
+    <constant name="hstroke" value="689">
+      <type name="int"/>
+    </constant>
+    <constant name="ht" value="2530">
+      <type name="int"/>
+    </constant>
+    <constant name="hyphen" value="173">
+      <type name="int"/>
+    </constant>
+    <constant name="i" value="105">
+      <type name="int"/>
+    </constant>
+    <constant name="iacute" value="237">
+      <type name="int"/>
+    </constant>
+    <constant name="ibelowdot" value="16785099">
+      <type name="int"/>
+    </constant>
+    <constant name="ibreve" value="16777517">
+      <type name="int"/>
+    </constant>
+    <constant name="icircumflex" value="238">
+      <type name="int"/>
+    </constant>
+    <constant name="identical" value="2255">
+      <type name="int"/>
+    </constant>
+    <constant name="idiaeresis" value="239">
+      <type name="int"/>
+    </constant>
+    <constant name="idotless" value="697">
+      <type name="int"/>
+    </constant>
+    <constant name="ifonlyif" value="2253">
+      <type name="int"/>
+    </constant>
+    <constant name="igrave" value="236">
+      <type name="int"/>
+    </constant>
+    <constant name="ihook" value="16785097">
+      <type name="int"/>
+    </constant>
+    <constant name="imacron" value="1007">
+      <type name="int"/>
+    </constant>
+    <constant name="implies" value="2254">
+      <type name="int"/>
+    </constant>
+    <constant name="includedin" value="2266">
+      <type name="int"/>
+    </constant>
+    <constant name="includes" value="2267">
+      <type name="int"/>
+    </constant>
+    <constant name="infinity" value="2242">
+      <type name="int"/>
+    </constant>
+    <function name="init"
+              c:identifier="clutter_init"
+              doc="It will initialise everything needed to operate with Clutter and
+parses some standard command line options. @argc and @argv are
+adjusted accordingly so your own code will never see those standard
+arguments.">
+      <return-value transfer-ownership="full">
+        <type name="InitError" c:type="ClutterInitError"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="The number of arguments in @argv">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1"
+                   doc="A pointer to an array of arguments.">
+          <array length="0" c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_with_args"
+              c:identifier="clutter_init_with_args"
+              doc="This function does the same work as clutter_init(). Additionally,
+it allows you to add your own command line options, and it
+automatically generates nicely formatted &lt;option&gt;--help&lt;/option&gt;
+output. Note that your program will be terminated after writing
+out the help output. Also note that, in case of error, the
+error message will be placed inside @error instead of being
+printed on the display.
+initialised, or other values or #ClutterInitError in case of
+error."
+              version="0.2"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="InitError" c:type="ClutterInitError"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="a pointer to the number of command line arguments">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1"
+                   doc="a pointer to the array of command line arguments">
+          <array length="0" c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="parameter_string"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a string which is displayed in the first line of &lt;option&gt;--help&lt;/option&gt; output, after &lt;literal&gt;&lt;replaceable&gt;programname&lt;/replaceable&gt; [OPTION...]&lt;/literal&gt;">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="entries"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a %NULL terminated array of #GOptionEntry&lt;!-- --&gt;s describing the options of your program">
+          <type name="GLib.OptionEntry" c:type="GOptionEntry*"/>
+        </parameter>
+        <parameter name="translation_domain"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a translation domain to use for translating the &lt;option&gt;--help&lt;/option&gt; output for the options in">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="integral" value="2239">
+      <type name="int"/>
+    </constant>
+    <constant name="intersection" value="2268">
+      <type name="int"/>
+    </constant>
+    <constant name="iogonek" value="999">
+      <type name="int"/>
+    </constant>
+    <constant name="itilde" value="949">
+      <type name="int"/>
+    </constant>
+    <constant name="j" value="106">
+      <type name="int"/>
+    </constant>
+    <constant name="jcircumflex" value="700">
+      <type name="int"/>
+    </constant>
+    <constant name="jot" value="3018">
+      <type name="int"/>
+    </constant>
+    <constant name="k" value="107">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_A" value="1201">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_CHI" value="1217">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_E" value="1204">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_FU" value="1228">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_HA" value="1226">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_HE" value="1229">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_HI" value="1227">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_HO" value="1230">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_HU" value="1228">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_I" value="1202">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_KA" value="1206">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_KE" value="1209">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_KI" value="1207">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_KO" value="1210">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_KU" value="1208">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_MA" value="1231">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_ME" value="1234">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_MI" value="1232">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_MO" value="1235">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_MU" value="1233">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_N" value="1245">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_NA" value="1221">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_NE" value="1224">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_NI" value="1222">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_NO" value="1225">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_NU" value="1223">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_O" value="1205">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_RA" value="1239">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_RE" value="1242">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_RI" value="1240">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_RO" value="1243">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_RU" value="1241">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_SA" value="1211">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_SE" value="1214">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_SHI" value="1212">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_SO" value="1215">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_SU" value="1213">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TA" value="1216">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TE" value="1219">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TI" value="1217">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TO" value="1220">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TSU" value="1218">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TU" value="1218">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_U" value="1203">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_WA" value="1244">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_WO" value="1190">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_YA" value="1236">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_YO" value="1238">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_YU" value="1237">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_a" value="1191">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_closingbracket" value="1187">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_comma" value="1188">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_conjunctive" value="1189">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_e" value="1194">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_fullstop" value="1185">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_i" value="1192">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_middledot" value="1189">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_o" value="1195">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_openingbracket" value="1186">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_tsu" value="1199">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_tu" value="1199">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_u" value="1193">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_ya" value="1196">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_yo" value="1198">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_yu" value="1197">
+      <type name="int"/>
+    </constant>
+    <constant name="kappa" value="930">
+      <type name="int"/>
+    </constant>
+    <constant name="kcedilla" value="1011">
+      <type name="int"/>
+    </constant>
+    <function name="keysym_to_unicode"
+              c:identifier="clutter_keysym_to_unicode"
+              doc="Convert from a Clutter key symbol to the corresponding ISO10646 (Unicode)
+character.
+character.">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="kra" value="930">
+      <type name="int"/>
+    </constant>
+    <constant name="l" value="108">
+      <type name="int"/>
+    </constant>
+    <constant name="lacute" value="485">
+      <type name="int"/>
+    </constant>
+    <constant name="latincross" value="2777">
+      <type name="int"/>
+    </constant>
+    <constant name="lbelowdot" value="16784951">
+      <type name="int"/>
+    </constant>
+    <constant name="lcaron" value="437">
+      <type name="int"/>
+    </constant>
+    <constant name="lcedilla" value="950">
+      <type name="int"/>
+    </constant>
+    <constant name="leftanglebracket" value="2748">
+      <type name="int"/>
+    </constant>
+    <constant name="leftarrow" value="2299">
+      <type name="int"/>
+    </constant>
+    <constant name="leftcaret" value="2979">
+      <type name="int"/>
+    </constant>
+    <constant name="leftdoublequotemark" value="2770">
+      <type name="int"/>
+    </constant>
+    <constant name="leftmiddlecurlybrace" value="2223">
+      <type name="int"/>
+    </constant>
+    <constant name="leftopentriangle" value="2764">
+      <type name="int"/>
+    </constant>
+    <constant name="leftpointer" value="2794">
+      <type name="int"/>
+    </constant>
+    <constant name="leftradical" value="2209">
+      <type name="int"/>
+    </constant>
+    <constant name="leftshoe" value="3034">
+      <type name="int"/>
+    </constant>
+    <constant name="leftsinglequotemark" value="2768">
+      <type name="int"/>
+    </constant>
+    <constant name="leftt" value="2548">
+      <type name="int"/>
+    </constant>
+    <constant name="lefttack" value="3036">
+      <type name="int"/>
+    </constant>
+    <constant name="less" value="60">
+      <type name="int"/>
+    </constant>
+    <constant name="lessthanequal" value="2236">
+      <type name="int"/>
+    </constant>
+    <constant name="lf" value="2533">
+      <type name="int"/>
+    </constant>
+    <constant name="logicaland" value="2270">
+      <type name="int"/>
+    </constant>
+    <constant name="logicalor" value="2271">
+      <type name="int"/>
+    </constant>
+    <constant name="lowleftcorner" value="2541">
+      <type name="int"/>
+    </constant>
+    <constant name="lowrightcorner" value="2538">
+      <type name="int"/>
+    </constant>
+    <constant name="lstroke" value="435">
+      <type name="int"/>
+    </constant>
+    <constant name="m" value="109">
+      <type name="int"/>
+    </constant>
+    <constant name="mabovedot" value="16784961">
+      <type name="int"/>
+    </constant>
+    <constant name="macron" value="175">
+      <type name="int"/>
+    </constant>
+    <function name="main"
+              c:identifier="clutter_main"
+              doc="Starts the Clutter mainloop.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="main_level"
+              c:identifier="clutter_main_level"
+              doc="Retrieves the depth of the Clutter mainloop.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+    </function>
+    <function name="main_quit"
+              c:identifier="clutter_main_quit"
+              doc="Terminates the Clutter mainloop.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <constant name="malesymbol" value="2807">
+      <type name="int"/>
+    </constant>
+    <constant name="maltesecross" value="2800">
+      <type name="int"/>
+    </constant>
+    <constant name="marker" value="2751">
+      <type name="int"/>
+    </constant>
+    <constant name="masculine" value="186">
+      <type name="int"/>
+    </constant>
+    <constant name="minus" value="45">
+      <type name="int"/>
+    </constant>
+    <constant name="minutes" value="2774">
+      <type name="int"/>
+    </constant>
+    <constant name="mu" value="181">
+      <type name="int"/>
+    </constant>
+    <constant name="multiply" value="215">
+      <type name="int"/>
+    </constant>
+    <constant name="musicalflat" value="2806">
+      <type name="int"/>
+    </constant>
+    <constant name="musicalsharp" value="2805">
+      <type name="int"/>
+    </constant>
+    <constant name="n" value="110">
+      <type name="int"/>
+    </constant>
+    <constant name="nabla" value="2245">
+      <type name="int"/>
+    </constant>
+    <constant name="nacute" value="497">
+      <type name="int"/>
+    </constant>
+    <constant name="ncaron" value="498">
+      <type name="int"/>
+    </constant>
+    <constant name="ncedilla" value="1009">
+      <type name="int"/>
+    </constant>
+    <constant name="ninesubscript" value="16785545">
+      <type name="int"/>
+    </constant>
+    <constant name="ninesuperior" value="16785529">
+      <type name="int"/>
+    </constant>
+    <constant name="nl" value="2536">
+      <type name="int"/>
+    </constant>
+    <constant name="nobreakspace" value="160">
+      <type name="int"/>
+    </constant>
+    <constant name="notapproxeq" value="16785991">
+      <type name="int"/>
+    </constant>
+    <constant name="notelementof" value="16785929">
+      <type name="int"/>
+    </constant>
+    <constant name="notequal" value="2237">
+      <type name="int"/>
+    </constant>
+    <constant name="notidentical" value="16786018">
+      <type name="int"/>
+    </constant>
+    <constant name="notsign" value="172">
+      <type name="int"/>
+    </constant>
+    <constant name="ntilde" value="241">
+      <type name="int"/>
+    </constant>
+    <constant name="numbersign" value="35">
+      <type name="int"/>
+    </constant>
+    <constant name="numerosign" value="1712">
+      <type name="int"/>
+    </constant>
+    <constant name="o" value="111">
+      <type name="int"/>
+    </constant>
+    <constant name="oacute" value="243">
+      <type name="int"/>
+    </constant>
+    <constant name="obarred" value="16777845">
+      <type name="int"/>
+    </constant>
+    <constant name="obelowdot" value="16785101">
+      <type name="int"/>
+    </constant>
+    <constant name="ocaron" value="16777682">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflex" value="244">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflexacute" value="16785105">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflexbelowdot" value="16785113">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflexgrave" value="16785107">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflexhook" value="16785109">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflextilde" value="16785111">
+      <type name="int"/>
+    </constant>
+    <constant name="odiaeresis" value="246">
+      <type name="int"/>
+    </constant>
+    <constant name="odoubleacute" value="501">
+      <type name="int"/>
+    </constant>
+    <constant name="oe" value="5053">
+      <type name="int"/>
+    </constant>
+    <constant name="ogonek" value="434">
+      <type name="int"/>
+    </constant>
+    <constant name="ograve" value="242">
+      <type name="int"/>
+    </constant>
+    <constant name="ohook" value="16785103">
+      <type name="int"/>
+    </constant>
+    <constant name="ohorn" value="16777633">
+      <type name="int"/>
+    </constant>
+    <constant name="ohornacute" value="16785115">
+      <type name="int"/>
+    </constant>
+    <constant name="ohornbelowdot" value="16785123">
+      <type name="int"/>
+    </constant>
+    <constant name="ohorngrave" value="16785117">
+      <type name="int"/>
+    </constant>
+    <constant name="ohornhook" value="16785119">
+      <type name="int"/>
+    </constant>
+    <constant name="ohorntilde" value="16785121">
+      <type name="int"/>
+    </constant>
+    <constant name="omacron" value="1010">
+      <type name="int"/>
+    </constant>
+    <constant name="oneeighth" value="2755">
+      <type name="int"/>
+    </constant>
+    <constant name="onefifth" value="2738">
+      <type name="int"/>
+    </constant>
+    <constant name="onehalf" value="189">
+      <type name="int"/>
+    </constant>
+    <constant name="onequarter" value="188">
+      <type name="int"/>
+    </constant>
+    <constant name="onesixth" value="2742">
+      <type name="int"/>
+    </constant>
+    <constant name="onesubscript" value="16785537">
+      <type name="int"/>
+    </constant>
+    <constant name="onesuperior" value="185">
+      <type name="int"/>
+    </constant>
+    <constant name="onethird" value="2736">
+      <type name="int"/>
+    </constant>
+    <constant name="ooblique" value="248">
+      <type name="int"/>
+    </constant>
+    <constant name="openrectbullet" value="2786">
+      <type name="int"/>
+    </constant>
+    <constant name="openstar" value="2789">
+      <type name="int"/>
+    </constant>
+    <constant name="opentribulletdown" value="2788">
+      <type name="int"/>
+    </constant>
+    <constant name="opentribulletup" value="2787">
+      <type name="int"/>
+    </constant>
+    <constant name="ordfeminine" value="170">
+      <type name="int"/>
+    </constant>
+    <constant name="oslash" value="248">
+      <type name="int"/>
+    </constant>
+    <constant name="otilde" value="245">
+      <type name="int"/>
+    </constant>
+    <constant name="overbar" value="3008">
+      <type name="int"/>
+    </constant>
+    <constant name="overline" value="1150">
+      <type name="int"/>
+    </constant>
+    <constant name="p" value="112">
+      <type name="int"/>
+    </constant>
+    <constant name="pabovedot" value="16784983">
+      <type name="int"/>
+    </constant>
+    <constant name="paragraph" value="182">
+      <type name="int"/>
+    </constant>
+    <function name="param_spec_color"
+              c:identifier="clutter_param_spec_color"
+              doc="Creates a #GParamSpec for properties using #ClutterColor."
+              version="0.8.4">
+      <return-value transfer-ownership="full">
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <type name="Color" c:type="ClutterColor*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_fixed"
+              c:identifier="clutter_param_spec_fixed"
+              doc="Creates a #GParamSpec for properties using #CoglFixed values"
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <type name="Cogl.Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <type name="Cogl.Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <type name="Cogl.Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_units"
+              c:identifier="clutter_param_spec_units"
+              doc="Creates a #GParamSpec for properties using #ClutterUnits."
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="default_type" transfer-ownership="none">
+          <type name="UnitType" c:type="ClutterUnitType"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="parenleft" value="40">
+      <type name="int"/>
+    </constant>
+    <constant name="parenright" value="41">
+      <type name="int"/>
+    </constant>
+    <constant name="partdifferential" value="16785922">
+      <type name="int"/>
+    </constant>
+    <constant name="partialderivative" value="2287">
+      <type name="int"/>
+    </constant>
+    <constant name="percent" value="37">
+      <type name="int"/>
+    </constant>
+    <constant name="period" value="46">
+      <type name="int"/>
+    </constant>
+    <constant name="periodcentered" value="183">
+      <type name="int"/>
+    </constant>
+    <constant name="phonographcopyright" value="2811">
+      <type name="int"/>
+    </constant>
+    <constant name="plus" value="43">
+      <type name="int"/>
+    </constant>
+    <constant name="plusminus" value="177">
+      <type name="int"/>
+    </constant>
+    <constant name="prescription" value="2772">
+      <type name="int"/>
+    </constant>
+    <constant name="prolongedsound" value="1200">
+      <type name="int"/>
+    </constant>
+    <constant name="punctspace" value="2726">
+      <type name="int"/>
+    </constant>
+    <constant name="q" value="113">
+      <type name="int"/>
+    </constant>
+    <constant name="quad" value="3020">
+      <type name="int"/>
+    </constant>
+    <constant name="question" value="63">
+      <type name="int"/>
+    </constant>
+    <constant name="questiondown" value="191">
+      <type name="int"/>
+    </constant>
+    <constant name="quotedbl" value="34">
+      <type name="int"/>
+    </constant>
+    <constant name="quoteleft" value="96">
+      <type name="int"/>
+    </constant>
+    <constant name="quoteright" value="39">
+      <type name="int"/>
+    </constant>
+    <constant name="r" value="114">
+      <type name="int"/>
+    </constant>
+    <constant name="racute" value="480">
+      <type name="int"/>
+    </constant>
+    <constant name="radical" value="2262">
+      <type name="int"/>
+    </constant>
+    <constant name="rcaron" value="504">
+      <type name="int"/>
+    </constant>
+    <constant name="rcedilla" value="947">
+      <type name="int"/>
+    </constant>
+    <function name="redraw"
+              c:identifier="clutter_redraw"
+              doc="Forces a redraw of the entire stage. Applications should never use this
+function, but queue a redraw using clutter_actor_queue_redraw().
+This function should only be used by libraries integrating Clutter from
+within another toolkit.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stage" transfer-ownership="none">
+          <type name="Stage" c:type="ClutterStage*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="registered" value="174">
+      <type name="int"/>
+    </constant>
+    <constant name="rightanglebracket" value="2750">
+      <type name="int"/>
+    </constant>
+    <constant name="rightarrow" value="2301">
+      <type name="int"/>
+    </constant>
+    <constant name="rightcaret" value="2982">
+      <type name="int"/>
+    </constant>
+    <constant name="rightdoublequotemark" value="2771">
+      <type name="int"/>
+    </constant>
+    <constant name="rightmiddlecurlybrace" value="2224">
+      <type name="int"/>
+    </constant>
+    <constant name="rightmiddlesummation" value="2231">
+      <type name="int"/>
+    </constant>
+    <constant name="rightopentriangle" value="2765">
+      <type name="int"/>
+    </constant>
+    <constant name="rightpointer" value="2795">
+      <type name="int"/>
+    </constant>
+    <constant name="rightshoe" value="3032">
+      <type name="int"/>
+    </constant>
+    <constant name="rightsinglequotemark" value="2769">
+      <type name="int"/>
+    </constant>
+    <constant name="rightt" value="2549">
+      <type name="int"/>
+    </constant>
+    <constant name="righttack" value="3068">
+      <type name="int"/>
+    </constant>
+    <constant name="s" value="115">
+      <type name="int"/>
+    </constant>
+    <constant name="sabovedot" value="16784993">
+      <type name="int"/>
+    </constant>
+    <constant name="sacute" value="438">
+      <type name="int"/>
+    </constant>
+    <constant name="scaron" value="441">
+      <type name="int"/>
+    </constant>
+    <constant name="scedilla" value="442">
+      <type name="int"/>
+    </constant>
+    <constant name="schwa" value="16777817">
+      <type name="int"/>
+    </constant>
+    <constant name="scircumflex" value="766">
+      <type name="int"/>
+    </constant>
+    <constant name="script_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="seconds" value="2775">
+      <type name="int"/>
+    </constant>
+    <constant name="section" value="167">
+      <type name="int"/>
+    </constant>
+    <constant name="semicolon" value="59">
+      <type name="int"/>
+    </constant>
+    <constant name="semivoicedsound" value="1247">
+      <type name="int"/>
+    </constant>
+    <function name="set_default_frame_rate"
+              c:identifier="clutter_set_default_frame_rate"
+              doc="Sets the default frame rate. This frame rate will be used to limit
+the number of frames drawn if Clutter is not able to synchronize
+with the vertical refresh rate of the display. When synchronization
+is possible, this value is ignored."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="frames_per_sec" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_font_flags"
+              c:identifier="clutter_set_font_flags"
+              doc="Sets the font quality options for subsequent text rendering
+operations.
+Using mipmapped textures will improve the quality for scaled down
+text but will use more texture memory.
+Enabling hinting improves text quality for static text but may
+introduce some artifacts if the text is animated."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="FontFlags" c:type="ClutterFontFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_motion_events_enabled"
+              c:identifier="clutter_set_motion_events_enabled"
+              doc="Sets whether per-actor motion events should be enabled or not (the
+default is to enable them).
+If @enable is %FALSE the following events will not work:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;ClutterActor::motion-event, unless on the
+#ClutterStage&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;ClutterActor::enter-event&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;ClutterActor::leave-event&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;"
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="enable" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="seveneighths" value="2758">
+      <type name="int"/>
+    </constant>
+    <constant name="sevensubscript" value="16785543">
+      <type name="int"/>
+    </constant>
+    <constant name="sevensuperior" value="16785527">
+      <type name="int"/>
+    </constant>
+    <constant name="signaturemark" value="2762">
+      <type name="int"/>
+    </constant>
+    <constant name="signifblank" value="2732">
+      <type name="int"/>
+    </constant>
+    <constant name="similarequal" value="2249">
+      <type name="int"/>
+    </constant>
+    <constant name="singlelowquotemark" value="2813">
+      <type name="int"/>
+    </constant>
+    <constant name="sixsubscript" value="16785542">
+      <type name="int"/>
+    </constant>
+    <constant name="sixsuperior" value="16785526">
+      <type name="int"/>
+    </constant>
+    <constant name="slash" value="47">
+      <type name="int"/>
+    </constant>
+    <constant name="soliddiamond" value="2528">
+      <type name="int"/>
+    </constant>
+    <constant name="space" value="32">
+      <type name="int"/>
+    </constant>
+    <constant name="squareroot" value="16785946">
+      <type name="int"/>
+    </constant>
+    <constant name="ssharp" value="223">
+      <type name="int"/>
+    </constant>
+    <constant name="sterling" value="163">
+      <type name="int"/>
+    </constant>
+    <constant name="stricteq" value="16786019">
+      <type name="int"/>
+    </constant>
+    <constant name="t" value="116">
+      <type name="int"/>
+    </constant>
+    <constant name="tabovedot" value="16785003">
+      <type name="int"/>
+    </constant>
+    <constant name="tcaron" value="443">
+      <type name="int"/>
+    </constant>
+    <constant name="tcedilla" value="510">
+      <type name="int"/>
+    </constant>
+    <constant name="telephone" value="2809">
+      <type name="int"/>
+    </constant>
+    <constant name="telephonerecorder" value="2810">
+      <type name="int"/>
+    </constant>
+    <constant name="therefore" value="2240">
+      <type name="int"/>
+    </constant>
+    <constant name="thinspace" value="2727">
+      <type name="int"/>
+    </constant>
+    <constant name="thorn" value="254">
+      <type name="int"/>
+    </constant>
+    <function name="threads_add_frame_source"
+              c:identifier="clutter_threads_add_frame_source"
+              doc="Simple wrapper around clutter_threads_add_frame_source_full()."
+              version="0.8">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="fps" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_frame_source_full"
+              c:identifier="clutter_threads_add_frame_source_full"
+              doc="Sets a function to be called at regular intervals holding the Clutter
+threads lock, with the given priority. The function is called repeatedly
+until it returns %FALSE, at which point the timeout is automatically
+removed and the function will not be called again. The @notify function
+is called when the timeout is removed.
+This function is similar to clutter_threads_add_timeout_full()
+except that it will try to compensate for delays. For example, if
+will be called again half the interval time after it finished. In
+contrast clutter_threads_add_timeout_full() would not fire until a
+full interval after the function completes so the delay between
+calls would be @interval * 1.5. This function does not however try
+to invoke the function multiple times to catch up missing frames if
+See also clutter_threads_add_idle_full()."
+              version="0.8">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority"
+                   transfer-ownership="none"
+                   doc=" range between #G_PRIORITY_DEFAULT and #G_PRIORITY_HIGH.">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="fps" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="call">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_idle"
+              c:identifier="clutter_threads_add_idle"
+              doc="Simple wrapper around clutter_threads_add_idle_full() using the
+default priority."
+              version="0.4">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_idle_full"
+              c:identifier="clutter_threads_add_idle_full"
+              doc="Adds a function to be called whenever there are no higher priority
+events pending. If the function returns %FALSE it is automatically
+removed from the list of event sources and will not be called again.
+This function can be considered a thread-safe variant of g_idle_add_full():
+it will call @function while holding the Clutter lock. It is logically
+equivalent to the following implementation:
+|[
+static gboolean
+idle_safe_callback (gpointer data)
+{
+SafeClosure *closure = data;
+gboolean res = FALSE;
+/&amp;ast; mark the critical section &amp;ast;/
+clutter_threads_enter();
+/&amp;ast; the callback does not need to acquire the Clutter
+&amp;ast; lock itself, as it is held by the this proxy handler
+&amp;ast;/
+res = closure-&gt;callback (closure-&gt;data);
+clutter_threads_leave();
+return res;
+}
+static gulong
+add_safe_idle (GSourceFunc callback,
+gpointer    data)
+{
+SafeClosure *closure = g_new0 (SafeClosure, 1);
+closure-&amp;gt;callback = callback;
+closure-&amp;gt;data = data;
+return g_add_idle_full (G_PRIORITY_DEFAULT_IDLE,
+idle_safe_callback,
+closure,
+g_free)
+}
+|
+This function should be used by threaded applications to make sure
+that @func is emitted under the Clutter threads lock and invoked
+from the same thread that started the Clutter main loop. For instance,
+it can be used to update the UI using the results from a worker
+thread:
+|[
+static gboolean
+update_ui (gpointer data)
+{
+SomeClosure *closure = data;
+/&amp;ast; it is safe to call Clutter API from this function because
+&amp;ast; it is invoked from the same thread that started the main
+&amp;ast; loop and under the Clutter thread lock
+&amp;ast;/
+clutter_label_set_text (CLUTTER_LABEL (closure-&amp;gt;label),
+closure-&amp;gt;text);
+g_object_unref (closure-&amp;gt;label);
+g_free (closure);
+return FALSE;
+}
+/&amp;ast; within another thread &amp;ast;/
+closure = g_new0 (SomeClosure, 1);
+/&amp;ast; always take a reference on GObject instances &amp;ast;/
+closure-&amp;gt;label = g_object_ref (my_application-&amp;gt;label);
+closure-&amp;gt;text = g_strdup (processed_text_to_update_the_label);
+clutter_threads_add_idle_full (G_PRIORITY_HIGH_IDLE,
+update_ui,
+closure,
+NULL);
+]|"
+              version="0.4">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority"
+                   transfer-ownership="none"
+                   doc=" range between #G_PRIORITY_DEFAULT_IDLE and #G_PRIORITY_HIGH_IDLE">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="call">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_repaint_func"
+              c:identifier="clutter_threads_add_repaint_func"
+              doc="Adds a function to be called whenever Clutter is repainting a Stage.
+If the function returns %FALSE it is automatically removed from the
+list of repaint functions and will not be called again.
+This function is guaranteed to be called from within the same thread
+that called clutter_main(), and while the Clutter lock is being held.
+A repaint function is useful to ensure that an update of the scenegraph
+is performed before the scenegraph is repainted; for instance, uploading
+a frame from a video into a #ClutterTexture.
+When the repaint function is removed (either because it returned %FALSE
+or because clutter_threads_remove_repaint_func() has been called) the
+can use the returned integer to remove the repaint function by
+calling clutter_threads_remove_repaint_func()."
+              version="1.0">
+      <return-value transfer-ownership="none"
+                    doc="of the repaint function. You">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="1"
+                   destroy="2">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify"
+                   transfer-ownership="none"
+                   scope="call"
+                   doc=" function, or %NULL">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_timeout"
+              c:identifier="clutter_threads_add_timeout"
+              doc="Simple wrapper around clutter_threads_add_timeout_full()."
+              version="0.4">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_timeout_full"
+              c:identifier="clutter_threads_add_timeout_full"
+              doc="Sets a function to be called at regular intervals holding the Clutter
+threads lock, with the given priority. The function is called repeatedly
+until it returns %FALSE, at which point the timeout is automatically
+removed and the function will not be called again. The @notify function
+is called when the timeout is removed.
+The first call to the function will be at the end of the first @interval.
+It is important to note that, due to how the Clutter main loop is
+implemented, the timing will not be accurate and it will not try to
+&quot;keep up&quot; with the interval. A more reliable source is available
+using clutter_threads_add_frame_source_full(), which is also internally
+used by #ClutterTimeline.
+See also clutter_threads_add_idle_full()."
+              version="0.4">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority"
+                   transfer-ownership="none"
+                   doc=" range between #G_PRIORITY_DEFAULT and #G_PRIORITY_HIGH.">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="call">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_enter"
+              c:identifier="clutter_threads_enter"
+              doc="Locks the Clutter thread lock."
+              version="0.4">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="threads_init"
+              c:identifier="clutter_threads_init"
+              doc="Initialises the Clutter threading mechanism, so that Clutter API can be
+called by multiple threads, using clutter_threads_enter() and
+clutter_threads_leave() to mark the critical sections.
+You must call g_thread_init() before this function.
+This function must be called before clutter_init().
+It is safe to call this function multiple times."
+              version="0.4">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="threads_leave"
+              c:identifier="clutter_threads_leave"
+              doc="Unlocks the Clutter thread lock."
+              version="0.4">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="threads_remove_repaint_func"
+              c:identifier="clutter_threads_remove_repaint_func"
+              doc="Removes the repaint function with @handle_id as its id"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_set_lock_functions"
+              c:identifier="clutter_threads_set_lock_functions"
+              doc="Allows the application to replace the standard method that
+Clutter uses to protect its data structures. Normally, Clutter
+creates a single #GMutex that is locked by clutter_threads_enter(),
+and released by clutter_threads_leave(); using this function an
+application provides, instead, a function @enter_fn that is
+called by clutter_threads_enter() and a function @leave_fn that is
+called by clutter_threads_leave().
+The functions must provide at least same locking functionality
+as the default implementation, but can also do extra application
+specific processing.
+As an example, consider an application that has its own recursive
+lock that when held, holds the Clutter lock as well. When Clutter
+unlocks the Clutter lock when entering a recursive main loop, the
+application must temporarily release its lock as well.
+Most threaded Clutter apps won&apos;t need to use this method.
+This method must be called before clutter_threads_init(), and cannot
+be called multiple times."
+              version="0.4">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="enter_fn" transfer-ownership="none" scope="call">
+          <type name="GObject.Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="leave_fn" transfer-ownership="none" scope="call">
+          <type name="GObject.Callback" c:type="GCallback"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="threeeighths" value="2756">
+      <type name="int"/>
+    </constant>
+    <constant name="threefifths" value="2740">
+      <type name="int"/>
+    </constant>
+    <constant name="threequarters" value="190">
+      <type name="int"/>
+    </constant>
+    <constant name="threesubscript" value="16785539">
+      <type name="int"/>
+    </constant>
+    <constant name="threesuperior" value="179">
+      <type name="int"/>
+    </constant>
+    <constant name="tintegral" value="16785965">
+      <type name="int"/>
+    </constant>
+    <constant name="topintegral" value="2212">
+      <type name="int"/>
+    </constant>
+    <constant name="topleftparens" value="2219">
+      <type name="int"/>
+    </constant>
+    <constant name="topleftradical" value="2210">
+      <type name="int"/>
+    </constant>
+    <constant name="topleftsqbracket" value="2215">
+      <type name="int"/>
+    </constant>
+    <constant name="topleftsummation" value="2225">
+      <type name="int"/>
+    </constant>
+    <constant name="toprightparens" value="2221">
+      <type name="int"/>
+    </constant>
+    <constant name="toprightsqbracket" value="2217">
+      <type name="int"/>
+    </constant>
+    <constant name="toprightsummation" value="2229">
+      <type name="int"/>
+    </constant>
+    <constant name="topt" value="2551">
+      <type name="int"/>
+    </constant>
+    <constant name="topvertsummationconnector" value="2227">
+      <type name="int"/>
+    </constant>
+    <constant name="trademark" value="2761">
+      <type name="int"/>
+    </constant>
+    <constant name="trademarkincircle" value="2763">
+      <type name="int"/>
+    </constant>
+    <constant name="tslash" value="956">
+      <type name="int"/>
+    </constant>
+    <constant name="twofifths" value="2739">
+      <type name="int"/>
+    </constant>
+    <constant name="twosubscript" value="16785538">
+      <type name="int"/>
+    </constant>
+    <constant name="twosuperior" value="178">
+      <type name="int"/>
+    </constant>
+    <constant name="twothirds" value="2737">
+      <type name="int"/>
+    </constant>
+    <constant name="u" value="117">
+      <type name="int"/>
+    </constant>
+    <constant name="uacute" value="250">
+      <type name="int"/>
+    </constant>
+    <constant name="ubelowdot" value="16785125">
+      <type name="int"/>
+    </constant>
+    <constant name="ubreve" value="765">
+      <type name="int"/>
+    </constant>
+    <constant name="ucircumflex" value="251">
+      <type name="int"/>
+    </constant>
+    <constant name="udiaeresis" value="252">
+      <type name="int"/>
+    </constant>
+    <constant name="udoubleacute" value="507">
+      <type name="int"/>
+    </constant>
+    <constant name="ugrave" value="249">
+      <type name="int"/>
+    </constant>
+    <constant name="uhook" value="16785127">
+      <type name="int"/>
+    </constant>
+    <constant name="uhorn" value="16777648">
+      <type name="int"/>
+    </constant>
+    <constant name="uhornacute" value="16785129">
+      <type name="int"/>
+    </constant>
+    <constant name="uhornbelowdot" value="16785137">
+      <type name="int"/>
+    </constant>
+    <constant name="uhorngrave" value="16785131">
+      <type name="int"/>
+    </constant>
+    <constant name="uhornhook" value="16785133">
+      <type name="int"/>
+    </constant>
+    <constant name="uhorntilde" value="16785135">
+      <type name="int"/>
+    </constant>
+    <constant name="umacron" value="1022">
+      <type name="int"/>
+    </constant>
+    <constant name="underbar" value="3014">
+      <type name="int"/>
+    </constant>
+    <constant name="underscore" value="95">
+      <type name="int"/>
+    </constant>
+    <function name="ungrab_keyboard"
+              c:identifier="clutter_ungrab_keyboard"
+              doc="Removes an existing grab of the keyboard."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="ungrab_pointer"
+              c:identifier="clutter_ungrab_pointer"
+              doc="Removes an existing grab of the pointer."
+              version="0.6">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="ungrab_pointer_for_device"
+              c:identifier="clutter_ungrab_pointer_for_device"
+              doc="Removes an existing grab of the pointer events for device @id."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="union" value="2269">
+      <type name="int"/>
+    </constant>
+    <constant name="uogonek" value="1017">
+      <type name="int"/>
+    </constant>
+    <constant name="uparrow" value="2300">
+      <type name="int"/>
+    </constant>
+    <constant name="upcaret" value="2985">
+      <type name="int"/>
+    </constant>
+    <constant name="upleftcorner" value="2540">
+      <type name="int"/>
+    </constant>
+    <constant name="uprightcorner" value="2539">
+      <type name="int"/>
+    </constant>
+    <constant name="upshoe" value="3011">
+      <type name="int"/>
+    </constant>
+    <constant name="upstile" value="3027">
+      <type name="int"/>
+    </constant>
+    <constant name="uptack" value="3022">
+      <type name="int"/>
+    </constant>
+    <constant name="uring" value="505">
+      <type name="int"/>
+    </constant>
+    <function name="util_next_p2"
+              c:identifier="clutter_util_next_p2"
+              doc="Calculates the nearest power of two, greater than or equal to @a."
+              deprecated="1.2">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="utilde" value="1021">
+      <type name="int"/>
+    </constant>
+    <constant name="v" value="118">
+      <type name="int"/>
+    </constant>
+    <function name="value_get_color"
+              c:identifier="clutter_value_get_color"
+              doc="Gets the #ClutterColor contained in @value."
+              version="0.8.4">
+      <return-value transfer-ownership="none">
+        <type name="Color" c:type="ClutterColor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fixed"
+              c:identifier="clutter_value_get_fixed"
+              doc="Gets the fixed point value stored inside @value."
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="Cogl.Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_shader_float"
+              c:identifier="clutter_value_get_shader_float"
+              doc="Retrieves the list of floating point values stored inside
+the passed #GValue. @value must have been initialized with
+%CLUTTER_TYPE_SHADER_FLOAT.
+The returned value is owned by the #GValue and should never
+be modified or freed."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="float" c:type="gfloat*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc=" point values, or %NULL">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_shader_int"
+              c:identifier="clutter_value_get_shader_int"
+              doc="Retrieves the list of integer values stored inside the passed
+#GValue. @value must have been initialized with
+%CLUTTER_TYPE_SHADER_INT.
+The returned value is owned by the #GValue and should never
+be modified or freed."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc=" values, or %NULL">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_shader_matrix"
+              c:identifier="clutter_value_get_shader_matrix"
+              doc="Retrieves a matrix of floating point values stored inside
+the passed #GValue. @value must have been initialized with
+%CLUTTER_TYPE_SHADER_MATRIX.
+of floating point values. The returned value is owned by the #GValue and
+should never be modified or freed."
+              version="0.8">
+      <return-value transfer-ownership="none" doc="the pointer to a matrix">
+        <array length="1" c:type="gfloat*">
+          <type name="float"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="return location for the number of returned floating point values, or %NULL">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_units"
+              c:identifier="clutter_value_get_units"
+              doc="Gets the #ClutterUnit&lt;!-- --&gt;s contained in @value."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="Units" c:type="ClutterUnits*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_color"
+              c:identifier="clutter_value_set_color"
+              doc="Sets @value to @color."
+              version="0.8.4">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fixed"
+              c:identifier="clutter_value_set_fixed"
+              doc="Sets @value to @fixed_."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="fixed_" transfer-ownership="none">
+          <type name="Cogl.Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_shader_float"
+              c:identifier="clutter_value_set_shader_float"
+              doc="Sets @floats as the contents of @value. The passed #GValue
+must have been initialized using %CLUTTER_TYPE_SHADER_FLOAT."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="floats"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="none">
+          <type name="float" c:type="gfloat*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_shader_int"
+              c:identifier="clutter_value_set_shader_int"
+              doc="Sets @ints as the contents of @value. The passed #GValue
+must have been initialized using %CLUTTER_TYPE_SHADER_INT."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="ints"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="none">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_shader_matrix"
+              c:identifier="clutter_value_set_shader_matrix"
+              doc="Sets @matrix as the contents of @value. The passed #GValue
+must have been initialized using %CLUTTER_TYPE_SHADER_MATRIX."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="matrix"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="none">
+          <type name="float" c:type="gfloat*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_units"
+              c:identifier="clutter_value_set_units"
+              doc="Sets @value to @units"
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="units" transfer-ownership="none">
+          <type name="Units" c:type="ClutterUnits*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="variation" value="2241">
+      <type name="int"/>
+    </constant>
+    <constant name="vertbar" value="2552">
+      <type name="int"/>
+    </constant>
+    <constant name="vertconnector" value="2214">
+      <type name="int"/>
+    </constant>
+    <constant name="voicedsound" value="1246">
+      <type name="int"/>
+    </constant>
+    <constant name="vt" value="2537">
+      <type name="int"/>
+    </constant>
+    <constant name="w" value="119">
+      <type name="int"/>
+    </constant>
+    <constant name="wacute" value="16785027">
+      <type name="int"/>
+    </constant>
+    <constant name="wcircumflex" value="16777589">
+      <type name="int"/>
+    </constant>
+    <constant name="wdiaeresis" value="16785029">
+      <type name="int"/>
+    </constant>
+    <constant name="wgrave" value="16785025">
+      <type name="int"/>
+    </constant>
+    <constant name="x" value="120">
+      <type name="int"/>
+    </constant>
+    <constant name="xabovedot" value="16785035">
+      <type name="int"/>
+    </constant>
+    <constant name="y" value="121">
+      <type name="int"/>
+    </constant>
+    <constant name="yacute" value="253">
+      <type name="int"/>
+    </constant>
+    <constant name="ybelowdot" value="16785141">
+      <type name="int"/>
+    </constant>
+    <constant name="ycircumflex" value="16777591">
+      <type name="int"/>
+    </constant>
+    <constant name="ydiaeresis" value="255">
+      <type name="int"/>
+    </constant>
+    <constant name="yen" value="165">
+      <type name="int"/>
+    </constant>
+    <constant name="ygrave" value="16785139">
+      <type name="int"/>
+    </constant>
+    <constant name="yhook" value="16785143">
+      <type name="int"/>
+    </constant>
+    <constant name="ytilde" value="16785145">
+      <type name="int"/>
+    </constant>
+    <constant name="z" value="122">
+      <type name="int"/>
+    </constant>
+    <constant name="zabovedot" value="447">
+      <type name="int"/>
+    </constant>
+    <constant name="zacute" value="444">
+      <type name="int"/>
+    </constant>
+    <constant name="zcaron" value="446">
+      <type name="int"/>
+    </constant>
+    <constant name="zerosubscript" value="16785536">
+      <type name="int"/>
+    </constant>
+    <constant name="zerosuperior" value="16785520">
+      <type name="int"/>
+    </constant>
+    <constant name="zstroke" value="16777654">
+      <type name="int"/>
+    </constant>
+  </namespace>
+</repository>
diff --git a/extra/clutter/authors.txt b/extra/clutter/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/extra/clutter/clutter.factor b/extra/clutter/clutter.factor
new file mode 100644 (file)
index 0000000..a69a857
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: clutter.ffi ;
+IN: clutter
+
diff --git a/extra/clutter/cogl/Cogl-1.0.gir b/extra/clutter/cogl/Cogl-1.0.gir
new file mode 100644 (file)
index 0000000..94159e4
--- /dev/null
@@ -0,0 +1,5539 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GL" version="1.0"/>
+  <include name="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <package name="gobject-2.0"/>
+  <c:include name="cogl/cogl.h"/>
+  <namespace name="Cogl" version="1.0" shared-library="libclutter-glx-1.0.so.0" c:prefix="Cogl">
+    <alias name="Angle" target="int32" c:type="CoglAngle"/>
+    <alias name="Fixed" target="int32" c:type="CoglFixed"/>
+    <alias name="Handle" target="any" c:type="CoglHandle"/>
+    <constant name="AFIRST_BIT" value="64">
+      <type name="int"/>
+    </constant>
+    <constant name="A_BIT" value="16">
+      <type name="int"/>
+    </constant>
+    <enumeration name="AttributeType"
+                 doc="Data types for the components of cogl_vertex_buffer_add()"
+                 version="1.0"
+                 glib:type-name="CoglAttributeType"
+                 glib:get-type="cogl_attribute_type_get_type"
+                 c:type="CoglAttributeType">
+      <member name="byte"
+              value="5120"
+              c:identifier="COGL_ATTRIBUTE_TYPE_BYTE"
+              glib:nick="byte"/>
+      <member name="unsigned_byte"
+              value="5121"
+              c:identifier="COGL_ATTRIBUTE_TYPE_UNSIGNED_BYTE"
+              glib:nick="unsigned-byte"/>
+      <member name="short"
+              value="5122"
+              c:identifier="COGL_ATTRIBUTE_TYPE_SHORT"
+              glib:nick="short"/>
+      <member name="unsigned_short"
+              value="5123"
+              c:identifier="COGL_ATTRIBUTE_TYPE_UNSIGNED_SHORT"
+              glib:nick="unsigned-short"/>
+      <member name="float"
+              value="5126"
+              c:identifier="COGL_ATTRIBUTE_TYPE_FLOAT"
+              glib:nick="float"/>
+    </enumeration>
+    <constant name="BGR_BIT" value="32">
+      <type name="int"/>
+    </constant>
+    <enumeration name="BlendStringError"
+                 doc="Error enumeration for the blend strings parser"
+                 version="1.0"
+                 glib:type-name="CoglBlendStringError"
+                 glib:get-type="cogl_blend_string_error_get_type"
+                 c:type="CoglBlendStringError"
+                 glib:error-quark="cogl_blend_string_error_quark">
+      <member name="parse_error"
+              value="0"
+              c:identifier="COGL_BLEND_STRING_ERROR_PARSE_ERROR"
+              glib:nick="parse-error"/>
+      <member name="argument_parse_error"
+              value="1"
+              c:identifier="COGL_BLEND_STRING_ERROR_ARGUMENT_PARSE_ERROR"
+              glib:nick="argument-parse-error"/>
+      <member name="invalid_error"
+              value="2"
+              c:identifier="COGL_BLEND_STRING_ERROR_INVALID_ERROR"
+              glib:nick="invalid-error"/>
+      <member name="gpu_unsupported_error"
+              value="3"
+              c:identifier="COGL_BLEND_STRING_ERROR_GPU_UNSUPPORTED_ERROR"
+              glib:nick="gpu-unsupported-error"/>
+    </enumeration>
+    <bitfield name="BufferAccess"
+              doc="The access hints for cogl_buffer_set_update_hint()"
+              version="1.2"
+              glib:type-name="CoglBufferAccess"
+              glib:get-type="cogl_buffer_access_get_type"
+              c:type="CoglBufferAccess">
+      <member name="read"
+              value="1"
+              c:identifier="COGL_BUFFER_ACCESS_READ"
+              glib:nick="read"/>
+      <member name="write"
+              value="2"
+              c:identifier="COGL_BUFFER_ACCESS_WRITE"
+              glib:nick="write"/>
+      <member name="read_write"
+              value="3"
+              c:identifier="COGL_BUFFER_ACCESS_READ_WRITE"
+              glib:nick="read-write"/>
+    </bitfield>
+    <bitfield name="BufferBit"
+              doc="Types of auxiliary buffers"
+              version="1.0"
+              glib:type-name="CoglBufferBit"
+              glib:get-type="cogl_buffer_bit_get_type"
+              c:type="CoglBufferBit">
+      <member name="color"
+              value="1"
+              c:identifier="COGL_BUFFER_BIT_COLOR"
+              glib:nick="color"/>
+      <member name="depth"
+              value="2"
+              c:identifier="COGL_BUFFER_BIT_DEPTH"
+              glib:nick="depth"/>
+      <member name="stencil"
+              value="4"
+              c:identifier="COGL_BUFFER_BIT_STENCIL"
+              glib:nick="stencil"/>
+    </bitfield>
+    <bitfield name="BufferTarget"
+              doc="Target flags for FBOs."
+              version="0.8"
+              glib:type-name="CoglBufferTarget"
+              glib:get-type="cogl_buffer_target_get_type"
+              c:type="CoglBufferTarget">
+      <member name="window_buffer"
+              value="2"
+              c:identifier="COGL_WINDOW_BUFFER"
+              glib:nick="window-buffer"/>
+      <member name="offscreen_buffer"
+              value="4"
+              c:identifier="COGL_OFFSCREEN_BUFFER"
+              glib:nick="offscreen-buffer"/>
+    </bitfield>
+    <enumeration name="BufferUpdateHint"
+                 doc="The update hint on a buffer allows the user to give some detail on how often
+the buffer data is going to be updated."
+                 version="1.2"
+                 glib:type-name="CoglBufferUpdateHint"
+                 glib:get-type="cogl_buffer_update_hint_get_type"
+                 c:type="CoglBufferUpdateHint">
+      <member name="static"
+              value="0"
+              c:identifier="COGL_BUFFER_UPDATE_HINT_STATIC"
+              glib:nick="static"/>
+      <member name="dynamic"
+              value="1"
+              c:identifier="COGL_BUFFER_UPDATE_HINT_DYNAMIC"
+              glib:nick="dynamic"/>
+      <member name="stream"
+              value="2"
+              c:identifier="COGL_BUFFER_UPDATE_HINT_STREAM"
+              glib:nick="stream"/>
+    </enumeration>
+    <enumeration name="BufferUsageHint"
+                 doc="The usage hint on a buffer allows the user to give some clue on how the
+buffer will be used."
+                 version="1.2"
+                 glib:type-name="CoglBufferUsageHint"
+                 glib:get-type="cogl_buffer_usage_hint_get_type"
+                 c:type="CoglBufferUsageHint">
+      <member name="texture"
+              value="0"
+              c:identifier="COGL_BUFFER_USAGE_HINT_TEXTURE"
+              glib:nick="texture"/>
+    </enumeration>
+    <record name="Color"
+            c:type="CoglColor"
+            doc="A structure for holding a color definition. The contents of
+the CoglColor structure are private and should never by accessed
+directly."
+            version="1.0">
+      <field name="red" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="green" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="blue" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="alpha" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="padding0" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="padding1" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="padding2" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="cogl_color_new"
+                   doc="Creates a new (empty) color
+to free the allocated resources"
+                   version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Color" c:type="CoglColor*"/>
+        </return-value>
+      </constructor>
+      <method name="copy"
+              c:identifier="cogl_color_copy"
+              doc="Creates a copy of @color
+to free the allocate resources"
+              version="1.0">
+        <return-value transfer-ownership="full">
+          <type name="Color" c:type="CoglColor*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="cogl_color_free"
+              doc="Frees the resources allocated by cogl_color_new() and cogl_color_copy()"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_from_4ub"
+              c:identifier="cogl_color_set_from_4ub"
+              doc="Sets the values of the passed channels into a #CoglColor."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_4f"
+              c:identifier="cogl_color_set_from_4f"
+              doc="Sets the values of the passed channels into a #CoglColor"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_red_byte"
+              c:identifier="cogl_color_get_red_byte"
+              doc="Retrieves the red channel of @color as a byte value
+between 0 and 255"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="unsigned char"/>
+        </return-value>
+      </method>
+      <method name="get_green_byte"
+              c:identifier="cogl_color_get_green_byte"
+              doc="Retrieves the green channel of @color as a byte value
+between 0 and 255"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="unsigned char"/>
+        </return-value>
+      </method>
+      <method name="get_blue_byte"
+              c:identifier="cogl_color_get_blue_byte"
+              doc="Retrieves the blue channel of @color as a byte value
+between 0 and 255"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="unsigned char"/>
+        </return-value>
+      </method>
+      <method name="get_alpha_byte"
+              c:identifier="cogl_color_get_alpha_byte"
+              doc="Retrieves the alpha channel of @color as a byte value
+between 0 and 255"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="unsigned char"/>
+        </return-value>
+      </method>
+      <method name="get_red_float"
+              c:identifier="cogl_color_get_red_float"
+              doc="Retrieves the red channel of @color as a floating point
+value between 0.0 and 1.0"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_green_float"
+              c:identifier="cogl_color_get_green_float"
+              doc="Retrieves the green channel of @color as a floating point
+value between 0.0 and 1.0"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_blue_float"
+              c:identifier="cogl_color_get_blue_float"
+              doc="Retrieves the blue channel of @color as a floating point
+value between 0.0 and 1.0"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_alpha_float"
+              c:identifier="cogl_color_get_alpha_float"
+              doc="Retrieves the alpha channel of @color as a floating point
+value between 0.0 and 1.0"
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_red"
+              c:identifier="cogl_color_get_red"
+              doc="Retrieves the red channel of @color as a fixed point
+value between 0 and %1.0."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_green"
+              c:identifier="cogl_color_get_green"
+              doc="Retrieves the green channel of @color as a fixed point
+value between 0 and %1.0."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_blue"
+              c:identifier="cogl_color_get_blue"
+              doc="Retrieves the blue channel of @color as a fixed point
+value between 0 and %1.0."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_alpha"
+              c:identifier="cogl_color_get_alpha"
+              doc="Retrieves the alpha channel of @color as a fixed point
+value between 0 and %1.0."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="premultiply"
+              c:identifier="cogl_color_premultiply"
+              doc="Converts a non-premultiplied color to a pre-multiplied color. For
+example, semi-transparent red is (1.0, 0, 0, 0.5) when non-premultiplied
+and (0.5, 0, 0, 0.5) when premultiplied."
+              version="1.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <bitfield name="DebugFlags"
+              glib:type-name="CoglDebugFlags"
+              glib:get-type="cogl_debug_flags_get_type"
+              c:type="CoglDebugFlags">
+      <member name="slicing"
+              value="2"
+              c:identifier="COGL_DEBUG_SLICING"
+              glib:nick="slicing"/>
+      <member name="offscreen"
+              value="4"
+              c:identifier="COGL_DEBUG_OFFSCREEN"
+              glib:nick="offscreen"/>
+      <member name="draw"
+              value="8"
+              c:identifier="COGL_DEBUG_DRAW"
+              glib:nick="draw"/>
+      <member name="pango"
+              value="16"
+              c:identifier="COGL_DEBUG_PANGO"
+              glib:nick="pango"/>
+      <member name="rectangles"
+              value="32"
+              c:identifier="COGL_DEBUG_RECTANGLES"
+              glib:nick="rectangles"/>
+      <member name="handle"
+              value="64"
+              c:identifier="COGL_DEBUG_HANDLE"
+              glib:nick="handle"/>
+      <member name="blend_strings"
+              value="128"
+              c:identifier="COGL_DEBUG_BLEND_STRINGS"
+              glib:nick="blend-strings"/>
+      <member name="disable_batching"
+              value="256"
+              c:identifier="COGL_DEBUG_DISABLE_BATCHING"
+              glib:nick="disable-batching"/>
+      <member name="disable_vbos"
+              value="512"
+              c:identifier="COGL_DEBUG_DISABLE_VBOS"
+              glib:nick="disable-vbos"/>
+      <member name="journal"
+              value="1024"
+              c:identifier="COGL_DEBUG_JOURNAL"
+              glib:nick="journal"/>
+      <member name="batching"
+              value="2048"
+              c:identifier="COGL_DEBUG_BATCHING"
+              glib:nick="batching"/>
+      <member name="disable_software_transform"
+              value="4096"
+              c:identifier="COGL_DEBUG_DISABLE_SOFTWARE_TRANSFORM"
+              glib:nick="disable-software-transform"/>
+      <member name="matrices"
+              value="8192"
+              c:identifier="COGL_DEBUG_MATRICES"
+              glib:nick="matrices"/>
+      <member name="force_scanline_paths"
+              value="16384"
+              c:identifier="COGL_DEBUG_FORCE_SCANLINE_PATHS"
+              glib:nick="force-scanline-paths"/>
+      <member name="atlas"
+              value="32768"
+              c:identifier="COGL_DEBUG_ATLAS"
+              glib:nick="atlas"/>
+      <member name="dump_atlas_image"
+              value="65536"
+              c:identifier="COGL_DEBUG_DUMP_ATLAS_IMAGE"
+              glib:nick="dump-atlas-image"/>
+      <member name="disable_atlas"
+              value="131072"
+              c:identifier="COGL_DEBUG_DISABLE_ATLAS"
+              glib:nick="disable-atlas"/>
+      <member name="opengl"
+              value="262144"
+              c:identifier="COGL_DEBUG_OPENGL"
+              glib:nick="opengl"/>
+    </bitfield>
+    <enumeration name="DriverError"
+                 glib:type-name="CoglDriverError"
+                 glib:get-type="cogl_driver_error_get_type"
+                 c:type="CoglDriverError">
+      <member name="unknown_version"
+              value="0"
+              c:identifier="COGL_DRIVER_ERROR_UNKNOWN_VERSION"
+              glib:nick="unknown-version"/>
+      <member name="invalid_version"
+              value="1"
+              c:identifier="COGL_DRIVER_ERROR_INVALID_VERSION"
+              glib:nick="invalid-version"/>
+    </enumeration>
+    <constant name="FIXED_0_5" value="32768">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_1" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_2_PI" value="411775">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_BITS" value="32">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_EPSILON" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_MAX" value="2147483647">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_MIN" value="-2147483648">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_PI" value="205887">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_PI_2" value="102944">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_PI_4" value="51472">
+      <type name="int"/>
+    </constant>
+    <constant name="FIXED_Q" value="-16">
+      <type name="int"/>
+    </constant>
+    <bitfield name="FeatureFlags"
+              doc="Flags for the supported features."
+              version="0.8"
+              glib:type-name="CoglFeatureFlags"
+              glib:get-type="cogl_feature_flags_get_type"
+              c:type="CoglFeatureFlags">
+      <member name="texture_rectangle"
+              value="2"
+              c:identifier="COGL_FEATURE_TEXTURE_RECTANGLE"
+              glib:nick="texture-rectangle"/>
+      <member name="texture_npot"
+              value="4"
+              c:identifier="COGL_FEATURE_TEXTURE_NPOT"
+              glib:nick="texture-npot"/>
+      <member name="texture_yuv"
+              value="8"
+              c:identifier="COGL_FEATURE_TEXTURE_YUV"
+              glib:nick="texture-yuv"/>
+      <member name="texture_read_pixels"
+              value="16"
+              c:identifier="COGL_FEATURE_TEXTURE_READ_PIXELS"
+              glib:nick="texture-read-pixels"/>
+      <member name="shaders_glsl"
+              value="32"
+              c:identifier="COGL_FEATURE_SHADERS_GLSL"
+              glib:nick="shaders-glsl"/>
+      <member name="offscreen"
+              value="64"
+              c:identifier="COGL_FEATURE_OFFSCREEN"
+              glib:nick="offscreen"/>
+      <member name="offscreen_multisample"
+              value="128"
+              c:identifier="COGL_FEATURE_OFFSCREEN_MULTISAMPLE"
+              glib:nick="offscreen-multisample"/>
+      <member name="offscreen_blit"
+              value="256"
+              c:identifier="COGL_FEATURE_OFFSCREEN_BLIT"
+              glib:nick="offscreen-blit"/>
+      <member name="four_clip_planes"
+              value="512"
+              c:identifier="COGL_FEATURE_FOUR_CLIP_PLANES"
+              glib:nick="four-clip-planes"/>
+      <member name="stencil_buffer"
+              value="1024"
+              c:identifier="COGL_FEATURE_STENCIL_BUFFER"
+              glib:nick="stencil-buffer"/>
+      <member name="vbos"
+              value="2048"
+              c:identifier="COGL_FEATURE_VBOS"
+              glib:nick="vbos"/>
+      <member name="pbos"
+              value="4096"
+              c:identifier="COGL_FEATURE_PBOS"
+              glib:nick="pbos"/>
+      <member name="unsigned_int_indices"
+              value="8192"
+              c:identifier="COGL_FEATURE_UNSIGNED_INT_INDICES"
+              glib:nick="unsigned-int-indices"/>
+    </bitfield>
+    <enumeration name="FogMode"
+                 doc="The fog mode determines the equation used to calculate the fogging blend
+factor while fogging is enabled. The simplest %COGL_FOG_MODE_LINEAR mode
+determines f as:
+|[
+f = end - eye_distance / end - start
+]|
+Where eye_distance is the distance of the current fragment in eye
+coordinates from the origin."
+                 version="1.0"
+                 glib:type-name="CoglFogMode"
+                 glib:get-type="cogl_fog_mode_get_type"
+                 c:type="CoglFogMode">
+      <member name="linear"
+              value="0"
+              c:identifier="COGL_FOG_MODE_LINEAR"
+              glib:nick="linear"/>
+      <member name="exponential"
+              value="1"
+              c:identifier="COGL_FOG_MODE_EXPONENTIAL"
+              glib:nick="exponential"/>
+      <member name="exponential_squared"
+              value="2"
+              c:identifier="COGL_FOG_MODE_EXPONENTIAL_SQUARED"
+              glib:nick="exponential-squared"/>
+    </enumeration>
+    <callback name="FuncPtr"
+              c:type="CoglFuncPtr"
+              doc="The type used by cogl for function pointers, note that this type
+is used as a generic catch-all cast for function pointers and the
+actual arguments and return type may be different.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <glib:boxed c:type="CoglHandle"
+                glib:name="Handle"
+                glib:type-name="CoglHandle"
+                glib:get-type="cogl_handle_get_type">
+      <method name="ref"
+              c:identifier="cogl_handle_ref"
+              doc="Increases the reference count of @handle by 1">
+        <return-value transfer-ownership="full">
+          <type name="Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="cogl_handle_unref"
+              doc="Drecreases the reference count of @handle by 1; if the reference
+count reaches 0, the resources allocated by @handle will be freed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </glib:boxed>
+    <enumeration name="IndicesType"
+                 doc="You should aim to use the smallest data type that gives you enough
+range, since it reduces the size of your index array and can help
+reduce the demand on memory bandwidth.
+Note that %COGL_INDICES_TYPE_UNSIGNED_INT is only supported if the
+%COGL_FEATURE_UNSIGNED_INT_INDICES feature is available. This
+should always be available on OpenGL but on OpenGL ES it will only
+be available if the GL_OES_element_index_uint extension is
+advertized."
+                 glib:type-name="CoglIndicesType"
+                 glib:get-type="cogl_indices_type_get_type"
+                 c:type="CoglIndicesType">
+      <member name="byte"
+              value="0"
+              c:identifier="COGL_INDICES_TYPE_UNSIGNED_BYTE"
+              glib:nick="byte"/>
+      <member name="short"
+              value="1"
+              c:identifier="COGL_INDICES_TYPE_UNSIGNED_SHORT"
+              glib:nick="short"/>
+      <member name="int"
+              value="2"
+              c:identifier="COGL_INDICES_TYPE_UNSIGNED_INT"
+              glib:nick="int"/>
+    </enumeration>
+    <enumeration name="MaterialAlphaFunc"
+                 doc="Alpha testing happens before blending primitives with the framebuffer and
+gives an opportunity to discard fragments based on a comparison with the
+incoming alpha value and a reference alpha value. The #CoglMaterialAlphaFunc
+determines how the comparison is done."
+                 glib:type-name="CoglMaterialAlphaFunc"
+                 glib:get-type="cogl_material_alpha_func_get_type"
+                 c:type="CoglMaterialAlphaFunc">
+      <member name="never"
+              value="512"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_NEVER"
+              glib:nick="never"/>
+      <member name="less"
+              value="513"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_LESS"
+              glib:nick="less"/>
+      <member name="equal"
+              value="514"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_EQUAL"
+              glib:nick="equal"/>
+      <member name="lequal"
+              value="515"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_LEQUAL"
+              glib:nick="lequal"/>
+      <member name="greater"
+              value="516"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_GREATER"
+              glib:nick="greater"/>
+      <member name="notequal"
+              value="517"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_NOTEQUAL"
+              glib:nick="notequal"/>
+      <member name="gequal"
+              value="518"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_GEQUAL"
+              glib:nick="gequal"/>
+      <member name="always"
+              value="519"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_ALWAYS"
+              glib:nick="always"/>
+    </enumeration>
+    <enumeration name="MaterialFilter"
+                 doc="Texture filtering is used whenever the current pixel maps either to more
+than one texture element (texel) or less than one. These filter enums
+correspond to different strategies used to come up with a pixel color, by
+possibly referring to multiple neighbouring texels and taking a weighted
+average or simply using the nearest texel."
+                 glib:type-name="CoglMaterialFilter"
+                 glib:get-type="cogl_material_filter_get_type"
+                 c:type="CoglMaterialFilter">
+      <member name="nearest"
+              value="9728"
+              c:identifier="COGL_MATERIAL_FILTER_NEAREST"
+              glib:nick="nearest"/>
+      <member name="linear"
+              value="9729"
+              c:identifier="COGL_MATERIAL_FILTER_LINEAR"
+              glib:nick="linear"/>
+      <member name="nearest_mipmap_nearest"
+              value="9984"
+              c:identifier="COGL_MATERIAL_FILTER_NEAREST_MIPMAP_NEAREST"
+              glib:nick="nearest-mipmap-nearest"/>
+      <member name="linear_mipmap_nearest"
+              value="9985"
+              c:identifier="COGL_MATERIAL_FILTER_LINEAR_MIPMAP_NEAREST"
+              glib:nick="linear-mipmap-nearest"/>
+      <member name="nearest_mipmap_linear"
+              value="9986"
+              c:identifier="COGL_MATERIAL_FILTER_NEAREST_MIPMAP_LINEAR"
+              glib:nick="nearest-mipmap-linear"/>
+      <member name="linear_mipmap_linear"
+              value="9987"
+              c:identifier="COGL_MATERIAL_FILTER_LINEAR_MIPMAP_LINEAR"
+              glib:nick="linear-mipmap-linear"/>
+    </enumeration>
+    <enumeration name="MaterialLayerType"
+                 doc="Available types of layers for a #CoglMaterial. This enumeration
+might be expanded in later versions."
+                 version="1.0"
+                 glib:type-name="CoglMaterialLayerType"
+                 glib:get-type="cogl_material_layer_type_get_type"
+                 c:type="CoglMaterialLayerType">
+      <member name="texture"
+              value="0"
+              c:identifier="COGL_MATERIAL_LAYER_TYPE_TEXTURE"
+              glib:nick="texture"/>
+    </enumeration>
+    <record name="Matrix"
+            c:type="CoglMatrix"
+            doc="A CoglMatrix holds a 4x4 transform matrix. This is a single precision,
+column-major matrix which means it is compatible with what OpenGL expects.
+A CoglMatrix can represent transforms such as, rotations, scaling,
+translation, sheering, and linear projections. You can combine these
+transforms by multiplying multiple matrices in the order you want them
+applied.
+The transformation of a vertex (x, y, z, w) by a CoglMatrix is given by:
+|[
+x_new = xx * x + xy * y + xz * z + xw * w
+y_new = yx * x + yy * y + yz * z + yw * w
+z_new = zx * x + zy * y + zz * z + zw * w
+w_new = wx * x + wy * y + wz * z + ww * w
+]|
+Where w is normally 1
+&lt;note&gt;You must consider the members of the CoglMatrix structure read only,
+and all matrix modifications must be done via the cogl_matrix API. This
+allows Cogl to annotate the matrices internally. Violation of this will give
+undefined results. If you need to initialize a matrix with a constant other
+than the identity matrix you can use cogl_matrix_init_from_array().&lt;/note&gt;">
+      <field name="xx" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="yx" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="zx" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="wx" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="xy" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="yy" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="zy" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="wy" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="xz" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="yz" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="zz" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="wz" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="xw" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="yw" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="zw" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="ww" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="inv" writable="1">
+        <array zero-terminated="0" c:type="float" fixed-size="16">
+          <type name="float"/>
+        </array>
+      </field>
+      <field name="type" writable="1">
+        <type name="uint" c:type="unsigned"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="uint" c:type="unsigned"/>
+      </field>
+      <field name="_padding3" writable="1">
+        <type name="uint" c:type="unsigned"/>
+      </field>
+      <method name="init_identity"
+              c:identifier="cogl_matrix_init_identity"
+              doc="Resets matrix to the identity matrix:
+|[
+.xx=1; .xy=0; .xz=0; .xw=0;
+.yx=0; .yy=1; .yz=0; .yw=0;
+.zx=0; .zy=0; .zz=1; .zw=0;
+.wx=0; .wy=0; .wz=0; .ww=1;
+]|">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="multiply"
+              c:identifier="cogl_matrix_multiply"
+              doc="Multiplies the two supplied matrices together and stores
+the resulting matrix inside @result">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="a" transfer-ownership="none">
+            <type name="Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+          <parameter name="b" transfer-ownership="none">
+            <type name="Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rotate"
+              c:identifier="cogl_matrix_rotate"
+              doc="Multiplies @matrix with a rotation matrix that applies a rotation
+of @angle degrees around the specified 3D vector.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="translate"
+              c:identifier="cogl_matrix_translate"
+              doc="Multiplies @matrix with a transform matrix that translates along
+the X, Y and Z axis.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scale"
+              c:identifier="cogl_matrix_scale"
+              doc="Multiplies @matrix with a transform matrix that scales along the X,
+Y and Z axis.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sx" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="sy" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="sz" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="frustum"
+              c:identifier="cogl_matrix_frustum"
+              doc="Multiplies @matrix by the given frustum perspective matrix.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="left" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="right" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="bottom" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="top" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="z_near" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="z_far" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="perspective"
+              c:identifier="cogl_matrix_perspective"
+              doc="Multiplies @matrix by the described perspective matrix
+&lt;note&gt;You should be careful not to have to great a @z_far / @z_near ratio
+since that will reduce the effectiveness of depth testing since there wont
+be enough precision to identify the depth of objects near to each
+other.&lt;/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fov_y" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="aspect"
+                     transfer-ownership="none"
+                     doc=" for the x axis.">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="z_near"
+                     transfer-ownership="none"
+                     doc=" a positive number.">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="z_far" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ortho"
+              c:identifier="cogl_matrix_ortho"
+              doc="Multiplies @matrix by a parallel projection matrix.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="left" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="right" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="bottom" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="top" transfer-ownership="none">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="z_near"
+                     transfer-ownership="none"
+                     doc=" the plane is behind the viewer)">
+            <type name="float" c:type="float"/>
+          </parameter>
+          <parameter name="z_far"
+                     transfer-ownership="none"
+                     doc=" the plane is behind the viewer)">
+            <type name="float" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_from_array"
+              c:identifier="cogl_matrix_init_from_array"
+              doc="Initializes @matrix with the contents of @array">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="array"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none">
+            <type name="float" c:type="float*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_array"
+              c:identifier="cogl_matrix_get_array"
+              doc="Casts @matrix to a float array which can be directly passed to OpenGL.">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="float*"/>
+        </return-value>
+      </method>
+      <method name="get_inverse"
+              c:identifier="cogl_matrix_get_inverse"
+              doc="Gets the inverse transform of a given matrix and uses it to initialize
+a new #CoglMatrix.
+&lt;note&gt;Although the first parameter is annotated as const to indicate
+that the transform it represents isn&apos;t modified this function may
+technically save a copy of the inverse transform within the given
+#CoglMatrix so that subsequent requests for the inverse transform may
+avoid costly inversion calculations.&lt;/note&gt;
+for degenerate transformations that can&apos;t be inverted (in this case the"
+              version="1.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="inverse"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     doc="The destination for a 4x4 inverse transformation matrix">
+            <type name="Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="transform_point"
+              c:identifier="cogl_matrix_transform_point"
+              doc="Transforms a point whos position is given and returned as four float
+components.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="The X component of your points position">
+            <type name="float" c:type="float*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="The Y component of your points position">
+            <type name="float" c:type="float*"/>
+          </parameter>
+          <parameter name="z"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="The Z component of your points position">
+            <type name="float" c:type="float*"/>
+          </parameter>
+          <parameter name="w"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="The W component of your points position">
+            <type name="float" c:type="float*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="PIXEL_FORMAT_24" value="2">
+      <type name="int"/>
+    </constant>
+    <constant name="PIXEL_FORMAT_32" value="3">
+      <type name="int"/>
+    </constant>
+    <constant name="PREMULT_BIT" value="128">
+      <type name="int"/>
+    </constant>
+    <enumeration name="PixelFormat"
+                 doc="Pixel formats used by COGL. For the formats with a byte per
+component, the order of the components specify the order in
+increasing memory addresses. So for example
+%COGL_PIXEL_FORMAT_RGB_888 would have the red component in the
+lowest address, green in the next address and blue after that
+regardless of the endinanness of the system.
+For the 16-bit formats the component order specifies the order
+within a 16-bit number from most significant bit to least
+significant. So for %COGL_PIXEL_FORMAT_RGB_565, the red component
+would be in bits 11-15, the green component would be in 6-11 and
+the blue component would be in 1-5. Therefore the order in memory
+depends on the endianness of the system.
+When uploading a texture %COGL_PIXEL_FORMAT_ANY can be used as the
+internal format. Cogl will try to pick the best format to use
+internally and convert the texture data if necessary."
+                 version="0.8"
+                 glib:type-name="CoglPixelFormat"
+                 glib:get-type="cogl_pixel_format_get_type"
+                 c:type="CoglPixelFormat">
+      <member name="any"
+              value="0"
+              c:identifier="COGL_PIXEL_FORMAT_ANY"
+              glib:nick="any"/>
+      <member name="a_8"
+              value="17"
+              c:identifier="COGL_PIXEL_FORMAT_A_8"
+              glib:nick="a-8"/>
+      <member name="rgb_565"
+              value="4"
+              c:identifier="COGL_PIXEL_FORMAT_RGB_565"
+              glib:nick="rgb-565"/>
+      <member name="rgba_4444"
+              value="21"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_4444"
+              glib:nick="rgba-4444"/>
+      <member name="rgba_5551"
+              value="22"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_5551"
+              glib:nick="rgba-5551"/>
+      <member name="yuv"
+              value="7"
+              c:identifier="COGL_PIXEL_FORMAT_YUV"
+              glib:nick="yuv"/>
+      <member name="g_8"
+              value="8"
+              c:identifier="COGL_PIXEL_FORMAT_G_8"
+              glib:nick="g-8"/>
+      <member name="rgb_888"
+              value="2"
+              c:identifier="COGL_PIXEL_FORMAT_RGB_888"
+              glib:nick="rgb-888"/>
+      <member name="bgr_888"
+              value="34"
+              c:identifier="COGL_PIXEL_FORMAT_BGR_888"
+              glib:nick="bgr-888"/>
+      <member name="rgba_8888"
+              value="19"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_8888"
+              glib:nick="rgba-8888"/>
+      <member name="bgra_8888"
+              value="51"
+              c:identifier="COGL_PIXEL_FORMAT_BGRA_8888"
+              glib:nick="bgra-8888"/>
+      <member name="argb_8888"
+              value="83"
+              c:identifier="COGL_PIXEL_FORMAT_ARGB_8888"
+              glib:nick="argb-8888"/>
+      <member name="abgr_8888"
+              value="115"
+              c:identifier="COGL_PIXEL_FORMAT_ABGR_8888"
+              glib:nick="abgr-8888"/>
+      <member name="rgba_8888_pre"
+              value="147"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_8888_PRE"
+              glib:nick="rgba-8888-pre"/>
+      <member name="bgra_8888_pre"
+              value="179"
+              c:identifier="COGL_PIXEL_FORMAT_BGRA_8888_PRE"
+              glib:nick="bgra-8888-pre"/>
+      <member name="argb_8888_pre"
+              value="211"
+              c:identifier="COGL_PIXEL_FORMAT_ARGB_8888_PRE"
+              glib:nick="argb-8888-pre"/>
+      <member name="abgr_8888_pre"
+              value="243"
+              c:identifier="COGL_PIXEL_FORMAT_ABGR_8888_PRE"
+              glib:nick="abgr-8888-pre"/>
+      <member name="rgba_4444_pre"
+              value="149"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_4444_PRE"
+              glib:nick="rgba-4444-pre"/>
+      <member name="rgba_5551_pre"
+              value="150"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_5551_PRE"
+              glib:nick="rgba-5551-pre"/>
+    </enumeration>
+    <constant name="RADIANS_TO_DEGREES" value="3754936">
+      <type name="int"/>
+    </constant>
+    <bitfield name="ReadPixelsFlags"
+              doc="Flags for cogl_read_pixels()"
+              version="1.0"
+              glib:type-name="CoglReadPixelsFlags"
+              glib:get-type="cogl_read_pixels_flags_get_type"
+              c:type="CoglReadPixelsFlags">
+      <member name="color_buffer"
+              value="1"
+              c:identifier="COGL_READ_PIXELS_COLOR_BUFFER"
+              glib:nick="color-buffer"/>
+    </bitfield>
+    <constant name="SQRTI_ARG_10_PERCENT" value="5590">
+      <type name="int"/>
+    </constant>
+    <constant name="SQRTI_ARG_5_PERCENT" value="210">
+      <type name="int"/>
+    </constant>
+    <constant name="SQRTI_ARG_MAX" value="4194303">
+      <type name="int"/>
+    </constant>
+    <enumeration name="ShaderType"
+                 doc="Types of shaders"
+                 version="1.0"
+                 glib:type-name="CoglShaderType"
+                 glib:get-type="cogl_shader_type_get_type"
+                 c:type="CoglShaderType">
+      <member name="vertex"
+              value="0"
+              c:identifier="COGL_SHADER_TYPE_VERTEX"
+              glib:nick="vertex"/>
+      <member name="fragment"
+              value="1"
+              c:identifier="COGL_SHADER_TYPE_FRAGMENT"
+              glib:nick="fragment"/>
+    </enumeration>
+    <constant name="TEXTURE_MAX_WASTE" value="127">
+      <type name="int"/>
+    </constant>
+    <bitfield name="TextureFlags"
+              doc="Flags to pass to the cogl_texture_new_* family of functions."
+              version="1.0"
+              glib:type-name="CoglTextureFlags"
+              glib:get-type="cogl_texture_flags_get_type"
+              c:type="CoglTextureFlags">
+      <member name="none"
+              value="0"
+              c:identifier="COGL_TEXTURE_NONE"
+              glib:nick="none"/>
+      <member name="no_auto_mipmap"
+              value="1"
+              c:identifier="COGL_TEXTURE_NO_AUTO_MIPMAP"
+              glib:nick="no-auto-mipmap"/>
+      <member name="no_slicing"
+              value="2"
+              c:identifier="COGL_TEXTURE_NO_SLICING"
+              glib:nick="no-slicing"/>
+      <member name="no_atlas"
+              value="4"
+              c:identifier="COGL_TEXTURE_NO_ATLAS"
+              glib:nick="no-atlas"/>
+    </bitfield>
+    <record name="TextureVertex"
+            c:type="CoglTextureVertex"
+            doc="Used to specify vertex information when calling cogl_polygon()">
+      <field name="x" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="z" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="tx" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="ty" writable="1">
+        <type name="float" c:type="float"/>
+      </field>
+      <field name="color" writable="1">
+        <type name="Color" c:type="CoglColor"/>
+      </field>
+    </record>
+    <constant name="UNORDERED_MASK" value="15">
+      <type name="int"/>
+    </constant>
+    <constant name="UNPREMULT_MASK" value="127">
+      <type name="int"/>
+    </constant>
+    <enumeration name="VerticesMode"
+                 doc="How vertices passed to cogl_vertex_buffer_draw() and
+cogl_vertex_buffer_draw_elements() should be interpreted"
+                 version="1.0"
+                 glib:type-name="CoglVerticesMode"
+                 glib:get-type="cogl_vertices_mode_get_type"
+                 c:type="CoglVerticesMode">
+      <member name="points"
+              value="0"
+              c:identifier="COGL_VERTICES_MODE_POINTS"
+              glib:nick="points"/>
+      <member name="line_strip"
+              value="3"
+              c:identifier="COGL_VERTICES_MODE_LINE_STRIP"
+              glib:nick="line-strip"/>
+      <member name="line_loop"
+              value="2"
+              c:identifier="COGL_VERTICES_MODE_LINE_LOOP"
+              glib:nick="line-loop"/>
+      <member name="lines"
+              value="1"
+              c:identifier="COGL_VERTICES_MODE_LINES"
+              glib:nick="lines"/>
+      <member name="triangle_strip"
+              value="5"
+              c:identifier="COGL_VERTICES_MODE_TRIANGLE_STRIP"
+              glib:nick="triangle-strip"/>
+      <member name="triangle_fan"
+              value="6"
+              c:identifier="COGL_VERTICES_MODE_TRIANGLE_FAN"
+              glib:nick="triangle-fan"/>
+      <member name="triangles"
+              value="4"
+              c:identifier="COGL_VERTICES_MODE_TRIANGLES"
+              glib:nick="triangles"/>
+    </enumeration>
+    <function name="angle_cos"
+              c:identifier="cogl_angle_cos"
+              doc="Computes the cosine of @angle"
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <type name="Angle" c:type="CoglAngle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="angle_sin"
+              c:identifier="cogl_angle_sin"
+              doc="Computes the sine of @angle"
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <type name="Angle" c:type="CoglAngle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="angle_tan"
+              c:identifier="cogl_angle_tan"
+              doc="Computes the tangent of @angle"
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <type name="Angle" c:type="CoglAngle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="begin_gl"
+              c:identifier="cogl_begin_gl"
+              doc="We do not advise nor reliably support the interleaving of raw GL drawing and
+Cogl drawing functions, but if you insist, cogl_begin_gl() and cogl_end_gl()
+provide a simple mechanism that may at least give you a fighting chance of
+succeeding.
+through the modification of GL state; that will never be reliably supported,
+but if you are trying to do something like:
+|[
+{
+- setup some OpenGL state.
+- draw using OpenGL (e.g. glDrawArrays() )
+- reset modified OpenGL state.
+- continue using Cogl to draw
+}
+]|
+You should surround blocks of drawing using raw GL with cogl_begin_gl()
+and cogl_end_gl():
+|[
+{
+cogl_begin_gl ();
+- setup some OpenGL state.
+- draw using OpenGL (e.g. glDrawArrays() )
+- reset modified OpenGL state.
+cogl_end_gl ();
+- continue using Cogl to draw
+}
+]|
+Don&apos;t ever try and do:
+|[
+{
+- setup some OpenGL state.
+- use Cogl to draw
+- reset modified OpenGL state.
+}
+]|
+When the internals of Cogl evolves, this is very liable to break.
+This function will flush all batched primitives, and subsequently flush
+all internal Cogl state to OpenGL as if it were going to draw something
+itself.
+The result is that the OpenGL modelview matrix will be setup; the state
+corresponding to the current source material will be set up and other world
+state such as backface culling, depth and fogging enabledness will be sent
+to OpenGL.
+&lt;note&gt;No special material state is flushed, so if you want Cogl to setup a
+simplified material state it is your responsibility to set a simple source
+material before calling cogl_begin_gl(). E.g. by calling
+cogl_set_source_color4ub().&lt;/note&gt;
+&lt;note&gt;It is your responsibility to restore any OpenGL state that you modify
+to how it was after calling cogl_begin_gl() if you don&apos;t do this then the
+result of further Cogl calls is undefined.&lt;/note&gt;
+&lt;note&gt;You can not nest begin/end blocks.&lt;/note&gt;
+Again we would like to stress, we do not advise the use of this API and if
+possible we would prefer to improve Cogl than have developers require raw
+OpenGL."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="bitmap_get_size_from_file"
+              c:identifier="cogl_bitmap_get_size_from_file"
+              doc="Parses an image file enough to extract the width and height
+of the bitmap."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="width"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="return location for the bitmap width, or %NULL">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="height"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="return location for the bitmap height, or %NULL">
+          <type name="int" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bitmap_new_from_file"
+              c:identifier="cogl_bitmap_new_from_file"
+              doc="Loads an image file from disk. This function can be safely called from
+within a thread.
+%COGL_INVALID_HANDLE if loading the image failed."
+              version="1.0"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_size"
+              c:identifier="cogl_buffer_get_size"
+              doc="Retrieves the size of buffer"
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_size_EXP"
+              c:identifier="cogl_buffer_get_size_EXP">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_update_hint"
+              c:identifier="cogl_buffer_get_update_hint"
+              doc="Retrieves the update hints set using cogl_buffer_set_update_hint()"
+              version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="BufferUpdateHint" c:type="CoglBufferUpdateHint"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_update_hint_EXP"
+              c:identifier="cogl_buffer_get_update_hint_EXP">
+      <return-value transfer-ownership="full">
+        <type name="BufferUpdateHint" c:type="CoglBufferUpdateHint"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_usage_hint"
+              c:identifier="cogl_buffer_get_usage_hint"
+              doc="Retrieves the usage hint set using cogl_buffer_set_usage_hint()"
+              version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="BufferUsageHint" c:type="CoglBufferUsageHint"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_usage_hint_EXP"
+              c:identifier="cogl_buffer_get_usage_hint_EXP">
+      <return-value transfer-ownership="full">
+        <type name="BufferUsageHint" c:type="CoglBufferUsageHint"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_map"
+              c:identifier="cogl_buffer_map"
+              doc="Maps the buffer into the application address space for direct access."
+              version="1.2">
+      <return-value transfer-ownership="full">
+        <array c:type="guint8*">
+          <type name="uint8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="access" transfer-ownership="none">
+          <type name="BufferAccess" c:type="CoglBufferAccess"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_map_EXP" c:identifier="cogl_buffer_map_EXP">
+      <return-value transfer-ownership="full">
+        <array c:type="guint8*">
+          <type name="uint8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="access" transfer-ownership="none">
+          <type name="BufferAccess" c:type="CoglBufferAccess"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_data"
+              c:identifier="cogl_buffer_set_data"
+              doc="Updates part of the buffer with new data from @data. Where to put this new
+data is controlled by @offset and @offset + @data should be less than the
+buffer size."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none" doc="in the buffer">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_data_EXP"
+              c:identifier="cogl_buffer_set_data_EXP">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_update_hint"
+              c:identifier="cogl_buffer_set_update_hint"
+              doc="Sets the update hint on a buffer. See #CoglBufferUpdateHint for a description
+of the available hints."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="hint" transfer-ownership="none">
+          <type name="BufferUpdateHint" c:type="CoglBufferUpdateHint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_update_hint_EXP"
+              c:identifier="cogl_buffer_set_update_hint_EXP">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="hint" transfer-ownership="none">
+          <type name="BufferUpdateHint" c:type="CoglBufferUpdateHint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_usage_hint"
+              c:identifier="cogl_buffer_set_usage_hint"
+              doc="Sets the usage hint on a buffer. See #CoglBufferUsageHint for a description
+of the available hints."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="hint" transfer-ownership="none">
+          <type name="BufferUsageHint" c:type="CoglBufferUsageHint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_usage_hint_EXP"
+              c:identifier="cogl_buffer_set_usage_hint_EXP">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="hint" transfer-ownership="none">
+          <type name="BufferUsageHint" c:type="CoglBufferUsageHint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_unmap"
+              c:identifier="cogl_buffer_unmap"
+              doc="Unmaps a buffer previously mapped by cogl_buffer_map()."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_unmap_EXP" c:identifier="cogl_buffer_unmap_EXP">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="check_extension"
+              c:identifier="cogl_check_extension"
+              doc="Check whether @name occurs in list of extensions in @ext.
+not appropriate to expose OpenGL extensions through the Cogl API. This
+function can be replaced by the following equivalent code:
+|[
+]|"
+              deprecated="OpenGL is an implementation detail for Cogl and so it&apos;s"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="ext" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clear"
+              c:identifier="cogl_clear"
+              doc="Clears all the auxiliary buffers identified in the @buffers mask, and if
+that includes the color buffer then the specified @color is used.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+        <parameter name="buffers"
+                   transfer-ownership="none"
+                   doc=" buffers to clear">
+          <type name="ulong" c:type="unsigned long"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_ensure"
+              c:identifier="cogl_clip_ensure"
+              doc="Ensures that the current clipping region has been set in GL. This
+will automatically be called before any Cogl primitives but it
+maybe be neccessary to call if you are using raw GL calls with
+clipping."
+              version="1.0"
+              deprecated="Calling this function has no effect"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_pop"
+              c:identifier="cogl_clip_pop"
+              doc="Reverts the clipping region to the state before the last call to
+cogl_clip_push().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_push"
+              c:identifier="cogl_clip_push"
+              doc="Specifies a rectangular clipping area for all subsequent drawing
+operations. Any drawing commands that extend outside the rectangle
+will be clipped so that only the portion inside the rectangle will
+be displayed. The rectangle dimensions are transformed by the
+current model-view matrix.
+The rectangle is intersected with the current clip region. To undo
+the effect of this function, call cogl_clip_pop().
+with other API that specify rectangles in model space, and when used
+with a coordinate space that puts the origin at the center and y+
+extending up, it&apos;s awkward to use. Please use cogl_clip_push_rectangle()
+instead"
+              deprecated="The x, y, width, height arguments are inconsistent"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_offset" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_offset" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_push_from_path"
+              c:identifier="cogl_clip_push_from_path"
+              doc="Sets a new clipping area using the current path. The current path
+is then cleared. The clipping area is intersected with the previous
+clipping area. To restore the previous clipping area, call
+cogl_clip_pop()."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_push_from_path_preserve"
+              c:identifier="cogl_clip_push_from_path_preserve"
+              doc="Sets a new clipping area using the current path. The current path
+is then cleared. The clipping area is intersected with the previous
+clipping area. To restore the previous clipping area, call
+cogl_clip_pop()."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_push_rectangle"
+              c:identifier="cogl_clip_push_rectangle"
+              doc="Specifies a rectangular clipping area for all subsequent drawing
+operations. Any drawing commands that extend outside the rectangle
+will be clipped so that only the portion inside the rectangle will
+be displayed. The rectangle dimensions are transformed by the
+current model-view matrix.
+The rectangle is intersected with the current clip region. To undo
+the effect of this function, call cogl_clip_pop()."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x0" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y0" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_push_window_rect"
+              c:identifier="cogl_clip_push_window_rect"
+              doc="Specifies a rectangular clipping area for all subsequent drawing
+operations. Any drawing commands that extend outside the rectangle
+will be clipped so that only the portion inside the rectangle will
+be displayed. The rectangle dimensions are not transformed by the
+current model-view matrix.
+The rectangle is intersected with the current clip region. To undo
+the effect of this function, call cogl_clip_pop()."
+              deprecated="Use cogl_clip_push_window_rectangle() instead"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_offset" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_offset" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_push_window_rectangle"
+              c:identifier="cogl_clip_push_window_rectangle"
+              doc="Specifies a rectangular clipping area for all subsequent drawing
+operations. Any drawing commands that extend outside the rectangle
+will be clipped so that only the portion inside the rectangle will
+be displayed. The rectangle dimensions are not transformed by the
+current model-view matrix.
+The rectangle is intersected with the current clip region. To undo
+the effect of this function, call cogl_clip_pop()."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_offset" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="y_offset" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_stack_restore"
+              c:identifier="cogl_clip_stack_restore"
+              doc="Restore the state of the clipping stack that was previously saved
+by cogl_clip_stack_save().
+the clip stack when switching back from an offscreen framebuffer,
+but it&apos;s not necessary anymore given that framebuffers now own
+separate clip stacks which will be automatically switched between
+when a new buffer is set. Calling this function has no effect"
+              version="0.8.2"
+              deprecated="This was originally added to allow us to restore"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_stack_save"
+              c:identifier="cogl_clip_stack_save"
+              doc="Save the entire state of the clipping stack and then clear all
+clipping. The previous state can be returned to with
+cogl_clip_stack_restore(). Each call to cogl_clip_push() after this
+must be matched by a call to cogl_clip_pop() before calling
+cogl_clip_stack_restore().
+clip stack when switching to an offscreen framebuffer, but it&apos;s
+not necessary anymore given that framebuffers now own separate
+clip stacks which will be automatically switched between when a
+new buffer is set. Calling this function has no effect"
+              version="0.8.2"
+              deprecated="This was originally added to allow us to save the"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="color_equal"
+              c:identifier="cogl_color_equal"
+              doc="Compares two #CoglColor&lt;!-- --&gt;s and checks if they are the same.
+This function can be passed to g_hash_table_new() as the @key_equal_func
+parameter, when using #CoglColor&lt;!-- --&gt;s as keys in a #GHashTable."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="create_program"
+              c:identifier="cogl_create_program"
+              doc="Create a new cogl program object that can be used to replace parts of the GL
+rendering pipeline with custom code.">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+    </function>
+    <function name="create_shader"
+              c:identifier="cogl_create_shader"
+              doc="Create a new shader handle, use #cogl_shader_source to set the source code
+to be used on it.">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="shader_type" transfer-ownership="none">
+          <type name="ShaderType" c:type="CoglShaderType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="disable_fog"
+              c:identifier="cogl_disable_fog"
+              doc="This function disables fogging, so primitives drawn afterwards will not be
+blended with any previously set fog color.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="double_to_fixed" c:identifier="cogl_double_to_fixed">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="double_to_int" c:identifier="cogl_double_to_int">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="double_to_unit" c:identifier="cogl_double_to_unit">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="end_gl"
+              c:identifier="cogl_end_gl"
+              doc="This is the counterpart to cogl_begin_gl() used to delimit blocks of drawing
+code using raw OpenGL. Please refer to cogl_begin_gl() for full details."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="features_available"
+              c:identifier="cogl_features_available"
+              doc="Checks whether the given COGL features are available. Multiple
+features can be checked for by or-ing them together with the &apos;|&apos;
+operator. %TRUE is only returned if all of the requested features
+are available.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="features" transfer-ownership="none">
+          <type name="FeatureFlags" c:type="CoglFeatureFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_atan2"
+              c:identifier="cogl_fixed_atan2"
+              doc="Computes the arc tangent of @a / @b but uses the sign of both
+arguments to return the angle in right quadrant.
+notation"
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_atani"
+              c:identifier="cogl_fixed_atani"
+              doc="Computes the arc tangent of @a."
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_cos"
+              c:identifier="cogl_fixed_cos"
+              doc="Computes the cosine of @angle."
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_div" c:identifier="cogl_fixed_div">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_log2"
+              c:identifier="cogl_fixed_log2"
+              doc="Calculates base 2 logarithm.
+This function is some 2.5 times faster on x86, and over 12 times faster on
+fpu-less arm, than using libc log()."
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_mul" c:identifier="cogl_fixed_mul">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_mul_div" c:identifier="cogl_fixed_mul_div">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_pow"
+              c:identifier="cogl_fixed_pow"
+              doc="Calculates @x to the @y power."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_pow2"
+              c:identifier="cogl_fixed_pow2"
+              doc="Calculates 2 to the @x power.
+This function is around 11 times faster on x86, and around 22 times faster
+on fpu-less arm than libc pow(2, x)."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_sin"
+              c:identifier="cogl_fixed_sin"
+              doc="Computes the sine of @angle."
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_sqrt"
+              c:identifier="cogl_fixed_sqrt"
+              doc="Computes the square root of @x.
+notation"
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_tan"
+              c:identifier="cogl_fixed_tan"
+              doc="Computes the tangent of @angle."
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flush"
+              c:identifier="cogl_flush"
+              doc="This function should only need to be called in exceptional circumstances.
+As an optimization Cogl drawing functions may batch up primitives
+internally, so if you are trying to use raw GL outside of Cogl you stand a
+better chance of being successful if you ask Cogl to flush any batched
+geometry before making your state changes.
+It only ensure that the underlying driver is issued all the commands
+necessary to draw the batched primitives. It provides no guarantees about
+when the driver will complete the rendering.
+This provides no guarantees about the GL state upon returning and to avoid
+confusing Cogl you should aim to restore any changes you make before
+resuming use of Cogl.
+If you are making state changes with the intention of affecting Cogl drawing
+primitives you are 100% on your own since you stand a good chance of
+conflicting with Cogl internals. For example clutter-gst which currently
+uses direct GL calls to bind ARBfp programs will very likely break when Cogl
+starts to use ARBfb programs itself for the material API."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="frustum"
+              c:identifier="cogl_frustum"
+              doc="Replaces the current projection matrix with a perspective matrix
+for the given viewing frustum."
+              version="0.8.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="left" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="right" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="bottom" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="top" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z_near" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z_far" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_backface_culling_enabled"
+              c:identifier="cogl_get_backface_culling_enabled"
+              doc="Queries if backface culling has been enabled via
+cogl_set_backface_culling_enabled()">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_bitmasks"
+              c:identifier="cogl_get_bitmasks"
+              doc="Gets the number of bitplanes used for each of the color components
+in the color buffer. Pass %NULL for any of the arguments if the
+value is not required.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="Return location for the number of red bits or %NULL">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="green"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="Return location for the number of green bits or %NULL">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="blue"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="Return location for the number of blue bits or %NULL">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="alpha"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="Return location for the number of alpha bits or %NULL">
+          <type name="int" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_depth_test_enabled"
+              c:identifier="cogl_get_depth_test_enabled"
+              doc="Queries if depth testing has been enabled via cogl_set_depth_test_enable()">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_features"
+              c:identifier="cogl_get_features"
+              doc="Returns all of the features supported by COGL."
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="FeatureFlags" c:type="CoglFeatureFlags"/>
+      </return-value>
+    </function>
+    <function name="get_modelview_matrix"
+              c:identifier="cogl_get_modelview_matrix"
+              doc="Stores the current model-view matrix in @matrix.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none"
+                   doc="return location for the model-view matrix">
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_option_group"
+              c:identifier="cogl_get_option_group"
+              doc="Retrieves the #GOptionGroup used by COGL to parse the command
+line options. Clutter uses this to handle the COGL command line
+options during its initialization process."
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+    </function>
+    <function name="get_proc_address"
+              c:identifier="cogl_get_proc_address"
+              doc="Gets a pointer to a given GL or GL ES extension function. This acts
+as a wrapper around glXGetProcAddress() or whatever is the
+appropriate function for the current backend.
+function is not available.">
+      <return-value transfer-ownership="full">
+        <type name="FuncPtr" c:type="CoglFuncPtr"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_projection_matrix"
+              c:identifier="cogl_get_projection_matrix"
+              doc="Stores the current projection matrix in @matrix.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none"
+                   doc="return location for the projection matrix">
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_viewport"
+              c:identifier="cogl_get_viewport"
+              doc="Stores the current viewport in @v. @v[0] and @v[1] get the x and y
+position of the viewport and @v[2] and @v[3] get the width and
+height.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc="pointer to a 4 element array of #float&lt;!-- --&gt;s to receive the viewport dimensions.">
+          <array c:type="float" fixed-size="4">
+            <type name="float"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_bitmap"
+              c:identifier="cogl_is_bitmap"
+              doc="Checks whether @handle is a #CoglHandle for a bitmap
+and %FALSE otherwise"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_buffer"
+              c:identifier="cogl_is_buffer"
+              doc="Checks whether @handle is a buffer handle."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_buffer_EXP" c:identifier="cogl_is_buffer_EXP">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_material"
+              c:identifier="cogl_is_material"
+              doc="Gets whether the given handle references an existing material object.
+%FALSE otherwise">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_offscreen"
+              c:identifier="cogl_is_offscreen"
+              doc="Determines whether the given #CoglHandle references an offscreen buffer
+object.
+%FALSE otherwise">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_pixel_buffer"
+              c:identifier="cogl_is_pixel_buffer"
+              doc="Checks whether @handle is a pixel buffer.
+otherwise"
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_pixel_buffer_EXP"
+              c:identifier="cogl_is_pixel_buffer_EXP">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_program"
+              c:identifier="cogl_is_program"
+              doc="Gets whether the given handle references an existing program object.
+%FALSE otherwise">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_shader"
+              c:identifier="cogl_is_shader"
+              doc="Gets whether the given handle references an existing shader object.
+%FALSE otherwise">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_texture"
+              c:identifier="cogl_is_texture"
+              doc="Gets whether the given handle references an existing texture object.
+%FALSE otherwise">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_vertex_buffer"
+              c:identifier="cogl_is_vertex_buffer"
+              doc="Checks whether @handle is a Vertex Buffer Object
+otherwise"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_copy"
+              c:identifier="cogl_material_copy"
+              doc="Creates a new material handle with the configuration copied from the
+source material.
+We would strongly advise developers to always aim to use
+cogl_material_copy() instead of cogl_material_new() whenever there will
+be any similarity between two materials. Copying a material helps Cogl
+keep track of a materials ancestry which we may use to help minimize GPU
+state changes."
+              version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_get_ambient"
+              c:identifier="cogl_material_get_ambient"
+              doc="Retrieves the current ambient color for @material"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="ambient" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_get_color"
+              c:identifier="cogl_material_get_color"
+              doc="Retrieves the current material color."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="color"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none"
+                   doc="The location to store the color">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_get_diffuse"
+              c:identifier="cogl_material_get_diffuse"
+              doc="Retrieves the current diffuse color for @material"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="diffuse" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_get_emission"
+              c:identifier="cogl_material_get_emission"
+              doc="Retrieves the materials current emission color."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="emission" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_get_layers"
+              c:identifier="cogl_material_get_layers"
+              doc="This function lets you access a materials internal list of layers
+for iteration.
+#CoglHandle&lt;!-- --&gt;&apos;s that can be passed to the  cogl_material_layer_*
+functions. The list is owned by COGL and it  should not be modified or
+freed">
+      <return-value transfer-ownership="none" doc="A list of">
+        <type name="GLib.List" c:type="GList*">
+          <type name="Handle"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_get_n_layers"
+              c:identifier="cogl_material_get_n_layers"
+              doc="Retrieves the number of layers defined for the given @material"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_get_shininess"
+              c:identifier="cogl_material_get_shininess"
+              doc="Retrieves the materials current emission color."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="float" c:type="float"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_get_specular"
+              c:identifier="cogl_material_get_specular"
+              doc="Retrieves the materials current specular color."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="specular" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_layer_get_mag_filter"
+              c:identifier="cogl_material_layer_get_mag_filter"
+              doc="Queries the currently set downscaling filter for a material later">
+      <return-value transfer-ownership="full">
+        <type name="MaterialFilter" c:type="CoglMaterialFilter"/>
+      </return-value>
+      <parameters>
+        <parameter name="layer" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_layer_get_min_filter"
+              c:identifier="cogl_material_layer_get_min_filter"
+              doc="Queries the currently set downscaling filter for a material layer">
+      <return-value transfer-ownership="full">
+        <type name="MaterialFilter" c:type="CoglMaterialFilter"/>
+      </return-value>
+      <parameters>
+        <parameter name="layer" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_layer_get_texture"
+              c:identifier="cogl_material_layer_get_texture"
+              doc="Extracts a texture handle for a specific layer.
+&lt;note&gt;In the future Cogl may support purely GLSL based layers; for those
+layers this function which will likely return %COGL_INVALID_HANDLE if you
+try to get the texture handle from them. Considering this scenario, you
+should call cogl_material_layer_get_type() first in order check it is of
+type %COGL_MATERIAL_LAYER_TYPE_TEXTURE before calling this function.&lt;/note&gt;">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="layer" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_layer_get_type"
+              c:identifier="cogl_material_layer_get_type"
+              doc="Retrieves the type of the layer
+Currently there is only one type of layer defined:
+%COGL_MATERIAL_LAYER_TYPE_TEXTURE, but considering we may add purely GLSL
+based layers in the future, you should write code that checks the type
+first.">
+      <return-value transfer-ownership="full">
+        <type name="MaterialLayerType" c:type="CoglMaterialLayerType"/>
+      </return-value>
+      <parameters>
+        <parameter name="layer" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_new"
+              c:identifier="cogl_material_new"
+              doc="Allocates and initializes a blank white material">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+    </function>
+    <function name="material_ref"
+              c:identifier="cogl_material_ref"
+              doc="Increment the reference count for a cogl material."
+              version="1.0"
+              deprecated="Use cogl_handle_ref() instead"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_remove_layer"
+              c:identifier="cogl_material_remove_layer"
+              doc="This function removes a layer from your material">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="layer_index" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_alpha_test_function"
+              c:identifier="cogl_material_set_alpha_test_function"
+              doc="Before a primitive is blended with the framebuffer, it goes through an
+alpha test stage which lets you discard fragments based on the current
+alpha value. This function lets you change the function used to evaluate
+the alpha channel, and thus determine which fragments are discarded
+and which continue on to the blending stage.
+The default is %COGL_MATERIAL_ALPHA_FUNC_ALWAYS"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="alpha_func" transfer-ownership="none">
+          <type name="MaterialAlphaFunc" c:type="CoglMaterialAlphaFunc"/>
+        </parameter>
+        <parameter name="alpha_reference"
+                   transfer-ownership="none"
+                   doc=" to compare incoming fragments to.">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_ambient"
+              c:identifier="cogl_material_set_ambient"
+              doc="Sets the material&apos;s ambient color, in the standard OpenGL lighting
+model. The ambient color affects the overall color of the object.
+Since the diffuse color will be intense when the light hits the surface
+directly, the ambient will be most apparent where the light hits at a
+slant.
+The default value is (0.2, 0.2, 0.2, 1.0)"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="ambient" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_ambient_and_diffuse"
+              c:identifier="cogl_material_set_ambient_and_diffuse"
+              doc="Conveniently sets the diffuse and ambient color of @material at the same
+time. See cogl_material_set_ambient() and cogl_material_set_diffuse().
+The default ambient color is (0.2, 0.2, 0.2, 1.0)
+The default diffuse color is (0.8, 0.8, 0.8, 1.0)"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_blend"
+              c:identifier="cogl_material_set_blend"
+              doc="If not already familiar; please refer &lt;link linkend=&quot;cogl-Blend-Strings&quot;&gt;here&lt;/link&gt;
+for an overview of what blend strings are, and their syntax.
+Blending occurs after the alpha test function, and combines fragments with
+the framebuffer.
+Currently the only blend function Cogl exposes is ADD(). So any valid
+blend statements will be of the form:
+|[
+&amp;lt;channel-mask&amp;gt;=ADD(SRC_COLOR*(&amp;lt;factor&amp;gt;), DST_COLOR*(&amp;lt;factor&amp;gt;))
+]|
+&lt;warning&gt;The brackets around blend factors are currently not
+optional!&lt;/warning&gt;
+This is the list of source-names usable as blend factors:
+&lt;itemizedlist&gt;
+&lt;/itemizedlist&gt;
+The source names can be used according to the
+&lt;link linkend=&quot;cogl-Blend-String-syntax&quot;&gt;color-source and factor syntax&lt;/link&gt;,
+so for example &quot;(1-SRC_COLOR[A])&quot; would be a valid factor, as would
+&quot;(CONSTANT[RGB])&quot;
+These can also be used as factors:
+&lt;itemizedlist&gt;
+&lt;/itemizedlist&gt;
+&lt;note&gt;Remember; all color components are normalized to the range [0, 1]
+before computing the result of blending.&lt;/note&gt;
+&lt;example id=&quot;cogl-Blend-Strings-blend-unpremul&quot;&gt;
+&lt;title&gt;Blend Strings/1&lt;/title&gt;
+&lt;para&gt;Blend a non-premultiplied source over a destination with
+premultiplied alpha:&lt;/para&gt;
+&lt;programlisting&gt;
+&quot;RGB = ADD(SRC_COLOR*(SRC_COLOR[A]), DST_COLOR*(1-SRC_COLOR[A]))&quot;
+&quot;A   = ADD(SRC_COLOR, DST_COLOR*(1-SRC_COLOR[A]))&quot;
+&lt;/programlisting&gt;
+&lt;/example&gt;
+&lt;example id=&quot;cogl-Blend-Strings-blend-premul&quot;&gt;
+&lt;title&gt;Blend Strings/2&lt;/title&gt;
+&lt;para&gt;Blend a premultiplied source over a destination with
+premultiplied alpha&lt;/para&gt;
+&lt;programlisting&gt;
+&quot;RGBA = ADD(SRC_COLOR, DST_COLOR*(1-SRC_COLOR[A]))&quot;
+&lt;/programlisting&gt;
+&lt;/example&gt;
+The default blend string is:
+|[
+RGBA = ADD (SRC_COLOR, DST_COLOR*(1-SRC_COLOR[A]))
+]|
+That gives normal alpha-blending when the calculated color for the material
+is in premultiplied form.
+described blending is supported by the underlying driver/hardware. If
+there was an error, %FALSE is returned and @error is set accordingly (if
+present)."
+              version="1.0"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="blend_string"
+                   transfer-ownership="none"
+                   doc=" describing the desired blend function.">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_blend_constant"
+              c:identifier="cogl_material_set_blend_constant"
+              doc="When blending is setup to reference a CONSTANT blend factor then
+blending will depend on the constant set with this function."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="constant_color" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_color"
+              c:identifier="cogl_material_set_color"
+              doc="Sets the basic color of the material, used when no lighting is enabled.
+Note that if you don&apos;t add any layers to the material then the color
+will be blended unmodified with the destination; the default blend
+semi-transparent red. See cogl_color_premultiply().
+The default value is (1.0, 1.0, 1.0, 1.0)"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_color4f"
+              c:identifier="cogl_material_set_color4f"
+              doc="Sets the basic color of the material, used when no lighting is enabled.
+The default value is (1.0, 1.0, 1.0, 1.0)"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="red" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="alpha" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_color4ub"
+              c:identifier="cogl_material_set_color4ub"
+              doc="Sets the basic color of the material, used when no lighting is enabled.
+The default value is (0xff, 0xff, 0xff, 0xff)"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="red" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="alpha" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_diffuse"
+              c:identifier="cogl_material_set_diffuse"
+              doc="Sets the material&apos;s diffuse color, in the standard OpenGL lighting
+model. The diffuse color is most intense where the light hits the
+surface directly - perpendicular to the surface.
+The default value is (0.8, 0.8, 0.8, 1.0)"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="diffuse" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_emission"
+              c:identifier="cogl_material_set_emission"
+              doc="Sets the material&apos;s emissive color, in the standard OpenGL lighting
+model. It will look like the surface is a light source emitting this
+color.
+The default value is (0.0, 0.0, 0.0, 1.0)"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="emission" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_layer"
+              c:identifier="cogl_material_set_layer"
+              doc="In addition to the standard OpenGL lighting model a Cogl material may have
+one or more layers comprised of textures that can be blended together in
+order, with a number of different texture combine modes. This function
+defines a new texture layer.
+The index values of multiple layers do not have to be consecutive; it is
+only their relative order that is important.
+&lt;note&gt;In the future, we may define other types of material layers, such
+as purely GLSL based layers.&lt;/note&gt;"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="layer_index" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="texture" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_layer_combine"
+              c:identifier="cogl_material_set_layer_combine"
+              doc="If not already familiar; you can refer
+&lt;link linkend=&quot;cogl-Blend-Strings&quot;&gt;here&lt;/link&gt; for an overview of what blend
+strings are and there syntax.
+These are all the functions available for texture combining:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;REPLACE(arg0) = arg0&lt;/listitem&gt;
+&lt;listitem&gt;MODULATE(arg0, arg1) = arg0 x arg1&lt;/listitem&gt;
+&lt;listitem&gt;ADD(arg0, arg1) = arg0 + arg1&lt;/listitem&gt;
+&lt;listitem&gt;ADD_SIGNED(arg0, arg1) = arg0 + arg1 - 0.5&lt;/listitem&gt;
+&lt;listitem&gt;INTERPOLATE(arg0, arg1, arg2) = arg0 x arg2 + arg1 x (1 - arg2)&lt;/listitem&gt;
+&lt;listitem&gt;SUBTRACT(arg0, arg1) = arg0 - arg1&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;programlisting&gt;
+DOT3_RGB(arg0, arg1) = 4 x ((arg0[R] - 0.5)) * (arg1[R] - 0.5) +
+(arg0[G] - 0.5)) * (arg1[G] - 0.5) +
+(arg0[B] - 0.5)) * (arg1[B] - 0.5))
+&lt;/programlisting&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;programlisting&gt;
+DOT3_RGBA(arg0, arg1) = 4 x ((arg0[R] - 0.5)) * (arg1[R] - 0.5) +
+(arg0[G] - 0.5)) * (arg1[G] - 0.5) +
+(arg0[B] - 0.5)) * (arg1[B] - 0.5))
+&lt;/programlisting&gt;
+&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+Refer to the
+&lt;link linkend=&quot;cogl-Blend-String-syntax&quot;&gt;color-source syntax&lt;/link&gt; for
+describing the arguments. The valid source names for texture combining
+are:
+&lt;variablelist&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;TEXTURE&lt;/term&gt;
+&lt;listitem&gt;Use the color from the current texture layer&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;TEXTURE_0, TEXTURE_1, etc&lt;/term&gt;
+&lt;listitem&gt;Use the color from the specified texture layer&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;CONSTANT&lt;/term&gt;
+&lt;listitem&gt;Use the color from the constant given with
+cogl_material_set_layer_constant()&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;PRIMARY&lt;/term&gt;
+&lt;listitem&gt;Use the color of the material as set with
+cogl_material_set_color()&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;PREVIOUS&lt;/term&gt;
+&lt;listitem&gt;Either use the texture color from the previous layer, or
+if this is layer 0, use the color of the material as set with
+cogl_material_set_color()&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;/variablelist&gt;
+&lt;refsect2 id=&quot;cogl-Layer-Combine-Examples&quot;&gt;
+&lt;title&gt;Layer Combine Examples&lt;/title&gt;
+&lt;para&gt;This is effectively what the default blending is:&lt;/para&gt;
+&lt;informalexample&gt;&lt;programlisting&gt;
+RGBA = MODULATE (PREVIOUS, TEXTURE)
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+&lt;para&gt;This could be used to cross-fade between two images, using
+the alpha component of a constant as the interpolator. The constant
+color is given by calling cogl_material_set_layer_constant.&lt;/para&gt;
+&lt;informalexample&gt;&lt;programlisting&gt;
+RGBA = INTERPOLATE (PREVIOUS, TEXTURE, CONSTANT[A])
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+&lt;/refsect2&gt;
+&lt;note&gt;You can&apos;t give a multiplication factor for arguments as you can
+with blending.&lt;/note&gt;
+described texture combining is supported by the underlying driver and
+or hardware. On failure, %FALSE is returned and @error is set"
+              version="1.0"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="layer_index" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="blend_string"
+                   transfer-ownership="none"
+                   doc=" describing the desired texture combine function.">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_layer_combine_constant"
+              c:identifier="cogl_material_set_layer_combine_constant"
+              doc="When you are using the &apos;CONSTANT&apos; color source in a layer combine
+description then you can use this function to define its value."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="layer_index"
+                   transfer-ownership="none"
+                   doc=" for texture combining">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="constant" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_layer_filters"
+              c:identifier="cogl_material_set_layer_filters"
+              doc="Changes the decimation and interpolation filters used when a texture is
+drawn at other scales than 100%.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="layer_index" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="min_filter" transfer-ownership="none">
+          <type name="MaterialFilter" c:type="CoglMaterialFilter"/>
+        </parameter>
+        <parameter name="mag_filter" transfer-ownership="none">
+          <type name="MaterialFilter" c:type="CoglMaterialFilter"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_layer_matrix"
+              c:identifier="cogl_material_set_layer_matrix"
+              doc="This function lets you set a matrix that can be used to e.g. translate
+and rotate a single layer of a material used to fill your geometry.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="layer_index" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="matrix" transfer-ownership="none">
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_shininess"
+              c:identifier="cogl_material_set_shininess"
+              doc="Sets the materials shininess, in the standard OpenGL lighting model,
+which determines how specular highlights are calculated. A higher
+The default value is 0.0"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="shininess" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_specular"
+              c:identifier="cogl_material_set_specular"
+              doc="Sets the material&apos;s specular color, in the standard OpenGL lighting
+model. The intensity of the specular color depends on the viewport
+position, and is brightest along the lines of reflection.
+The default value is (0.0, 0.0, 0.0, 1.0)"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="specular" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_unref"
+              c:identifier="cogl_material_unref"
+              doc="Decrement the reference count for a cogl material."
+              version="1.0"
+              deprecated="Use cogl_handle_unref() instead"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="offscreen_new_to_texture"
+              c:identifier="cogl_offscreen_new_to_texture"
+              doc="This creates an offscreen buffer object using the given texture as the
+primary color buffer. It doesn&apos;t just initialize the contents of the
+offscreen buffer with the texture; they are tightly bound so that
+drawing to the offscreen buffer effectivly updates the contents of the
+given texture. You don&apos;t need to destroy the offscreen buffer before
+you can use the texture again.
+if it wasn&apos;t possible to create the buffer.">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="offscreen_ref"
+              c:identifier="cogl_offscreen_ref"
+              doc="Increments the reference count on the offscreen buffer."
+              deprecated="cogl_handle_ref should be used in new code."
+              deprecated-version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="offscreen_unref"
+              c:identifier="cogl_offscreen_unref"
+              doc="Decreases the reference count for the offscreen buffer and frees it when
+the count reaches 0."
+              deprecated="cogl_handle_unref should be used in new code."
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ortho"
+              c:identifier="cogl_ortho"
+              doc="Replaces the current projection matrix with a parallel projection
+matrix."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="left" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="right" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="bottom" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="top" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="near"
+                   transfer-ownership="none"
+                   doc=" the plane is behind the viewer)">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="far"
+                   transfer-ownership="none"
+                   doc=" the plane is behind the viewer)">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_arc"
+              c:identifier="cogl_path_arc"
+              doc="Adds an elliptical arc segment to the current path. A straight line
+segment will link the current pen location with the first vertex
+of the arc. If you perform a move_to to the arcs start just before
+drawing it you create a free standing arc.
+The angles are measured in degrees where 0° is in the direction of
+the positive X axis and 90° is in the direction of the positive Y
+axis. The angle of the arc begins at @angle_1 and heads towards
+otherwise it will increase).">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="center_x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="center_y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="radius_x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="radius_y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="angle_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="angle_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_close"
+              c:identifier="cogl_path_close"
+              doc="Closes the path being constructed by adding a straight line segment
+to it that ends at the first vertex of the path.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_curve_to"
+              c:identifier="cogl_path_curve_to"
+              doc="Adds a cubic bezier curve segment to the current path with the given
+second, third and fourth control points and using current pen location
+as the first control point.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x_3" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_3" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_ellipse"
+              c:identifier="cogl_path_ellipse"
+              doc="Constructs an ellipse shape. If there is an existing path this will
+start a new disjoint sub-path.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="center_x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="center_y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="radius_x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="radius_y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_fill"
+              c:identifier="cogl_path_fill"
+              doc="Fills the interior of the constructed shape using the current
+drawing color. The current path is then cleared. To use the path
+again, call cogl_path_fill_preserve() instead.
+The interior of the shape is determined using the &apos;even-odd&apos;
+rule. Any open sub-paths are treated as if there is an extra line
+joining the last point and first point. You can work out whether
+any point in the stage will be filled if you imagine drawing an
+infinitely long line in any direction from that point and then
+counting the number times it crosses a line in the path. If the
+number is odd it will be filled, otherwise it will not.
+See &lt;xref linkend=&quot;fill-rule&quot;/&gt; for a demonstration of the fill
+rule.
+&lt;figure id=&quot;fill-rule&quot;&gt;
+&lt;title&gt;Example of filling various paths&lt;/title&gt;
+&lt;graphic fileref=&quot;fill-rule.png&quot; format=&quot;PNG&quot;/&gt;
+&lt;/figure&gt;">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_fill_preserve"
+              c:identifier="cogl_path_fill_preserve"
+              doc="Fills the interior of the constructed shape using the current
+drawing color and preserves the path to be used again. See
+cogl_path_fill() for a description what is considered the interior
+of the shape."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_line"
+              c:identifier="cogl_path_line"
+              doc="Constructs a straight line shape starting and ending at the given
+coordinates. If there is an existing path this will start a new
+disjoint sub-path.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_line_to"
+              c:identifier="cogl_path_line_to"
+              doc="Adds a straight line segment to the current path that ends at the
+given coordinates.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_move_to"
+              c:identifier="cogl_path_move_to"
+              doc="Moves the pen to the given location. If there is an existing path
+this will start a new disjoint subpath.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_new"
+              c:identifier="cogl_path_new"
+              doc="Clears the current path and starts a new one."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_polygon"
+              c:identifier="cogl_path_polygon"
+              doc="Constructs a polygonal shape of the given number of vertices. If
+there is an existing path this will start a new disjoint sub-path.
+The coords array must contain 2 * num_points values. The first value
+represents the X coordinate of the first vertex, the second value
+represents the Y coordinate of the first vertex, continuing in the same
+fashion for the rest of the vertices.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="coords"
+                   transfer-ownership="none"
+                   doc="A pointer to the first element of an array of fixed-point values that specify the vertex coordinates.">
+          <array c:type="float*">
+            <type name="float"/>
+          </array>
+        </parameter>
+        <parameter name="num_points" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_polyline"
+              c:identifier="cogl_path_polyline"
+              doc="Constructs a series of straight line segments, starting from the
+first given vertex coordinate. If there is an existing path this
+will start a new disjoint sub-path. Each subsequent segment starts
+where the previous one ended and ends at the next given vertex
+coordinate.
+The coords array must contain 2 * num_points values. The first value
+represents the X coordinate of the first vertex, the second value
+represents the Y coordinate of the first vertex, continuing in the same
+fashion for the rest of the vertices. (num_points - 1) segments will
+be constructed.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="coords"
+                   transfer-ownership="none"
+                   doc="A pointer to the first element of an array of fixed-point values that specify the vertex coordinates.">
+          <array c:type="float*">
+            <type name="float"/>
+          </array>
+        </parameter>
+        <parameter name="num_points" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_rectangle"
+              c:identifier="cogl_path_rectangle"
+              doc="Constructs a rectangular shape at the given coordinates. If there
+is an existing path this will start a new disjoint sub-path.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_rel_curve_to"
+              c:identifier="cogl_path_rel_curve_to"
+              doc="Adds a cubic bezier curve segment to the current path with the given
+second, third and fourth control points and using current pen location
+as the first control point. The given coordinates are relative to the
+current pen location.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x_3" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_3" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_rel_line_to"
+              c:identifier="cogl_path_rel_line_to"
+              doc="Adds a straight line segment to the current path that ends at the
+given coordinates relative to the current pen location.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_rel_move_to"
+              c:identifier="cogl_path_rel_move_to"
+              doc="Moves the pen to the given offset relative to the current pen
+location. If there is an existing path this will start a new
+disjoint subpath.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_round_rectangle"
+              c:identifier="cogl_path_round_rectangle"
+              doc="Constructs a rectangular shape with rounded corners. If there is an
+existing path this will start a new disjoint sub-path.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="radius" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="arc_step"
+                   transfer-ownership="none"
+                   doc=" the corner arcs.">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_stroke"
+              c:identifier="cogl_path_stroke"
+              doc="Strokes the constructed shape using the current drawing color and a
+width of 1 pixel (regardless of the current transformation
+matrix). To current path is then cleared. To use the path again,
+call cogl_path_stroke_preserve() instead.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_stroke_preserve"
+              c:identifier="cogl_path_stroke_preserve"
+              doc="Strokes the constructed shape using the current drawing color and
+preserves the path to be used again."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="perspective"
+              c:identifier="cogl_perspective"
+              doc="Replaces the current projection matrix with a perspective matrix
+based on the provided values.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fovy" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="aspect" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z_near" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z_far" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixel_buffer_new"
+              c:identifier="cogl_pixel_buffer_new"
+              doc="Creates a new buffer to store pixel data. You can create a new texture from
+this buffer using cogl_texture_new_from_buffer().
+%COGL_INVALID_HANDLE on failure"
+              version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixel_buffer_new_EXP"
+              c:identifier="cogl_pixel_buffer_new_EXP">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixel_buffer_new_for_size"
+              c:identifier="cogl_pixel_buffer_new_for_size"
+              doc="Creates a new buffer to store pixel data.
+&lt;note&gt;COGL will try its best to provide a hardware buffer you can map,
+write into and effectively do a zero copy upload when creating a texture
+from it with cogl_texture_new_from_buffer(). For various reasons, such
+buffers are likely to have a stride larger than width * bytes_per_pixel. The
+user must take the stride into account when writing into it.&lt;/note&gt;
+%COGL_INVALID_HANDLE on failure"
+              version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="stride"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   doc=" in bytes">
+          <type name="uint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixel_buffer_new_for_size_EXP"
+              c:identifier="cogl_pixel_buffer_new_for_size_EXP">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="stride"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="uint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="polygon"
+              c:identifier="cogl_polygon"
+              doc="Draws a convex polygon using the current source material to fill / texture
+with according to the texture coordinates passed.
+If @use_color is %TRUE then the color will be changed for each vertex using
+the value specified in the color member of #CoglTextureVertex. This can be
+used for example to make the texture fade out by setting the alpha value of
+the color.
+All of the texture coordinates must be in the range [0,1] and repeating the
+texture is not supported.
+Because of the way this function is implemented it will currently
+only work if either the texture is not sliced or the backend is not
+OpenGL ES and the minifying and magnifying functions are both set
+to COGL_MATERIAL_FILTER_NEAREST."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="vertices" transfer-ownership="none">
+          <type name="TextureVertex" c:type="CoglTextureVertex*"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="use_color" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pop_draw_buffer"
+              c:identifier="cogl_pop_draw_buffer"
+              doc="Restore cogl_set_draw_buffer() state."
+              deprecated="The draw buffer API was replaced with a framebuffer API"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="pop_framebuffer"
+              c:identifier="cogl_pop_framebuffer"
+              doc="Restores the framebuffer that was previously at the top of the stack.
+All subsequent drawing will be redirected to this framebuffer."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="pop_matrix"
+              c:identifier="cogl_pop_matrix"
+              doc="Restores the current model-view matrix from the matrix stack.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="program_attach_shader"
+              c:identifier="cogl_program_attach_shader"
+              doc="Attaches a shader to a program object, a program can have one vertex shader
+and one fragment shader attached.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="program_handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="shader_handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_get_uniform_location"
+              c:identifier="cogl_program_get_uniform_location"
+              doc="Retrieve the location (offset) of a uniform variable in a shader program,
+a uniform is a variable that is constant for all vertices/fragments for a
+shader object and is possible to modify as an external parameter.
+This uniform can be set using cogl_program_uniform_1f() when the
+program is in use.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="uniform_name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_link"
+              c:identifier="cogl_program_link"
+              doc="Links a program making it ready for use.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_ref"
+              c:identifier="cogl_program_ref"
+              doc="Add an extra reference to a program.">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_1f"
+              c:identifier="cogl_program_uniform_1f"
+              doc="Changes the value of a floating point uniform in the currently
+used (see cogl_program_use()) shader program.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_1i"
+              c:identifier="cogl_program_uniform_1i"
+              doc="Changes the value of an integer uniform in the currently
+used (see cogl_program_use()) shader program.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_float"
+              c:identifier="cogl_program_uniform_float"
+              doc="Changes the value of a float vector uniform, or uniform array in the
+currently used (see cogl_program_use()) shader program.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="value"
+                   transfer-ownership="none"
+                   doc="the new value of the uniform.">
+          <array length="2" c:type="GLfloat*">
+            <type name="GL.float"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_int"
+              c:identifier="cogl_program_uniform_int"
+              doc="Changes the value of a int vector uniform, or uniform array in the
+currently used (see cogl_program_use()) shader program.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="value"
+                   transfer-ownership="none"
+                   doc="the new value of the uniform.">
+          <array length="2" c:type="int*">
+            <type name="int"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_matrix"
+              c:identifier="cogl_program_uniform_matrix"
+              doc="Changes the value of a matrix uniform, or uniform array in the
+currently used (see cogl_program_use()) shader program. The @size
+parameter is used to determine the square size of the matrix.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="transpose" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="value"
+                   transfer-ownership="none"
+                   doc="the new value of the uniform.">
+          <array length="2" c:type="float*">
+            <type name="float"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_unref"
+              c:identifier="cogl_program_unref"
+              doc="Removes a reference to a program. If it was the last reference the
+program object will be destroyed.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_use"
+              c:identifier="cogl_program_use"
+              doc="Activate a specific shader program replacing that part of the GL
+rendering pipeline, if passed in %COGL_INVALID_HANDLE the default
+behavior of GL is reinstated.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="push_draw_buffer"
+              c:identifier="cogl_push_draw_buffer"
+              doc="Save cogl_set_draw_buffer() state."
+              deprecated="The draw buffer API was replaced with a framebuffer API"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="push_framebuffer"
+              c:identifier="cogl_push_framebuffer"
+              doc="Redirects all subsequent drawing to the specified framebuffer. This can
+either be an offscreen buffer created with cogl_offscreen_new_to_texture ()
+or in the future it may be an onscreen framebuffer too.
+You should understand that a framebuffer owns the following state:
+&lt;itemizedlist&gt;
+&lt;li&gt;The projection matrix&lt;/li&gt;
+&lt;li&gt;The modelview matrix stack&lt;/li&gt;
+&lt;li&gt;The viewport&lt;/li&gt;
+&lt;li&gt;The clip stack&lt;/li&gt;
+&lt;/itemizedlist&gt;
+So these items will automatically be saved and restored when you
+push and pop between different framebuffers.
+Also remember a newly allocated framebuffer will have an identity matrix for
+the projection and modelview matrices which gives you a coordinate space
+like OpenGL with (-1, -1) corresponding to the top left of the viewport,
+(1, 1) corresponding to the bottom right and +z coming out towards the
+viewer.
+If you want to set up a coordinate space like Clutter does with (0, 0)
+corresponding to the top left and (framebuffer_width, framebuffer_height)
+corresponding to the bottom right you can do so like this:
+|[
+static void
+setup_viewport (unsigned int width,
+unsigned int height,
+float fovy,
+float aspect,
+float z_near,
+float z_far)
+{
+float z_camera;
+CoglMatrix projection_matrix;
+CoglMatrix mv_matrix;
+cogl_set_viewport (0, 0, width, height);
+cogl_perspective (fovy, aspect, z_near, z_far);
+cogl_get_projection_matrix (&amp;projection_matrix);
+z_camera = 0.5 * projection_matrix.xx;
+cogl_matrix_init_identity (&amp;mv_matrix);
+cogl_matrix_translate (&amp;mv_matrix, -0.5f, -0.5f, -z_camera);
+cogl_matrix_scale (&amp;mv_matrix, 1.0f / width, -1.0f / height, 1.0f / width);
+cogl_matrix_translate (&amp;mv_matrix, 0.0f, -1.0 * height, 0.0f);
+cogl_set_modelview_matrix (&amp;mv_matrix);
+}
+static void
+my_init_framebuffer (CoglHandle framebuffer,
+unsigned int framebuffer_width,
+unsigned int framebuffer_height)
+{
+ClutterActor *stage = clutter_stage_get_default ();
+ClutterPerspective perspective;
+clutter_stage_get_perspective (CLUTTER_STAGE (stage), &amp;perspective);
+cogl_push_framebuffer (framebuffer);
+setup_viewport (framebuffer_width,
+framebuffer_height,
+perspective-&gt;fovy,
+perspective.aspect,
+perspective.z_near,
+perspective.z_far);
+cogl_pop_framebuffer ();
+}
+]|
+The previous framebuffer can be restored by calling cogl_pop_framebuffer()"
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none" doc=" offscreen.">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="push_matrix"
+              c:identifier="cogl_push_matrix"
+              doc="Stores the current model-view matrix on the matrix stack. The matrix
+can later be restored with cogl_pop_matrix().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="read_pixels"
+              c:identifier="cogl_read_pixels"
+              doc="This reads a rectangle of pixels from the current framebuffer where
+position (0, 0) is the top left. The pixel at (x, y) is the first
+read, and the data is returned with a rowstride of (width * 4).
+Currently Cogl assumes that the framebuffer is in a premultiplied
+format so if @format is non-premultiplied it will convert it. To
+read the pixel values without any conversion you should either
+specify a format that doesn&apos;t use an alpha channel or use one of
+the formats ending in PRE.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="source"
+                   transfer-ownership="none"
+                   doc=" (only COGL_READ_PIXELS_COLOR_BUFFER supported currently)">
+          <type name="ReadPixelsFlags" c:type="CoglReadPixelsFlags"/>
+        </parameter>
+        <parameter name="format"
+                   transfer-ownership="none"
+                   doc=" (only COGL_PIXEL_FORMAT_RGBA_8888 supported currently)">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="pixels" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangle"
+              c:identifier="cogl_rectangle"
+              doc="Fills a rectangle at the given coordinates with the current source material">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangle_with_multitexture_coords"
+              c:identifier="cogl_rectangle_with_multitexture_coords"
+              doc="This function draws a rectangle using the current source material to
+texture or fill with. As a material may contain multiple texture layers
+this interface lets you supply texture coordinates for each layer of the
+material.
+The first pair of coordinates are for the first layer (with the smallest
+layer index) and if you supply less texture coordinates than there are
+layers in the current source material then default texture coordinates
+(0.0, 0.0, 1.0, 1.0) are generated."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="tex_coords"
+                   transfer-ownership="none"
+                   doc="An array containing groups of">
+          <array c:type="float*">
+            <type name="float"/>
+          </array>
+        </parameter>
+        <parameter name="tex_coords_len"
+                   transfer-ownership="none"
+                   doc=" and one group of texture coordinates, this would be 4)">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangle_with_texture_coords"
+              c:identifier="cogl_rectangle_with_texture_coords"
+              doc="Draw a rectangle using the current material and supply texture coordinates
+to be used for the first texture layer of the material. To draw the entire
+texture pass in @tx1=0.0 @ty1=0.0 @tx2=1.0 @ty2=1.0."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="tx1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="ty1" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="tx2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="ty2" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangles"
+              c:identifier="cogl_rectangles"
+              doc="Draws a series of rectangles in the same way that
+cogl_rectangle() does. In some situations it can give a
+significant performance boost to use this function rather than
+calling cogl_rectangle() separately for each rectangle.
+parameters x1, y1, x2, and y2, and have the same
+meaning as in cogl_rectangle()."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="verts"
+                   transfer-ownership="none"
+                   doc="an array of vertices">
+          <array c:type="float*">
+            <type name="float"/>
+          </array>
+        </parameter>
+        <parameter name="n_rects" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangles_with_texture_coords"
+              c:identifier="cogl_rectangles_with_texture_coords"
+              doc="Draws a series of rectangles in the same way that
+cogl_rectangle_with_texture_coords() does. In some situations it can give a
+significant performance boost to use this function rather than
+calling cogl_rectangle_with_texture_coords() separately for each rectangle.
+parameters x1, y1, x2, y2, tx1, ty1, tx2 and ty2 and have the same
+meaning as in cogl_rectangle_with_texture_coords()."
+              version="0.8.6">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="verts"
+                   transfer-ownership="none"
+                   doc="an array of vertices">
+          <array c:type="float*">
+            <type name="float"/>
+          </array>
+        </parameter>
+        <parameter name="n_rects" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rotate"
+              c:identifier="cogl_rotate"
+              doc="Multiplies the current model-view matrix by one that rotates the
+model around the vertex specified by @x, @y and @z. The rotation
+follows the right-hand thumb rule so for example rotating by 10
+degrees about the vertex (0, 0, 1) causes a small counter-clockwise
+rotation.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scale"
+              c:identifier="cogl_scale"
+              doc="Multiplies the current model-view matrix by one that scales the x,
+y and z axes by the given values.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_backface_culling_enabled"
+              c:identifier="cogl_set_backface_culling_enabled"
+              doc="Sets whether textures positioned so that their backface is showing
+should be hidden. This can be used to efficiently draw two-sided
+textures or fully closed cubes without enabling depth testing. This
+only affects calls to the cogl_rectangle* family of functions and
+cogl_vertex_buffer_draw*. Backface culling is disabled by default.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="setting" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_depth_test_enabled"
+              c:identifier="cogl_set_depth_test_enabled"
+              doc="Sets whether depth testing is enabled. If it is disabled then the
+order that actors are layered on the screen depends solely on the
+order specified using clutter_actor_raise() and
+clutter_actor_lower(), otherwise it will also take into account the
+actor&apos;s depth. Depth testing is disabled by default.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="setting" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_draw_buffer"
+              c:identifier="cogl_set_draw_buffer"
+              doc="Redirects all subsequent drawing to the specified framebuffer. This
+can either be an offscreen buffer created with
+cogl_offscreen_new_to_texture () or you can revert to your original
+on screen window buffer.
+the type of CoglHandle given instead."
+              deprecated="The target argument was redundant since we could look at"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target"
+                   transfer-ownership="none"
+                   doc=" are setting as the render target.">
+          <type name="BufferTarget" c:type="CoglBufferTarget"/>
+        </parameter>
+        <parameter name="offscreen"
+                   transfer-ownership="none"
+                   doc=" then this is a CoglHandle for the offscreen buffer.">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_fog"
+              c:identifier="cogl_set_fog"
+              doc="Enables fogging. Fogging causes vertices that are further away from the eye
+to be rendered with a different color. The color is determined according to
+the chosen fog mode; at it&apos;s simplest the color is linearly interpolated so
+that vertices at @z_near are drawn fully with their original color and
+vertices at @z_far are drawn fully with @fog_color. Fogging will remain
+enabled until you call cogl_disable_fog().
+&lt;note&gt;The fogging functions only work correctly when primitives use
+unmultiplied alpha colors. By default Cogl will premultiply textures
+and cogl_set_source_color() will premultiply colors, so unless you
+explicitly load your textures requesting an unmultiplied internal format
+and use cogl_material_set_color() you can only use fogging with fully
+opaque primitives. This might improve in the future when we can depend
+on fragment shaders.&lt;/note&gt;">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fog_color" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+        <parameter name="mode"
+                   transfer-ownership="none"
+                   doc=" fogging blend factor.">
+          <type name="FogMode" c:type="CoglFogMode"/>
+        </parameter>
+        <parameter name="density"
+                   transfer-ownership="none"
+                   doc=" %COGL_FOG_MODE_EXPONENTIAL_SQUARED equations.">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z_near" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z_far" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_framebuffer"
+              c:identifier="cogl_set_framebuffer"
+              doc="This redirects all subsequent drawing to the specified framebuffer. This can
+either be an offscreen buffer created with cogl_offscreen_new_to_texture ()
+or in the future it may be an onscreen framebuffers too."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none" doc=" offscreen.">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_modelview_matrix"
+              c:identifier="cogl_set_modelview_matrix"
+              doc="Loads @matrix as the new model-view matrix.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix" transfer-ownership="none">
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_projection_matrix"
+              c:identifier="cogl_set_projection_matrix"
+              doc="Loads matrix as the new projection matrix.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix" transfer-ownership="none">
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source"
+              c:identifier="cogl_set_source"
+              doc="This function sets the source material that will be used to fill subsequent
+geometry emitted via the cogl API.
+&lt;note&gt;In the future we may add the ability to set a front facing material,
+and a back facing material, in which case this function will set both to the
+same.&lt;/note&gt;"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source_color"
+              c:identifier="cogl_set_source_color"
+              doc="This is a convenience function for creating a solid fill source material
+from the given color. This color will be used for any subsequent drawing
+operation.
+The color will be premultiplied by Cogl, so the color should be
+semi-transparent red.
+See also cogl_set_source_color4ub() and cogl_set_source_color4f()
+if you already have the color components."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source_color4f"
+              c:identifier="cogl_set_source_color4f"
+              doc="This is a convenience function for creating a solid fill source material
+from the given color using normalized values for each component. This color
+will be used for any subsequent drawing operation.
+The value for each component is a fixed point number in the range
+between 0 and %1.0. If the values passed in are outside that
+range, they will be clamped."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="alpha" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source_color4ub"
+              c:identifier="cogl_set_source_color4ub"
+              doc="This is a convenience function for creating a solid fill source material
+from the given color using unsigned bytes for each component. This
+color will be used for any subsequent drawing operation.
+The value for each component is an unsigned byte in the range
+between 0 and 255."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="alpha" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source_texture"
+              c:identifier="cogl_set_source_texture"
+              doc="This is a convenience function for creating a material with the first
+layer set to #texture_handle and setting that material as the source with
+cogl_set_source.
+and cogl_set_source_texture. If you need to blend a texture with a color then
+you can create a simple material like this:
+&lt;programlisting&gt;
+material = cogl_material_new ();
+cogl_material_set_color4ub (material, 0xff, 0x00, 0x00, 0x80);
+cogl_material_set_layer (material, 0, tex_handle);
+cogl_set_source (material);
+&lt;/programlisting&gt;"
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture_handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_viewport"
+              c:identifier="cogl_set_viewport"
+              doc="Replaces the current viewport with the given values."
+              version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_compile"
+              c:identifier="cogl_shader_compile"
+              doc="Compiles the shader, no return value, but the shader is now ready for
+linking into a program.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_get_info_log"
+              c:identifier="cogl_shader_get_info_log"
+              doc="Retrieves the information log for a coglobject, can be used in conjunction
+with cogl_shader_get_parameteriv() to retrieve the compiler warnings/error
+messages that caused a shader to not compile correctly, mainly useful for
+debugging purposes.
+g_free() to free it">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_get_type"
+              c:identifier="cogl_shader_get_type"
+              doc="Retrieves the type of a shader #CoglHandle
+or %COGL_SHADER_TYPE_FRAGMENT if the shader is a frament processor">
+      <return-value transfer-ownership="full">
+        <type name="ShaderType" c:type="CoglShaderType"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_is_compiled"
+              c:identifier="cogl_shader_is_compiled"
+              doc="Retrieves whether a shader #CoglHandle has been compiled">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_ref"
+              c:identifier="cogl_shader_ref"
+              doc="Add an extra reference to a shader.">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_source"
+              c:identifier="cogl_shader_source"
+              doc="Replaces the current GLSL source associated with a shader with a new
+one.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="shader" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="source" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_unref"
+              c:identifier="cogl_shader_unref"
+              doc="Removes a reference to a shader. If it was the last reference the
+shader object will be destroyed.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sqrti"
+              c:identifier="cogl_sqrti"
+              doc="Very fast fixed point implementation of square root for integers.
+This function is at least 6x faster than clib sqrt() on x86, and (this is
+not a typo!) about 500x faster on ARM without FPU. It&apos;s error is less than
+5% for arguments smaller than %COGL_SQRTI_ARG_5_PERCENT and less than 10%
+for narguments smaller than %COGL_SQRTI_ARG_10_PERCENT. The maximum
+argument that can be passed to this function is %COGL_SQRTI_ARG_MAX."
+              version="1.0">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_data"
+              c:identifier="cogl_texture_get_data"
+              doc="Copies the pixel data from a cogl texture to system memory.
+is not valid">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="rowstride"
+                   transfer-ownership="none"
+                   doc=" specified.">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="data"
+                   transfer-ownership="none"
+                   doc=" only querying the data size through the return value.">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_format"
+              c:identifier="cogl_texture_get_format"
+              doc="Queries the #CoglPixelFormat of a cogl texture.">
+      <return-value transfer-ownership="full">
+        <type name="PixelFormat" c:type="CoglPixelFormat"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_gl_texture"
+              c:identifier="cogl_texture_get_gl_texture"
+              doc="Queries the GL handles for a GPU side texture through its #CoglHandle.
+If the texture is spliced the data for the first sub texture will be
+queried.
+if the handle was invalid">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="out_gl_handle"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="pointer to return location for the textures GL handle, or %NULL.">
+          <type name="GL.uint" c:type="GLuint*"/>
+        </parameter>
+        <parameter name="out_gl_target"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="pointer to return location for the GL target type, or %NULL.">
+          <type name="GL.enum" c:type="GLenum*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_height"
+              c:identifier="cogl_texture_get_height"
+              doc="Queries the height of a cogl texture.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_max_waste"
+              c:identifier="cogl_texture_get_max_waste"
+              doc="Queries the maximum wasted (unused) pixels in one dimension of a GPU side
+texture.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_rowstride"
+              c:identifier="cogl_texture_get_rowstride"
+              doc="Queries the rowstride of a cogl texture.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_width"
+              c:identifier="cogl_texture_get_width"
+              doc="Queries the width of a cogl texture.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_is_sliced"
+              c:identifier="cogl_texture_is_sliced"
+              doc="Queries if a texture is sliced (stored as multiple GPU side tecture
+objects).
+is stored as a single GPU texture">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_bitmap"
+              c:identifier="cogl_texture_new_from_bitmap"
+              doc="Creates a COGL texture from a CoglBitmap.
+%COGL_INVALID_HANDLE on failure"
+              version="1.0">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="bmp_handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="internal_format"
+                   transfer-ownership="none"
+                   doc=" texture">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_data"
+              c:identifier="cogl_texture_new_from_data"
+              doc="Creates a new COGL texture based on data residing in memory.
+%COGL_INVALID_HANDLE on failure"
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="internal_format"
+                   transfer-ownership="none"
+                   doc=" the buffer on the GPU. If COGL_PIXEL_FORMAT_ANY is given then a premultiplied format similar to the format of the source data will be used. The default blending equations of Cogl expect premultiplied color data; the main use of passing a non-premultiplied format here is if you have non-premultiplied source data and are going to adjust the blend mode (see cogl_material_set_blend()) or use the data for something other than straight blending.">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="rowstride"
+                   transfer-ownership="none"
+                   doc=" scanlines in @data">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_file"
+              c:identifier="cogl_texture_new_from_file"
+              doc="Creates a COGL texture from an image file.
+%COGL_INVALID_HANDLE on failure"
+              version="0.8"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="internal_format"
+                   transfer-ownership="none"
+                   doc=" texture. If %COGL_PIXEL_FORMAT_ANY is given then a premultiplied format similar to the format of the source data will be used. The default blending equations of Cogl expect premultiplied color data; the main use of passing a non-premultiplied format here is if you have non-premultiplied source data and are going to adjust the blend mode (see cogl_material_set_blend()) or use the data for something other than straight blending.">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_foreign"
+              c:identifier="cogl_texture_new_from_foreign"
+              doc="Creates a COGL texture based on an existing OpenGL texture; the
+width, height and format are passed along since it is not always
+possible to query these from OpenGL.
+The waste arguments allow you to create a Cogl texture that maps to
+a region smaller than the real OpenGL texture. For instance if your
+hardware only supports power-of-two textures you may load a
+non-power-of-two image into a larger power-of-two texture and use
+the waste arguments to tell Cogl which region should be mapped to
+the texture coordinate range [0:1].
+%COGL_INVALID_HANDLE on failure"
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="gl_handle" transfer-ownership="none">
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="gl_target" transfer-ownership="none">
+          <type name="GL.enum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x_pot_waste" transfer-ownership="none">
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="y_pot_waste" transfer-ownership="none">
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_sub_texture"
+              c:identifier="cogl_texture_new_from_sub_texture"
+              doc="Creates a new texture which represents a subregion of another
+texture. The GL resources will be shared so that no new texture
+data is actually allocated.
+Sub textures have undefined behaviour texture coordinates outside
+of the range [0,1] are used. They also do not work with
+CoglVertexBuffers.
+The sub texture will keep a reference to the full texture so you do
+not need to keep one separately if you only want to use the sub
+texture."
+              version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="full_texture" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="sub_x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="sub_y" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="sub_width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="sub_height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_with_size"
+              c:identifier="cogl_texture_new_with_size"
+              doc="Creates a new COGL texture with the specified dimensions and pixel format.
+%COGL_INVALID_HANDLE on failure"
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="internal_format"
+                   transfer-ownership="none"
+                   doc=" texture.">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_ref"
+              c:identifier="cogl_texture_ref"
+              doc="Increment the reference count for a cogl texture."
+              deprecated="Use cogl_handle_ref() instead"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_set_region"
+              c:identifier="cogl_texture_set_region"
+              doc="Sets the pixels in a rectangular subregion of @handle from an in-memory
+buffer containing pixel data.
+%FALSE otherwise">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="src_x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="src_y" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="dst_x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="dst_y" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="dst_width" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="dst_height" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="rowstride"
+                   transfer-ownership="none"
+                   doc=" specified)">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_unref"
+              c:identifier="cogl_texture_unref"
+              doc="Decrement the reference count for a cogl texture."
+              deprecated="Use cogl_handle_unref() instead"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="translate"
+              c:identifier="cogl_translate"
+              doc="Multiplies the current model-view matrix by one that translates the
+model along all three axes according to the given values.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="float" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_add"
+              c:identifier="cogl_vertex_buffer_add"
+              doc="Adds an attribute to a buffer.
+You either can use one of the built-in names such as &quot;gl_Vertex&quot;, or
+&quot;gl_MultiTexCoord0&quot; to add standard attributes, like positions, colors
+and normals, or you can add custom attributes for use in shaders.
+The number of vertices declared when calling cogl_vertex_buffer_new()
+determines how many attribute values will be read from the supplied
+The data for your attribute isn&apos;t copied anywhere until you call
+cogl_vertex_buffer_submit(), or issue a draw call which automatically
+submits pending attribute changes. so the supplied pointer must remain
+valid until then. If you are updating an existing attribute (done by
+re-adding it) then you still need to re-call cogl_vertex_buffer_submit()
+to commit the changes to the GPU. Be carefull to minimize the number
+of calls to cogl_vertex_buffer_submit(), though.
+&lt;note&gt;If you are interleving attributes it is assumed that each interleaved
+attribute starts no farther than +- stride bytes from the other attributes
+it is interleved with. I.e. this is ok:
+&lt;programlisting&gt;
+|-0-0-0-0-0-0-0-0-0-0|
+&lt;/programlisting&gt;
+This is not ok:
+&lt;programlisting&gt;
+|- - - - -0-0-0-0-0-0 0 0 0 0|
+&lt;/programlisting&gt;
+(Though you can have multiple groups of interleved attributes)&lt;/note&gt;">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="attribute_name"
+                   transfer-ownership="none"
+                   doc=" variable name and standard attribute types must use one of following">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="n_components" transfer-ownership="none" doc=" 3 or 4">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="AttributeType" c:type="CoglAttributeType"/>
+        </parameter>
+        <parameter name="normalized"
+                   transfer-ownership="none"
+                   doc=" format should be mapped into the range [-1.0, 1.0] or [0.0, 1.0] for unsigned values. If %FALSE they are converted to floats directly.">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="stride"
+                   transfer-ownership="none"
+                   doc=" value to the start of the next value (for the same attribute). So, for example, with a position interleved with color like this: XYRGBAXYRGBAXYRGBA, then if each letter represents a byte, the stride for both attributes is 6. The special value 0 means the values are stored sequentially in memory.">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="pointer"
+                   transfer-ownership="none"
+                   doc=" must remain valid until you either call cogl_vertex_buffer_submit() or issue a draw call.">
+          <type name="any" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_delete"
+              c:identifier="cogl_vertex_buffer_delete"
+              doc="Deletes an attribute from a buffer. You will need to call
+cogl_vertex_buffer_submit() or issue a draw call to commit this
+change to the GPU.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="attribute_name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_disable"
+              c:identifier="cogl_vertex_buffer_disable"
+              doc="Disables a previosuly added attribute.
+Since it can be costly to add and remove new attributes to buffers; to make
+individual buffers more reuseable it is possible to enable and disable
+attributes before using a buffer for drawing.
+You don&apos;t need to call cogl_vertex_buffer_submit() after using this
+function.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="attribute_name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_draw"
+              c:identifier="cogl_vertex_buffer_draw"
+              doc="Allows you to draw geometry using all or a subset of the
+vertices in a vertex buffer.
+Any un-submitted attribute changes are automatically submitted before
+drawing.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none" doc=" interpreted.">
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_draw_elements"
+              c:identifier="cogl_vertex_buffer_draw_elements"
+              doc="This function lets you use an array of indices to specify the vertices
+within your vertex buffer that you want to draw. The indices themselves
+are created by calling cogl_vertex_buffer_indices_new ()
+Any un-submitted attribute changes are automatically submitted before
+drawing.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none" doc=" interpreted.">
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="indices"
+                   transfer-ownership="none"
+                   doc=" cogl_vertex_buffer_indices_new ()">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="min_index" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="max_index" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="indices_offset"
+                   transfer-ownership="none"
+                   doc=" index to use for drawing.">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_enable"
+              c:identifier="cogl_vertex_buffer_enable"
+              doc="Enables a previosuly disabled attribute.
+Since it can be costly to add and remove new attributes to buffers; to make
+individual buffers more reuseable it is possible to enable and disable
+attributes before using a buffer for drawing.
+You don&apos;t need to call cogl_vertex_buffer_submit() after using this function">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="attribute_name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_get_n_vertices"
+              c:identifier="cogl_vertex_buffer_get_n_vertices"
+              doc="Retrieves the number of vertices that @handle represents">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_indices_get_for_quads"
+              c:identifier="cogl_vertex_buffer_indices_get_for_quads"
+              doc="Creates a vertex buffer containing the indices needed to draw pairs
+of triangles from a list of vertices grouped as quads. There will
+be at least @n_indices entries in the buffer (but there may be
+more).
+The indices will follow this pattern:
+0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7 ... etc
+For example, if you submit vertices for a quad like this:
+|[
+0        3
+########
+#      #
+#      #
+########
+1        2
+]|
+Then you can request 6 indices to render two triangles like this:
+|[
+0           0        3
+##          ########
+# ##          ##   #
+#   ##          ## #
+########          ##
+1        2           2
+]|
+owned by Cogl and should not be modified or unref&apos;d.">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_indices" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_indices_get_type"
+              c:identifier="cogl_vertex_buffer_indices_get_type"
+              doc="Queries back the data type used for the given indices">
+      <return-value transfer-ownership="full">
+        <type name="IndicesType" c:type="CoglIndicesType"/>
+      </return-value>
+      <parameters>
+        <parameter name="indices" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_indices_new"
+              c:identifier="cogl_vertex_buffer_indices_new"
+              doc="Depending on how much geometry you are submitting it can be worthwhile
+optimizing the number of redundant vertices you submit. Using an index
+array allows you to reference vertices multiple times, for example
+during triangle strips.
+cogl_vertex_buffer_draw_elements().">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="indices_type"
+                   transfer-ownership="none"
+                   doc=" the indices.">
+          <type name="IndicesType" c:type="CoglIndicesType"/>
+        </parameter>
+        <parameter name="indices_array"
+                   transfer-ownership="none"
+                   doc="Specifies the address of your array of indices">
+          <array length="2" c:type="void*">
+            <type name="any"/>
+          </array>
+        </parameter>
+        <parameter name="indices_len" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_new"
+              c:identifier="cogl_vertex_buffer_new"
+              doc="Creates a new vertex buffer that you can use to add attributes.">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_ref"
+              c:identifier="cogl_vertex_buffer_ref"
+              doc="Increment the reference count for a vertex buffer"
+              deprecated="Use cogl_handle_ref() instead"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="full">
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_submit"
+              c:identifier="cogl_vertex_buffer_submit"
+              doc="Submits all the user added attributes to the GPU; once submitted, the
+attributes can be used for drawing.
+You should aim to minimize calls to this function since it implies
+validating your data; it potentially incurs a transport cost (especially if
+you are using GLX indirect rendering) and potentially a format conversion
+cost if the GPU doesn&apos;t natively support any of the given attribute formats.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_unref"
+              c:identifier="cogl_vertex_buffer_unref"
+              doc="Decrement the reference count for a vertex buffer"
+              deprecated="Use cogl_handle_unref() instead"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="viewport"
+              c:identifier="cogl_viewport"
+              doc="Replace the current viewport with the given values."
+              version="0.8.2"
+              deprecated="Use cogl_set_viewport() instead"
+              deprecated-version="1.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="uint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/clutter/cogl/cogl.factor b/extra/clutter/cogl/cogl.factor
new file mode 100644 (file)
index 0000000..6b54a07
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: clutter.cogl.ffi ;
+IN: clutter.cogl
+
diff --git a/extra/clutter/cogl/ffi/ffi.factor b/extra/clutter/cogl/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..e1d85c9
--- /dev/null
@@ -0,0 +1,25 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries alien.syntax
+combinators kernel opengl.gl system
+gobject-introspection glib.ffi ;
+IN: clutter.cogl.ffi
+
+<<
+"clutter.cogl" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libclutter-glx-1.0.so" cdecl add-library ] }
+} cond
+>>
+
+TYPEDEF: int CoglAngle
+TYPEDEF: int CoglFixed
+TYPEDEF: void* CoglHandle
+
+REPLACE-C-TYPE: unsigned\schar uchar
+REPLACE-C-TYPE: unsigned\sint uint
+REPLACE-C-TYPE: unsigned\slong ulong
+
+GIR: vocab:clutter/cogl/Cogl-1.0.gir
+
diff --git a/extra/clutter/ffi/ffi.factor b/extra/clutter/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..bbb9294
--- /dev/null
@@ -0,0 +1,20 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries cairo.ffi
+combinators kernel system
+gobject-introspection clutter.cogl.ffi clutter.json.ffi
+glib.ffi gobject.ffi pango.ffi ;
+IN: clutter.ffi
+
+<<
+"clutter" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libclutter-glx-1.0.so" cdecl add-library ] }
+} cond
+>>
+
+IMPLEMENT-STRUCTS: ClutterVertex ;
+
+GIR: vocab:clutter/Clutter-1.0.gir
+
diff --git a/extra/clutter/gtk/GtkClutter-0.10.gir b/extra/clutter/gtk/GtkClutter-0.10.gir
new file mode 100644 (file)
index 0000000..7d92932
--- /dev/null
@@ -0,0 +1,809 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="Atk" version="1.0"/>
+  <include name="Clutter" version="1.0"/>
+  <include name="ClutterJson" version="1.0"/>
+  <include name="Cogl" version="1.0"/>
+  <include name="GL" version="1.0"/>
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gdk" version="2.0"/>
+  <include name="GdkPixbuf" version="2.0"/>
+  <include name="Gio" version="2.0"/>
+  <include name="Gtk" version="2.0"/>
+  <include name="Pango" version="1.0"/>
+  <include name="PangoCairo" version="1.0"/>
+  <include name="PangoFT2" version="1.0"/>
+  <include name="cairo" version="1.0"/>
+  <include name="fontconfig" version="2.0"/>
+  <include name="freetype2" version="2.0"/>
+  <package name="clutter-1.0"/>
+  <package name="gobject-2.0"/>
+  <package name="gtk+-2.0"/>
+  <namespace name="GtkClutter"
+             version="0.10"
+             shared-library="libclutter-gtk-0.10.so.0"
+             c:prefix="GtkClutter">
+    <enumeration name="ClutterGtkInitError"
+                 doc="Extension of the #ClutterInitError enumeration for the integration
+with GTK+"
+                 version="0.8"
+                 c:type="ClutterGtkInitError">
+      <member name="last" value="-3" c:identifier="CLUTTER_INIT_ERROR_LAST"/>
+      <member name="gtk" value="-4" c:identifier="CLUTTER_INIT_ERROR_GTK"/>
+    </enumeration>
+    <enumeration name="ClutterGtkTextureError"
+                 doc="An enumeration of error types used in ClutterGtk texture functions"
+                 version="0.10"
+                 c:type="ClutterGtkTextureError">
+      <member name="invalid_stock_id"
+              value="0"
+              c:identifier="CLUTTER_GTK_TEXTURE_INVALID_STOCK_ID"/>
+      <member name="error_last"
+              value="1"
+              c:identifier="CLUTTER_GTK_TEXTURE_ERROR_LAST"/>
+    </enumeration>
+    <class name="Embed"
+           c:type="GtkClutterEmbed"
+           doc="A #GtkWidget containing the default Clutter stage."
+           version="0.6"
+           parent="Gtk.Container"
+           glib:type-name="GtkClutterEmbed"
+           glib:get-type="gtk_clutter_embed_get_type"
+           glib:type-struct="EmbedClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Gtk.Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_clutter_embed_new"
+                   doc="Creates a new #GtkClutterEmbed widget. This widget can be
+used to build a scene using Clutter API into a GTK+ application."
+                   version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="Embed" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_stage"
+              c:identifier="gtk_clutter_embed_get_stage"
+              doc="Retrieves the #ClutterStage from @embed. The returned stage can be
+used to add actors to the Clutter scene. Multiple calls to this function
+on the same #GtkClutterEmbed widget will return the same stage.
+or unref the returned actor."
+              version="0.6">
+        <return-value transfer-ownership="none"
+                      doc="a #ClutterStage. You should never destroy">
+          <type name="Clutter.Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="Gtk.Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv">
+        <type name="EmbedPrivate" c:type="GtkClutterEmbedPrivate*"/>
+      </field>
+    </class>
+    <record name="EmbedClass"
+            c:type="GtkClutterEmbedClass"
+            glib:is-gtype-struct-for="Embed"
+            doc="Base class for #GtkClutterEmbed."
+            version="0.6">
+      <field name="parent_class">
+        <type name="Gtk.ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+      <field name="clutter_gtk_reserved1">
+        <callback name="clutter_gtk_reserved1" c:type="_clutter_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_gtk_reserved2">
+        <callback name="clutter_gtk_reserved2" c:type="_clutter_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_gtk_reserved3">
+        <callback name="clutter_gtk_reserved3" c:type="_clutter_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_gtk_reserved4">
+        <callback name="clutter_gtk_reserved4" c:type="_clutter_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_gtk_reserved5">
+        <callback name="clutter_gtk_reserved5" c:type="_clutter_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_gtk_reserved6">
+        <callback name="clutter_gtk_reserved6" c:type="_clutter_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="EmbedPrivate" c:type="GtkClutterEmbedPrivate">
+    </record>
+    <interface name="Scrollable"
+               c:type="GtkClutterScrollable"
+               glib:type-name="GtkClutterScrollable"
+               glib:get-type="gtk_clutter_scrollable_get_type"
+               glib:type-struct="ScrollableIface">
+      <virtual-method name="set_adjustments" invoker="set_adjustments">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h_adjust" transfer-ownership="none">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="v_adjust" transfer-ownership="none">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_adjustments" invoker="get_adjustments">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h_adjust" transfer-ownership="none">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+          </parameter>
+          <parameter name="v_adjust" transfer-ownership="none">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_adjustments"
+              c:identifier="gtk_clutter_scrollable_set_adjustments"
+              doc="Sets the horizontal and vertical adjustments used to determine
+the position of the scrollable actor."
+              version="0.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h_adjust"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkAdjustment, or %NULL">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="v_adjust"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkAdjustment, or %NULL">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_adjustments"
+              c:identifier="gtk_clutter_scrollable_get_adjustments"
+              doc="Retrieves the horizontal and vertical adjustments used to
+determine the position of the scrollable actor."
+              version="0.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h_adjust"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for a #GtkAdjustment, or %NULL">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+          </parameter>
+          <parameter name="v_adjust"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     doc="return location for a #GtkAdjustment, or %NULL">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="hadjustment"
+                version="0.10"
+                writable="1"
+                construct="1"
+                doc="The #GtkAdjustment that determines the value of the
+horizontal position for this scrollable actor.">
+        <type name="Gtk.Adjustment" c:type="GtkAdjustment"/>
+      </property>
+      <property name="vadjustment"
+                version="0.10"
+                writable="1"
+                construct="1"
+                doc="The #GtkAdjustment that determines the value of the
+vertical position for this scrollable actor.">
+        <type name="Gtk.Adjustment" c:type="GtkAdjustment"/>
+      </property>
+    </interface>
+    <record name="ScrollableIface"
+            c:type="GtkClutterScrollableIface"
+            glib:is-gtype-struct-for="Scrollable"
+            doc="The #GtkClutterScrollableIface structure contains only private data
+and should be accessed using the provided functions."
+            version="0.10">
+      <field name="parent_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="set_adjustments">
+        <callback name="set_adjustments" c:type="set_adjustments">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="scrollable" transfer-ownership="none">
+              <type name="Scrollable" c:type="GtkClutterScrollable*"/>
+            </parameter>
+            <parameter name="h_adjust" transfer-ownership="none">
+              <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+            <parameter name="v_adjust" transfer-ownership="none">
+              <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_adjustments">
+        <callback name="get_adjustments" c:type="get_adjustments">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="scrollable" transfer-ownership="none">
+              <type name="Scrollable" c:type="GtkClutterScrollable*"/>
+            </parameter>
+            <parameter name="h_adjust" transfer-ownership="none">
+              <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+            </parameter>
+            <parameter name="v_adjust" transfer-ownership="none">
+              <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="Viewport"
+           c:type="GtkClutterViewport"
+           doc="The #GtkClutterViewport structure contains only private data and
+should be accessed using the provided functions."
+           version="0.8.2"
+           parent="Clutter.Actor"
+           glib:type-name="GtkClutterViewport"
+           glib:get-type="gtk_clutter_viewport_get_type"
+           glib:type-struct="ViewportClass">
+      <implements name="Clutter.Container"/>
+      <implements name="Clutter.Scriptable"/>
+      <implements name="Scrollable"/>
+      <implements name="Zoomable"/>
+      <constructor name="new"
+                   c:identifier="gtk_clutter_viewport_new"
+                   doc="Creates a new #GtkClutterViewport with the given adjustments."
+                   version="0.10">
+        <return-value transfer-ownership="full">
+          <type name="Viewport" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="h_adjust" transfer-ownership="none">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="v_adjust" transfer-ownership="none">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="z_adjust" transfer-ownership="none">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_origin"
+              c:identifier="gtk_clutter_viewport_get_origin"
+              doc="Retrieves the current translation factor (&quot;origin&quot;) used when
+displaying the child of @viewport."
+              version="0.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="z"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="child"
+                version="0.10"
+                writable="1"
+                doc="The #ClutterActor inside the viewport.">
+        <type name="Clutter.Actor" c:type="ClutterActor"/>
+      </property>
+      <property name="origin"
+                version="0.10"
+                doc="The current origin of the viewport. You should use the
+vertex to convert event coordinates for the child of the
+viewport.">
+        <type name="Clutter.Vertex" c:type="ClutterVertex"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Clutter.Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="ViewportPrivate" c:type="GtkClutterViewportPrivate*"/>
+      </field>
+    </class>
+    <record name="ViewportClass"
+            c:type="GtkClutterViewportClass"
+            glib:is-gtype-struct-for="Viewport"
+            doc="The #GtkClutterViewportClass structure contains only private data and
+should be accessed using the provided functions."
+            version="0.8.2">
+      <field name="parent_class">
+        <type name="Clutter.ActorClass" c:type="ClutterActorClass"/>
+      </field>
+    </record>
+    <record name="ViewportPrivate" c:type="GtkClutterViewportPrivate">
+    </record>
+    <interface name="Zoomable"
+               c:type="GtkClutterZoomable"
+               glib:type-name="GtkClutterZoomable"
+               glib:get-type="gtk_clutter_zoomable_get_type"
+               glib:type-struct="ZoomableIface">
+      <virtual-method name="set_adjustment" invoker="set_adjustment">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="z_adjust" transfer-ownership="none">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_adjustment" invoker="get_adjustment">
+        <return-value transfer-ownership="full">
+          <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </virtual-method>
+      <method name="set_adjustment"
+              c:identifier="gtk_clutter_zoomable_set_adjustment"
+              doc="Sets the adjustment used to determine the zoom factor of
+the zoomable actor"
+              version="0.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="z_adjust"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkAdjustment, or %NULL">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_adjustment"
+              c:identifier="gtk_clutter_zoomable_get_adjustment"
+              doc="Retrieves the adjustment used to determine the zoom factor of
+the zoomable actor"
+              version="0.10">
+        <return-value transfer-ownership="none" doc="a #GtkAdjustment">
+          <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <property name="zadjustment"
+                version="0.10"
+                writable="1"
+                construct="1"
+                doc="The #GtkAdjustment that determines the value of
+the zoom factor for this zoomable actor">
+        <type name="Gtk.Adjustment" c:type="GtkAdjustment"/>
+      </property>
+    </interface>
+    <record name="ZoomableIface"
+            c:type="GtkClutterZoomableIface"
+            glib:is-gtype-struct-for="Zoomable"
+            doc="The #GtkClutterZoomableIface structure contains only private data"
+            version="1.0">
+      <field name="parent_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="set_adjustment">
+        <callback name="set_adjustment" c:type="set_adjustment">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="zoomable" transfer-ownership="none">
+              <type name="Zoomable" c:type="GtkClutterZoomable*"/>
+            </parameter>
+            <parameter name="z_adjust" transfer-ownership="none">
+              <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_adjustment">
+        <callback name="get_adjustment" c:type="get_adjustment">
+          <return-value transfer-ownership="full">
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </return-value>
+          <parameters>
+            <parameter name="zoomable" transfer-ownership="none">
+              <type name="Zoomable" c:type="GtkClutterZoomable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <function name="get_base_color"
+              c:identifier="gtk_clutter_get_base_color"
+              doc="Retrieves the base color of @widget for the given @state and copies it
+into @color."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_bg_color"
+              c:identifier="gtk_clutter_get_bg_color"
+              doc="Retrieves the background color of @widget for the given @state and copies
+it into @color."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_dark_color"
+              c:identifier="gtk_clutter_get_dark_color"
+              doc="Retrieves the dark color of @widget for the given @state and copies it
+into @color."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_fg_color"
+              c:identifier="gtk_clutter_get_fg_color"
+              doc="Retrieves the foreground color of @widget for the given @state and copies
+it into @color."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_light_color"
+              c:identifier="gtk_clutter_get_light_color"
+              doc="Retrieves the light color of @widget for the given @state and copies it
+into @color."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_mid_color"
+              c:identifier="gtk_clutter_get_mid_color"
+              doc="Retrieves the mid color of @widget for the given @state and copies it
+into @color."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_text_aa_color"
+              c:identifier="gtk_clutter_get_text_aa_color"
+              doc="Retrieves the text-aa color of @widget for the given @state and copies it
+into @color."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_text_color"
+              c:identifier="gtk_clutter_get_text_color"
+              doc="Retrieves the text color of @widget for the given @state and copies it
+into @color."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init"
+              c:identifier="gtk_clutter_init"
+              doc="This function should be called instead of clutter_init() and
+gtk_init().
+on failure."
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="Clutter.InitError" c:type="ClutterInitError"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argv" transfer-ownership="none">
+          <type name="utf8" c:type="char***"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_with_args"
+              c:identifier="gtk_clutter_init_with_args"
+              doc="This function should be called instead of clutter_init() and
+gtk_init_with_args().
+on failure."
+              version="0.10"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Clutter.InitError" c:type="ClutterInitError"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argv" transfer-ownership="none">
+          <type name="utf8" c:type="char***"/>
+        </parameter>
+        <parameter name="parameter_string"
+                   transfer-ownership="none"
+                   doc=" the first line of &lt;option&gt;--help&lt;/option&gt; output, after &lt;literal&gt;&lt;replaceable&gt;programname&lt;/replaceable&gt; [OPTION...]&lt;/literal&gt;">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="entries"
+                   transfer-ownership="none"
+                   doc=" describing the options of your program">
+          <type name="GLib.OptionEntry" c:type="GOptionEntry*"/>
+        </parameter>
+        <parameter name="translation_domain"
+                   transfer-ownership="none"
+                   doc=" the &lt;option&gt;--help&lt;/option&gt; output for the options in @entries with gettext(), or %NULL">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_icon_name"
+              c:identifier="gtk_clutter_texture_new_from_icon_name"
+              doc="Creates a new #ClutterTexture and sets its contents to be
+the @icon_name from the current icon theme.
+was %NULL and @icon_name was not found."
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="Clutter.Actor" c:type="ClutterActor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="icon_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="Gtk.IconSize" c:type="GtkIconSize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_pixbuf"
+              c:identifier="gtk_clutter_texture_new_from_pixbuf"
+              doc="Creates a new #ClutterTexture and sets its contents with a copy
+of @pixbuf."
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="Clutter.Actor" c:type="ClutterActor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_stock"
+              c:identifier="gtk_clutter_texture_new_from_stock"
+              doc="Creates a new #ClutterTexture and sets its contents using the stock
+icon @stock_id as rendered by @widget."
+              version="0.8">
+      <return-value transfer-ownership="full">
+        <type name="Clutter.Actor" c:type="ClutterActor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="stock_id" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="Gtk.IconSize" c:type="GtkIconSize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_set_from_icon_name"
+              c:identifier="gtk_clutter_texture_set_from_icon_name"
+              doc="Sets the contents of @texture using the @icon_name from the
+current icon theme."
+              version="0.8"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture" transfer-ownership="none">
+          <type name="Clutter.Texture" c:type="ClutterTexture*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="icon_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="Gtk.IconSize" c:type="GtkIconSize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_set_from_pixbuf"
+              c:identifier="gtk_clutter_texture_set_from_pixbuf"
+              doc="Sets the contents of @texture with a copy of @pixbuf."
+              version="0.8"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture" transfer-ownership="none">
+          <type name="Clutter.Texture" c:type="ClutterTexture*"/>
+        </parameter>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_set_from_stock"
+              c:identifier="gtk_clutter_texture_set_from_stock"
+              doc="Sets the contents of @texture using the stock icon @stock_id, as
+rendered by @widget."
+              version="0.8"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture" transfer-ownership="none">
+          <type name="Clutter.Texture" c:type="ClutterTexture*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="stock_id" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="Gtk.IconSize" c:type="GtkIconSize"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/clutter/gtk/ffi/ffi.factor b/extra/clutter/gtk/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..eba6b39
--- /dev/null
@@ -0,0 +1,18 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries combinators kernel
+system
+gobject-introspection clutter.ffi gdk.pixbuf.ffi glib.ffi
+gtk.ffi ;
+IN: clutter.gtk.ffi
+
+<<
+"clutter.gtk" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libclutter-gtk-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:clutter/gtk/GtkClutter-0.10.gir
+
diff --git a/extra/clutter/gtk/gtk.factor b/extra/clutter/gtk/gtk.factor
new file mode 100644 (file)
index 0000000..6c495f5
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: clutter.gtk.ffi ;
+IN: clutter.gtk
+
diff --git a/extra/clutter/json/ClutterJson-1.0.gir b/extra/clutter/json/ClutterJson-1.0.gir
new file mode 100644 (file)
index 0000000..e0b3cf9
--- /dev/null
@@ -0,0 +1,1549 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <package name="gobject-2.0"/>
+  <namespace name="ClutterJson"
+             version="1.0"
+             shared-library="libclutter-glx-1.0.so.0"
+             c:prefix="ClutterJson">
+    <record name="JsonArray"
+            c:type="JsonArray"
+            doc="A JSON array type. The contents of the #JsonArray structure are private
+and should only be accessed by the provided API"
+            glib:type-name="JsonArray"
+            glib:get-type="json_array_get_type">
+      <constructor name="new"
+                   c:identifier="json_array_new"
+                   doc="Creates a new #JsonArray.">
+        <return-value transfer-ownership="full">
+          <type name="JsonArray" c:type="JsonArray*"/>
+        </return-value>
+      </constructor>
+      <method name="ref"
+              c:identifier="json_array_ref"
+              doc="Increase by one the reference count of a #JsonArray.
+increased by one.">
+        <return-value transfer-ownership="full">
+          <type name="JsonArray" c:type="JsonArray*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="json_array_unref"
+              doc="Decreases by one the reference count of a #JsonArray. If the
+reference count reaches zero, the array is destroyed and all
+its allocated resources are freed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_element"
+              c:identifier="json_array_add_element"
+              doc="Appends @node inside @array. The array will take ownership of the
+#JsonNode.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="JsonNode" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_int_element"
+              c:identifier="json_array_add_int_element"
+              doc="Conveniently adds an integer @value into @array"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_double_element"
+              c:identifier="json_array_add_double_element"
+              doc="Conveniently adds a floating point @value into @array"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_boolean_element"
+              c:identifier="json_array_add_boolean_element"
+              doc="Conveniently adds a boolean @value into @array"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_string_element"
+              c:identifier="json_array_add_string_element"
+              doc="Conveniently adds a string @value into @array"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_null_element"
+              c:identifier="json_array_add_null_element"
+              doc="Conveniently adds a null element into @array"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_array_element"
+              c:identifier="json_array_add_array_element"
+              doc="Conveniently adds an array into @array. The @array takes ownership
+of the newly added #JsonArray"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="JsonArray" c:type="JsonArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_object_element"
+              c:identifier="json_array_add_object_element"
+              doc="Conveniently adds an object into @array. The @array takes ownership
+of the newly added #JsonObject"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="JsonObject" c:type="JsonObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_elements"
+              c:identifier="json_array_get_elements"
+              doc="Gets the elements of a #JsonArray as a list of #JsonNode&lt;!-- --&gt;s.
+contents of the list are owned by the array and should never be
+modified or freed. Use g_list_free() on the returned list when
+done using it">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_element"
+              c:identifier="json_array_get_element"
+              doc="Retrieves the #JsonNode containing the value of the element at @index_
+inside a #JsonArray.">
+        <return-value transfer-ownership="full">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int_element"
+              c:identifier="json_array_get_int_element"
+              doc="Conveniently retrieves the integer value of the element at @index_
+inside @array"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_element"
+              c:identifier="json_array_get_double_element"
+              doc="Conveniently retrieves the floating point value of the element at"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean_element"
+              c:identifier="json_array_get_boolean_element"
+              doc="Conveniently retrieves the boolean value of the element at @index_
+inside @array"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string_element"
+              c:identifier="json_array_get_string_element"
+              doc="Conveniently retrieves the string value of the element at @index_
+inside @array
+the #JsonArray and should not be modified or freed"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_null_element"
+              c:identifier="json_array_get_null_element"
+              doc="Conveniently retrieves whether the element at @index_ is set to null"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_array_element"
+              c:identifier="json_array_get_array_element"
+              doc="Conveniently retrieves the array from the element at @index_
+inside @array"
+              version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="JsonArray" c:type="JsonArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object_element"
+              c:identifier="json_array_get_object_element"
+              doc="Conveniently retrieves the object from the element at @index_
+inside @array"
+              version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="JsonObject" c:type="JsonObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_element"
+              c:identifier="json_array_dup_element"
+              doc="Retrieves a copy of the #JsonNode containing the value of the
+element at @index_ inside a #JsonArray
+Use json_node_free() when done."
+              version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_element"
+              c:identifier="json_array_remove_element"
+              doc="Removes the #JsonNode inside @array at @index_ freeing its allocated
+resources.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_length"
+              c:identifier="json_array_get_length"
+              doc="Retrieves the length of a #JsonArray">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="foreach_element"
+              c:identifier="json_array_foreach_element"
+              doc="Iterates over all elements of @array and calls @func on
+each one of them.
+It is safe to change the value of a #JsonNode of the @array
+from within the iterator @func, but it is not safe to add or
+remove elements from the @array."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="JsonArrayForeach" c:type="JsonArrayForeach"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="JsonArrayForeach"
+              c:type="JsonArrayForeach"
+              doc="The function to be passed to json_array_foreach_element(). You
+should not add or remove elements to and from @array within
+this function. It is safe to change the value of @element_node."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="JsonArray" c:type="JsonArray*"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="element_node" transfer-ownership="none">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="JsonGenerator"
+           c:type="JsonGenerator"
+           doc="JSON data streams generator. The contents of the #JsonGenerator structure
+are private and should only be accessed via the provided API."
+           parent="GObject.Object"
+           glib:type-name="JsonGenerator"
+           glib:get-type="json_generator_get_type"
+           glib:type-struct="JsonGeneratorClass">
+      <constructor name="new"
+                   c:identifier="json_generator_new"
+                   doc="Creates a new #JsonGenerator. You can use this object to generate a
+JSON data stream starting from a data object model composed by
+#JsonNode&lt;!-- --&gt;s.">
+        <return-value transfer-ownership="full">
+          <type name="JsonGenerator" c:type="JsonGenerator*"/>
+        </return-value>
+      </constructor>
+      <method name="to_data"
+              c:identifier="json_generator_to_data"
+              doc="Generates a JSON data stream from @generator and returns it as a
+buffer.
+g_free() to free the allocated resources.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_file"
+              c:identifier="json_generator_to_file"
+              doc="Creates a JSON data stream and puts it inside @filename, overwriting the
+current file contents. This operation is atomic."
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_root"
+              c:identifier="json_generator_set_root"
+              doc="Sets @node as the root of the JSON data stream to be serialized by
+the #JsonGenerator.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="JsonNode" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="indent"
+                writable="1"
+                doc="Number of spaces to be used to indent when pretty printing.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="pretty"
+                writable="1"
+                doc="Whether the output should be &quot;pretty-printed&quot;, with indentation and
+newlines. The indentation level can be controlled by using the
+JsonGenerator:indent property">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="JsonGeneratorPrivate" c:type="JsonGeneratorPrivate*"/>
+      </field>
+    </class>
+    <record name="JsonGeneratorClass"
+            c:type="JsonGeneratorClass"
+            glib:is-gtype-struct-for="JsonGenerator"
+            doc="#JsonGenerator class">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="json_reserved1">
+        <callback name="json_reserved1" c:type="_json_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved2">
+        <callback name="json_reserved2" c:type="_json_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved3">
+        <callback name="json_reserved3" c:type="_json_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved4">
+        <callback name="json_reserved4" c:type="_json_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="JsonGeneratorPrivate" c:type="JsonGeneratorPrivate">
+    </record>
+    <record name="JsonNode"
+            c:type="JsonNode"
+            doc="A generic container of JSON data types. The contents of the #JsonNode
+structure are private and should only be accessed via the provided
+functions and never directly."
+            glib:type-name="JsonNode"
+            glib:get-type="json_node_get_type">
+      <constructor name="new"
+                   c:identifier="json_node_new"
+                   doc="Creates a new #JsonNode of @type.">
+        <return-value transfer-ownership="full">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="JsonNodeType" c:type="JsonNodeType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="json_node_copy"
+              doc="Copies @node. If the node contains complex data types then the reference
+count of the objects is increased.">
+        <return-value transfer-ownership="full">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="json_node_free"
+              doc="Frees the resources allocated by @node.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_node_type"
+              c:identifier="json_node_get_node_type"
+              doc="Retrieves the #JsonNodeType of @node"
+              version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="JsonNodeType" c:type="JsonNodeType"/>
+        </return-value>
+      </method>
+      <method name="get_value_type"
+              c:identifier="json_node_get_value_type"
+              doc="Returns the #GType of the payload of the node."
+              version="0.4">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="get_parent"
+              c:identifier="json_node_get_parent"
+              doc="Retrieves the parent #JsonNode of @node.">
+        <return-value transfer-ownership="full">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </return-value>
+      </method>
+      <method name="type_name"
+              c:identifier="json_node_type_name"
+              doc="Retrieves the user readable name of the data type contained by @node.
+is owned by the node and should never be modified or freed">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_object"
+              c:identifier="json_node_set_object"
+              doc="Sets @objects inside @node. The reference count of @object is increased.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="JsonObject" c:type="JsonObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_object"
+              c:identifier="json_node_take_object"
+              doc="Sets @object inside @node. The reference count of @object is not increased.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="JsonObject" c:type="JsonObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object"
+              c:identifier="json_node_get_object"
+              doc="Retrieves the #JsonObject stored inside a #JsonNode">
+        <return-value transfer-ownership="full">
+          <type name="JsonObject" c:type="JsonObject*"/>
+        </return-value>
+      </method>
+      <method name="dup_object"
+              c:identifier="json_node_dup_object"
+              doc="Retrieves the #JsonObject inside @node. The reference count of
+the returned object is increased.">
+        <return-value transfer-ownership="full">
+          <type name="JsonObject" c:type="JsonObject*"/>
+        </return-value>
+      </method>
+      <method name="set_array"
+              c:identifier="json_node_set_array"
+              doc="Sets @array inside @node and increases the #JsonArray reference count">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="array" transfer-ownership="none">
+            <type name="JsonArray" c:type="JsonArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_array"
+              c:identifier="json_node_take_array"
+              doc="Sets @array into @node without increasing the #JsonArray reference count.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="array" transfer-ownership="none">
+            <type name="JsonArray" c:type="JsonArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_array"
+              c:identifier="json_node_get_array"
+              doc="Retrieves the #JsonArray stored inside a #JsonNode">
+        <return-value transfer-ownership="full">
+          <type name="JsonArray" c:type="JsonArray*"/>
+        </return-value>
+      </method>
+      <method name="dup_array" c:identifier="json_node_dup_array">
+        <return-value transfer-ownership="full">
+          <type name="JsonArray" c:type="JsonArray*"/>
+        </return-value>
+      </method>
+      <method name="set_value"
+              c:identifier="json_node_set_value"
+              doc="Sets @value inside @node. The passed #GValue is copied into the #JsonNode">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value"
+              c:identifier="json_node_get_value"
+              doc="Retrieves a value from a #JsonNode and copies into @value. When done
+using it, call g_value_unset() on the #GValue.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_string"
+              c:identifier="json_node_set_string"
+              doc="Sets @value as the string content of the @node, replacing any existing
+content.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string"
+              c:identifier="json_node_get_string"
+              doc="Gets the string value stored inside a #JsonNode">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="dup_string"
+              c:identifier="json_node_dup_string"
+              doc="Gets a copy of the string value stored inside a #JsonNode
+the #JsonNode contents">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_int"
+              c:identifier="json_node_set_int"
+              doc="Sets @value as the integer content of the @node, replacing any existing
+content.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int"
+              c:identifier="json_node_get_int"
+              doc="Gets the integer value stored inside a #JsonNode">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+      </method>
+      <method name="set_double"
+              c:identifier="json_node_set_double"
+              doc="Sets @value as the double content of the @node, replacing any existing
+content.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double"
+              c:identifier="json_node_get_double"
+              doc="Gets the double value stored inside a #JsonNode">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_boolean"
+              c:identifier="json_node_set_boolean"
+              doc="Sets @value as the boolean content of the @node, replacing any existing
+content.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean"
+              c:identifier="json_node_get_boolean"
+              doc="Gets the boolean value stored inside a #JsonNode">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_null"
+              c:identifier="json_node_is_null"
+              doc="Checks whether @node is a %JSON_NODE_NULL
+&lt;note&gt;A null node is not the same as a %NULL #JsonNode&lt;/note&gt;"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="JsonNodeType"
+                 doc="Indicates the content of a #JsonNode."
+                 c:type="JsonNodeType">
+      <member name="object" value="0" c:identifier="JSON_NODE_OBJECT"/>
+      <member name="array" value="1" c:identifier="JSON_NODE_ARRAY"/>
+      <member name="value" value="2" c:identifier="JSON_NODE_VALUE"/>
+      <member name="null" value="3" c:identifier="JSON_NODE_NULL"/>
+    </enumeration>
+    <record name="JsonObject"
+            c:type="JsonObject"
+            doc="A JSON object type. The contents of the #JsonObject structure are private
+and should only be accessed by the provided API"
+            glib:type-name="JsonObject"
+            glib:get-type="json_object_get_type">
+      <constructor name="new"
+                   c:identifier="json_object_new"
+                   doc="Creates a new #JsonObject, an JSON object type representation.">
+        <return-value transfer-ownership="full">
+          <type name="JsonObject" c:type="JsonObject*"/>
+        </return-value>
+      </constructor>
+      <method name="ref"
+              c:identifier="json_object_ref"
+              doc="Increase by one the reference count of a #JsonObject.
+increased by one.">
+        <return-value transfer-ownership="full">
+          <type name="JsonObject" c:type="JsonObject*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="json_object_unref"
+              doc="Decreases by one the reference count of a #JsonObject. If the
+reference count reaches zero, the object is destroyed and all
+its allocated resources are freed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_member"
+              c:identifier="json_object_add_member"
+              doc="Adds a member named @member_name and containing @node into a #JsonObject.
+The object will take ownership of the #JsonNode.
+This function will return if the @object already contains a member"
+              deprecated="Use json_object_set_member() instead"
+              deprecated-version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="JsonNode" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_member"
+              c:identifier="json_object_set_member"
+              doc="Sets @node as the value of @member_name inside @object.
+If @object already contains a member called @member_name then
+the member&apos;s current value is overwritten. Otherwise, a new
+member is added to @object."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="JsonNode" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_int_member"
+              c:identifier="json_object_set_int_member"
+              doc="Convenience function for setting an integer @value of"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double_member"
+              c:identifier="json_object_set_double_member"
+              doc="Convenience function for setting a floating point @value
+of @member_name inside @object."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_boolean_member"
+              c:identifier="json_object_set_boolean_member"
+              doc="Convenience function for setting a boolean @value of"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_string_member"
+              c:identifier="json_object_set_string_member"
+              doc="Convenience function for setting a string @value of"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_null_member"
+              c:identifier="json_object_set_null_member"
+              doc="Convenience function for setting a null @value of"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_array_member"
+              c:identifier="json_object_set_array_member"
+              doc="Convenience function for setting an array @value of
+The @object will take ownership of the passed #JsonArray"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="JsonArray" c:type="JsonArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_object_member"
+              c:identifier="json_object_set_object_member"
+              doc="Convenience function for setting an object @value of
+The @object will take ownership of the passed #JsonObject"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="JsonObject" c:type="JsonObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_members"
+              c:identifier="json_object_get_members"
+              doc="Retrieves all the names of the members of a #JsonObject. You can
+obtain the value for each member using json_object_get_member().
+is owned by the #JsonObject and should never be modified or
+freed. When you have finished using the returned list, use
+g_list_free() to free the resources it has allocated.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_member"
+              c:identifier="json_object_get_member"
+              doc="Retrieves the #JsonNode containing the value of @member_name inside
+a #JsonObject.
+member, or %NULL">
+        <return-value transfer-ownership="full">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_member"
+              c:identifier="json_object_dup_member"
+              doc="Retrieves a copy of the #JsonNode containing the value of @member_name
+inside a #JsonObject
+or %NULL. Use json_node_free() when done."
+              version="0.6">
+        <return-value transfer-ownership="full">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int_member"
+              c:identifier="json_object_get_int_member"
+              doc="Convenience function that retrieves the integer value
+stored in @member_name of @object"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_member"
+              c:identifier="json_object_get_double_member"
+              doc="Convenience function that retrieves the floating point value
+stored in @member_name of @object"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean_member"
+              c:identifier="json_object_get_boolean_member"
+              doc="Convenience function that retrieves the boolean value
+stored in @member_name of @object"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string_member"
+              c:identifier="json_object_get_string_member"
+              doc="Convenience function that retrieves the string value
+stored in @member_name of @object"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_null_member"
+              c:identifier="json_object_get_null_member"
+              doc="Convenience function that checks whether the value
+stored in @member_name of @object is null"
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_array_member"
+              c:identifier="json_object_get_array_member"
+              doc="Convenience function that retrieves the array
+stored in @member_name of @object"
+              version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="JsonArray" c:type="JsonArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object_member"
+              c:identifier="json_object_get_object_member"
+              doc="Convenience function that retrieves the object
+stored in @member_name of @object"
+              version="0.8">
+        <return-value transfer-ownership="full">
+          <type name="JsonObject" c:type="JsonObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_member"
+              c:identifier="json_object_has_member"
+              doc="Checks whether @object has a member named @member_name.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_member"
+              c:identifier="json_object_remove_member"
+              doc="Removes @member_name from @object, freeing its allocated resources.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_values"
+              c:identifier="json_object_get_values"
+              doc="Retrieves all the values of the members of a #JsonObject.
+list is owned by the #JsonObject and should never be modified
+or freed. When you have finished using the returned list, use
+g_list_free() to free the resources it has allocated.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="json_object_get_size"
+              doc="Retrieves the number of members of a #JsonObject.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="foreach_member"
+              c:identifier="json_object_foreach_member"
+              doc="Iterates over all members of @object and calls @func on
+each one of them.
+It is safe to change the value of a #JsonNode of the @object
+from within the iterator @func, but it is not safe to add or
+remove members from the @object."
+              version="0.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="JsonObjectForeach" c:type="JsonObjectForeach"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="JsonObjectForeach"
+              c:type="JsonObjectForeach"
+              doc="The function to be passed to json_object_foreach_member(). You
+should not add or remove members to and from @object within
+this function. It is safe to change the value of @member_node."
+              version="0.8">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="JsonObject" c:type="JsonObject*"/>
+        </parameter>
+        <parameter name="member_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="member_node" transfer-ownership="none">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="JsonParser"
+           c:type="JsonParser"
+           doc="JSON data streams parser. The contents of the #JsonParser structure are
+private and should only be accessed via the provided API."
+           parent="GObject.Object"
+           glib:type-name="JsonParser"
+           glib:get-type="json_parser_get_type"
+           glib:type-struct="JsonParserClass">
+      <constructor name="new"
+                   c:identifier="json_parser_new"
+                   doc="Creates a new #JsonParser instance. You can use the #JsonParser to
+load a JSON stream from either a file or a buffer and then walk the
+hierarchy using the data types API.
+to release all the memory it allocates.">
+        <return-value transfer-ownership="full">
+          <type name="JsonParser" c:type="JsonParser*"/>
+        </return-value>
+      </constructor>
+      <method name="load_from_file"
+              c:identifier="json_parser_load_from_file"
+              doc="Loads a JSON stream from the content of @filename and parses it. See
+json_parser_load_from_data().
+In case of error, @error is set accordingly and %FALSE is returned"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_data"
+              c:identifier="json_parser_load_from_data"
+              doc="Loads a JSON stream from a buffer and parses it. You can call this function
+multiple times with the same #JsonParser object, but the contents of the
+parser will be destroyed each time.
+of error, @error is set accordingly and %FALSE is returned"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_root"
+              c:identifier="json_parser_get_root"
+              doc="Retrieves the top level node from the parsed JSON stream.
+is owned by the #JsonParser and should never be modified or freed.">
+        <return-value transfer-ownership="none"
+                      doc="the root #JsonNode . The returned node">
+          <type name="JsonNode" c:type="JsonNode*"/>
+        </return-value>
+      </method>
+      <method name="get_current_line"
+              c:identifier="json_parser_get_current_line"
+              doc="Retrieves the line currently parsed, starting from 1.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_current_pos"
+              c:identifier="json_parser_get_current_pos"
+              doc="Retrieves the current position inside the current line, starting
+from 0.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="JsonParserPrivate" c:type="JsonParserPrivate*"/>
+      </field>
+      <glib:signal name="array-element"
+                   doc="The ::array-element signal is emitted each time the #JsonParser
+has successfully parsed a single element of a #JsonArray. The
+array and element index are passed to the signal handlers.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="array" transfer-ownership="none">
+            <type name="JsonArray" c:type="JsonArray"/>
+          </parameter>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="array-end"
+                   doc="The ::array-end signal is emitted each time the #JsonParser
+has successfully parsed an entire #JsonArray">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="array" transfer-ownership="none">
+            <type name="JsonArray" c:type="JsonArray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="array-start"
+                   doc="The ::array-start signal is emitted each time the #JsonParser
+starts parsing a #JsonArray">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="error"
+                   doc="The ::error signal is emitted each time a #JsonParser encounters
+an error in a JSON stream.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="object-end"
+                   doc="The ::object-end signal is emitted each time the #JsonParser
+has successfully parsed an entire #JsonObject.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="JsonObject" c:type="JsonObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="object-member"
+                   doc="The ::object-member signal is emitted each time the #JsonParser
+has successfully parsed a single member of a #JsonObject. The
+object and member are passed to the signal handlers.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="JsonObject" c:type="JsonObject"/>
+          </parameter>
+          <parameter name="member_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="object-start"
+                   doc="The ::object-start signal is emitted each time the #JsonParser
+starts parsing a #JsonObject.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="parse-end"
+                   doc="The ::parse-end signal is emitted when the parser successfully
+finished parsing a JSON data stream">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="parse-start"
+                   doc="The ::parse-start signal is emitted when the parser began parsing
+a JSON data stream.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="JsonParserClass"
+            c:type="JsonParserClass"
+            glib:is-gtype-struct-for="JsonParser"
+            doc="#JsonParser class.">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="parse_start">
+        <callback name="parse_start" c:type="parse_start">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_start">
+        <callback name="object_start" c:type="object_start">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_member">
+        <callback name="object_member" c:type="object_member">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="object" transfer-ownership="none">
+              <type name="JsonObject" c:type="JsonObject*"/>
+            </parameter>
+            <parameter name="member_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_end">
+        <callback name="object_end" c:type="object_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="object" transfer-ownership="none">
+              <type name="JsonObject" c:type="JsonObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="array_start">
+        <callback name="array_start" c:type="array_start">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="array_element">
+        <callback name="array_element" c:type="array_element">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="array" transfer-ownership="none">
+              <type name="JsonArray" c:type="JsonArray*"/>
+            </parameter>
+            <parameter name="index_" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="array_end">
+        <callback name="array_end" c:type="array_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="array" transfer-ownership="none">
+              <type name="JsonArray" c:type="JsonArray*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parse_end">
+        <callback name="parse_end" c:type="parse_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="error">
+        <callback name="error" c:type="error">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="JsonParser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="error" transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="json_reserved1">
+        <callback name="json_reserved1" c:type="_json_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved2">
+        <callback name="json_reserved2" c:type="_json_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved3">
+        <callback name="json_reserved3" c:type="_json_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved4">
+        <callback name="json_reserved4" c:type="_json_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved5">
+        <callback name="json_reserved5" c:type="_json_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved6">
+        <callback name="json_reserved6" c:type="_json_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved7">
+        <callback name="json_reserved7" c:type="_json_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="json_reserved8">
+        <callback name="json_reserved8" c:type="_json_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="JsonParserError"
+                 doc="Error enumeration for #JsonParser"
+                 c:type="JsonParserError"
+                 glib:error-quark="json_parser_error_quark">
+      <member name="parse" value="0" c:identifier="JSON_PARSER_ERROR_PARSE"/>
+      <member name="unknown"
+              value="1"
+              c:identifier="JSON_PARSER_ERROR_UNKNOWN"/>
+    </enumeration>
+    <record name="JsonParserPrivate" c:type="JsonParserPrivate">
+    </record>
+    <enumeration name="JsonTokenType" c:type="JsonTokenType">
+      <member name="invalid" value="270" c:identifier="JSON_TOKEN_INVALID"/>
+      <member name="true" value="271" c:identifier="JSON_TOKEN_TRUE"/>
+      <member name="false" value="272" c:identifier="JSON_TOKEN_FALSE"/>
+      <member name="null" value="273" c:identifier="JSON_TOKEN_NULL"/>
+      <member name="last" value="274" c:identifier="JSON_TOKEN_LAST"/>
+    </enumeration>
+    <function name="json_array_sized_new"
+              c:identifier="json_array_sized_new"
+              doc="Creates a new #JsonArray with @n_elements slots already allocated.">
+      <return-value transfer-ownership="full">
+        <type name="JsonArray" c:type="JsonArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_elements" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/clutter/json/ffi/ffi.factor b/extra/clutter/json/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..e9b811c
--- /dev/null
@@ -0,0 +1,16 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gobject-introspection glib.ffi gobject.ffi ;
+IN: clutter.json.ffi
+
+<<
+"clutter.json" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libclutter-glx-1.0.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:clutter/json/ClutterJson-1.0.gir
+
diff --git a/extra/clutter/json/json.factor b/extra/clutter/json/json.factor
new file mode 100644 (file)
index 0000000..9530483
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: clutter.json.ffi ;
+IN: clutter.json
+
diff --git a/extra/clutter/summary.txt b/extra/clutter/summary.txt
new file mode 100644 (file)
index 0000000..e7b8c48
--- /dev/null
@@ -0,0 +1 @@
+Clutter binding
diff --git a/extra/clutter/tags.txt b/extra/clutter/tags.txt
new file mode 100755 (executable)
index 0000000..bb863cf
--- /dev/null
@@ -0,0 +1 @@
+bindings