<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Clutter Reference Manual: ClutterBinLayout</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="Clutter Reference Manual"> <link rel="up" href="ch03.html" title="Layout managers"> <link rel="prev" href="ClutterFixedLayout.html" title="ClutterFixedLayout"> <link rel="next" href="ClutterFlowLayout.html" title="ClutterFlowLayout"> <meta name="generator" content="GTK-Doc V1.19.1 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle"> <td width="100%" align="left"> <a href="#" class="shortcut">Top</a> | <a href="#ClutterBinLayout.description" class="shortcut">Description</a> | <a href="#ClutterBinLayout.object-hierarchy" class="shortcut">Object Hierarchy</a> | <a href="#ClutterBinLayout.properties" class="shortcut">Properties</a> </td> <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> <td><a accesskey="u" href="ch03.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> <td><a accesskey="p" href="ClutterFixedLayout.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> <td><a accesskey="n" href="ClutterFlowLayout.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> </tr></table> <div class="refentry"> <a name="ClutterBinLayout"></a><div class="titlepage"></div> <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="ClutterBinLayout.top_of_page"></a>ClutterBinLayout</span></h2> <p>ClutterBinLayout — A simple layout manager</p> </td> <td valign="top" align="right"></td> </tr></table></div> <div class="refsynopsisdiv"> <a name="ClutterBinLayout.synopsis"></a><h2>Synopsis</h2> <pre class="synopsis">enum <a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment">ClutterBinAlignment</a>; struct <a class="link" href="ClutterBinLayout.html#ClutterBinLayout-struct" title="struct ClutterBinLayout">ClutterBinLayout</a>; struct <a class="link" href="ClutterBinLayout.html#ClutterBinLayoutClass" title="struct ClutterBinLayoutClass">ClutterBinLayoutClass</a>; <a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="returnvalue">ClutterLayoutManager</span></a> * <a class="link" href="ClutterBinLayout.html#clutter-bin-layout-new" title="clutter_bin_layout_new ()">clutter_bin_layout_new</a> (<em class="parameter"><code><a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> x_align</code></em>, <em class="parameter"><code><a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> y_align</code></em>); <span class="returnvalue">void</span> <a class="link" href="ClutterBinLayout.html#clutter-bin-layout-set-alignment" title="clutter_bin_layout_set_alignment ()">clutter_bin_layout_set_alignment</a> (<em class="parameter"><code><a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> *self</code></em>, <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *child</code></em>, <em class="parameter"><code><a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> x_align</code></em>, <em class="parameter"><code><a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> y_align</code></em>); <span class="returnvalue">void</span> <a class="link" href="ClutterBinLayout.html#clutter-bin-layout-get-alignment" title="clutter_bin_layout_get_alignment ()">clutter_bin_layout_get_alignment</a> (<em class="parameter"><code><a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> *self</code></em>, <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *child</code></em>, <em class="parameter"><code><a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> *x_align</code></em>, <em class="parameter"><code><a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> *y_align</code></em>); <span class="returnvalue">void</span> <a class="link" href="ClutterBinLayout.html#clutter-bin-layout-add" title="clutter_bin_layout_add ()">clutter_bin_layout_add</a> (<em class="parameter"><code><a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> *self</code></em>, <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *child</code></em>, <em class="parameter"><code><a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> x_align</code></em>, <em class="parameter"><code><a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> y_align</code></em>); </pre> </div> <div class="refsect1"> <a name="ClutterBinLayout.object-hierarchy"></a><h2>Object Hierarchy</h2> <pre class="synopsis"> GObject +----GInitiallyUnowned +----<a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager">ClutterLayoutManager</a> +----ClutterBinLayout </pre> </div> <div class="refsect1"> <a name="ClutterBinLayout.properties"></a><h2>Properties</h2> <pre class="synopsis"> "<a class="link" href="ClutterBinLayout.html#ClutterBinLayout--x-align" title='The "x-align" property'>x-align</a>" <a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> : Read / Write "<a class="link" href="ClutterBinLayout.html#ClutterBinLayout--y-align" title='The "y-align" property'>y-align</a>" <a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> : Read / Write </pre> </div> <div class="refsect1"> <a name="ClutterBinLayout.description"></a><h2>Description</h2> <p> <a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> is a layout manager which implements the following policy: </p> <p> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem">the preferred size is the maximum preferred size between all the children of the container using the layout;</li> <li class="listitem">each child is allocated in "layers", on on top of the other;</li> <li class="listitem">for each layer there are horizontal and vertical alignment policies.</li> </ul></div> <p> </p> <p> </p> <div class="figure"> <a name="bin-layout"></a><p class="title"><b>Figure 4. Bin layout</b></p> <div class="figure-contents"> <p>The image shows a <a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> with three layers: a background <a class="link" href="ClutterCairoTexture.html" title="ClutterCairoTexture"><span class="type">ClutterCairoTexture</span></a>, set to fill on both the X and Y axis; a <a class="link" href="ClutterTexture.html" title="ClutterTexture"><span class="type">ClutterTexture</span></a>, set to center on both the X and Y axis; and a <a class="link" href="ClutterRectangle.html" title="ClutterRectangle"><span class="type">ClutterRectangle</span></a>, set to <a class="link" href="ClutterBinLayout.html#CLUTTER-BIN-ALIGNMENT-END:CAPS"><code class="literal">CLUTTER_BIN_ALIGNMENT_END</code></a> on both the X and Y axis.</p> <div><img src="bin-layout.png" alt="Bin layout"></div> </div> </div> <p><br class="figure-break"> </p> <p> </p> <div class="example"> <a name="example-clutter-bin-layout"></a><p class="title"><b>Example 4. How to pack actors inside a BinLayout</b></p> <div class="example-contents"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td class="listing_lines" align="right"><pre>1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307</pre></td> <td class="listing_code"><pre class="programlisting"><span class="preproc">#include</span><span class="normal"> </span><span class="string"><stdlib.h></span> <span class="preproc">#include</span><span class="normal"> </span><span class="string"><cairo.h></span> <span class="preproc">#include</span><span class="normal"> </span><span class="string"><gdk-pixbuf/gdk-pixbuf.h></span> <span class="preproc">#include</span><span class="normal"> </span><span class="string"><clutter/clutter.h></span> <span class="keyword">static</span><span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">ClutterColor</span><span class="normal"> bg_color </span><span class="symbol">=</span><span class="normal"> </span><span class="cbracket">{</span><span class="normal"> </span><span class="number">0xcc</span><span class="symbol">,</span><span class="normal"> </span><span class="number">0xcc</span><span class="symbol">,</span><span class="normal"> </span><span class="number">0xcc</span><span class="symbol">,</span><span class="normal"> </span><span class="number">0x99</span><span class="normal"> </span><span class="cbracket">}</span><span class="symbol">;</span> <span class="keyword">static</span><span class="normal"> </span><span class="usertype">gboolean</span><span class="normal"> is_expanded </span><span class="symbol">=</span><span class="normal"> FALSE</span><span class="symbol">;</span> <span class="keyword">static</span><span class="normal"> gboolean</span> <span class="function">on_canvas_draw</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">ClutterCanvas</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">canvas</span><span class="symbol">,</span> <span class="normal"> </span><span class="usertype">cairo_t</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">cr</span><span class="symbol">,</span> <span class="normal"> </span><span class="usertype">gint</span><span class="normal"> width</span><span class="symbol">,</span> <span class="normal"> </span><span class="usertype">gint</span><span class="normal"> height</span><span class="symbol">)</span> <span class="cbracket">{</span> <span class="normal"> </span><span class="usertype">cairo_pattern_t</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">pat</span><span class="symbol">;</span> <span class="normal"> </span><span class="usertype">gfloat</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">;</span> <span class="normal"> </span><span class="function">g_print</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">G_STRLOC </span><span class="string">": Painting at %d x %d</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> width</span><span class="symbol">,</span><span class="normal"> height</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-cairo-t.html#cairo-save">cairo_save</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-cairo-t.html#cairo-set-operator">cairo_set_operator</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> <a href="/usr/share/gtk-doc/html/cairo/cairo-cairo-t.html#CAIRO-OPERATOR-CLEAR:CAPS">CAIRO_OPERATOR_CLEAR</a></span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-cairo-t.html#cairo-paint">cairo_paint</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-cairo-t.html#cairo-restore">cairo_restore</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">);</span> <span class="preproc">#define</span><span class="normal"> BG_ROUND_RADIUS </span><span class="number">12</span> <span class="normal"> x </span><span class="symbol">=</span><span class="normal"> y </span><span class="symbol">=</span><span class="normal"> </span><span class="number">0</span><span class="symbol">;</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-move-to">cairo_move_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-line-to">cairo_line_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> width </span><span class="symbol">-</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-curve-to">cairo_curve_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> width</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">,</span><span class="normal"> width</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">,</span><span class="normal"> width</span><span class="symbol">,</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-line-to">cairo_line_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> width</span><span class="symbol">,</span><span class="normal"> height </span><span class="symbol">-</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-curve-to">cairo_curve_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> width</span><span class="symbol">,</span><span class="normal"> height</span><span class="symbol">,</span><span class="normal"> width</span><span class="symbol">,</span><span class="normal"> height</span><span class="symbol">,</span><span class="normal"> width </span><span class="symbol">-</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">,</span><span class="normal"> height</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-line-to">cairo_line_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">,</span><span class="normal"> height</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-curve-to">cairo_curve_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> height</span><span class="symbol">,</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> height</span><span class="symbol">,</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> height </span><span class="symbol">-</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-line-to">cairo_line_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-curve-to">cairo_curve_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">,</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">,</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-close-path">cairo_close_path</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">);</span> <span class="normal"> </span><span class="function">clutter_cairo_set_source_color</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&</span><span class="normal">bg_color</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-cairo-t.html#cairo-stroke">cairo_stroke</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">);</span> <span class="normal"> x </span><span class="symbol">+=</span><span class="normal"> </span><span class="number">4</span><span class="symbol">;</span> <span class="normal"> y </span><span class="symbol">+=</span><span class="normal"> </span><span class="number">4</span><span class="symbol">;</span> <span class="normal"> width </span><span class="symbol">-=</span><span class="normal"> </span><span class="number">4</span><span class="symbol">;</span> <span class="normal"> height </span><span class="symbol">-=</span><span class="normal"> </span><span class="number">4</span><span class="symbol">;</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-move-to">cairo_move_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-line-to">cairo_line_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> width </span><span class="symbol">-</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-curve-to">cairo_curve_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> width</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">,</span><span class="normal"> width</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">,</span><span class="normal"> width</span><span class="symbol">,</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-line-to">cairo_line_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> width</span><span class="symbol">,</span><span class="normal"> height </span><span class="symbol">-</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-curve-to">cairo_curve_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> width</span><span class="symbol">,</span><span class="normal"> height</span><span class="symbol">,</span><span class="normal"> width</span><span class="symbol">,</span><span class="normal"> height</span><span class="symbol">,</span><span class="normal"> width </span><span class="symbol">-</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">,</span><span class="normal"> height</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-line-to">cairo_line_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">,</span><span class="normal"> height</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-curve-to">cairo_curve_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> height</span><span class="symbol">,</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> height</span><span class="symbol">,</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> height </span><span class="symbol">-</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-line-to">cairo_line_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-curve-to">cairo_curve_to</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">,</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">,</span><span class="normal"> BG_ROUND_RADIUS</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-Paths.html#cairo-close-path">cairo_close_path</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">);</span> <span class="normal"> pat </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-cairo-pattern-t.html#cairo-pattern-create-linear">cairo_pattern_create_linear</a></span><span class="normal"> </span><span class="symbol">(</span><span class="number">0</span><span class="symbol">,</span><span class="normal"> </span><span class="number">0</span><span class="symbol">,</span><span class="normal"> </span><span class="number">0</span><span class="symbol">,</span><span class="normal"> height</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-cairo-pattern-t.html#cairo-pattern-add-color-stop-rgba">cairo_pattern_add_color_stop_rgba</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">pat</span><span class="symbol">,</span><span class="normal"> </span><span class="number">1</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">.</span><span class="number">85</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">.</span><span class="number">85</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">.</span><span class="number">85</span><span class="symbol">,</span><span class="normal"> </span><span class="number">1</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-cairo-pattern-t.html#cairo-pattern-add-color-stop-rgba">cairo_pattern_add_color_stop_rgba</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">pat</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">.</span><span class="number">95</span><span class="symbol">,</span><span class="normal"> </span><span class="number">1</span><span class="symbol">,</span><span class="normal"> </span><span class="number">1</span><span class="symbol">,</span><span class="normal"> </span><span class="number">1</span><span class="symbol">,</span><span class="normal"> </span><span class="number">1</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-cairo-pattern-t.html#cairo-pattern-add-color-stop-rgba">cairo_pattern_add_color_stop_rgba</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">pat</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">.</span><span class="number">05</span><span class="symbol">,</span><span class="normal"> </span><span class="number">1</span><span class="symbol">,</span><span class="normal"> </span><span class="number">1</span><span class="symbol">,</span><span class="normal"> </span><span class="number">1</span><span class="symbol">,</span><span class="normal"> </span><span class="number">1</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-cairo-pattern-t.html#cairo-pattern-add-color-stop-rgba">cairo_pattern_add_color_stop_rgba</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">pat</span><span class="symbol">,</span><span class="normal"> </span><span class="number">0</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">.</span><span class="number">85</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">.</span><span class="number">85</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">.</span><span class="number">85</span><span class="symbol">,</span><span class="normal"> </span><span class="number">1</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-cairo-t.html#cairo-set-source">cairo_set_source</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">,</span><span class="normal"> pat</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-cairo-t.html#cairo-fill">cairo_fill</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cr</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="/usr/share/gtk-doc/html/cairo/cairo-cairo-pattern-t.html#cairo-pattern-destroy">cairo_pattern_destroy</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">pat</span><span class="symbol">);</span> <span class="preproc">#undef</span><span class="normal"> BG_ROUND_RADIUS</span> <span class="normal"> </span><span class="keyword">return</span><span class="normal"> TRUE</span><span class="symbol">;</span> <span class="cbracket">}</span> <span class="keyword">static</span><span class="normal"> gboolean</span> <span class="function">on_box_enter</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">ClutterActor</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">box</span><span class="symbol">,</span> <span class="normal"> </span><span class="usertype">ClutterEvent</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">event</span><span class="symbol">,</span> <span class="normal"> </span><span class="usertype">ClutterActor</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">emblem</span><span class="symbol">)</span> <span class="cbracket">{</span> <span class="normal"> </span><span class="comment">/* we ease the opacity linearly */</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-save-easing-state">clutter_actor_save_easing_state</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-easing-mode">clutter_actor_set_easing_mode</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">,</span><span class="normal"> <a href="ClutterTimeline.html#CLUTTER-LINEAR:CAPS">CLUTTER_LINEAR</a></span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-opacity">clutter_actor_set_opacity</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">,</span><span class="normal"> </span><span class="number">255</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-restore-easing-state">clutter_actor_restore_easing_state</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">);</span> <span class="normal"> </span><span class="keyword">return</span><span class="normal"> <a href="clutter-Events.html#CLUTTER-EVENT-STOP:CAPS">CLUTTER_EVENT_STOP</a></span><span class="symbol">;</span> <span class="cbracket">}</span> <span class="keyword">static</span><span class="normal"> gboolean</span> <span class="function">on_box_leave</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">ClutterActor</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">box</span><span class="symbol">,</span> <span class="normal"> </span><span class="usertype">ClutterEvent</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">event</span><span class="symbol">,</span> <span class="normal"> </span><span class="usertype">ClutterActor</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">emblem</span><span class="symbol">)</span> <span class="cbracket">{</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-save-easing-state">clutter_actor_save_easing_state</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-easing-mode">clutter_actor_set_easing_mode</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">,</span><span class="normal"> <a href="ClutterTimeline.html#CLUTTER-LINEAR:CAPS">CLUTTER_LINEAR</a></span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-opacity">clutter_actor_set_opacity</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">,</span><span class="normal"> </span><span class="number">0</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-restore-easing-state">clutter_actor_restore_easing_state</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">);</span> <span class="normal"> </span><span class="keyword">return</span><span class="normal"> <a href="clutter-Events.html#CLUTTER-EVENT-STOP:CAPS">CLUTTER_EVENT_STOP</a></span><span class="symbol">;</span> <span class="cbracket">}</span> <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span> <span class="function">on_emblem_clicked</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">ClutterClickAction</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">action</span><span class="symbol">,</span> <span class="normal"> </span><span class="usertype">ClutterActor</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">emblem</span><span class="symbol">,</span> <span class="normal"> </span><span class="usertype">ClutterActor</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">box</span><span class="symbol">)</span> <span class="cbracket">{</span> <span class="normal"> </span><span class="comment">/* we add a little bounce to the resizing of the box */</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-save-easing-state">clutter_actor_save_easing_state</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-easing-mode">clutter_actor_set_easing_mode</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">,</span><span class="normal"> <a href="ClutterTimeline.html#CLUTTER-EASE-OUT-BOUNCE:CAPS">CLUTTER_EASE_OUT_BOUNCE</a></span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-easing-duration">clutter_actor_set_easing_duration</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">,</span><span class="normal"> </span><span class="number">500</span><span class="symbol">);</span> <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(!</span><span class="normal">is_expanded</span><span class="symbol">)</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-size">clutter_actor_set_size</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">,</span><span class="normal"> </span><span class="number">400</span><span class="symbol">,</span><span class="normal"> </span><span class="number">400</span><span class="symbol">);</span> <span class="normal"> </span><span class="keyword">else</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-size">clutter_actor_set_size</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">,</span><span class="normal"> </span><span class="number">200</span><span class="symbol">,</span><span class="normal"> </span><span class="number">200</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-restore-easing-state">clutter_actor_restore_easing_state</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">);</span> <span class="normal"> is_expanded </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">!</span><span class="normal">is_expanded</span><span class="symbol">;</span> <span class="cbracket">}</span> <span class="keyword">static</span><span class="normal"> gboolean</span> <span class="function">on_emblem_long_press</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">ClutterClickAction</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">action</span><span class="symbol">,</span> <span class="normal"> </span><span class="usertype">ClutterActor</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">emblem</span><span class="symbol">,</span> <span class="normal"> </span><span class="usertype">ClutterLongPressState</span><span class="normal"> state</span><span class="symbol">,</span> <span class="normal"> </span><span class="usertype">ClutterActor</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">box</span><span class="symbol">)</span> <span class="cbracket">{</span> <span class="normal"> </span><span class="keyword">switch</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">state</span><span class="symbol">)</span> <span class="normal"> </span><span class="cbracket">{</span> <span class="normal"> </span><span class="keyword">case</span><span class="normal"> <a href="ClutterClickAction.html#CLUTTER-LONG-PRESS-QUERY:CAPS">CLUTTER_LONG_PRESS_QUERY</a></span><span class="symbol">:</span> <span class="normal"> </span><span class="function">g_print</span><span class="normal"> </span><span class="symbol">(</span><span class="string">"*** long press: query ***</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">);</span> <span class="normal"> </span><span class="keyword">return</span><span class="normal"> is_expanded</span><span class="symbol">;</span> <span class="normal"> </span><span class="keyword">case</span><span class="normal"> <a href="ClutterClickAction.html#CLUTTER-LONG-PRESS-CANCEL:CAPS">CLUTTER_LONG_PRESS_CANCEL</a></span><span class="symbol">:</span> <span class="normal"> </span><span class="function">g_print</span><span class="normal"> </span><span class="symbol">(</span><span class="string">"*** long press: cancel ***</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">);</span> <span class="normal"> </span><span class="keyword">break</span><span class="symbol">;</span> <span class="normal"> </span><span class="keyword">case</span><span class="normal"> <a href="ClutterClickAction.html#CLUTTER-LONG-PRESS-ACTIVATE:CAPS">CLUTTER_LONG_PRESS_ACTIVATE</a></span><span class="symbol">:</span> <span class="normal"> </span><span class="function">g_print</span><span class="normal"> </span><span class="symbol">(</span><span class="string">"*** long press: activate ***</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">);</span> <span class="normal"> </span><span class="keyword">break</span><span class="symbol">;</span> <span class="normal"> </span><span class="cbracket">}</span> <span class="normal"> </span><span class="keyword">return</span><span class="normal"> TRUE</span><span class="symbol">;</span> <span class="cbracket">}</span> <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span> <span class="function">redraw_canvas</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">ClutterActor</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">actor</span><span class="symbol">,</span> <span class="normal"> </span><span class="usertype">ClutterCanvas</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">canvas</span><span class="symbol">)</span> <span class="cbracket">{</span> <span class="normal"> </span><span class="comment">/* we want to invalidate the canvas and redraw its contents</span> <span class="comment"> * only when the size changes at the end of the animation,</span> <span class="comment"> * to avoid drawing all the states inbetween</span> <span class="comment"> */</span> <span class="normal"> </span><span class="function"><a href="ClutterCanvas.html#clutter-canvas-set-size">clutter_canvas_set_size</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">canvas</span><span class="symbol">,</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-get-width">clutter_actor_get_width</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">actor</span><span class="symbol">),</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-get-height">clutter_actor_get_height</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">actor</span><span class="symbol">));</span> <span class="cbracket">}</span> <span class="type">int</span> <span class="function">main</span><span class="normal"> </span><span class="symbol">(</span><span class="type">int</span><span class="normal"> argc</span><span class="symbol">,</span><span class="normal"> </span><span class="type">char</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">argv</span><span class="symbol">[])</span> <span class="cbracket">{</span> <span class="normal"> </span><span class="usertype">ClutterActor</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">stage</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">box</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">bg</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">icon</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">emblem</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">label</span><span class="symbol">;</span> <span class="normal"> </span><span class="usertype">ClutterLayoutManager</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">layout</span><span class="symbol">;</span> <span class="normal"> </span><span class="usertype">ClutterContent</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">canvas</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">image</span><span class="symbol">;</span> <span class="normal"> </span><span class="usertype">ClutterColor</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">color</span><span class="symbol">;</span> <span class="normal"> </span><span class="usertype">ClutterAction</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">action</span><span class="symbol">;</span> <span class="normal"> </span><span class="usertype">GdkPixbuf</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">pixbuf</span><span class="symbol">;</span> <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="clutter-General.html#clutter-init">clutter_init</a></span><span class="normal"> </span><span class="symbol">(&</span><span class="normal">argc</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&</span><span class="normal">argv</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">!=</span><span class="normal"> <a href="clutter-General.html#CLUTTER-INIT-SUCCESS:CAPS">CLUTTER_INIT_SUCCESS</a></span><span class="symbol">)</span> <span class="normal"> </span><span class="keyword">return</span><span class="normal"> </span><span class="number">1</span><span class="symbol">;</span> <span class="normal"> </span><span class="comment">/* prepare the stage */</span> <span class="normal"> stage </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="ClutterStage.html#clutter-stage-new">clutter_stage_new</a></span><span class="normal"> </span><span class="symbol">();</span> <span class="normal"> </span><span class="function"><a href="ClutterStage.html#clutter-stage-set-title">clutter_stage_set_title</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function">CLUTTER_STAGE</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">stage</span><span class="symbol">),</span><span class="normal"> </span><span class="string">"BinLayout"</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-background-color">clutter_actor_set_background_color</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">stage</span><span class="symbol">,</span><span class="normal"> CLUTTER_COLOR_Aluminium2</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-size">clutter_actor_set_size</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">stage</span><span class="symbol">,</span><span class="normal"> </span><span class="number">640</span><span class="symbol">,</span><span class="normal"> </span><span class="number">480</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-show">clutter_actor_show</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">stage</span><span class="symbol">);</span> <span class="normal"> </span><span class="function">g_signal_connect</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">stage</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"destroy"</span><span class="symbol">,</span><span class="normal"> </span><span class="function">G_CALLBACK</span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="clutter-General.html#clutter-main-quit">clutter_main_quit</a></span><span class="symbol">),</span><span class="normal"> NULL</span><span class="symbol">);</span> <span class="normal"> </span><span class="comment">/* this is our BinLayout, with its default alignments */</span> <span class="normal"> layout </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="ClutterBinLayout.html#clutter-bin-layout-new">clutter_bin_layout_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="ClutterBinLayout.html#CLUTTER-BIN-ALIGNMENT-CENTER:CAPS">CLUTTER_BIN_ALIGNMENT_CENTER</a></span><span class="symbol">,</span> <span class="normal"> <a href="ClutterBinLayout.html#CLUTTER-BIN-ALIGNMENT-CENTER:CAPS">CLUTTER_BIN_ALIGNMENT_CENTER</a></span><span class="symbol">);</span> <span class="normal"> </span><span class="comment">/* the main container; this actor will use the BinLayout to lay</span> <span class="comment"> * out its children; we use the anchor point to keep it centered</span> <span class="comment"> * on the same position even when we change its size</span> <span class="comment"> */</span> <span class="normal"> box </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-new">clutter_actor_new</a></span><span class="normal"> </span><span class="symbol">();</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-layout-manager">clutter_actor_set_layout_manager</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">,</span><span class="normal"> layout</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-add-constraint">clutter_actor_add_constraint</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="ClutterAlignConstraint.html#clutter-align-constraint-new">clutter_align_constraint_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">stage</span><span class="symbol">,</span><span class="normal"> <a href="ClutterAlignConstraint.html#CLUTTER-ALIGN-BOTH:CAPS">CLUTTER_ALIGN_BOTH</a></span><span class="symbol">,</span><span class="normal"> </span><span class="number">0.5</span><span class="symbol">));</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-position">clutter_actor_set_position</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">,</span><span class="normal"> </span><span class="number">320</span><span class="symbol">,</span><span class="normal"> </span><span class="number">240</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-reactive">clutter_actor_set_reactive</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">,</span><span class="normal"> TRUE</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-name">clutter_actor_set_name</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"box"</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-add-child">clutter_actor_add_child</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">stage</span><span class="symbol">,</span><span class="normal"> box</span><span class="symbol">);</span> <span class="normal"> </span><span class="comment">/* the background is drawn using a canvas content */</span> <span class="normal"> canvas </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="ClutterCanvas.html#clutter-canvas-new">clutter_canvas_new</a></span><span class="normal"> </span><span class="symbol">();</span> <span class="normal"> </span><span class="function">g_signal_connect</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">canvas</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"draw"</span><span class="symbol">,</span><span class="normal"> </span><span class="function">G_CALLBACK</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">on_canvas_draw</span><span class="symbol">),</span><span class="normal"> NULL</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterCanvas.html#clutter-canvas-set-size">clutter_canvas_set_size</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function">CLUTTER_CANVAS</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">canvas</span><span class="symbol">),</span><span class="normal"> </span><span class="number">200</span><span class="symbol">,</span><span class="normal"> </span><span class="number">200</span><span class="symbol">);</span> <span class="normal"> </span><span class="comment">/* this is the background actor; we want it to fill the whole</span> <span class="comment"> * of the allocation given to it by its parent</span> <span class="comment"> */</span> <span class="normal"> bg </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-new">clutter_actor_new</a></span><span class="normal"> </span><span class="symbol">();</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-name">clutter_actor_set_name</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">bg</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"background"</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-size">clutter_actor_set_size</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">bg</span><span class="symbol">,</span><span class="normal"> </span><span class="number">200</span><span class="symbol">,</span><span class="normal"> </span><span class="number">200</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-content">clutter_actor_set_content</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">bg</span><span class="symbol">,</span><span class="normal"> canvas</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-x-expand">clutter_actor_set_x_expand</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">bg</span><span class="symbol">,</span><span class="normal"> TRUE</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-y-expand">clutter_actor_set_y_expand</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">bg</span><span class="symbol">,</span><span class="normal"> TRUE</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-x-align">clutter_actor_set_x_align</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">bg</span><span class="symbol">,</span><span class="normal"> <a href="ClutterActor.html#CLUTTER-ACTOR-ALIGN-FILL:CAPS">CLUTTER_ACTOR_ALIGN_FILL</a></span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-y-align">clutter_actor_set_y_align</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">bg</span><span class="symbol">,</span><span class="normal"> <a href="ClutterActor.html#CLUTTER-ACTOR-ALIGN-FILL:CAPS">CLUTTER_ACTOR_ALIGN_FILL</a></span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-add-child">clutter_actor_add_child</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">,</span><span class="normal"> bg</span><span class="symbol">);</span> <span class="normal"> </span><span class="comment">/* we use the ::transitions-completed signal to get notification</span> <span class="comment"> * of the end of the sizing animation; this allows us to redraw</span> <span class="comment"> * the canvas only once the animation has stopped</span> <span class="comment"> */</span> <span class="normal"> </span><span class="function">g_signal_connect</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"transitions-completed"</span><span class="symbol">,</span> <span class="normal"> </span><span class="function">G_CALLBACK</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">redraw_canvas</span><span class="symbol">),</span> <span class="normal"> canvas</span><span class="symbol">);</span> <span class="normal"> </span><span class="comment">/* we use GdkPixbuf to load an image from our data directory */</span> <span class="normal"> pixbuf </span><span class="symbol">=</span><span class="normal"> </span><span class="function">gdk_pixbuf_new_from_file</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">TESTS_DATADIR</span><span class="normal"> G_DIR_SEPARATOR_S </span><span class="string">"redhand.png"</span><span class="symbol">,</span><span class="normal"> NULL</span><span class="symbol">);</span> <span class="normal"> image </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="ClutterImage.html#clutter-image-new">clutter_image_new</a></span><span class="normal"> </span><span class="symbol">();</span> <span class="normal"> </span><span class="function"><a href="ClutterImage.html#clutter-image-set-data">clutter_image_set_data</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function">CLUTTER_IMAGE</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">image</span><span class="symbol">),</span> <span class="normal"> </span><span class="function">gdk_pixbuf_get_pixels</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">pixbuf</span><span class="symbol">),</span> <span class="normal"> </span><span class="function">gdk_pixbuf_get_has_alpha</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">pixbuf</span><span class="symbol">)</span> <span class="normal"> </span><span class="symbol">?</span><span class="normal"> COGL_PIXEL_FORMAT_RGBA_8888</span> <span class="normal"> </span><span class="symbol">:</span><span class="normal"> COGL_PIXEL_FORMAT_RGB_888</span><span class="symbol">,</span> <span class="normal"> </span><span class="function">gdk_pixbuf_get_width</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">pixbuf</span><span class="symbol">),</span> <span class="normal"> </span><span class="function">gdk_pixbuf_get_height</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">pixbuf</span><span class="symbol">),</span> <span class="normal"> </span><span class="function">gdk_pixbuf_get_rowstride</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">pixbuf</span><span class="symbol">),</span> <span class="normal"> NULL</span><span class="symbol">);</span> <span class="normal"> </span><span class="function">g_object_unref</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">pixbuf</span><span class="symbol">);</span> <span class="normal"> </span><span class="comment">/* this is the icon; it's going to be centered inside the box actor.</span> <span class="comment"> * we use the content gravity to keep the aspect ratio of the image,</span> <span class="comment"> * and the scaling filters to get a better result when scaling the</span> <span class="comment"> * image down.</span> <span class="comment"> */</span> <span class="normal"> icon </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-new">clutter_actor_new</a></span><span class="normal"> </span><span class="symbol">();</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-name">clutter_actor_set_name</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">icon</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"icon"</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-size">clutter_actor_set_size</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">icon</span><span class="symbol">,</span><span class="normal"> </span><span class="number">196</span><span class="symbol">,</span><span class="normal"> </span><span class="number">196</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-x-expand">clutter_actor_set_x_expand</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">icon</span><span class="symbol">,</span><span class="normal"> TRUE</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-y-expand">clutter_actor_set_y_expand</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">icon</span><span class="symbol">,</span><span class="normal"> TRUE</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-x-align">clutter_actor_set_x_align</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">icon</span><span class="symbol">,</span><span class="normal"> <a href="ClutterActor.html#CLUTTER-ACTOR-ALIGN-CENTER:CAPS">CLUTTER_ACTOR_ALIGN_CENTER</a></span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-y-align">clutter_actor_set_y_align</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">icon</span><span class="symbol">,</span><span class="normal"> <a href="ClutterActor.html#CLUTTER-ACTOR-ALIGN-CENTER:CAPS">CLUTTER_ACTOR_ALIGN_CENTER</a></span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-content-gravity">clutter_actor_set_content_gravity</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">icon</span><span class="symbol">,</span><span class="normal"> <a href="ClutterActor.html#CLUTTER-CONTENT-GRAVITY-RESIZE-ASPECT:CAPS">CLUTTER_CONTENT_GRAVITY_RESIZE_ASPECT</a></span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-content-scaling-filters">clutter_actor_set_content_scaling_filters</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">icon</span><span class="symbol">,</span> <span class="normal"> <a href="ClutterActor.html#CLUTTER-SCALING-FILTER-TRILINEAR:CAPS">CLUTTER_SCALING_FILTER_TRILINEAR</a></span><span class="symbol">,</span> <span class="normal"> <a href="ClutterActor.html#CLUTTER-SCALING-FILTER-LINEAR:CAPS">CLUTTER_SCALING_FILTER_LINEAR</a></span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-content">clutter_actor_set_content</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">icon</span><span class="symbol">,</span><span class="normal"> image</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-add-child">clutter_actor_add_child</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">,</span><span class="normal"> icon</span><span class="symbol">);</span> <span class="normal"> color </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="clutter-Colors.html#clutter-color-new">clutter_color_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function">g_random_int_range</span><span class="normal"> </span><span class="symbol">(</span><span class="number">0</span><span class="symbol">,</span><span class="normal"> </span><span class="number">255</span><span class="symbol">),</span> <span class="normal"> </span><span class="function">g_random_int_range</span><span class="normal"> </span><span class="symbol">(</span><span class="number">0</span><span class="symbol">,</span><span class="normal"> </span><span class="number">255</span><span class="symbol">),</span> <span class="normal"> </span><span class="function">g_random_int_range</span><span class="normal"> </span><span class="symbol">(</span><span class="number">0</span><span class="symbol">,</span><span class="normal"> </span><span class="number">255</span><span class="symbol">),</span> <span class="normal"> </span><span class="number">224</span><span class="symbol">);</span> <span class="normal"> </span><span class="comment">/* this is the emblem: a small rectangle with a random color, that we</span> <span class="comment"> * want to put in the bottom right corner</span> <span class="comment"> */</span> <span class="normal"> emblem </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-new">clutter_actor_new</a></span><span class="normal"> </span><span class="symbol">();</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-name">clutter_actor_set_name</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"emblem"</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-size">clutter_actor_set_size</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">,</span><span class="normal"> </span><span class="number">48</span><span class="symbol">,</span><span class="normal"> </span><span class="number">48</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-background-color">clutter_actor_set_background_color</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">,</span><span class="normal"> color</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-x-expand">clutter_actor_set_x_expand</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">,</span><span class="normal"> TRUE</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-y-expand">clutter_actor_set_y_expand</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">,</span><span class="normal"> TRUE</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-x-align">clutter_actor_set_x_align</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">,</span><span class="normal"> <a href="ClutterActor.html#CLUTTER-ACTOR-ALIGN-END:CAPS">CLUTTER_ACTOR_ALIGN_END</a></span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-y-align">clutter_actor_set_y_align</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">,</span><span class="normal"> <a href="ClutterActor.html#CLUTTER-ACTOR-ALIGN-END:CAPS">CLUTTER_ACTOR_ALIGN_END</a></span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-reactive">clutter_actor_set_reactive</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">,</span><span class="normal"> TRUE</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-opacity">clutter_actor_set_opacity</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">,</span><span class="normal"> </span><span class="number">0</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-add-child">clutter_actor_add_child</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">,</span><span class="normal"> emblem</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="clutter-Colors.html#clutter-color-free">clutter_color_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">color</span><span class="symbol">);</span> <span class="normal"> </span><span class="comment">/* when clicking on the emblem, we want to perform an action */</span> <span class="normal"> action </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="ClutterClickAction.html#clutter-click-action-new">clutter_click_action_new</a></span><span class="normal"> </span><span class="symbol">();</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-add-action">clutter_actor_add_action</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">emblem</span><span class="symbol">,</span><span class="normal"> action</span><span class="symbol">);</span> <span class="normal"> </span><span class="function">g_signal_connect</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">action</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"clicked"</span><span class="symbol">,</span><span class="normal"> </span><span class="function">G_CALLBACK</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">on_emblem_clicked</span><span class="symbol">),</span><span class="normal"> box</span><span class="symbol">);</span> <span class="normal"> </span><span class="function">g_signal_connect</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">action</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"long-press"</span><span class="symbol">,</span><span class="normal"> </span><span class="function">G_CALLBACK</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">on_emblem_long_press</span><span class="symbol">),</span><span class="normal"> box</span><span class="symbol">);</span> <span class="normal"> </span><span class="comment">/* whenever the pointer enters the box, we show the emblem; we hide</span> <span class="comment"> * the emblem when the pointer leaves the box</span> <span class="comment"> */</span> <span class="normal"> </span><span class="function">g_signal_connect</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">,</span> <span class="normal"> </span><span class="string">"enter-event"</span><span class="symbol">,</span><span class="normal"> </span><span class="function">G_CALLBACK</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">on_box_enter</span><span class="symbol">),</span> <span class="normal"> emblem</span><span class="symbol">);</span> <span class="normal"> </span><span class="function">g_signal_connect</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">,</span> <span class="normal"> </span><span class="string">"leave-event"</span><span class="symbol">,</span><span class="normal"> </span><span class="function">G_CALLBACK</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">on_box_leave</span><span class="symbol">),</span> <span class="normal"> emblem</span><span class="symbol">);</span> <span class="normal"> </span><span class="comment">/* a label, that we want to position at the top and center of the box */</span> <span class="normal"> label </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="ClutterText.html#clutter-text-new">clutter_text_new</a></span><span class="normal"> </span><span class="symbol">();</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-name">clutter_actor_set_name</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">label</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"text"</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterText.html#clutter-text-set-text">clutter_text_set_text</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function">CLUTTER_TEXT</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">label</span><span class="symbol">),</span><span class="normal"> </span><span class="string">"A simple test"</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-x-expand">clutter_actor_set_x_expand</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">label</span><span class="symbol">,</span><span class="normal"> TRUE</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-x-align">clutter_actor_set_x_align</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">label</span><span class="symbol">,</span><span class="normal"> <a href="ClutterActor.html#CLUTTER-ACTOR-ALIGN-CENTER:CAPS">CLUTTER_ACTOR_ALIGN_CENTER</a></span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-y-expand">clutter_actor_set_y_expand</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">label</span><span class="symbol">,</span><span class="normal"> TRUE</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-set-y-align">clutter_actor_set_y_align</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">label</span><span class="symbol">,</span><span class="normal"> <a href="ClutterActor.html#CLUTTER-ACTOR-ALIGN-START:CAPS">CLUTTER_ACTOR_ALIGN_START</a></span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="ClutterActor.html#clutter-actor-add-child">clutter_actor_add_child</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">box</span><span class="symbol">,</span><span class="normal"> label</span><span class="symbol">);</span> <span class="normal"> </span><span class="function"><a href="clutter-General.html#clutter-main">clutter_main</a></span><span class="normal"> </span><span class="symbol">();</span> <span class="normal"> </span><span class="keyword">return</span><span class="normal"> EXIT_SUCCESS</span><span class="symbol">;</span> <span class="cbracket">}</span></pre></td> </tr> </tbody> </table> </div> </div> <p><br class="example-break"> </p> <p> <a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> is available since Clutter 1.2 </p> </div> <div class="refsect1"> <a name="ClutterBinLayout.details"></a><h2>Details</h2> <div class="refsect2"> <a name="ClutterBinAlignment"></a><h3>enum ClutterBinAlignment</h3> <pre class="programlisting">typedef enum { CLUTTER_BIN_ALIGNMENT_FIXED, CLUTTER_BIN_ALIGNMENT_FILL, CLUTTER_BIN_ALIGNMENT_START, CLUTTER_BIN_ALIGNMENT_END, CLUTTER_BIN_ALIGNMENT_CENTER } ClutterBinAlignment; </pre> <div class="warning"> <h3 class="title">Warning</h3> <p><code class="literal">ClutterBinAlignment</code> has been deprecated since version 1.12 and should not be used in newly-written code. Use <a class="link" href="ClutterActor.html#ClutterActorAlign" title="enum ClutterActorAlign"><span class="type">ClutterActorAlign</span></a> and the <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> API instead</p> </div> <p> The alignment policies available on each axis for <a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> </p> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> <col> </colgroup> <tbody> <tr> <td><p><a name="CLUTTER-BIN-ALIGNMENT-FIXED:CAPS"></a><span class="term"><code class="literal">CLUTTER_BIN_ALIGNMENT_FIXED</code></span></p></td> <td>Fixed position alignment; the <a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> will honour the fixed position provided by the actors themselves when allocating them </td> </tr> <tr> <td><p><a name="CLUTTER-BIN-ALIGNMENT-FILL:CAPS"></a><span class="term"><code class="literal">CLUTTER_BIN_ALIGNMENT_FILL</code></span></p></td> <td>Fill the allocation size </td> </tr> <tr> <td><p><a name="CLUTTER-BIN-ALIGNMENT-START:CAPS"></a><span class="term"><code class="literal">CLUTTER_BIN_ALIGNMENT_START</code></span></p></td> <td>Position the actors at the top or left side of the container, depending on the axis </td> </tr> <tr> <td><p><a name="CLUTTER-BIN-ALIGNMENT-END:CAPS"></a><span class="term"><code class="literal">CLUTTER_BIN_ALIGNMENT_END</code></span></p></td> <td>Position the actors at the bottom or right side of the container, depending on the axis </td> </tr> <tr> <td><p><a name="CLUTTER-BIN-ALIGNMENT-CENTER:CAPS"></a><span class="term"><code class="literal">CLUTTER_BIN_ALIGNMENT_CENTER</code></span></p></td> <td>Position the actors at the center of the container, depending on the axis </td> </tr> </tbody> </table></div> <p class="since">Since 1.2</p> </div> <hr> <div class="refsect2"> <a name="ClutterBinLayout-struct"></a><h3>struct ClutterBinLayout</h3> <pre class="programlisting">struct ClutterBinLayout;</pre> <p> The <a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> structure contains only private data and should be accessed using the provided API </p> <p class="since">Since 1.2</p> </div> <hr> <div class="refsect2"> <a name="ClutterBinLayoutClass"></a><h3>struct ClutterBinLayoutClass</h3> <pre class="programlisting">struct ClutterBinLayoutClass { }; </pre> <p> The <a class="link" href="ClutterBinLayout.html#ClutterBinLayoutClass" title="struct ClutterBinLayoutClass"><span class="type">ClutterBinLayoutClass</span></a> structure contains only private data and should be accessed using the provided API </p> <p class="since">Since 1.2</p> </div> <hr> <div class="refsect2"> <a name="clutter-bin-layout-new"></a><h3>clutter_bin_layout_new ()</h3> <pre class="programlisting"><a class="link" href="ClutterLayoutManager.html" title="ClutterLayoutManager"><span class="returnvalue">ClutterLayoutManager</span></a> * clutter_bin_layout_new (<em class="parameter"><code><a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> x_align</code></em>, <em class="parameter"><code><a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> y_align</code></em>);</pre> <p> Creates a new <a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> layout manager </p> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> <col> </colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>x_align</code></em> :</span></p></td> <td>the default alignment policy to be used on the horizontal axis</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>y_align</code></em> :</span></p></td> <td>the default alignment policy to be used on the vertical axis</td> </tr> <tr> <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> <td>the newly created layout manager</td> </tr> </tbody> </table></div> <p class="since">Since 1.2</p> </div> <hr> <div class="refsect2"> <a name="clutter-bin-layout-set-alignment"></a><h3>clutter_bin_layout_set_alignment ()</h3> <pre class="programlisting"><span class="returnvalue">void</span> clutter_bin_layout_set_alignment (<em class="parameter"><code><a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> *self</code></em>, <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *child</code></em>, <em class="parameter"><code><a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> x_align</code></em>, <em class="parameter"><code><a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> y_align</code></em>);</pre> <div class="warning"> <h3 class="title">Warning</h3> <p><code class="literal">clutter_bin_layout_set_alignment</code> has been deprecated since version 1.12 and should not be used in newly-written code. Use the <a class="link" href="ClutterActor.html#ClutterActor--x-align" title='The "x-align" property'><span class="type">"x-align"</span></a> and <a class="link" href="ClutterActor.html#ClutterActor--y-align" title='The "y-align" property'><span class="type">"y-align"</span></a> properties of <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> instead.</p> </div> <p> Sets the horizontal and vertical alignment policies to be applied to a <em class="parameter"><code>child</code></em> of <em class="parameter"><code>self</code></em> </p> <p> If <em class="parameter"><code>child</code></em> is <code class="literal">NULL</code> then the <em class="parameter"><code>x_align</code></em> and <em class="parameter"><code>y_align</code></em> values will be set as the default alignment policies </p> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> <col> </colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td> <td>a <a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>child</code></em> :</span></p></td> <td>a child of <em class="parameter"><code>container</code></em>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span> </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>x_align</code></em> :</span></p></td> <td>the horizontal alignment policy to be used for the <em class="parameter"><code>child</code></em> inside <em class="parameter"><code>container</code></em> </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>y_align</code></em> :</span></p></td> <td>the vertical aligment policy to be used on the <em class="parameter"><code>child</code></em> inside <em class="parameter"><code>container</code></em> </td> </tr> </tbody> </table></div> <p class="since">Since 1.2</p> </div> <hr> <div class="refsect2"> <a name="clutter-bin-layout-get-alignment"></a><h3>clutter_bin_layout_get_alignment ()</h3> <pre class="programlisting"><span class="returnvalue">void</span> clutter_bin_layout_get_alignment (<em class="parameter"><code><a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> *self</code></em>, <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *child</code></em>, <em class="parameter"><code><a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> *x_align</code></em>, <em class="parameter"><code><a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> *y_align</code></em>);</pre> <div class="warning"> <h3 class="title">Warning</h3> <p><code class="literal">clutter_bin_layout_get_alignment</code> has been deprecated since version 1.12 and should not be used in newly-written code. Use the <a class="link" href="ClutterActor.html#ClutterActor--x-align" title='The "x-align" property'><span class="type">"x-align"</span></a> and the <a class="link" href="ClutterActor.html#ClutterActor--y-align" title='The "y-align" property'><span class="type">"y-align"</span></a> properties of <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> instead.</p> </div> <p> Retrieves the horizontal and vertical alignment policies for a child of <em class="parameter"><code>self</code></em> </p> <p> If <em class="parameter"><code>child</code></em> is <code class="literal">NULL</code> the default alignment policies will be returned instead </p> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> <col> </colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td> <td>a <a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>child</code></em> :</span></p></td> <td>a child of <em class="parameter"><code>container</code></em>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span> </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>x_align</code></em> :</span></p></td> <td>return location for the horizontal alignment policy. <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> </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>y_align</code></em> :</span></p></td> <td>return location for the vertical alignment policy. <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> </td> </tr> </tbody> </table></div> <p class="since">Since 1.2</p> </div> <hr> <div class="refsect2"> <a name="clutter-bin-layout-add"></a><h3>clutter_bin_layout_add ()</h3> <pre class="programlisting"><span class="returnvalue">void</span> clutter_bin_layout_add (<em class="parameter"><code><a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> *self</code></em>, <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *child</code></em>, <em class="parameter"><code><a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> x_align</code></em>, <em class="parameter"><code><a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> y_align</code></em>);</pre> <div class="warning"> <h3 class="title">Warning</h3> <p><code class="literal">clutter_bin_layout_add</code> has been deprecated since version 1.12 and should not be used in newly-written code. Use <a class="link" href="ClutterActor.html#clutter-actor-add-child" title="clutter_actor_add_child ()"><code class="function">clutter_actor_add_child()</code></a> instead.</p> </div> <p> Adds a <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> to the container using <em class="parameter"><code>self</code></em> and sets the alignment policies for it </p> <p> This function is equivalent to <a class="link" href="ClutterContainer.html#clutter-container-add-actor" title="clutter_container_add_actor ()"><code class="function">clutter_container_add_actor()</code></a> and <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> but it does not require a pointer to the <a class="link" href="ClutterContainer.html" title="ClutterContainer"><span class="type">ClutterContainer</span></a> associated to the <a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> </p> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> <col> </colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td> <td>a <a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>child</code></em> :</span></p></td> <td>a <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>x_align</code></em> :</span></p></td> <td>horizontal alignment policy for <em class="parameter"><code>child</code></em> </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>y_align</code></em> :</span></p></td> <td>vertical alignment policy for <em class="parameter"><code>child</code></em> </td> </tr> </tbody> </table></div> <p class="since">Since 1.2</p> </div> </div> <div class="refsect1"> <a name="ClutterBinLayout.property-details"></a><h2>Property Details</h2> <div class="refsect2"> <a name="ClutterBinLayout--x-align"></a><h3>The <code class="literal">"x-align"</code> property</h3> <pre class="programlisting"> "x-align" <a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> : Read / Write</pre> <div class="warning"> <h3 class="title">Warning</h3> <p><code class="literal">ClutterBinLayout:x-align</code> has been deprecated since version 1.12 and should not be used in newly-written code. Use the <a class="link" href="ClutterActor.html#ClutterActor--x-expand" title='The "x-expand" property'><span class="type">"x-expand"</span></a> and the <a class="link" href="ClutterActor.html#ClutterActor--x-align" title='The "x-align" property'><span class="type">"x-align"</span></a> properties on <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> instead.</p> </div> <p> The default horizontal alignment policy for actors managed by the <a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> </p> <p>Default value: CLUTTER_BIN_ALIGNMENT_CENTER</p> <p class="since">Since 1.2</p> </div> <hr> <div class="refsect2"> <a name="ClutterBinLayout--y-align"></a><h3>The <code class="literal">"y-align"</code> property</h3> <pre class="programlisting"> "y-align" <a class="link" href="ClutterBinLayout.html#ClutterBinAlignment" title="enum ClutterBinAlignment"><span class="type">ClutterBinAlignment</span></a> : Read / Write</pre> <div class="warning"> <h3 class="title">Warning</h3> <p><code class="literal">ClutterBinLayout:y-align</code> has been deprecated since version 1.12 and should not be used in newly-written code. Use the <a class="link" href="ClutterActor.html#ClutterActor--y-expand" title='The "y-expand" property'><span class="type">"y-expand"</span></a> and the <a class="link" href="ClutterActor.html#ClutterActor--y-align" title='The "y-align" property'><span class="type">"y-align"</span></a> properties on <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> instead.</p> </div> <p> The default vertical alignment policy for actors managed by the <a class="link" href="ClutterBinLayout.html" title="ClutterBinLayout"><span class="type">ClutterBinLayout</span></a> </p> <p>Default value: CLUTTER_BIN_ALIGNMENT_CENTER</p> <p class="since">Since 1.2</p> </div> </div> </div> <div class="footer"> <hr> Generated by GTK-Doc V1.19.1</div> </body> </html>