update to 1.10.4
[profile/ivi/clutter.git] / doc / reference / clutter / html / ClutterBindConstraint.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>ClutterBindConstraint</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
7 <link rel="home" href="index.html" title="Clutter Reference Manual">
8 <link rel="up" href="ch05.html" title="Constraints">
9 <link rel="prev" href="ClutterAlignConstraint.html" title="ClutterAlignConstraint">
10 <link rel="next" href="ClutterPathConstraint.html" title="ClutterPathConstraint">
11 <meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
13 </head>
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
16 <tr valign="middle">
17 <td><a accesskey="p" href="ClutterAlignConstraint.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
18 <td><a accesskey="u" href="ch05.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
19 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
20 <th width="100%" align="center">Clutter Reference Manual</th>
21 <td><a accesskey="n" href="ClutterPathConstraint.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
22 </tr>
23 <tr><td colspan="5" class="shortcuts">
24 <a href="#ClutterBindConstraint.synopsis" class="shortcut">Top</a>
25                    | 
26                   <a href="#ClutterBindConstraint.description" class="shortcut">Description</a>
27                    | 
28                   <a href="#ClutterBindConstraint.object-hierarchy" class="shortcut">Object Hierarchy</a>
29                    | 
30                   <a href="#ClutterBindConstraint.properties" class="shortcut">Properties</a>
31 </td></tr>
32 </table>
33 <div class="refentry">
34 <a name="ClutterBindConstraint"></a><div class="titlepage"></div>
35 <div class="refnamediv"><table width="100%"><tr>
36 <td valign="top">
37 <h2><span class="refentrytitle"><a name="ClutterBindConstraint.top_of_page"></a>ClutterBindConstraint</span></h2>
38 <p>ClutterBindConstraint — A constraint binding the position or size of an actor</p>
39 </td>
40 <td valign="top" align="right"></td>
41 </tr></table></div>
42 <div class="refsynopsisdiv">
43 <a name="ClutterBindConstraint.synopsis"></a><h2>Synopsis</h2>
44 <pre class="synopsis">                    <a class="link" href="ClutterBindConstraint.html#ClutterBindConstraint-struct" title="ClutterBindConstraint">ClutterBindConstraint</a>;
45 enum                <a class="link" href="ClutterBindConstraint.html#ClutterBindCoordinate" title="enum ClutterBindCoordinate">ClutterBindCoordinate</a>;
46 <a class="link" href="ClutterConstraint.html" title="ClutterConstraint"><span class="returnvalue">ClutterConstraint</span></a> * <a class="link" href="ClutterBindConstraint.html#clutter-bind-constraint-new" title="clutter_bind_constraint_new ()">clutter_bind_constraint_new</a>         (<em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *source</code></em>,
47                                                          <em class="parameter"><code><a class="link" href="ClutterBindConstraint.html#ClutterBindCoordinate" title="enum ClutterBindCoordinate"><span class="type">ClutterBindCoordinate</span></a> coordinate</code></em>,
48                                                          <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> offset</code></em>);
49 <span class="returnvalue">void</span>                <a class="link" href="ClutterBindConstraint.html#clutter-bind-constraint-set-source" title="clutter_bind_constraint_set_source ()">clutter_bind_constraint_set_source</a>  (<em class="parameter"><code><a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a> *constraint</code></em>,
50                                                          <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *source</code></em>);
51 <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="returnvalue">ClutterActor</span></a> *      <a class="link" href="ClutterBindConstraint.html#clutter-bind-constraint-get-source" title="clutter_bind_constraint_get_source ()">clutter_bind_constraint_get_source</a>  (<em class="parameter"><code><a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a> *constraint</code></em>);
52 <span class="returnvalue">void</span>                <a class="link" href="ClutterBindConstraint.html#clutter-bind-constraint-set-coordinate" title="clutter_bind_constraint_set_coordinate ()">clutter_bind_constraint_set_coordinate</a>
53                                                         (<em class="parameter"><code><a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a> *constraint</code></em>,
54                                                          <em class="parameter"><code><a class="link" href="ClutterBindConstraint.html#ClutterBindCoordinate" title="enum ClutterBindCoordinate"><span class="type">ClutterBindCoordinate</span></a> coordinate</code></em>);
55 <a class="link" href="ClutterBindConstraint.html#ClutterBindCoordinate" title="enum ClutterBindCoordinate"><span class="returnvalue">ClutterBindCoordinate</span></a> <a class="link" href="ClutterBindConstraint.html#clutter-bind-constraint-get-coordinate" title="clutter_bind_constraint_get_coordinate ()">clutter_bind_constraint_get_coordinate</a>
56                                                         (<em class="parameter"><code><a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a> *constraint</code></em>);
57 <span class="returnvalue">void</span>                <a class="link" href="ClutterBindConstraint.html#clutter-bind-constraint-set-offset" title="clutter_bind_constraint_set_offset ()">clutter_bind_constraint_set_offset</a>  (<em class="parameter"><code><a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a> *constraint</code></em>,
58                                                          <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> offset</code></em>);
59 <a href="../glib/glib-Basic-Types.html#gfloat"><span class="returnvalue">gfloat</span></a>              <a class="link" href="ClutterBindConstraint.html#clutter-bind-constraint-get-offset" title="clutter_bind_constraint_get_offset ()">clutter_bind_constraint_get_offset</a>  (<em class="parameter"><code><a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a> *constraint</code></em>);
60 </pre>
61 </div>
62 <div class="refsect1">
63 <a name="ClutterBindConstraint.object-hierarchy"></a><h2>Object Hierarchy</h2>
64 <pre class="synopsis">
65   <a href="../gobject/gobject-The-Base-Object-Type.html#GObject">GObject</a>
66    +----<a href="../gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
67          +----<a class="link" href="ClutterActorMeta.html" title="ClutterActorMeta">ClutterActorMeta</a>
68                +----<a class="link" href="ClutterConstraint.html" title="ClutterConstraint">ClutterConstraint</a>
69                      +----ClutterBindConstraint
70 </pre>
71 </div>
72 <div class="refsect1">
73 <a name="ClutterBindConstraint.properties"></a><h2>Properties</h2>
74 <pre class="synopsis">
75   "<a class="link" href="ClutterBindConstraint.html#ClutterBindConstraint--coordinate" title='The "coordinate" property'>coordinate</a>"               <a class="link" href="ClutterBindConstraint.html#ClutterBindCoordinate" title="enum ClutterBindCoordinate"><span class="type">ClutterBindCoordinate</span></a>  : Read / Write / Construct
76   "<a class="link" href="ClutterBindConstraint.html#ClutterBindConstraint--offset" title='The "offset" property'>offset</a>"                   <a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a>                : Read / Write / Construct
77   "<a class="link" href="ClutterBindConstraint.html#ClutterBindConstraint--source" title='The "source" property'>source</a>"                   <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a>*         : Read / Write / Construct
78 </pre>
79 </div>
80 <div class="refsect1">
81 <a name="ClutterBindConstraint.description"></a><h2>Description</h2>
82 <p>
83 <a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a> is a <a class="link" href="ClutterConstraint.html" title="ClutterConstraint"><span class="type">ClutterConstraint</span></a> that binds the
84 position or the size of the <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> to which it is applied
85 to the the position or the size of another <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a>, or
86 "source".
87 </p>
88 <p>
89 An offset can be applied to the constraint, to avoid overlapping. The offset
90 can also be animated. For instance, the following code will set up three
91 actors to be bound to the same origin:
92 </p>
93 <p>
94 </p>
95 <div class="informalexample">
96   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
97     <tbody>
98       <tr>
99         <td class="listing_lines" align="right"><pre>1
100 2
101 3
102 4
103 5
104 6
105 7
106 8
107 9
108 10
109 11
110 12
111 13
112 14
113 15
114 16
115 17
116 18
117 19
118 20
119 21
120 22
121 23
122 24</pre></td>
123         <td class="listing_code"><pre class="programlisting"><span class="comment">/* source */</span>
124 <span class="normal">rect</span><span class="symbol">[</span><span class="number">0</span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="ClutterRectangle.html#clutter-rectangle-new-with-color">clutter_rectangle_new_with_color</a></span><span class="normal"> </span><span class="symbol">(&amp;</span><span class="normal">red_color</span><span class="symbol">);</span>
125 <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">rect</span><span class="symbol">[</span><span class="number">0</span><span class="symbol">],</span><span class="normal"> x_pos</span><span class="symbol">,</span><span class="normal"> y_pos</span><span class="symbol">);</span>
126 <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">rect</span><span class="symbol">[</span><span class="number">0</span><span class="symbol">],</span><span class="normal"> </span><span class="number">100</span><span class="symbol">,</span><span class="normal"> </span><span class="number">100</span><span class="symbol">);</span>
127
128 <span class="comment">/* second rectangle */</span>
129 <span class="normal">rect</span><span class="symbol">[</span><span class="number">1</span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="ClutterRectangle.html#clutter-rectangle-new-with-color">clutter_rectangle_new_with_color</a></span><span class="normal"> </span><span class="symbol">(&amp;</span><span class="normal">green_color</span><span class="symbol">);</span>
130 <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">rect</span><span class="symbol">[</span><span class="number">1</span><span class="symbol">],</span><span class="normal"> </span><span class="number">100</span><span class="symbol">,</span><span class="normal"> </span><span class="number">100</span><span class="symbol">);</span>
131 <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">rect</span><span class="symbol">[</span><span class="number">1</span><span class="symbol">],</span><span class="normal"> </span><span class="number">0</span><span class="symbol">);</span>
132
133 <span class="normal">constraint </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="ClutterBindConstraint.html#clutter-bind-constraint-new">clutter_bind_constraint_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">rect</span><span class="symbol">[</span><span class="number">0</span><span class="symbol">],</span><span class="normal"> <a href="ClutterBindConstraint.html#CLUTTER-BIND-X:CAPS">CLUTTER_BIND_X</a></span><span class="symbol">,</span><span class="normal"> </span><span class="number">0.0</span><span class="symbol">);</span>
134 <span class="function"><a href="ClutterActor.html#clutter-actor-add-constraint-with-name">clutter_actor_add_constraint_with_name</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">rect</span><span class="symbol">[</span><span class="number">1</span><span class="symbol">],</span><span class="normal"> </span><span class="string">"green-x"</span><span class="symbol">,</span><span class="normal"> constraint</span><span class="symbol">);</span>
135 <span class="normal">constraint </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="ClutterBindConstraint.html#clutter-bind-constraint-new">clutter_bind_constraint_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">rect</span><span class="symbol">[</span><span class="number">0</span><span class="symbol">],</span><span class="normal"> <a href="ClutterBindConstraint.html#CLUTTER-BIND-Y:CAPS">CLUTTER_BIND_Y</a></span><span class="symbol">,</span><span class="normal"> </span><span class="number">0.0</span><span class="symbol">);</span>
136 <span class="function"><a href="ClutterActor.html#clutter-actor-add-constraint-with-name">clutter_actor_add_constraint_with_name</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">rect</span><span class="symbol">[</span><span class="number">1</span><span class="symbol">],</span><span class="normal"> </span><span class="string">"green-y"</span><span class="symbol">,</span><span class="normal"> constraint</span><span class="symbol">);</span>
137
138 <span class="comment">/* third rectangle */</span>
139 <span class="normal">rect</span><span class="symbol">[</span><span class="number">2</span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="ClutterRectangle.html#clutter-rectangle-new-with-color">clutter_rectangle_new_with_color</a></span><span class="normal"> </span><span class="symbol">(&amp;</span><span class="normal">blue_color</span><span class="symbol">);</span>
140 <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">rect</span><span class="symbol">[</span><span class="number">2</span><span class="symbol">],</span><span class="normal"> </span><span class="number">100</span><span class="symbol">,</span><span class="normal"> </span><span class="number">100</span><span class="symbol">);</span>
141 <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">rect</span><span class="symbol">[</span><span class="number">2</span><span class="symbol">],</span><span class="normal"> </span><span class="number">0</span><span class="symbol">);</span>
142
143 <span class="normal">constraint </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="ClutterBindConstraint.html#clutter-bind-constraint-new">clutter_bind_constraint_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">rect</span><span class="symbol">[</span><span class="number">0</span><span class="symbol">],</span><span class="normal"> <a href="ClutterBindConstraint.html#CLUTTER-BIND-X:CAPS">CLUTTER_BIND_X</a></span><span class="symbol">,</span><span class="normal"> </span><span class="number">0.0</span><span class="symbol">);</span>
144 <span class="function"><a href="ClutterActor.html#clutter-actor-add-constraint-with-name">clutter_actor_add_constraint_with_name</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">rect</span><span class="symbol">[</span><span class="number">2</span><span class="symbol">],</span><span class="normal"> </span><span class="string">"blue-x"</span><span class="symbol">,</span><span class="normal"> constraint</span><span class="symbol">);</span>
145 <span class="normal">constraint </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="ClutterBindConstraint.html#clutter-bind-constraint-new">clutter_bind_constraint_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">rect</span><span class="symbol">[</span><span class="number">0</span><span class="symbol">],</span><span class="normal"> <a href="ClutterBindConstraint.html#CLUTTER-BIND-Y:CAPS">CLUTTER_BIND_Y</a></span><span class="symbol">,</span><span class="normal"> </span><span class="number">0.0</span><span class="symbol">);</span>
146 <span class="function"><a href="ClutterActor.html#clutter-actor-add-constraint-with-name">clutter_actor_add_constraint_with_name</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">rect</span><span class="symbol">[</span><span class="number">2</span><span class="symbol">],</span><span class="normal"> </span><span class="string">"blue-y"</span><span class="symbol">,</span><span class="normal"> constraint</span><span class="symbol">);</span></pre></td>
147       </tr>
148     </tbody>
149   </table>
150 </div>
151
152 <p>
153 </p>
154 <p>
155 The following code animates the second and third rectangles to "expand"
156 them horizontally from underneath the first rectangle:
157 </p>
158 <p>
159 </p>
160 <div class="informalexample">
161   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
162     <tbody>
163       <tr>
164         <td class="listing_lines" align="right"><pre>1
165 2
166 3
167 4
168 5
169 6
170 7
171 8</pre></td>
172         <td class="listing_code"><pre class="programlisting"><span class="function"><a href="clutter-Implicit-Animations.html#clutter-actor-animate">clutter_actor_animate</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">rect</span><span class="symbol">[</span><span class="number">1</span><span class="symbol">],</span><span class="normal"> <a href="clutter-Implicit-Animations.html#CLUTTER-EASE-OUT-CUBIC:CAPS">CLUTTER_EASE_OUT_CUBIC</a></span><span class="symbol">,</span><span class="normal"> </span><span class="number">250</span><span class="symbol">,</span>
173 <span class="normal">                       </span><span class="string">"@constraints.green-x.offset"</span><span class="symbol">,</span><span class="normal"> </span><span class="number">100.0</span><span class="symbol">,</span>
174 <span class="normal">                       </span><span class="string">"opacity"</span><span class="symbol">,</span><span class="normal"> </span><span class="number">255</span><span class="symbol">,</span>
175 <span class="normal">                       <a href="/home/ebassi/gnome3/install/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
176 <span class="function"><a href="clutter-Implicit-Animations.html#clutter-actor-animate">clutter_actor_animate</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">rect</span><span class="symbol">[</span><span class="number">2</span><span class="symbol">],</span><span class="normal"> <a href="clutter-Implicit-Animations.html#CLUTTER-EASE-OUT-CUBIC:CAPS">CLUTTER_EASE_OUT_CUBIC</a></span><span class="symbol">,</span><span class="normal"> </span><span class="number">250</span><span class="symbol">,</span>
177 <span class="normal">                       </span><span class="string">"@constraints.blue-x.offset"</span><span class="symbol">,</span><span class="normal"> </span><span class="number">200.0</span><span class="symbol">,</span>
178 <span class="normal">                       </span><span class="string">"opacity"</span><span class="symbol">,</span><span class="normal"> </span><span class="number">255</span><span class="symbol">,</span>
179 <span class="normal">                       <a href="/home/ebassi/gnome3/install/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span></pre></td>
180       </tr>
181     </tbody>
182   </table>
183 </div>
184
185 <p>
186 </p>
187 <p>
188 </p>
189 <div class="example">
190 <a name="bind-constraint-example"></a><p class="title"><b>Example 8. Animating the offset property of ClutterBindConstraint</b></p>
191 <div class="example-contents">
192 <pre class="programlisting">
193 #include &lt;stdlib.h&gt;
194 #include &lt;gmodule.h&gt;
195 #include &lt;clutter/clutter.h&gt;
196
197 #define RECT_SIZE       128
198
199 #define H_PADDING       32
200 #define V_PADDING       32
201
202 enum
203 {
204   NorthWest,    North,  NorthEast,
205   West,         Center, East,
206   SouthWest,    South,  SouthEast,
207
208   N_RECTS
209 };
210
211 static ClutterActor *rects[N_RECTS] = { NULL, };
212 static const gchar *colors[N_RECTS] = {
213   "#8ae234", "#73d216", "#4e9a06",
214   "#729fcf", "#3465a4", "#204a87",
215   "#ef2929", "#cc0000", "#a40000"
216 };
217 static const gchar *names[N_RECTS] = {
218   "North West", "North",  "North East",
219   "West",       "Center", "East",
220   "South West", "South",  "South East"
221 };
222
223 static const gchar *desaturare_glsl_shader =
224 "uniform sampler2D tex;\n"
225 "uniform float factor;\n"
226 "\n"
227 "vec3 desaturate (const vec3 color, const float desaturation)\n"
228 "{\n"
229 "  const vec3 gray_conv = vec3 (0.299, 0.587, 0.114);\n"
230 "  vec3 gray = vec3 (dot (gray_conv, color));\n"
231 "  return vec3 (mix (color.rgb, gray, desaturation));\n"
232 "}\n"
233 "\n"
234 "void main ()\n"
235 "{\n"
236 "  vec4 color = cogl_color_in * texture2D (tex, vec2 (cogl_tex_coord_in[0].xy));\n"
237 "  color.rgb = desaturate (color.rgb, factor);\n"
238 "  cogl_color_out = color;\n"
239 "}\n";
240
241 static gboolean      is_expanded = FALSE;
242
243 static gboolean
244 on_button_release (ClutterActor *actor,
245                    ClutterEvent *event,
246                    gpointer      data G_GNUC_UNUSED)
247 {
248   if (!is_expanded)
249     {
250       gfloat north_offset, south_offset;
251       gfloat west_offset, east_offset;
252
253       /* expand the 8 rectangles by animating the offset of the
254        * bind constraints
255        */
256
257       north_offset = (clutter_actor_get_height (rects[Center]) + V_PADDING)
258                    * -1.0f;
259       south_offset = (clutter_actor_get_height (rects[Center]) + V_PADDING);
260
261       west_offset = (clutter_actor_get_width (rects[Center]) + H_PADDING)
262                   * -1.0f;
263       east_offset = (clutter_actor_get_width (rects[Center]) + H_PADDING);
264
265       clutter_actor_animate (rects[NorthWest], CLUTTER_EASE_OUT_EXPO, 500,
266                              "opacity", 255,
267                              "@constraints.x-bind.offset", west_offset,
268                              "@constraints.y-bind.offset", north_offset,
269                              "reactive", TRUE,
270                              NULL);
271       clutter_actor_animate (rects[North], CLUTTER_EASE_OUT_EXPO, 500,
272                              "opacity", 255,
273                              "@constraints.y-bind.offset", north_offset,
274                              "reactive", TRUE,
275                              NULL);
276       clutter_actor_animate (rects[NorthEast], CLUTTER_EASE_OUT_EXPO, 500,
277                              "opacity", 255,
278                              "@constraints.x-bind.offset", east_offset,
279                              "@constraints.y-bind.offset", north_offset,
280                              "reactive", TRUE,
281                              NULL);
282
283       clutter_actor_animate (rects[West], CLUTTER_EASE_OUT_EXPO, 500,
284                              "opacity", 255,
285                              "@constraints.x-bind.offset", west_offset,
286                              "reactive", TRUE,
287                              NULL);
288       /* turn on the desaturation effect and set the center
289        * rectangle not reactive
290        */
291       clutter_actor_animate (rects[Center], CLUTTER_LINEAR, 500,
292                              "@effects.desaturate.enabled", TRUE,
293                              "reactive", FALSE,
294                              NULL);
295       clutter_actor_animate (rects[East], CLUTTER_EASE_OUT_EXPO, 500,
296                              "opacity", 255,
297                              "@constraints.x-bind.offset", east_offset,
298                              "reactive", TRUE,
299                              NULL);
300
301       clutter_actor_animate (rects[SouthWest], CLUTTER_EASE_OUT_EXPO, 500,
302                              "opacity", 255,
303                              "@constraints.x-bind.offset", west_offset,
304                              "@constraints.y-bind.offset", south_offset,
305                              "reactive", TRUE,
306                              NULL);
307       clutter_actor_animate (rects[South], CLUTTER_EASE_OUT_EXPO, 500,
308                              "opacity", 255,
309                              "@constraints.y-bind.offset", south_offset,
310                              "reactive", TRUE,
311                              NULL);
312       clutter_actor_animate (rects[SouthEast], CLUTTER_EASE_OUT_EXPO, 500,
313                              "opacity", 255,
314                              "@constraints.x-bind.offset", east_offset,
315                              "@constraints.y-bind.offset", south_offset,
316                              "reactive", TRUE,
317                              NULL);
318     }
319   else
320     {
321       gint i;
322
323       clutter_actor_animate (rects[Center], CLUTTER_LINEAR, 500,
324                              "@effects.desaturate.enabled", FALSE,
325                              "reactive", TRUE,
326                              NULL);
327
328       for (i = NorthWest; i &lt; N_RECTS; i++)
329         {
330           if (i == Center)
331             continue;
332
333           /* put the 8 rectangles back into their initial state */
334           clutter_actor_animate (rects[i], CLUTTER_EASE_OUT_EXPO, 500,
335                                  "opacity", 0,
336                                  "@constraints.x-bind.offset", 0.0f,
337                                  "@constraints.y-bind.offset", 0.0f,
338                                  "reactive", FALSE,
339                                  NULL);
340         }
341     }
342
343   is_expanded = !is_expanded;
344
345   g_print ("Selected: [%s]\n", clutter_actor_get_name (actor));
346
347   return TRUE;
348 }
349
350 G_MODULE_EXPORT int
351 test_constraints_main (int argc, char *argv[])
352 {
353   ClutterActor *stage, *rect;
354   ClutterConstraint *constraint;
355   ClutterEffect *effect;
356   ClutterColor rect_color;
357   gint i;
358
359   if (clutter_init (&amp;argc, &amp;argv) != CLUTTER_INIT_SUCCESS)
360     return 1;
361
362   stage = clutter_stage_new ();
363   g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
364   clutter_stage_set_title (CLUTTER_STAGE (stage), "Constraints");
365   clutter_stage_set_user_resizable (CLUTTER_STAGE (stage), TRUE);
366   clutter_actor_set_size (stage, 800, 600);
367
368   /* main rectangle */
369   clutter_color_from_string (&amp;rect_color, "#3465a4");
370   rect = clutter_actor_new ();
371   g_signal_connect (rect, "button-release-event",
372                     G_CALLBACK (on_button_release),
373                     NULL);
374   clutter_actor_set_background_color (rect, &amp;rect_color);
375   clutter_actor_set_size (rect, RECT_SIZE, RECT_SIZE);
376   clutter_actor_set_reactive (rect, TRUE);
377   clutter_actor_set_name (rect, names[Center]);
378   clutter_actor_add_child (stage, rect);
379
380   /* align the center rectangle to the center of the stage */
381   constraint = clutter_align_constraint_new (stage, CLUTTER_ALIGN_BOTH, 0.5);
382   clutter_actor_add_constraint_with_name (rect, "align", constraint);
383
384   /* this is the equivalent of the DesaturateEffect; we cannot animate
385    * the factor because the animation API only understands GObject
386    * properties; so we use the ActorMeta:enabled property to toggle
387    * the shader
388    */
389   effect = clutter_shader_effect_new (CLUTTER_FRAGMENT_SHADER);
390   clutter_shader_effect_set_shader_source (CLUTTER_SHADER_EFFECT (effect),
391                                            desaturare_glsl_shader);
392   clutter_shader_effect_set_uniform (CLUTTER_SHADER_EFFECT (effect),
393                                      "tex", G_TYPE_INT, 1, 0);
394   clutter_shader_effect_set_uniform (CLUTTER_SHADER_EFFECT (effect),
395                                      "factor", G_TYPE_FLOAT, 1, 0.66);
396   clutter_actor_meta_set_enabled (CLUTTER_ACTOR_META (effect), FALSE);
397   clutter_actor_add_effect_with_name (rect, "desaturate", effect);
398
399   rects[Center] = rect;
400
401   /* build the other rectangles, and bind their position and size
402    * to the center rectangle. we are going to animate the offset
403    * of the BindConstraints
404    */
405   for (i = 0; i &lt; N_RECTS; i++)
406     {
407       if (i == Center)
408         continue;
409
410       clutter_color_from_string (&amp;rect_color, colors[i]);
411
412       rect = clutter_actor_new ();
413       clutter_actor_set_background_color (rect, &amp;rect_color);
414       clutter_actor_set_opacity (rect, 0);
415       clutter_actor_set_name (rect, names[i]);
416       clutter_actor_add_child (stage, rect);
417
418       constraint = clutter_bind_constraint_new (rects[Center], CLUTTER_BIND_X, 0.0);
419       clutter_actor_add_constraint_with_name (rect, "x-bind", constraint);
420
421       constraint = clutter_bind_constraint_new (rects[Center], CLUTTER_BIND_Y, 0.0);
422       clutter_actor_add_constraint_with_name (rect, "y-bind", constraint);
423
424       constraint = clutter_bind_constraint_new (rects[Center], CLUTTER_BIND_SIZE, 0.0);
425       clutter_actor_add_constraint_with_name (rect, "size-bind", constraint);
426
427       g_signal_connect (rect, "button-release-event",
428                         G_CALLBACK (on_button_release),
429                         NULL);
430
431       rects[i] = rect;
432     }
433
434   clutter_actor_show (stage);
435
436   clutter_main ();
437
438   return EXIT_SUCCESS;
439 }
440
441 G_MODULE_EXPORT const char *
442 test_constraints_describe (void)
443 {
444   return "Visualize usage of Bind and Align constraints";
445 }
446
447   </pre>
448 <p>The example above creates eight rectangles and binds them to a
449   rectangle positioned in the center of the stage; when the user presses
450   the center rectangle, the <a class="link" href="ClutterBindConstraint.html#ClutterBindConstraint--offset" title='The "offset" property'><span class="type">"offset"</span></a> property is
451   animated through the <a class="link" href="clutter-Implicit-Animations.html#clutter-actor-animate" title="clutter_actor_animate ()"><code class="function">clutter_actor_animate()</code></a> function to lay out the
452   eight rectangles around the center one. Pressing one of the outer
453   rectangles will animate the offset back to 0.</p>
454 </div>
455 </div>
456 <p><br class="example-break">
457 </p>
458 <p>
459 <a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a> is available since Clutter 1.4
460 </p>
461 </div>
462 <div class="refsect1">
463 <a name="ClutterBindConstraint.details"></a><h2>Details</h2>
464 <div class="refsect2">
465 <a name="ClutterBindConstraint-struct"></a><h3>ClutterBindConstraint</h3>
466 <pre class="programlisting">typedef struct _ClutterBindConstraint ClutterBindConstraint;</pre>
467 <p>
468 <span class="structname">ClutterBindConstraint</span> is an opaque structure
469 whose members cannot be directly accessed
470 </p>
471 <p class="since">Since 1.4</p>
472 </div>
473 <hr>
474 <div class="refsect2">
475 <a name="ClutterBindCoordinate"></a><h3>enum ClutterBindCoordinate</h3>
476 <pre class="programlisting">typedef enum {
477  /*&lt; prefix=CLUTTER_BIND &gt;*/
478   CLUTTER_BIND_X,
479   CLUTTER_BIND_Y,
480   CLUTTER_BIND_WIDTH,
481   CLUTTER_BIND_HEIGHT,
482   CLUTTER_BIND_POSITION,
483   CLUTTER_BIND_SIZE,
484   CLUTTER_BIND_ALL
485 } ClutterBindCoordinate;
486 </pre>
487 <p>
488 Specifies which property should be used in a binding
489 </p>
490 <div class="variablelist"><table border="0">
491 <col align="left" valign="top">
492 <tbody>
493 <tr>
494 <td><p><a name="CLUTTER-BIND-X:CAPS"></a><span class="term"><code class="literal">CLUTTER_BIND_X</code></span></p></td>
495 <td>Bind the X coordinate
496 </td>
497 </tr>
498 <tr>
499 <td><p><a name="CLUTTER-BIND-Y:CAPS"></a><span class="term"><code class="literal">CLUTTER_BIND_Y</code></span></p></td>
500 <td>Bind the Y coordinate
501 </td>
502 </tr>
503 <tr>
504 <td><p><a name="CLUTTER-BIND-WIDTH:CAPS"></a><span class="term"><code class="literal">CLUTTER_BIND_WIDTH</code></span></p></td>
505 <td>Bind the width
506 </td>
507 </tr>
508 <tr>
509 <td><p><a name="CLUTTER-BIND-HEIGHT:CAPS"></a><span class="term"><code class="literal">CLUTTER_BIND_HEIGHT</code></span></p></td>
510 <td>Bind the height
511 </td>
512 </tr>
513 <tr>
514 <td><p><a name="CLUTTER-BIND-POSITION:CAPS"></a><span class="term"><code class="literal">CLUTTER_BIND_POSITION</code></span></p></td>
515 <td>Equivalent to to <a class="link" href="ClutterBindConstraint.html#CLUTTER-BIND-X:CAPS"><code class="literal">CLUTTER_BIND_X</code></a> and
516   <a class="link" href="ClutterBindConstraint.html#CLUTTER-BIND-Y:CAPS"><code class="literal">CLUTTER_BIND_Y</code></a> (added in Clutter 1.6)
517 </td>
518 </tr>
519 <tr>
520 <td><p><a name="CLUTTER-BIND-SIZE:CAPS"></a><span class="term"><code class="literal">CLUTTER_BIND_SIZE</code></span></p></td>
521 <td>Equivalent to <a class="link" href="ClutterBindConstraint.html#CLUTTER-BIND-WIDTH:CAPS"><code class="literal">CLUTTER_BIND_WIDTH</code></a> and
522   <a class="link" href="ClutterBindConstraint.html#CLUTTER-BIND-HEIGHT:CAPS"><code class="literal">CLUTTER_BIND_HEIGHT</code></a> (added in Clutter 1.6)
523 </td>
524 </tr>
525 <tr>
526 <td><p><a name="CLUTTER-BIND-ALL:CAPS"></a><span class="term"><code class="literal">CLUTTER_BIND_ALL</code></span></p></td>
527 <td>Equivalent to <a class="link" href="ClutterBindConstraint.html#CLUTTER-BIND-POSITION:CAPS"><code class="literal">CLUTTER_BIND_POSITION</code></a> and
528   <a class="link" href="ClutterBindConstraint.html#CLUTTER-BIND-SIZE:CAPS"><code class="literal">CLUTTER_BIND_SIZE</code></a> (added in Clutter 1.10)
529 </td>
530 </tr>
531 </tbody>
532 </table></div>
533 <p class="since">Since 1.4</p>
534 </div>
535 <hr>
536 <div class="refsect2">
537 <a name="clutter-bind-constraint-new"></a><h3>clutter_bind_constraint_new ()</h3>
538 <pre class="programlisting"><a class="link" href="ClutterConstraint.html" title="ClutterConstraint"><span class="returnvalue">ClutterConstraint</span></a> * clutter_bind_constraint_new         (<em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *source</code></em>,
539                                                          <em class="parameter"><code><a class="link" href="ClutterBindConstraint.html#ClutterBindCoordinate" title="enum ClutterBindCoordinate"><span class="type">ClutterBindCoordinate</span></a> coordinate</code></em>,
540                                                          <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> offset</code></em>);</pre>
541 <p>
542 Creates a new constraint, binding a <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a>'s position to
543 the given <em class="parameter"><code>coordinate</code></em> of the position of <em class="parameter"><code>source</code></em>
544 </p>
545 <div class="variablelist"><table border="0">
546 <col align="left" valign="top">
547 <tbody>
548 <tr>
549 <td><p><span class="term"><em class="parameter"><code>source</code></em> :</span></p></td>
550 <td>the <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> to use as the source of
551 the binding, or <a href="/home/ebassi/gnome3/install/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
552 </td>
553 </tr>
554 <tr>
555 <td><p><span class="term"><em class="parameter"><code>coordinate</code></em> :</span></p></td>
556 <td>the coordinate to bind</td>
557 </tr>
558 <tr>
559 <td><p><span class="term"><em class="parameter"><code>offset</code></em> :</span></p></td>
560 <td>the offset to apply to the binding, in pixels</td>
561 </tr>
562 <tr>
563 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
564 <td>the newly created <a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a>
565 </td>
566 </tr>
567 </tbody>
568 </table></div>
569 <p class="since">Since 1.4</p>
570 </div>
571 <hr>
572 <div class="refsect2">
573 <a name="clutter-bind-constraint-set-source"></a><h3>clutter_bind_constraint_set_source ()</h3>
574 <pre class="programlisting"><span class="returnvalue">void</span>                clutter_bind_constraint_set_source  (<em class="parameter"><code><a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a> *constraint</code></em>,
575                                                          <em class="parameter"><code><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> *source</code></em>);</pre>
576 <p>
577 Sets the source <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> for the constraint
578 </p>
579 <div class="variablelist"><table border="0">
580 <col align="left" valign="top">
581 <tbody>
582 <tr>
583 <td><p><span class="term"><em class="parameter"><code>constraint</code></em> :</span></p></td>
584 <td>a <a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a>
585 </td>
586 </tr>
587 <tr>
588 <td><p><span class="term"><em class="parameter"><code>source</code></em> :</span></p></td>
589 <td>a <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a>, or <a href="/home/ebassi/gnome3/install/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL:CAPS"><code class="literal">NULL</code></a> to unset the source. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
590 </td>
591 </tr>
592 </tbody>
593 </table></div>
594 <p class="since">Since 1.4</p>
595 </div>
596 <hr>
597 <div class="refsect2">
598 <a name="clutter-bind-constraint-get-source"></a><h3>clutter_bind_constraint_get_source ()</h3>
599 <pre class="programlisting"><a class="link" href="ClutterActor.html" title="ClutterActor"><span class="returnvalue">ClutterActor</span></a> *      clutter_bind_constraint_get_source  (<em class="parameter"><code><a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a> *constraint</code></em>);</pre>
600 <p>
601 Retrieves the <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> set using <a class="link" href="ClutterBindConstraint.html#clutter-bind-constraint-set-source" title="clutter_bind_constraint_set_source ()"><code class="function">clutter_bind_constraint_set_source()</code></a>
602 </p>
603 <div class="variablelist"><table border="0">
604 <col align="left" valign="top">
605 <tbody>
606 <tr>
607 <td><p><span class="term"><em class="parameter"><code>constraint</code></em> :</span></p></td>
608 <td>a <a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a>
609 </td>
610 </tr>
611 <tr>
612 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
613 <td>a pointer to the source actor. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
614 </td>
615 </tr>
616 </tbody>
617 </table></div>
618 <p class="since">Since 1.4</p>
619 </div>
620 <hr>
621 <div class="refsect2">
622 <a name="clutter-bind-constraint-set-coordinate"></a><h3>clutter_bind_constraint_set_coordinate ()</h3>
623 <pre class="programlisting"><span class="returnvalue">void</span>                clutter_bind_constraint_set_coordinate
624                                                         (<em class="parameter"><code><a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a> *constraint</code></em>,
625                                                          <em class="parameter"><code><a class="link" href="ClutterBindConstraint.html#ClutterBindCoordinate" title="enum ClutterBindCoordinate"><span class="type">ClutterBindCoordinate</span></a> coordinate</code></em>);</pre>
626 <p>
627 Sets the coordinate to bind in the constraint
628 </p>
629 <div class="variablelist"><table border="0">
630 <col align="left" valign="top">
631 <tbody>
632 <tr>
633 <td><p><span class="term"><em class="parameter"><code>constraint</code></em> :</span></p></td>
634 <td>a <a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a>
635 </td>
636 </tr>
637 <tr>
638 <td><p><span class="term"><em class="parameter"><code>coordinate</code></em> :</span></p></td>
639 <td>the coordinate to bind</td>
640 </tr>
641 </tbody>
642 </table></div>
643 <p class="since">Since 1.4</p>
644 </div>
645 <hr>
646 <div class="refsect2">
647 <a name="clutter-bind-constraint-get-coordinate"></a><h3>clutter_bind_constraint_get_coordinate ()</h3>
648 <pre class="programlisting"><a class="link" href="ClutterBindConstraint.html#ClutterBindCoordinate" title="enum ClutterBindCoordinate"><span class="returnvalue">ClutterBindCoordinate</span></a> clutter_bind_constraint_get_coordinate
649                                                         (<em class="parameter"><code><a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a> *constraint</code></em>);</pre>
650 <p>
651 Retrieves the bound coordinate of the constraint
652 </p>
653 <div class="variablelist"><table border="0">
654 <col align="left" valign="top">
655 <tbody>
656 <tr>
657 <td><p><span class="term"><em class="parameter"><code>constraint</code></em> :</span></p></td>
658 <td>a <a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a>
659 </td>
660 </tr>
661 <tr>
662 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
663 <td>the bound coordinate</td>
664 </tr>
665 </tbody>
666 </table></div>
667 <p class="since">Since 1.4</p>
668 </div>
669 <hr>
670 <div class="refsect2">
671 <a name="clutter-bind-constraint-set-offset"></a><h3>clutter_bind_constraint_set_offset ()</h3>
672 <pre class="programlisting"><span class="returnvalue">void</span>                clutter_bind_constraint_set_offset  (<em class="parameter"><code><a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a> *constraint</code></em>,
673                                                          <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> offset</code></em>);</pre>
674 <p>
675 Sets the offset to be applied to the constraint
676 </p>
677 <div class="variablelist"><table border="0">
678 <col align="left" valign="top">
679 <tbody>
680 <tr>
681 <td><p><span class="term"><em class="parameter"><code>constraint</code></em> :</span></p></td>
682 <td>a <a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a>
683 </td>
684 </tr>
685 <tr>
686 <td><p><span class="term"><em class="parameter"><code>offset</code></em> :</span></p></td>
687 <td>the offset to apply, in pixels</td>
688 </tr>
689 </tbody>
690 </table></div>
691 <p class="since">Since 1.4</p>
692 </div>
693 <hr>
694 <div class="refsect2">
695 <a name="clutter-bind-constraint-get-offset"></a><h3>clutter_bind_constraint_get_offset ()</h3>
696 <pre class="programlisting"><a href="../glib/glib-Basic-Types.html#gfloat"><span class="returnvalue">gfloat</span></a>              clutter_bind_constraint_get_offset  (<em class="parameter"><code><a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a> *constraint</code></em>);</pre>
697 <p>
698 Retrieves the offset set using <a class="link" href="ClutterBindConstraint.html#clutter-bind-constraint-set-offset" title="clutter_bind_constraint_set_offset ()"><code class="function">clutter_bind_constraint_set_offset()</code></a>
699 </p>
700 <div class="variablelist"><table border="0">
701 <col align="left" valign="top">
702 <tbody>
703 <tr>
704 <td><p><span class="term"><em class="parameter"><code>constraint</code></em> :</span></p></td>
705 <td>a <a class="link" href="ClutterBindConstraint.html" title="ClutterBindConstraint"><span class="type">ClutterBindConstraint</span></a>
706 </td>
707 </tr>
708 <tr>
709 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
710 <td>the offset, in pixels</td>
711 </tr>
712 </tbody>
713 </table></div>
714 <p class="since">Since 1.4</p>
715 </div>
716 </div>
717 <div class="refsect1">
718 <a name="ClutterBindConstraint.property-details"></a><h2>Property Details</h2>
719 <div class="refsect2">
720 <a name="ClutterBindConstraint--coordinate"></a><h3>The <code class="literal">"coordinate"</code> property</h3>
721 <pre class="programlisting">  "coordinate"               <a class="link" href="ClutterBindConstraint.html#ClutterBindCoordinate" title="enum ClutterBindCoordinate"><span class="type">ClutterBindCoordinate</span></a>  : Read / Write / Construct</pre>
722 <p>
723 The coordinate to be bound
724 </p>
725 <p>Default value: CLUTTER_BIND_X</p>
726 <p class="since">Since 1.4</p>
727 </div>
728 <hr>
729 <div class="refsect2">
730 <a name="ClutterBindConstraint--offset"></a><h3>The <code class="literal">"offset"</code> property</h3>
731 <pre class="programlisting">  "offset"                   <a href="../glib/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a>                : Read / Write / Construct</pre>
732 <p>
733 The offset, in pixels, to be applied to the binding
734 </p>
735 <p>Default value: 0</p>
736 <p class="since">Since 1.4</p>
737 </div>
738 <hr>
739 <div class="refsect2">
740 <a name="ClutterBindConstraint--source"></a><h3>The <code class="literal">"source"</code> property</h3>
741 <pre class="programlisting">  "source"                   <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a>*         : Read / Write / Construct</pre>
742 <p>
743 The <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> used as the source for the binding.
744 </p>
745 <p>
746 The <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> must not be contained inside the actor associated
747 to the constraint.
748 </p>
749 <p class="since">Since 1.4</p>
750 </div>
751 </div>
752 </div>
753 <div class="footer">
754 <hr>
755           Generated by GTK-Doc V1.18.1</div>
756 </body>
757 </html>