1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>ClutterLayoutManager</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
7 <link rel="home" href="index.html" title="Clutter Reference Manual">
8 <link rel="up" href="ch01.html" title="Abstract classes and interfaces">
9 <link rel="prev" href="ClutterMedia.html" title="ClutterMedia">
10 <link rel="next" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta">
11 <meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
17 <td><a accesskey="p" href="ClutterMedia.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
18 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
19 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
20 <th width="100%" align="center">Clutter Reference Manual</th>
21 <td><a accesskey="n" href="ClutterLayoutMeta.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
23 <tr><td colspan="5" class="shortcuts">
24 <a href="#ClutterLayoutManager.synopsis" class="shortcut">Top</a>
26 <a href="#ClutterLayoutManager.description" class="shortcut">Description</a>
28 <a href="#ClutterLayoutManager.object-hierarchy" class="shortcut">Object Hierarchy</a>
30 <a href="#ClutterLayoutManager.signals" class="shortcut">Signals</a>
33 <div class="refentry">
34 <a name="ClutterLayoutManager"></a><div class="titlepage"></div>
35 <div class="refnamediv"><table width="100%"><tr>
37 <h2><span class="refentrytitle"><a name="ClutterLayoutManager.top_of_page"></a>ClutterLayoutManager</span></h2>
38 <p>ClutterLayoutManager — Layout managers base class</p>
40 <td valign="top" align="right"></td>
42 <div class="refsynopsisdiv">
43 <a name="ClutterLayoutManager.synopsis"></a><h2>Synopsis</h2>
44 <pre class="synopsis"> <a class="link" href="ClutterLayoutManager.html#ClutterLayoutManager-struct" title="ClutterLayoutManager">ClutterLayoutManager</a>;
45 struct <a class="link" href="ClutterLayoutManager.html#ClutterLayoutManagerClass" title="struct ClutterLayoutManagerClass">ClutterLayoutManagerClass</a>;
46 <span class="returnvalue">void</span> <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-get-preferred-width" title="clutter_layout_manager_get_preferred_width ()">clutter_layout_manager_get_preferred_width</a>
47 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
48 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
49 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> for_height</code></em>,
50 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *min_width_p</code></em>,
51 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *nat_width_p</code></em>);
52 <span class="returnvalue">void</span> <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-get-preferred-height" title="clutter_layout_manager_get_preferred_height ()">clutter_layout_manager_get_preferred_height</a>
53 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
54 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
55 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> for_width</code></em>,
56 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *min_height_p</code></em>,
57 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *nat_height_p</code></em>);
58 <span class="returnvalue">void</span> <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-allocate" title="clutter_layout_manager_allocate ()">clutter_layout_manager_allocate</a> (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
59 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
60 <em class="parameter"><code>const <a class="link" href="ClutterActor.html#ClutterActorBox" title="struct ClutterActorBox"><span class="type">ClutterActorBox</span></a> *allocation</code></em>,
61 <em class="parameter"><code><a class="link" href="ClutterActor.html#ClutterAllocationFlags" title="enum ClutterAllocationFlags"><span class="type">ClutterAllocationFlags</span></a> flags</code></em>);
62 <span class="returnvalue">void</span> <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-layout-changed" title="clutter_layout_manager_layout_changed ()">clutter_layout_manager_layout_changed</a>
63 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>);
64 <span class="returnvalue">void</span> <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-set-container" title="clutter_layout_manager_set_container ()">clutter_layout_manager_set_container</a>
65 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
66 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>);
68 <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="returnvalue">ClutterLayoutMeta</span></a> * <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-get-child-meta" title="clutter_layout_manager_get_child_meta ()">clutter_layout_manager_get_child_meta</a>
69 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
70 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
71 <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *actor</code></em>);
72 <span class="returnvalue">void</span> <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-child-set" title="clutter_layout_manager_child_set ()">clutter_layout_manager_child_set</a> (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
73 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
74 <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *actor</code></em>,
75 <em class="parameter"><code>const <a href="../glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *first_property</code></em>,
76 <em class="parameter"><code>...</code></em>);
77 <span class="returnvalue">void</span> <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-child-set-property" title="clutter_layout_manager_child_set_property ()">clutter_layout_manager_child_set_property</a>
78 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
79 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
80 <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *actor</code></em>,
81 <em class="parameter"><code>const <a href="../glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property_name</code></em>,
82 <em class="parameter"><code>const <a href="../gobject/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *value</code></em>);
83 <span class="returnvalue">void</span> <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-child-get" title="clutter_layout_manager_child_get ()">clutter_layout_manager_child_get</a> (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
84 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
85 <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *actor</code></em>,
86 <em class="parameter"><code>const <a href="../glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *first_property</code></em>,
87 <em class="parameter"><code>...</code></em>);
88 <span class="returnvalue">void</span> <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-child-get-property" title="clutter_layout_manager_child_get_property ()">clutter_layout_manager_child_get_property</a>
89 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
90 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
91 <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *actor</code></em>,
92 <em class="parameter"><code>const <a href="../glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property_name</code></em>,
93 <em class="parameter"><code><a href="../gobject/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *value</code></em>);
95 <a href="../gobject/gobject-GParamSpec.html#GParamSpec"><span class="returnvalue">GParamSpec</span></a> * <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-find-child-property" title="clutter_layout_manager_find_child_property ()">clutter_layout_manager_find_child_property</a>
96 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
97 <em class="parameter"><code>const <a href="../glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>);
98 <a href="../gobject/gobject-GParamSpec.html#GParamSpec"><span class="returnvalue">GParamSpec</span></a> ** <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-list-child-properties" title="clutter_layout_manager_list_child_properties ()">clutter_layout_manager_list_child_properties</a>
99 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
100 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *n_pspecs</code></em>);
102 <a class="link" href="ClutterAlpha.html" title="ClutterAlpha"><span class="returnvalue">ClutterAlpha</span></a> * <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-begin-animation" title="clutter_layout_manager_begin_animation ()">clutter_layout_manager_begin_animation</a>
103 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
104 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a> duration</code></em>,
105 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> mode</code></em>);
106 <span class="returnvalue">void</span> <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-end-animation" title="clutter_layout_manager_end_animation ()">clutter_layout_manager_end_animation</a>
107 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>);
108 <a href="../glib/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-get-animation-progress" title="clutter_layout_manager_get_animation_progress ()">clutter_layout_manager_get_animation_progress</a>
109 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>);
112 <div class="refsect1">
113 <a name="ClutterLayoutManager.object-hierarchy"></a><h2>Object Hierarchy</h2>
114 <pre class="synopsis">
115 <a href="../gobject/gobject-The-Base-Object-Type.html#GObject">GObject</a>
116 +----<a href="../gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
117 +----ClutterLayoutManager
118 +----<a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout">ClutterBinLayout</a>
119 +----<a class="link" href="ClutterBoxLayout.html" title="ClutterBoxLayout">ClutterBoxLayout</a>
120 +----<a class="link" href="ClutterFixedLayout.html" title="ClutterFixedLayout">ClutterFixedLayout</a>
121 +----<a class="link" href="ClutterFlowLayout.html" title="ClutterFlowLayout">ClutterFlowLayout</a>
122 +----<a class="link" href="ClutterTableLayout.html" title="ClutterTableLayout">ClutterTableLayout</a>
125 <div class="refsect1">
126 <a name="ClutterLayoutManager.signals"></a><h2>Signals</h2>
127 <pre class="synopsis">
128 "<a class="link" href="ClutterLayoutManager.html#ClutterLayoutManager-layout-changed" title='The "layout-changed" signal'>layout-changed</a>" : <a href="../gobject/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
131 <div class="refsect1">
132 <a name="ClutterLayoutManager.description"></a><h2>Description</h2>
134 <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> is a base abstract class for layout managers. A
135 layout manager implements the layouting policy for a composite or a
136 container actor: it controls the preferred size of the actor to which
137 it has been paired, and it controls the allocation of its children.
140 Any composite or container <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> subclass can delegate the
141 layouting of its children to a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>. Clutter provides
142 a generic container using <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> called <a class="link" href="ClutterBox.html" title="ClutterBox"><span class="type">ClutterBox</span></a>.
145 Clutter provides some simple <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> sub-classes, like
146 <a class="link" href="ClutterFlowLayout.html" title="ClutterFlowLayout"><span class="type">ClutterFlowLayout</span></a> and <a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a>.
150 <div class="refsect2">
151 <a name="ClutterLayoutManager-use-in-Actor"></a><h3>Using a Layout Manager inside an Actor</h3>
152 <p>In order to use a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> inside a <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a>
153 sub-class you should invoke <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-get-preferred-width" title="clutter_layout_manager_get_preferred_width ()"><code class="function">clutter_layout_manager_get_preferred_width()</code></a>
154 inside the <span class="structname">ClutterActor</span>::<code class="function">get_preferred_width()</code>
155 virtual function and <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-get-preferred-height" title="clutter_layout_manager_get_preferred_height ()"><code class="function">clutter_layout_manager_get_preferred_height()</code></a>
156 inside the <span class="structname">ClutterActor</span>::<code class="function">get_preferred_height()</code>
157 virtual function implementations. You should also call
158 <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-allocate" title="clutter_layout_manager_allocate ()"><code class="function">clutter_layout_manager_allocate()</code></a> inside the implementation of the
159 <span class="structname">ClutterActor</span>::<code class="function">allocate()</code> virtual
161 <p>In order to receive notifications for changes in the layout
162 manager policies you should also connect to the
163 <a class="link" href="ClutterLayoutManager.html#ClutterLayoutManager-layout-changed" title='The "layout-changed" signal'><span class="type">"layout-changed"</span></a> signal and queue a relayout
164 on your actor. The following code should be enough if the actor
165 does not need to perform specific operations whenever a layout
167 <div class="informalexample">
168 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
171 <td class="listing_lines" align="right"><pre>1
175 <td class="listing_code"><pre class="programlisting"><span class="function"><a href="../gobject/gobject-Signals.html#g-signal-connect-swapped">g_signal_connect_swapped</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">layout_manager</span><span class="symbol">,</span>
176 <span class="normal"> </span><span class="string">"layout-changed"</span><span class="symbol">,</span>
177 <span class="normal"> </span><span class="function"><a href="../gobject/gobject-Closures.html#G-CALLBACK:CAPS">G_CALLBACK</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="ClutterActor.html#clutter-actor-queue-relayout">clutter_actor_queue_relayout</a></span><span class="symbol">),</span>
178 <span class="normal"> actor</span><span class="symbol">);</span></pre></td>
189 <div class="refsect2">
190 <a name="ClutterLayoutManager-implementation"></a><h3>Implementing a ClutterLayoutManager</h3>
191 <p>The implementation of a layout manager does not differ from
192 the implementation of the size requisition and allocation bits of
193 <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a>, so you should read the relative documentation
194 <GTKDOCLINK HREF="clutter-subclassing-ClutterActor">for subclassing
195 ClutterActor</GTKDOCLINK>.</p>
196 <p>The layout manager implementation can hold a back pointer
197 to the <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> by implementing the
198 <code class="function"><code class="function">set_container()</code></code> virtual function. The layout manager
199 should not hold a real reference (i.e. call <a href="../gobject/gobject-The-Base-Object-Type.html#g-object-ref"><code class="function">g_object_ref()</code></a>) on the
200 container actor, to avoid reference cycles.</p>
201 <p>If a layout manager has properties affecting the layout
202 policies then it should emit the <a class="link" href="ClutterLayoutManager.html#ClutterLayoutManager-layout-changed" title='The "layout-changed" signal'><span class="type">"layout-changed"</span></a>
203 signal on itself by using the <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-layout-changed" title="clutter_layout_manager_layout_changed ()"><code class="function">clutter_layout_manager_layout_changed()</code></a>
204 function whenever one of these properties changes.</p>
210 <div class="refsect2">
211 <a name="ClutterLayoutManager-animation"></a><h3>Animating a ClutterLayoutManager</h3>
212 <p>A layout manager is used to let a <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> take complete
213 ownership over the layout (that is: the position and sizing) of its
214 children; this means that using the Clutter animation API, like
215 <a class="link" href="clutter-Implicit-Animations.html#clutter-actor-animate" title="clutter_actor_animate ()"><code class="function">clutter_actor_animate()</code></a>, to animate the position and sizing of a child of
216 a layout manager it is not going to work properly, as the animation will
217 automatically override any setting done by the layout manager
219 <p>It is possible for a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> sub-class to animate its
220 children layout by using the base class animation support. The
221 <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> animation support consists of three virtual
222 functions: <code class="function"><code class="function">begin_animation()</code></code>,
223 <code class="function"><code class="function">get_animation_progress()</code></code> and
224 <code class="function"><code class="function">end_animation()</code></code>.</p>
225 <div class="variablelist"><table border="0">
226 <col align="left" valign="top">
229 <td><p><span class="term"><code class="function">begin_animation (duration, easing)</code></span></p></td>
230 <td><p>This virtual function is invoked when the layout
231 manager should begin an animation. The implementation should set up
232 the state for the animation and create the ancillary objects for
233 animating the layout. The default implementation creates a
234 <a class="link" href="ClutterTimeline.html" title="ClutterTimeline"><span class="type">ClutterTimeline</span></a> for the given duration and a <a class="link" href="ClutterAlpha.html" title="ClutterAlpha"><span class="type">ClutterAlpha</span></a> binding
235 the timeline to the given easing mode. This function returns a
236 <a class="link" href="ClutterAlpha.html" title="ClutterAlpha"><span class="type">ClutterAlpha</span></a> which should be used to control the animation from
237 the caller perspective.</p></td>
240 <td><p><span class="term"><code class="function"><code class="function">get_animation_progress()</code></code></span></p></td>
241 <td><p>This virtual function should be invoked when animating
242 a layout manager. It returns the progress of the animation, using the
243 same semantics as the <a class="link" href="ClutterAlpha.html#ClutterAlpha--alpha" title='The "alpha" property'><span class="type">"alpha"</span></a> value.</p></td>
246 <td><p><span class="term"><code class="function"><code class="function">end_animation()</code></code></span></p></td>
247 <td><p>This virtual function is invoked when the animation of
248 a layout manager ends, and it is meant to be used for bookkeeping the
249 objects created in the <code class="function"><code class="function">begin_animation()</code></code>
250 function. The default implementation will call it implicitly when the
251 timeline is complete.</p></td>
255 <p>The simplest way to animate a layout is to create a <a class="link" href="ClutterTimeline.html" title="ClutterTimeline"><span class="type">ClutterTimeline</span></a>
256 inside the <code class="function"><code class="function">begin_animation()</code></code> virtual function, along
257 with a <a class="link" href="ClutterAlpha.html" title="ClutterAlpha"><span class="type">ClutterAlpha</span></a>, and for each <a class="link" href="ClutterTimeline.html#ClutterTimeline-new-frame" title='The "new-frame" signal'><span class="type">"new-frame"</span></a> signal
258 emission call <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-layout-changed" title="clutter_layout_manager_layout_changed ()"><code class="function">clutter_layout_manager_layout_changed()</code></a>, which will cause a
259 relayout. The <a class="link" href="ClutterTimeline.html#ClutterTimeline-completed" title='The "completed" signal'><span class="type">"completed"</span></a> signal emission should cause
260 <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-end-animation" title="clutter_layout_manager_end_animation ()"><code class="function">clutter_layout_manager_end_animation()</code></a> to be called. The default
261 implementation provided internally by <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> does exactly
262 this, so most sub-classes should either not override any animation-related
263 virtual function or simply override <code class="function"><code class="function">begin_animation()</code></code>
264 and <code class="function"><code class="function">end_animation()</code></code> to set up ad hoc state, and then
265 chain up to the parent's implementation.</p>
266 <div class="example">
267 <a name="example-ClutterLayoutManager-animation"></a><p class="title"><b>Example 1. Animation of a Layout Manager</b></p>
268 <div class="example-contents">
269 <p>The code below shows how a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> sub-class should
270 provide animating the allocation of its children from within the
271 <code class="function"><code class="function">allocate()</code></code> virtual function implementation. The
272 animation is computed between the last stable allocation performed
273 before the animation started and the desired final allocation.</p>
274 <p>The <code class="varname">is_animating</code> variable is stored inside the
275 <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> sub-class and it is updated by overriding the
276 <code class="function"><code class="function">begin_animation()</code></code> and
277 <code class="function"><code class="function">end_animation()</code></code> virtual functions and chaining up
278 to the base class implementation.</p>
279 <p>The last stable allocation is stored within a <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a>
280 sub-class used by the implementation.</p>
281 <pre class="programlisting">
283 my_layout_manager_allocate (ClutterLayoutManager *manager,
284 ClutterContainer *container,
285 const ClutterActorBox *allocation,
286 ClutterAllocationFlags flags)
288 MyLayoutManager *self = MY_LAYOUT_MANAGER (manager);
291 for (child = clutter_actor_get_first_child (CLUTTER_ACTOR (container));
293 child = clutter_actor_get_next_sibling (child))
295 ClutterLayoutMeta *meta;
296 MyLayoutMeta *my_meta;
298 /* retrieve the layout meta-object */
299 meta = clutter_layout_manager_get_child_meta (manager,
302 my_meta = MY_LAYOUT_META (meta);
304 /* compute the desired allocation for the child */
305 compute_allocation (self, my_meta, child,
309 /* this is the additional code that deals with the animation
310 * of the layout manager
312 if (!self->is_animating)
314 /* store the last stable allocation for later use */
315 my_meta->last_alloc = clutter_actor_box_copy (&child_box);
319 ClutterActorBox end = { 0, };
322 /* get the progress of the animation */
323 p = clutter_layout_manager_get_animation_progress (manager);
325 if (my_meta->last_alloc != NULL)
327 /* copy the desired allocation as the final state */
330 /* then interpolate the initial and final state
331 * depending on the progress of the animation,
332 * and put the result inside the box we will use
333 * to allocate the child
335 clutter_actor_box_interpolate (my_meta->last_alloc,
342 /* if there is no stable allocation then the child was
343 * added while animating; one possible course of action
344 * is to just bail out and fall through to the allocation
345 * to position the child directly at its final state
347 my_meta->last_alloc =
348 clutter_actor_box_copy (&child_box);
352 /* allocate the child */
353 clutter_actor_allocate (child, &child_box, flags);
359 <br class="example-break"><p>Sub-classes of <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> that support animations of the
360 layout changes should call <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-begin-animation" title="clutter_layout_manager_begin_animation ()"><code class="function">clutter_layout_manager_begin_animation()</code></a>
361 whenever a layout property changes value, e.g.:</p>
362 <div class="informalexample">
363 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
366 <td class="listing_lines" align="right"><pre>1
378 <td class="listing_code"><pre class="programlisting"><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">self</span><span class="symbol">-></span><span class="normal">orientation </span><span class="symbol">!=</span><span class="normal"> new_orientation</span><span class="symbol">)</span>
379 <span class="normal"> </span><span class="cbracket">{</span>
380 <span class="normal"> </span><span class="usertype">ClutterLayoutManager</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">manager</span><span class="symbol">;</span>
382 <span class="normal"> self</span><span class="symbol">-></span><span class="normal">orientation </span><span class="symbol">=</span><span class="normal"> new_orientation</span><span class="symbol">;</span>
384 <span class="normal"> manager </span><span class="symbol">=</span><span class="normal"> </span><span class="function">CLUTTER_LAYOUT_MANAGER</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">self</span><span class="symbol">);</span>
385 <span class="normal"> </span><span class="function"><a href="ClutterLayoutManager.html#clutter-layout-manager-layout-changed">clutter_layout_manager_layout_changed</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">manager</span><span class="symbol">);</span>
386 <span class="normal"> </span><span class="function"><a href="ClutterLayoutManager.html#clutter-layout-manager-begin-animation">clutter_layout_manager_begin_animation</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">manager</span><span class="symbol">,</span><span class="normal"> </span><span class="number">500</span><span class="symbol">,</span><span class="normal"> <a href="clutter-Implicit-Animations.html#CLUTTER-LINEAR:CAPS">CLUTTER_LINEAR</a></span><span class="symbol">);</span>
388 <span class="normal"> </span><span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-notify">g_object_notify</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#G-OBJECT:CAPS">G_OBJECT</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">self</span><span class="symbol">),</span><span class="normal"> </span><span class="string">"orientation"</span><span class="symbol">);</span>
389 <span class="normal"> </span><span class="cbracket">}</span></pre></td>
395 <p>The code above will animate a change in the
396 <code class="varname">orientation</code> layout property of a layout manager.</p>
402 <div class="refsect2">
403 <a name="clutter-layout-properties"></a><h3>Layout Properties</h3>
404 <p>If a layout manager has layout properties, that is properties that
405 should exist only as the result of the presence of a specific (layout
406 manager, container actor, child actor) combination, and it wishes to store
407 those properties inside a <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a>, then it should override the
408 <span class="structname">ClutterLayoutManager</span>::<code class="function">get_child_meta_type()</code>
409 virtual function to return the <a href="../gobject/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> sub-class
410 used to store the layout properties; optionally, the <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
411 sub-class might also override the
412 <span class="structname">ClutterLayoutManager</span>::<code class="function">create_child_meta()</code> virtual
413 function to control how the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> instance is created,
414 otherwise the default implementation will be equivalent to:</p>
415 <div class="informalexample">
416 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
419 <td class="listing_lines" align="right"><pre>1
430 <td class="listing_code"><pre class="programlisting"><span class="usertype">ClutterLayoutManagerClass</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">klass</span><span class="symbol">;</span>
431 <span class="usertype">GType</span><span class="normal"> meta_type</span><span class="symbol">;</span>
433 <span class="normal">klass </span><span class="symbol">=</span><span class="normal"> </span><span class="function">CLUTTER_LAYOUT_MANAGER_GET_CLASS</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">manager</span><span class="symbol">);</span>
434 <span class="normal">meta_type </span><span class="symbol">=</span><span class="normal"> klass</span><span class="symbol">-></span><span class="function">get_child_meta_type</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">manager</span><span class="symbol">);</span>
436 <span class="keyword">return</span><span class="normal"> </span><span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-new">g_object_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">meta_type</span><span class="symbol">,</span>
437 <span class="normal"> </span><span class="string">"manager"</span><span class="symbol">,</span><span class="normal"> manager</span><span class="symbol">,</span>
438 <span class="normal"> </span><span class="string">"container"</span><span class="symbol">,</span><span class="normal"> container</span><span class="symbol">,</span>
439 <span class="normal"> </span><span class="string">"actor"</span><span class="symbol">,</span><span class="normal"> actor</span><span class="symbol">,</span>
440 <span class="normal"> <a href="/home/ebassi/gnome3/install/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span></pre></td>
446 <p>Where <code class="varname">manager</code> is the <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>,
447 <code class="varname">container</code> is the <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using the
448 <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> and <code class="varname">actor</code> is the <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a>
449 child of the <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a>.</p>
455 <div class="refsect2">
456 <a name="clutter-layout-script"></a><h3>Using ClutterLayoutManager with ClutterScript</h3>
457 <p><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> instance can be created in the same way
458 as other objects in <a class="link" href="ClutterScript.html" title="ClutterScript"><span class="type">ClutterScript</span></a>; properties can be set using the
460 <p>Layout properties can be set on children of a container with
461 a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> using the <span class="emphasis"><em>layout::</em></span>
462 modifier on the property name, for instance:</p>
463 <div class="informalexample">
464 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
467 <td class="listing_lines" align="right"><pre>1
495 <td class="listing_code"><pre class="programlisting"><span class="cbracket">{</span>
496 <span class="normal"> </span><span class="string">"type"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"ClutterBox"</span><span class="symbol">,</span>
497 <span class="normal"> </span><span class="string">"layout-manager"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="cbracket">{</span><span class="normal"> </span><span class="string">"type"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"ClutterTableLayout"</span><span class="normal"> </span><span class="cbracket">}</span><span class="symbol">,</span>
498 <span class="normal"> </span><span class="string">"children"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="symbol">[</span>
499 <span class="normal"> </span><span class="cbracket">{</span>
500 <span class="normal"> </span><span class="string">"type"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"ClutterTexture"</span><span class="symbol">,</span>
501 <span class="normal"> </span><span class="string">"filename"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"image-00.png"</span><span class="symbol">,</span>
503 <span class="normal"> </span><span class="string">"layout::row"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="number">0</span><span class="symbol">,</span>
504 <span class="normal"> </span><span class="string">"layout::column"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="number">0</span><span class="symbol">,</span>
505 <span class="normal"> </span><span class="string">"layout::x-align"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"left"</span><span class="symbol">,</span>
506 <span class="normal"> </span><span class="string">"layout::y-align"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"center"</span><span class="symbol">,</span>
507 <span class="normal"> </span><span class="string">"layout::x-expand"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> true</span><span class="symbol">,</span>
508 <span class="normal"> </span><span class="string">"layout::y-expand"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> true</span>
509 <span class="normal"> </span><span class="cbracket">}</span><span class="symbol">,</span>
510 <span class="normal"> </span><span class="cbracket">{</span>
511 <span class="normal"> </span><span class="string">"type"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"ClutterTexture"</span><span class="symbol">,</span>
512 <span class="normal"> </span><span class="string">"filename"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"image-01.png"</span><span class="symbol">,</span>
514 <span class="normal"> </span><span class="string">"layout::row"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="number">0</span><span class="symbol">,</span>
515 <span class="normal"> </span><span class="string">"layout::column"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="number">1</span><span class="symbol">,</span>
516 <span class="normal"> </span><span class="string">"layout::x-align"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"right"</span><span class="symbol">,</span>
517 <span class="normal"> </span><span class="string">"layout::y-align"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"center"</span><span class="symbol">,</span>
518 <span class="normal"> </span><span class="string">"layout::x-expand"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> true</span><span class="symbol">,</span>
519 <span class="normal"> </span><span class="string">"layout::y-expand"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> true</span>
520 <span class="normal"> </span><span class="cbracket">}</span>
521 <span class="normal"> </span><span class="symbol">]</span>
522 <span class="cbracket">}</span></pre></td>
532 <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> is available since Clutter 1.2
535 <div class="refsect1">
536 <a name="ClutterLayoutManager.details"></a><h2>Details</h2>
537 <div class="refsect2">
538 <a name="ClutterLayoutManager-struct"></a><h3>ClutterLayoutManager</h3>
539 <pre class="programlisting">typedef struct _ClutterLayoutManager ClutterLayoutManager;</pre>
541 The <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> structure contains only private data
542 and should be accessed using the provided API
544 <p class="since">Since 1.2</p>
547 <div class="refsect2">
548 <a name="ClutterLayoutManagerClass"></a><h3>struct ClutterLayoutManagerClass</h3>
549 <pre class="programlisting">struct ClutterLayoutManagerClass {
550 void (* get_preferred_width) (ClutterLayoutManager *manager,
551 ClutterContainer *container,
554 gfloat *nat_width_p);
555 void (* get_preferred_height) (ClutterLayoutManager *manager,
556 ClutterContainer *container,
558 gfloat *min_height_p,
559 gfloat *nat_height_p);
560 void (* allocate) (ClutterLayoutManager *manager,
561 ClutterContainer *container,
562 const ClutterActorBox *allocation,
563 ClutterAllocationFlags flags);
565 void (* set_container) (ClutterLayoutManager *manager,
566 ClutterContainer *container);
568 GType (* get_child_meta_type) (ClutterLayoutManager *manager);
569 ClutterLayoutMeta *(* create_child_meta) (ClutterLayoutManager *manager,
570 ClutterContainer *container,
571 ClutterActor *actor);
573 ClutterAlpha * (* begin_animation) (ClutterLayoutManager *manager,
576 gdouble (* get_animation_progress) (ClutterLayoutManager *manager);
577 void (* end_animation) (ClutterLayoutManager *manager);
579 void (* layout_changed) (ClutterLayoutManager *manager);
583 The <a class="link" href="ClutterLayoutManager.html#ClutterLayoutManagerClass" title="struct ClutterLayoutManagerClass"><span class="type">ClutterLayoutManagerClass</span></a> structure contains only private
584 data and should be accessed using the provided API
586 <div class="variablelist"><table border="0">
587 <col align="left" valign="top">
590 <td><p><span class="term"><em class="structfield"><code><a name="ClutterLayoutManagerClass.get-preferred-width"></a>get_preferred_width</code></em> ()</span></p></td>
591 <td>virtual function; override to provide a preferred
592 width for the layout manager. See also the <code class="function">get_preferred_width()</code>
593 virtual function in <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a>
597 <td><p><span class="term"><em class="structfield"><code><a name="ClutterLayoutManagerClass.get-preferred-height"></a>get_preferred_height</code></em> ()</span></p></td>
598 <td>virtual function; override to provide a preferred
599 height for the layout manager. See also the <code class="function">get_preferred_height()</code>
600 virtual function in <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a>
604 <td><p><span class="term"><em class="structfield"><code><a name="ClutterLayoutManagerClass.allocate"></a>allocate</code></em> ()</span></p></td>
605 <td>virtual function; override to allocate the children of the
606 layout manager. See also the <code class="function">allocate()</code> virtual function in
607 <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a>
611 <td><p><span class="term"><em class="structfield"><code><a name="ClutterLayoutManagerClass.set-container"></a>set_container</code></em> ()</span></p></td>
612 <td>virtual function; override to set a back pointer
613 on the <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using the layout manager. The implementation
614 should not take a reference on the container, but just take a weak
615 reference, to avoid potential leaks due to reference cycles</td>
618 <td><p><span class="term"><em class="structfield"><code><a name="ClutterLayoutManagerClass.get-child-meta-type"></a>get_child_meta_type</code></em> ()</span></p></td>
619 <td>virtual function; override to return the <a href="../gobject/gobject-Type-Information.html#GType"><span class="type">GType</span></a>
620 of the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> sub-class used by the <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
624 <td><p><span class="term"><em class="structfield"><code><a name="ClutterLayoutManagerClass.create-child-meta"></a>create_child_meta</code></em> ()</span></p></td>
625 <td>virtual function; override to create a
626 <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> instance associated to a <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> and a
627 child <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a>, used to maintain layout manager specific properties</td>
630 <td><p><span class="term"><em class="structfield"><code><a name="ClutterLayoutManagerClass.begin-animation"></a>begin_animation</code></em> ()</span></p></td>
631 <td>virtual function; override to control the animation
632 of a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> with the given duration and easing mode</td>
635 <td><p><span class="term"><em class="structfield"><code><a name="ClutterLayoutManagerClass.get-animation-progress"></a>get_animation_progress</code></em> ()</span></p></td>
636 <td>virtual function; override to control the
637 progress of the animation of a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
641 <td><p><span class="term"><em class="structfield"><code><a name="ClutterLayoutManagerClass.end-animation"></a>end_animation</code></em> ()</span></p></td>
642 <td>virtual function; override to end an animation started
643 by <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-begin-animation" title="clutter_layout_manager_begin_animation ()"><code class="function">clutter_layout_manager_begin_animation()</code></a>
647 <td><p><span class="term"><em class="structfield"><code><a name="ClutterLayoutManagerClass.layout-changed"></a>layout_changed</code></em> ()</span></p></td>
648 <td>class handler for the <a class="link" href="ClutterLayoutManager.html#ClutterLayoutManager-layout-changed" title='The "layout-changed" signal'><span class="type">"layout-changed"</span></a>
653 <p class="since">Since 1.2</p>
656 <div class="refsect2">
657 <a name="clutter-layout-manager-get-preferred-width"></a><h3>clutter_layout_manager_get_preferred_width ()</h3>
658 <pre class="programlisting"><span class="returnvalue">void</span> clutter_layout_manager_get_preferred_width
659 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
660 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
661 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> for_height</code></em>,
662 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *min_width_p</code></em>,
663 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *nat_width_p</code></em>);</pre>
665 Computes the minimum and natural widths of the <em class="parameter"><code>container</code></em> according
666 to <em class="parameter"><code>manager</code></em>.
669 See also <a class="link" href="ClutterActor.html#clutter-actor-get-preferred-width" title="clutter_actor_get_preferred_width ()"><code class="function">clutter_actor_get_preferred_width()</code></a>
671 <div class="variablelist"><table border="0">
672 <col align="left" valign="top">
675 <td><p><span class="term"><em class="parameter"><code>manager</code></em> :</span></p></td>
676 <td>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
680 <td><p><span class="term"><em class="parameter"><code>container</code></em> :</span></p></td>
681 <td>the <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>
685 <td><p><span class="term"><em class="parameter"><code>for_height</code></em> :</span></p></td>
686 <td>the height for which the width should be computed, or -1</td>
689 <td><p><span class="term"><em class="parameter"><code>min_width_p</code></em> :</span></p></td>
690 <td>return location for the minimum width
691 of the layout, or <a href="/home/ebassi/gnome3/install/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
695 <td><p><span class="term"><em class="parameter"><code>nat_width_p</code></em> :</span></p></td>
696 <td>return location for the natural width
697 of the layout, or <a href="/home/ebassi/gnome3/install/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
702 <p class="since">Since 1.2</p>
705 <div class="refsect2">
706 <a name="clutter-layout-manager-get-preferred-height"></a><h3>clutter_layout_manager_get_preferred_height ()</h3>
707 <pre class="programlisting"><span class="returnvalue">void</span> clutter_layout_manager_get_preferred_height
708 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
709 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
710 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> for_width</code></em>,
711 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *min_height_p</code></em>,
712 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *nat_height_p</code></em>);</pre>
714 Computes the minimum and natural heights of the <em class="parameter"><code>container</code></em> according
715 to <em class="parameter"><code>manager</code></em>.
718 See also <a class="link" href="ClutterActor.html#clutter-actor-get-preferred-height" title="clutter_actor_get_preferred_height ()"><code class="function">clutter_actor_get_preferred_height()</code></a>
720 <div class="variablelist"><table border="0">
721 <col align="left" valign="top">
724 <td><p><span class="term"><em class="parameter"><code>manager</code></em> :</span></p></td>
725 <td>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
729 <td><p><span class="term"><em class="parameter"><code>container</code></em> :</span></p></td>
730 <td>the <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>
734 <td><p><span class="term"><em class="parameter"><code>for_width</code></em> :</span></p></td>
735 <td>the width for which the height should be computed, or -1</td>
738 <td><p><span class="term"><em class="parameter"><code>min_height_p</code></em> :</span></p></td>
739 <td>return location for the minimum height
740 of the layout, or <a href="/home/ebassi/gnome3/install/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
744 <td><p><span class="term"><em class="parameter"><code>nat_height_p</code></em> :</span></p></td>
745 <td>return location for the natural height
746 of the layout, or <a href="/home/ebassi/gnome3/install/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
751 <p class="since">Since 1.2</p>
754 <div class="refsect2">
755 <a name="clutter-layout-manager-allocate"></a><h3>clutter_layout_manager_allocate ()</h3>
756 <pre class="programlisting"><span class="returnvalue">void</span> clutter_layout_manager_allocate (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
757 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
758 <em class="parameter"><code>const <a class="link" href="ClutterActor.html#ClutterActorBox" title="struct ClutterActorBox"><span class="type">ClutterActorBox</span></a> *allocation</code></em>,
759 <em class="parameter"><code><a class="link" href="ClutterActor.html#ClutterAllocationFlags" title="enum ClutterAllocationFlags"><span class="type">ClutterAllocationFlags</span></a> flags</code></em>);</pre>
761 Allocates the children of <em class="parameter"><code>container</code></em> given an area
764 See also <a class="link" href="ClutterActor.html#clutter-actor-allocate" title="clutter_actor_allocate ()"><code class="function">clutter_actor_allocate()</code></a>
766 <div class="variablelist"><table border="0">
767 <col align="left" valign="top">
770 <td><p><span class="term"><em class="parameter"><code>manager</code></em> :</span></p></td>
771 <td>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
775 <td><p><span class="term"><em class="parameter"><code>container</code></em> :</span></p></td>
776 <td>the <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>
780 <td><p><span class="term"><em class="parameter"><code>allocation</code></em> :</span></p></td>
781 <td>the <a class="link" href="ClutterActor.html#ClutterActorBox" title="struct ClutterActorBox"><span class="type">ClutterActorBox</span></a> containing the allocated area
782 of <em class="parameter"><code>container</code></em>
786 <td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
787 <td>the allocation flags</td>
791 <p class="since">Since 1.2</p>
794 <div class="refsect2">
795 <a name="clutter-layout-manager-layout-changed"></a><h3>clutter_layout_manager_layout_changed ()</h3>
796 <pre class="programlisting"><span class="returnvalue">void</span> clutter_layout_manager_layout_changed
797 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>);</pre>
799 Emits the <a class="link" href="ClutterLayoutManager.html#ClutterLayoutManager-layout-changed" title='The "layout-changed" signal'><span class="type">"layout-changed"</span></a> signal on <em class="parameter"><code>manager</code></em>
802 This function should only be called by implementations of the
803 <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> class
805 <div class="variablelist"><table border="0">
806 <col align="left" valign="top">
808 <td><p><span class="term"><em class="parameter"><code>manager</code></em> :</span></p></td>
809 <td>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
813 <p class="since">Since 1.2</p>
816 <div class="refsect2">
817 <a name="clutter-layout-manager-set-container"></a><h3>clutter_layout_manager_set_container ()</h3>
818 <pre class="programlisting"><span class="returnvalue">void</span> clutter_layout_manager_set_container
819 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
820 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>);</pre>
822 If the <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> sub-class allows it, allow
823 adding a weak reference of the <em class="parameter"><code>container</code></em> using <em class="parameter"><code>manager</code></em>
824 from within the layout manager
827 The layout manager should not increase the reference
828 count of the <em class="parameter"><code>container</code></em>
830 <div class="variablelist"><table border="0">
831 <col align="left" valign="top">
834 <td><p><span class="term"><em class="parameter"><code>manager</code></em> :</span></p></td>
835 <td>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
839 <td><p><span class="term"><em class="parameter"><code>container</code></em> :</span></p></td>
840 <td>a <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
845 <p class="since">Since 1.2</p>
848 <div class="refsect2">
849 <a name="clutter-layout-manager-get-child-meta"></a><h3>clutter_layout_manager_get_child_meta ()</h3>
850 <pre class="programlisting"><a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="returnvalue">ClutterLayoutMeta</span></a> * clutter_layout_manager_get_child_meta
851 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
852 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
853 <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *actor</code></em>);</pre>
855 Retrieves the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> that the layout <em class="parameter"><code>manager</code></em> associated
856 to the <em class="parameter"><code>actor</code></em> child of <em class="parameter"><code>container</code></em>, eventually by creating one if the
857 <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> supports layout properties
859 <div class="variablelist"><table border="0">
860 <col align="left" valign="top">
863 <td><p><span class="term"><em class="parameter"><code>manager</code></em> :</span></p></td>
864 <td>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
868 <td><p><span class="term"><em class="parameter"><code>container</code></em> :</span></p></td>
869 <td>a <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>
873 <td><p><span class="term"><em class="parameter"><code>actor</code></em> :</span></p></td>
874 <td>a <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> child of <em class="parameter"><code>container</code></em>
878 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
879 <td>a <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a>, or <a href="/home/ebassi/gnome3/install/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL:CAPS"><code class="literal">NULL</code></a> if the
880 <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> does not have layout properties. The returned
881 layout meta instance is owned by the <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> and it
882 should not be unreferenced. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
887 <p class="since">Since 1.0</p>
890 <div class="refsect2">
891 <a name="clutter-layout-manager-child-set"></a><h3>clutter_layout_manager_child_set ()</h3>
892 <pre class="programlisting"><span class="returnvalue">void</span> clutter_layout_manager_child_set (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
893 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
894 <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *actor</code></em>,
895 <em class="parameter"><code>const <a href="../glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *first_property</code></em>,
896 <em class="parameter"><code>...</code></em>);</pre>
898 Sets a list of properties and their values on the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a>
899 associated by <em class="parameter"><code>manager</code></em> to a child of <em class="parameter"><code>container</code></em>
902 Languages bindings should use <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-child-set-property" title="clutter_layout_manager_child_set_property ()"><code class="function">clutter_layout_manager_child_set_property()</code></a>
905 <div class="variablelist"><table border="0">
906 <col align="left" valign="top">
909 <td><p><span class="term"><em class="parameter"><code>manager</code></em> :</span></p></td>
910 <td>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
914 <td><p><span class="term"><em class="parameter"><code>container</code></em> :</span></p></td>
915 <td>a <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>
919 <td><p><span class="term"><em class="parameter"><code>actor</code></em> :</span></p></td>
920 <td>a <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> child of <em class="parameter"><code>container</code></em>
924 <td><p><span class="term"><em class="parameter"><code>first_property</code></em> :</span></p></td>
925 <td>the first property name</td>
928 <td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td>
929 <td>a list of property name and value pairs</td>
933 <p class="since">Since 1.2</p>
936 <div class="refsect2">
937 <a name="clutter-layout-manager-child-set-property"></a><h3>clutter_layout_manager_child_set_property ()</h3>
938 <pre class="programlisting"><span class="returnvalue">void</span> clutter_layout_manager_child_set_property
939 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
940 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
941 <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *actor</code></em>,
942 <em class="parameter"><code>const <a href="../glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property_name</code></em>,
943 <em class="parameter"><code>const <a href="../gobject/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *value</code></em>);</pre>
945 Sets a property on the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> created by <em class="parameter"><code>manager</code></em> and
946 attached to a child of <em class="parameter"><code>container</code></em>
948 <div class="variablelist"><table border="0">
949 <col align="left" valign="top">
952 <td><p><span class="term"><em class="parameter"><code>manager</code></em> :</span></p></td>
953 <td>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
957 <td><p><span class="term"><em class="parameter"><code>container</code></em> :</span></p></td>
958 <td>a <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>
962 <td><p><span class="term"><em class="parameter"><code>actor</code></em> :</span></p></td>
963 <td>a <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> child of <em class="parameter"><code>container</code></em>
967 <td><p><span class="term"><em class="parameter"><code>property_name</code></em> :</span></p></td>
968 <td>the name of the property to set</td>
971 <td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
972 <td>a <a href="../gobject/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> with the value of the property to set</td>
976 <p class="since">Since 1.2</p>
979 <div class="refsect2">
980 <a name="clutter-layout-manager-child-get"></a><h3>clutter_layout_manager_child_get ()</h3>
981 <pre class="programlisting"><span class="returnvalue">void</span> clutter_layout_manager_child_get (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
982 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
983 <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *actor</code></em>,
984 <em class="parameter"><code>const <a href="../glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *first_property</code></em>,
985 <em class="parameter"><code>...</code></em>);</pre>
987 Retrieves the values for a list of properties out of the
988 <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> created by <em class="parameter"><code>manager</code></em> and attached to the
989 child of a <em class="parameter"><code>container</code></em>
991 <div class="variablelist"><table border="0">
992 <col align="left" valign="top">
995 <td><p><span class="term"><em class="parameter"><code>manager</code></em> :</span></p></td>
996 <td>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
1000 <td><p><span class="term"><em class="parameter"><code>container</code></em> :</span></p></td>
1001 <td>a <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>
1005 <td><p><span class="term"><em class="parameter"><code>actor</code></em> :</span></p></td>
1006 <td>a <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> child of <em class="parameter"><code>container</code></em>
1010 <td><p><span class="term"><em class="parameter"><code>first_property</code></em> :</span></p></td>
1011 <td>the name of the first property</td>
1014 <td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td>
1015 <td>a list of property name and return location for the value pairs</td>
1019 <p class="since">Since 1.2</p>
1022 <div class="refsect2">
1023 <a name="clutter-layout-manager-child-get-property"></a><h3>clutter_layout_manager_child_get_property ()</h3>
1024 <pre class="programlisting"><span class="returnvalue">void</span> clutter_layout_manager_child_get_property
1025 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
1026 <em class="parameter"><code><a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> *container</code></em>,
1027 <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *actor</code></em>,
1028 <em class="parameter"><code>const <a href="../glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property_name</code></em>,
1029 <em class="parameter"><code><a href="../gobject/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *value</code></em>);</pre>
1031 Gets a property on the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> created by <em class="parameter"><code>manager</code></em> and
1032 attached to a child of <em class="parameter"><code>container</code></em>
1035 The <a href="../gobject/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> must already be initialized to the type of the property
1036 and has to be unset with <a href="../gobject/gobject-Generic-values.html#g-value-unset"><code class="function">g_value_unset()</code></a> after extracting the real
1039 <div class="variablelist"><table border="0">
1040 <col align="left" valign="top">
1043 <td><p><span class="term"><em class="parameter"><code>manager</code></em> :</span></p></td>
1044 <td>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
1048 <td><p><span class="term"><em class="parameter"><code>container</code></em> :</span></p></td>
1049 <td>a <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> using <em class="parameter"><code>manager</code></em>
1053 <td><p><span class="term"><em class="parameter"><code>actor</code></em> :</span></p></td>
1054 <td>a <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> child of <em class="parameter"><code>container</code></em>
1058 <td><p><span class="term"><em class="parameter"><code>property_name</code></em> :</span></p></td>
1059 <td>the name of the property to get</td>
1062 <td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
1063 <td>a <a href="../gobject/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> with the value of the property to get</td>
1067 <p class="since">Since 1.2</p>
1070 <div class="refsect2">
1071 <a name="clutter-layout-manager-find-child-property"></a><h3>clutter_layout_manager_find_child_property ()</h3>
1072 <pre class="programlisting"><a href="../gobject/gobject-GParamSpec.html#GParamSpec"><span class="returnvalue">GParamSpec</span></a> * clutter_layout_manager_find_child_property
1073 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
1074 <em class="parameter"><code>const <a href="../glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>);</pre>
1076 Retrieves the <a href="../gobject/gobject-GParamSpec.html#GParamSpec"><span class="type">GParamSpec</span></a> for the layout property <em class="parameter"><code>name</code></em> inside
1077 the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> sub-class used by <em class="parameter"><code>manager</code></em>
1079 <div class="variablelist"><table border="0">
1080 <col align="left" valign="top">
1083 <td><p><span class="term"><em class="parameter"><code>manager</code></em> :</span></p></td>
1084 <td>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
1088 <td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
1089 <td>the name of the property</td>
1092 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1093 <td>a <a href="../gobject/gobject-GParamSpec.html#GParamSpec"><span class="type">GParamSpec</span></a> describing the property,
1094 or <a href="/home/ebassi/gnome3/install/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL:CAPS"><code class="literal">NULL</code></a> if no property with that name exists. The returned
1095 <a href="../gobject/gobject-GParamSpec.html#GParamSpec"><span class="type">GParamSpec</span></a> is owned by the layout manager and should not be
1096 modified or freed. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
1101 <p class="since">Since 1.2</p>
1104 <div class="refsect2">
1105 <a name="clutter-layout-manager-list-child-properties"></a><h3>clutter_layout_manager_list_child_properties ()</h3>
1106 <pre class="programlisting"><a href="../gobject/gobject-GParamSpec.html#GParamSpec"><span class="returnvalue">GParamSpec</span></a> ** clutter_layout_manager_list_child_properties
1107 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
1108 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *n_pspecs</code></em>);</pre>
1110 Retrieves all the <a href="../gobject/gobject-GParamSpec.html#GParamSpec"><span class="type">GParamSpec</span></a>s for the layout properties
1111 stored inside the <a class="link" href="ClutterLayoutMeta.html" title="ClutterLayoutMeta"><span class="type">ClutterLayoutMeta</span></a> sub-class used by <em class="parameter"><code>manager</code></em>
1113 <div class="variablelist"><table border="0">
1114 <col align="left" valign="top">
1117 <td><p><span class="term"><em class="parameter"><code>manager</code></em> :</span></p></td>
1118 <td>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
1122 <td><p><span class="term"><em class="parameter"><code>n_pspecs</code></em> :</span></p></td>
1123 <td>return location for the number of returned
1124 <a href="../gobject/gobject-GParamSpec.html#GParamSpec"><span class="type">GParamSpec</span></a>s. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
1128 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1129 <td>the newly-allocated,
1130 <a href="/home/ebassi/gnome3/install/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL:CAPS"><code class="literal">NULL</code></a>-terminated array of <a href="../gobject/gobject-GParamSpec.html#GParamSpec"><span class="type">GParamSpec</span></a>s. Use <a href="../glib/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> to free the
1131 resources allocated for the array. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=n_pspecs]</span>
1136 <p class="since">Since 1.2</p>
1139 <div class="refsect2">
1140 <a name="clutter-layout-manager-begin-animation"></a><h3>clutter_layout_manager_begin_animation ()</h3>
1141 <pre class="programlisting"><a class="link" href="ClutterAlpha.html" title="ClutterAlpha"><span class="returnvalue">ClutterAlpha</span></a> * clutter_layout_manager_begin_animation
1142 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>,
1143 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a> duration</code></em>,
1144 <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a> mode</code></em>);</pre>
1146 Begins an animation of <em class="parameter"><code>duration</code></em> milliseconds, using the provided
1147 easing <em class="parameter"><code>mode</code></em>
1150 The easing mode can be specified either as a <a class="link" href="clutter-Implicit-Animations.html#ClutterAnimationMode" title="enum ClutterAnimationMode"><span class="type">ClutterAnimationMode</span></a>
1151 or as a logical id returned by <a class="link" href="ClutterAlpha.html#clutter-alpha-register-func" title="clutter_alpha_register_func ()"><code class="function">clutter_alpha_register_func()</code></a>
1154 The result of this function depends on the <em class="parameter"><code>manager</code></em> implementation
1156 <div class="variablelist"><table border="0">
1157 <col align="left" valign="top">
1160 <td><p><span class="term"><em class="parameter"><code>manager</code></em> :</span></p></td>
1161 <td>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
1165 <td><p><span class="term"><em class="parameter"><code>duration</code></em> :</span></p></td>
1166 <td>the duration of the animation, in milliseconds</td>
1169 <td><p><span class="term"><em class="parameter"><code>mode</code></em> :</span></p></td>
1170 <td>the easing mode of the animation</td>
1173 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1174 <td>The <a class="link" href="ClutterAlpha.html" title="ClutterAlpha"><span class="type">ClutterAlpha</span></a> created by the
1175 layout manager; the returned instance is owned by the layout
1176 manager and should not be unreferenced. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
1181 <p class="since">Since 1.2</p>
1184 <div class="refsect2">
1185 <a name="clutter-layout-manager-end-animation"></a><h3>clutter_layout_manager_end_animation ()</h3>
1186 <pre class="programlisting"><span class="returnvalue">void</span> clutter_layout_manager_end_animation
1187 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>);</pre>
1189 Ends an animation started by <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-begin-animation" title="clutter_layout_manager_begin_animation ()"><code class="function">clutter_layout_manager_begin_animation()</code></a>
1192 The result of this call depends on the <em class="parameter"><code>manager</code></em> implementation
1194 <div class="variablelist"><table border="0">
1195 <col align="left" valign="top">
1197 <td><p><span class="term"><em class="parameter"><code>manager</code></em> :</span></p></td>
1198 <td>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
1202 <p class="since">Since 1.2</p>
1205 <div class="refsect2">
1206 <a name="clutter-layout-manager-get-animation-progress"></a><h3>clutter_layout_manager_get_animation_progress ()</h3>
1207 <pre class="programlisting"><a href="../glib/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> clutter_layout_manager_get_animation_progress
1208 (<em class="parameter"><code><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager</code></em>);</pre>
1210 Retrieves the progress of the animation, if one has been started by
1211 <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-begin-animation" title="clutter_layout_manager_begin_animation ()"><code class="function">clutter_layout_manager_begin_animation()</code></a>
1214 The returned value has the same semantics of the <a class="link" href="ClutterAlpha.html#ClutterAlpha--alpha" title='The "alpha" property'><span class="type">"alpha"</span></a>
1217 <div class="variablelist"><table border="0">
1218 <col align="left" valign="top">
1221 <td><p><span class="term"><em class="parameter"><code>manager</code></em> :</span></p></td>
1222 <td>a <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a>
1226 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1227 <td>the progress of the animation</td>
1231 <p class="since">Since 1.2</p>
1234 <div class="refsect1">
1235 <a name="ClutterLayoutManager.signal-details"></a><h2>Signal Details</h2>
1236 <div class="refsect2">
1237 <a name="ClutterLayoutManager-layout-changed"></a><h3>The <code class="literal">"layout-changed"</code> signal</h3>
1238 <pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> *manager,
1239 <a href="../glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="../gobject/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
1241 The ::layout-changed signal is emitted each time a layout manager
1242 has been changed. Every <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> using the <em class="parameter"><code>manager</code></em> instance
1243 as a layout manager should connect a handler to the ::layout-changed
1244 signal and queue a relayout on themselves:
1248 <div class="informalexample">
1249 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
1252 <td class="listing_lines" align="right"><pre>1
1262 <td class="listing_code"><pre class="programlisting"><span class="keyword">static</span><span class="normal"> </span><span class="type">void</span><span class="normal"> </span><span class="function">layout_changed</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">ClutterLayoutManager</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">manager</span><span class="symbol">,</span>
1263 <span class="normal"> </span><span class="usertype">ClutterActor</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">self</span><span class="symbol">)</span>
1264 <span class="cbracket">{</span>
1265 <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-queue-relayout">clutter_actor_queue_relayout</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">self</span><span class="symbol">);</span>
1266 <span class="cbracket">}</span>
1267 <span class="symbol">...</span>
1268 <span class="normal"> self</span><span class="symbol">-></span><span class="normal">manager </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-ref-sink">g_object_ref_sink</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">manager</span><span class="symbol">);</span>
1269 <span class="normal"> </span><span class="function"><a href="../gobject/gobject-Signals.html#g-signal-connect">g_signal_connect</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">self</span><span class="symbol">-></span><span class="normal">manager</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"layout-changed"</span><span class="symbol">,</span>
1270 <span class="normal"> </span><span class="function"><a href="../gobject/gobject-Closures.html#G-CALLBACK:CAPS">G_CALLBACK</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">layout_changed</span><span class="symbol">),</span>
1271 <span class="normal"> self</span><span class="symbol">);</span></pre></td>
1280 Sub-classes of <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> that implement a layout that
1281 can be controlled or changed using parameters should emit the
1282 ::layout-changed signal whenever one of the parameters changes,
1283 by using <a class="link" href="ClutterLayoutManager.html#clutter-layout-manager-layout-changed" title="clutter_layout_manager_layout_changed ()"><code class="function">clutter_layout_manager_layout_changed()</code></a>.
1285 <div class="variablelist"><table border="0">
1286 <col align="left" valign="top">
1289 <td><p><span class="term"><em class="parameter"><code>manager</code></em> :</span></p></td>
1290 <td>the <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="type">ClutterLayoutManager</span></a> that emitted the signal</td>
1293 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
1294 <td>user data set when the signal handler was connected.</td>
1298 <p class="since">Since 1.2</p>
1302 <div class="footer">
1304 Generated by GTK-Doc V1.18.1</div>