actor: Coalesce needs_[xy]_expand() into one method
[profile/ivi/clutter.git] / clutter / clutter-actor.h
1 /*
2  * Clutter.
3  *
4  * An OpenGL based 'interactive canvas' library.
5  *
6  * Authored By Matthew Allum  <mallum@openedhand.com>
7  *
8  * Copyright (C) 2006, 2007, 2008 OpenedHand Ltd
9  * Copyright (C) 2009, 2010 Intel Corp
10  *
11  * This library is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU Lesser General Public
13  * License as published by the Free Software Foundation; either
14  * version 2 of the License, or (at your option) any later version.
15  *
16  * This library is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19  * Lesser General Public License for more details.
20  *
21  * You should have received a copy of the GNU Lesser General Public
22  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
23  */
24
25 #if !defined(__CLUTTER_H_INSIDE__) && !defined(CLUTTER_COMPILATION)
26 #error "Only <clutter/clutter.h> can be included directly."
27 #endif
28
29 #ifndef __CLUTTER_ACTOR_H__
30 #define __CLUTTER_ACTOR_H__
31
32 /* clutter-actor.h */
33
34 #include <pango/pango.h>
35 #include <atk/atk.h>
36
37 #include <cogl/cogl.h>
38
39 #include <clutter/clutter-types.h>
40 #include <clutter/clutter-event.h>
41
42 G_BEGIN_DECLS
43
44 #define CLUTTER_TYPE_ACTOR              (clutter_actor_get_type ())
45 #define CLUTTER_ACTOR(obj)              (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_ACTOR, ClutterActor))
46 #define CLUTTER_ACTOR_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_ACTOR, ClutterActorClass))
47 #define CLUTTER_IS_ACTOR(obj)           (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_ACTOR))
48 #define CLUTTER_IS_ACTOR_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_ACTOR))
49 #define CLUTTER_ACTOR_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_ACTOR, ClutterActorClass))
50
51 /**
52  * CLUTTER_ACTOR_SET_FLAGS:
53  * @a: a #ClutterActor
54  * @f: the #ClutterActorFlags to set
55  *
56  * Sets the given flags on a #ClutterActor
57  */
58 #define CLUTTER_ACTOR_SET_FLAGS(a,f)    (((ClutterActor*)(a))->flags |= (f))
59
60 /**
61  * CLUTTER_ACTOR_UNSET_FLAGS:
62  * @a: a #ClutterActor
63  * @f: the #ClutterActorFlags to unset
64  *
65  * Unsets the given flags on a #ClutterActor
66  */
67 #define CLUTTER_ACTOR_UNSET_FLAGS(a,f)  (((ClutterActor*)(a))->flags &= ~(f))
68
69 #define CLUTTER_ACTOR_IS_MAPPED(a)      ((((ClutterActor*)(a))->flags & CLUTTER_ACTOR_MAPPED) != FALSE)
70 #define CLUTTER_ACTOR_IS_REALIZED(a)    ((((ClutterActor*)(a))->flags & CLUTTER_ACTOR_REALIZED) != FALSE)
71 #define CLUTTER_ACTOR_IS_VISIBLE(a)     ((((ClutterActor*)(a))->flags & CLUTTER_ACTOR_VISIBLE) != FALSE)
72 #define CLUTTER_ACTOR_IS_REACTIVE(a)    ((((ClutterActor*)(a))->flags & CLUTTER_ACTOR_REACTIVE) != FALSE)
73
74 typedef struct _ClutterActorClass    ClutterActorClass;
75 typedef struct _ClutterActorPrivate  ClutterActorPrivate;
76
77 /**
78  * ClutterCallback:
79  * @actor: a #ClutterActor
80  * @data: (closure): user data
81  *
82  * Generic callback
83  */
84 typedef void (*ClutterCallback) (ClutterActor *actor,
85                                  gpointer      data);
86
87 /**
88  * CLUTTER_CALLBACK
89  * @f: a function
90  *
91  * Convenience macro to cast a function to #ClutterCallback
92  */
93 #define CLUTTER_CALLBACK(f)        ((ClutterCallback) (f))
94
95 /**
96  * ClutterActor:
97  * @flags: #ClutterActorFlags
98  *
99  * Base class for actors.
100  */
101 struct _ClutterActor
102 {
103   /*< private >*/
104   GInitiallyUnowned parent_instance;
105
106   /*< public >*/
107   guint32 flags;
108
109   /*< private >*/
110   guint32 private_flags;
111
112   ClutterActorPrivate *priv;
113 };
114
115 /**
116  * ClutterActorClass:
117  * @show: signal class handler for #ClutterActor::show; it must chain
118  *   up to the parent's implementation
119  * @show_all: virtual function for containers and composite actors, to
120  *   determine which children should be shown when calling
121  *   clutter_actor_show_all() on the actor. Defaults to calling
122  *   clutter_actor_show(). This virtual function is deprecated and it
123  *   should not be overridden.
124  * @hide: signal class handler for #ClutterActor::hide; it must chain
125  *   up to the parent's implementation
126  * @hide_all: virtual function for containers and composite actors, to
127  *   determine which children should be shown when calling
128  *   clutter_actor_hide_all() on the actor. Defaults to calling
129  *   clutter_actor_hide(). This virtual function is deprecated and it
130  *   should not be overridden.
131  * @realize: virtual function, used to allocate resources for the actor;
132  *   it should chain up to the parent's implementation
133  * @unrealize: virtual function, used to deallocate resources allocated
134  *   in ::realize; it should chain up to the parent's implementation
135  * @map: virtual function for containers and composite actors, to
136  *   map their children; it must chain up to the parent's implementation.
137  *   Overriding this function is optional.
138  * @unmap: virtual function for containers and composite actors, to
139  *   unmap their children; it must chain up to the parent's implementation.
140  *   Overriding this function is optional.
141  * @paint: virtual function, used to paint the actor
142  * @get_preferred_width: virtual function, used when querying the minimum
143  *   and natural widths of an actor for a given height; it is used by
144  *   clutter_actor_get_preferred_width()
145  * @get_preferred_height: virtual function, used when querying the minimum
146  *   and natural heights of an actor for a given width; it is used by
147  *   clutter_actor_get_preferred_height()
148  * @allocate: virtual function, used when settings the coordinates of an
149  *   actor; it is used by clutter_actor_allocate(); it must chain up to
150  *   the parent's implementation
151  * @apply_transform: virtual function, used when applying the transformations
152  *   to an actor before painting it or when transforming coordinates or
153  *   the allocation; it must chain up to the parent's implementation
154  * @parent_set: signal class handler for the #ClutterActor::parent-set
155  * @destroy: signal class handler for #ClutterActor::destroy
156  * @pick: virtual function, used to draw an outline of the actor with
157  *   the given color
158  * @queue_redraw: class handler for #ClutterActor::queue-redraw
159  * @event: class handler for #ClutterActor::event
160  * @button_press_event: class handler for #ClutterActor::button-press-event
161  * @button_release_event: class handler for
162  *   #ClutterActor::button-release-event
163  * @scroll_event: signal class closure for #ClutterActor::scroll-event
164  * @key_press_event: signal class closure for #ClutterActor::key-press-event
165  * @key_release_event: signal class closure for
166  *   #ClutterActor::key-release-event
167  * @motion_event: signal class closure for #ClutterActor::motion-event
168  * @enter_event: signal class closure for #ClutterActor::enter-event
169  * @leave_event: signal class closure for #ClutterActor::leave-event
170  * @captured_event: signal class closure for #ClutterActor::captured-event
171  * @key_focus_in: signal class closure for #ClutterActor::key-focus-in
172  * @key_focus_out: signal class closure for #ClutterActor::key-focus-out
173  * @queue_relayout: class handler for #ClutterActor::queue-relayout
174  * @get_accessible: virtual function, returns the accessible object that
175  *   describes the actor to an assistive technology.
176  * @get_paint_volume: virtual function, for sub-classes to define their
177  *   #ClutterPaintVolume
178  * @has_overlaps: virtual function for
179  *   sub-classes to advertise whether they need an offscreen redirect
180  *   to get the correct opacity. See
181  *   clutter_actor_set_offscreen_redirect() for details.
182  * @paint_node: virtual function for creating paint nodes and attaching
183  *   them to the render tree
184  *
185  * Base class for actors.
186  */
187 struct _ClutterActorClass
188 {
189   /*< private >*/
190   GInitiallyUnownedClass parent_class;
191
192   /*< public >*/
193   void (* show)                 (ClutterActor          *self);
194   void (* show_all)             (ClutterActor          *self);
195   void (* hide)                 (ClutterActor          *self);
196   void (* hide_all)             (ClutterActor          *self);
197   void (* realize)              (ClutterActor          *self);
198   void (* unrealize)            (ClutterActor          *self);
199   void (* map)                  (ClutterActor          *self);
200   void (* unmap)                (ClutterActor          *self);
201   void (* paint)                (ClutterActor          *self);
202   void (* parent_set)           (ClutterActor          *actor,
203                                  ClutterActor          *old_parent);
204
205   void (* destroy)              (ClutterActor          *self);
206   void (* pick)                 (ClutterActor          *actor,
207                                  const ClutterColor    *color);
208
209   void (* queue_redraw)         (ClutterActor          *actor,
210                                  ClutterActor          *leaf_that_queued);
211
212   /* size negotiation */
213   void (* get_preferred_width)  (ClutterActor           *self,
214                                  gfloat                  for_height,
215                                  gfloat                 *min_width_p,
216                                  gfloat                 *natural_width_p);
217   void (* get_preferred_height) (ClutterActor           *self,
218                                  gfloat                  for_width,
219                                  gfloat                 *min_height_p,
220                                  gfloat                 *natural_height_p);
221   void (* allocate)             (ClutterActor           *self,
222                                  const ClutterActorBox  *box,
223                                  ClutterAllocationFlags  flags);
224
225   /* transformations */
226   void (* apply_transform)      (ClutterActor           *actor,
227                                  CoglMatrix             *matrix);
228
229   /* event signals */
230   gboolean (* event)                (ClutterActor         *actor,
231                                      ClutterEvent         *event);
232   gboolean (* button_press_event)   (ClutterActor         *actor,
233                                      ClutterButtonEvent   *event);
234   gboolean (* button_release_event) (ClutterActor         *actor,
235                                      ClutterButtonEvent   *event);
236   gboolean (* scroll_event)         (ClutterActor         *actor,
237                                      ClutterScrollEvent   *event);
238   gboolean (* key_press_event)      (ClutterActor         *actor,
239                                      ClutterKeyEvent      *event);
240   gboolean (* key_release_event)    (ClutterActor         *actor,
241                                      ClutterKeyEvent      *event);
242   gboolean (* motion_event)         (ClutterActor         *actor,
243                                      ClutterMotionEvent   *event);
244   gboolean (* enter_event)          (ClutterActor         *actor,
245                                      ClutterCrossingEvent *event);
246   gboolean (* leave_event)          (ClutterActor         *actor,
247                                      ClutterCrossingEvent *event);
248   gboolean (* captured_event)       (ClutterActor         *actor,
249                                      ClutterEvent         *event);
250   void     (* key_focus_in)         (ClutterActor         *actor);
251   void     (* key_focus_out)        (ClutterActor         *actor);
252
253   void     (* queue_relayout)       (ClutterActor         *self);
254
255   /* accessibility support */
256   AtkObject * (* get_accessible)    (ClutterActor         *self);
257
258   gboolean (* get_paint_volume)     (ClutterActor         *actor,
259                                      ClutterPaintVolume   *volume);
260
261   gboolean (* has_overlaps)         (ClutterActor         *self);
262
263   void     (* paint_node)           (ClutterActor         *self,
264                                      ClutterPaintNode     *root);
265
266   /*< private >*/
267   /* padding for future expansion */
268   gpointer _padding_dummy[27];
269 };
270
271 /**
272  * ClutterActorIter:
273  *
274  * An iterator structure that allows to efficiently iterate over a
275  * section of the scene graph.
276  *
277  * The contents of the <structname>ClutterActorIter</structname> structure
278  * are private and should only be accessed using the provided API.
279  *
280  * Since: 1.10
281  */
282 struct _ClutterActorIter
283 {
284   /*< private >*/
285   gpointer CLUTTER_PRIVATE_FIELD (dummy1);
286   gpointer CLUTTER_PRIVATE_FIELD (dummy2);
287   gpointer CLUTTER_PRIVATE_FIELD (dummy3);
288   gint     CLUTTER_PRIVATE_FIELD (dummy4);
289   gpointer CLUTTER_PRIVATE_FIELD (dummy5);
290 };
291
292 GType clutter_actor_get_type (void) G_GNUC_CONST;
293
294 ClutterActor *                  clutter_actor_new                               (void);
295
296 void                            clutter_actor_set_flags                         (ClutterActor                *self,
297                                                                                  ClutterActorFlags            flags);
298 void                            clutter_actor_unset_flags                       (ClutterActor                *self,
299                                                                                  ClutterActorFlags            flags);
300 ClutterActorFlags               clutter_actor_get_flags                         (ClutterActor                *self);
301 void                            clutter_actor_show                              (ClutterActor                *self);
302 void                            clutter_actor_hide                              (ClutterActor                *self);
303 void                            clutter_actor_realize                           (ClutterActor                *self);
304 void                            clutter_actor_unrealize                         (ClutterActor                *self);
305 void                            clutter_actor_map                               (ClutterActor                *self);
306 void                            clutter_actor_unmap                             (ClutterActor                *self);
307 void                            clutter_actor_paint                             (ClutterActor                *self);
308 void                            clutter_actor_continue_paint                    (ClutterActor                *self);
309 void                            clutter_actor_queue_redraw                      (ClutterActor                *self);
310 CLUTTER_AVAILABLE_IN_1_10
311 void                            clutter_actor_queue_redraw_with_clip            (ClutterActor                *self,
312                                                                                  const cairo_rectangle_int_t *clip);
313 void                            clutter_actor_queue_relayout                    (ClutterActor                *self);
314 void                            clutter_actor_destroy                           (ClutterActor                *self);
315 void                            clutter_actor_set_name                          (ClutterActor                *self,
316                                                                                  const gchar                 *name);
317 const gchar *                   clutter_actor_get_name                          (ClutterActor                *self);
318 AtkObject *                     clutter_actor_get_accessible                    (ClutterActor                *self);
319
320 /* Size negotiation */
321 void                            clutter_actor_set_request_mode                  (ClutterActor                *self,
322                                                                                  ClutterRequestMode           mode);
323 ClutterRequestMode              clutter_actor_get_request_mode                  (ClutterActor                *self);
324 void                            clutter_actor_get_preferred_width               (ClutterActor                *self,
325                                                                                  gfloat                       for_height,
326                                                                                  gfloat                      *min_width_p,
327                                                                                  gfloat                      *natural_width_p);
328 void                            clutter_actor_get_preferred_height              (ClutterActor                *self,
329                                                                                  gfloat                       for_width,
330                                                                                  gfloat                      *min_height_p,
331                                                                                  gfloat                      *natural_height_p);
332 void                            clutter_actor_get_preferred_size                (ClutterActor                *self,
333                                                                                  gfloat                      *min_width_p,
334                                                                                  gfloat                      *min_height_p,
335                                                                                  gfloat                      *natural_width_p,
336                                                                                  gfloat                      *natural_height_p);
337 void                            clutter_actor_allocate                          (ClutterActor                *self,
338                                                                                  const ClutterActorBox       *box,
339                                                                                  ClutterAllocationFlags       flags);
340 void                            clutter_actor_allocate_preferred_size           (ClutterActor                *self,
341                                                                                  ClutterAllocationFlags       flags);
342 void                            clutter_actor_allocate_available_size           (ClutterActor                *self,
343                                                                                  gfloat                       x,
344                                                                                  gfloat                       y,
345                                                                                  gfloat                       available_width,
346                                                                                  gfloat                       available_height,
347                                                                                  ClutterAllocationFlags       flags);
348 void                            clutter_actor_allocate_align_fill               (ClutterActor                *self,
349                                                                                  const ClutterActorBox       *box,
350                                                                                  gdouble                      x_align,
351                                                                                  gdouble                      y_align,
352                                                                                  gboolean                     x_fill,
353                                                                                  gboolean                     y_fill,
354                                                                                  ClutterAllocationFlags       flags);
355 void                            clutter_actor_set_allocation                    (ClutterActor                *self,
356                                                                                  const ClutterActorBox       *box,
357                                                                                  ClutterAllocationFlags       flags);
358 void                            clutter_actor_get_allocation_box                (ClutterActor                *self,
359                                                                                  ClutterActorBox             *box);
360 void                            clutter_actor_get_allocation_geometry           (ClutterActor                *self,
361                                                                                  ClutterGeometry             *geom);
362 void                            clutter_actor_get_allocation_vertices           (ClutterActor                *self,
363                                                                                  ClutterActor                *ancestor,
364                                                                                  ClutterVertex                verts[]);
365 gboolean                        clutter_actor_has_allocation                    (ClutterActor                *self);
366 void                            clutter_actor_set_size                          (ClutterActor                *self,
367                                                                                  gfloat                       width,
368                                                                                  gfloat                       height);
369 void                            clutter_actor_get_size                          (ClutterActor                *self,
370                                                                                  gfloat                      *width,
371                                                                                  gfloat                      *height);
372 void                            clutter_actor_set_position                      (ClutterActor                *self,
373                                                                                  gfloat                       x,
374                                                                                  gfloat                       y);
375 void                            clutter_actor_get_position                      (ClutterActor                *self,
376                                                                                  gfloat                      *x,
377                                                                                  gfloat                      *y);
378 gboolean                        clutter_actor_get_fixed_position_set            (ClutterActor                *self);
379 void                            clutter_actor_set_fixed_position_set            (ClutterActor                *self,
380                                                                                  gboolean                     is_set);
381 void                            clutter_actor_move_by                           (ClutterActor                *self,
382                                                                                  gfloat                       dx,
383                                                                                  gfloat                       dy);
384
385 /* Actor geometry */
386 gfloat                          clutter_actor_get_width                         (ClutterActor                *self);
387 gfloat                          clutter_actor_get_height                        (ClutterActor                *self);
388 void                            clutter_actor_set_width                         (ClutterActor                *self,
389                                                                                  gfloat                       width);
390 void                            clutter_actor_set_height                        (ClutterActor                *self,
391                                                                                  gfloat                       height);
392 gfloat                          clutter_actor_get_x                             (ClutterActor                *self);
393 gfloat                          clutter_actor_get_y                             (ClutterActor                *self);
394 void                            clutter_actor_set_x                             (ClutterActor                *self,
395                                                                                  gfloat                       x);
396 void                            clutter_actor_set_y                             (ClutterActor                *self,
397                                                                                  gfloat                       y);
398 void                            clutter_actor_set_depth                         (ClutterActor                *self,
399                                                                                  gfloat                       depth);
400 gfloat                          clutter_actor_get_depth                         (ClutterActor                *self);
401 CLUTTER_AVAILABLE_IN_1_10
402 void                            clutter_actor_set_layout_manager                (ClutterActor                *self,
403                                                                                  ClutterLayoutManager        *manager);
404 CLUTTER_AVAILABLE_IN_1_10
405 ClutterLayoutManager *          clutter_actor_get_layout_manager                (ClutterActor                *self);
406 CLUTTER_AVAILABLE_IN_1_10
407 void                            clutter_actor_set_x_align                       (ClutterActor                *self,
408                                                                                  ClutterActorAlign            x_align);
409 CLUTTER_AVAILABLE_IN_1_10
410 ClutterActorAlign               clutter_actor_get_x_align                       (ClutterActor                *self);
411 CLUTTER_AVAILABLE_IN_1_10
412 void                            clutter_actor_set_y_align                       (ClutterActor                *self,
413                                                                                  ClutterActorAlign            y_align);
414 CLUTTER_AVAILABLE_IN_1_10
415 ClutterActorAlign               clutter_actor_get_y_align                       (ClutterActor                *self);
416 CLUTTER_AVAILABLE_IN_1_10
417 void                            clutter_actor_set_margin_top                    (ClutterActor                *self,
418                                                                                  gfloat                       margin);
419 CLUTTER_AVAILABLE_IN_1_10
420 gfloat                          clutter_actor_get_margin_top                    (ClutterActor                *self);
421 CLUTTER_AVAILABLE_IN_1_10
422 void                            clutter_actor_set_margin_bottom                 (ClutterActor                *self,
423                                                                                  gfloat                       margin);
424 CLUTTER_AVAILABLE_IN_1_10
425 gfloat                          clutter_actor_get_margin_bottom                 (ClutterActor                *self);
426 CLUTTER_AVAILABLE_IN_1_10
427 void                            clutter_actor_set_margin_left                   (ClutterActor                *self,
428                                                                                  gfloat                       margin);
429 CLUTTER_AVAILABLE_IN_1_10
430 gfloat                          clutter_actor_get_margin_left                   (ClutterActor                *self);
431 CLUTTER_AVAILABLE_IN_1_10
432 void                            clutter_actor_set_margin_right                  (ClutterActor                *self,
433                                                                                  gfloat                       margin);
434 CLUTTER_AVAILABLE_IN_1_10
435 gfloat                          clutter_actor_get_margin_right                  (ClutterActor                *self);
436 CLUTTER_AVAILABLE_IN_1_10
437 void                            clutter_actor_set_margin                        (ClutterActor                *self,
438                                                                                  const ClutterMargin         *margin);
439 CLUTTER_AVAILABLE_IN_1_10
440 void                            clutter_actor_get_margin                        (ClutterActor                *self,
441                                                                                  ClutterMargin               *margin);
442 CLUTTER_AVAILABLE_IN_1_12
443 void                            clutter_actor_set_x_expand                      (ClutterActor                *self,
444                                                                                  gboolean                     expand);
445 CLUTTER_AVAILABLE_IN_1_12
446 gboolean                        clutter_actor_get_x_expand                      (ClutterActor                *self);
447 CLUTTER_AVAILABLE_IN_1_12
448 void                            clutter_actor_set_y_expand                      (ClutterActor                *self,
449                                                                                  gboolean                     expand);
450 CLUTTER_AVAILABLE_IN_1_12
451 gboolean                        clutter_actor_get_y_expand                      (ClutterActor                *self);
452 CLUTTER_AVAILABLE_IN_1_12
453 gboolean                        clutter_actor_needs_expand                      (ClutterActor                *self,
454                                                                                  ClutterOrientation           orientation);
455
456 /* Paint */
457 void                            clutter_actor_set_clip                          (ClutterActor                *self,
458                                                                                  gfloat                       xoff,
459                                                                                  gfloat                       yoff,
460                                                                                  gfloat                       width,
461                                                                                  gfloat                       height);
462 void                            clutter_actor_remove_clip                       (ClutterActor               *self);
463 gboolean                        clutter_actor_has_clip                          (ClutterActor               *self);
464 void                            clutter_actor_get_clip                          (ClutterActor               *self,
465                                                                                  gfloat                     *xoff,
466                                                                                  gfloat                     *yoff,
467                                                                                  gfloat                     *width,
468                                                                                  gfloat                     *height);
469 void                            clutter_actor_set_clip_to_allocation            (ClutterActor               *self,
470                                                                                  gboolean                    clip_set);
471 gboolean                        clutter_actor_get_clip_to_allocation            (ClutterActor               *self);
472 void                            clutter_actor_set_opacity                       (ClutterActor               *self,
473                                                                                  guint8                      opacity);
474 guint8                          clutter_actor_get_opacity                       (ClutterActor               *self);
475 guint8                          clutter_actor_get_paint_opacity                 (ClutterActor               *self);
476 gboolean                        clutter_actor_get_paint_visibility              (ClutterActor               *self);
477 void                            clutter_actor_set_offscreen_redirect            (ClutterActor               *self,
478                                                                                  ClutterOffscreenRedirect    redirect);
479 ClutterOffscreenRedirect        clutter_actor_get_offscreen_redirect            (ClutterActor               *self);
480 gboolean                        clutter_actor_should_pick_paint                 (ClutterActor               *self);
481 gboolean                        clutter_actor_is_in_clone_paint                 (ClutterActor               *self);
482 gboolean                        clutter_actor_get_paint_box                     (ClutterActor               *self,
483                                                                                  ClutterActorBox            *box);
484 gboolean                        clutter_actor_has_overlaps                      (ClutterActor               *self);
485
486 /* Content */
487 CLUTTER_AVAILABLE_IN_1_10
488 void                            clutter_actor_set_content                       (ClutterActor               *self,
489                                                                                  ClutterContent             *content);
490 CLUTTER_AVAILABLE_IN_1_10
491 ClutterContent *                clutter_actor_get_content                       (ClutterActor               *self);
492 CLUTTER_AVAILABLE_IN_1_10
493 void                            clutter_actor_set_content_gravity               (ClutterActor               *self,
494                                                                                  ClutterContentGravity       gravity);
495 CLUTTER_AVAILABLE_IN_1_10
496 ClutterContentGravity           clutter_actor_get_content_gravity               (ClutterActor               *self);
497 CLUTTER_AVAILABLE_IN_1_10
498 void                            clutter_actor_set_content_scaling_filters       (ClutterActor               *self,
499                                                                                  ClutterScalingFilter        min_filter,
500                                                                                  ClutterScalingFilter        mag_filter);
501 CLUTTER_AVAILABLE_IN_1_10
502 void                            clutter_actor_get_content_scaling_filters       (ClutterActor               *self,
503                                                                                  ClutterScalingFilter       *min_filter,
504                                                                                  ClutterScalingFilter       *mag_filter);
505 CLUTTER_AVAILABLE_IN_1_10
506 void                            clutter_actor_get_content_box                   (ClutterActor               *self,
507                                                                                  ClutterActorBox            *box);
508 CLUTTER_AVAILABLE_IN_1_10
509 void                            clutter_actor_set_background_color              (ClutterActor               *self,
510                                                                                  const ClutterColor         *color);
511 CLUTTER_AVAILABLE_IN_1_10
512 void                            clutter_actor_get_background_color              (ClutterActor               *self,
513                                                                                  ClutterColor               *color);
514 const ClutterPaintVolume *      clutter_actor_get_paint_volume                  (ClutterActor               *self);
515 const ClutterPaintVolume *      clutter_actor_get_transformed_paint_volume      (ClutterActor               *self,
516                                                                                  ClutterActor               *relative_to_ancestor);
517 CLUTTER_AVAILABLE_IN_1_10
518 const ClutterPaintVolume *      clutter_actor_get_default_paint_volume          (ClutterActor               *self);
519
520 /* Events */
521 void                            clutter_actor_set_reactive                      (ClutterActor               *actor,
522                                                                                  gboolean                    reactive);
523 gboolean                        clutter_actor_get_reactive                      (ClutterActor               *actor);
524 gboolean                        clutter_actor_has_key_focus                     (ClutterActor               *self);
525 void                            clutter_actor_grab_key_focus                    (ClutterActor               *self);
526 gboolean                        clutter_actor_event                             (ClutterActor               *actor,
527                                                                                  ClutterEvent               *event,
528                                                                                  gboolean                    capture);
529 gboolean                        clutter_actor_has_pointer                       (ClutterActor               *self);
530
531 /* Text */
532 PangoContext *                  clutter_actor_get_pango_context                 (ClutterActor               *self);
533 PangoContext *                  clutter_actor_create_pango_context              (ClutterActor               *self);
534 PangoLayout *                   clutter_actor_create_pango_layout               (ClutterActor               *self,
535                                                                                  const gchar                *text);
536 void                            clutter_actor_set_text_direction                (ClutterActor               *self,
537                                                                                  ClutterTextDirection        text_dir);
538 ClutterTextDirection            clutter_actor_get_text_direction                (ClutterActor               *self);
539
540 /* Actor hierarchy */
541 CLUTTER_AVAILABLE_IN_1_10
542 void                            clutter_actor_add_child                         (ClutterActor               *self,
543                                                                                  ClutterActor               *child);
544 CLUTTER_AVAILABLE_IN_1_10
545 void                            clutter_actor_insert_child_at_index             (ClutterActor               *self,
546                                                                                  ClutterActor               *child,
547                                                                                  gint                        index_);
548 CLUTTER_AVAILABLE_IN_1_10
549 void                            clutter_actor_insert_child_above                (ClutterActor               *self,
550                                                                                  ClutterActor               *child,
551                                                                                  ClutterActor               *sibling);
552 CLUTTER_AVAILABLE_IN_1_10
553 void                            clutter_actor_insert_child_below                (ClutterActor               *self,
554                                                                                  ClutterActor               *child,
555                                                                                  ClutterActor               *sibling);
556 CLUTTER_AVAILABLE_IN_1_10
557 void                            clutter_actor_replace_child                     (ClutterActor               *self,
558                                                                                  ClutterActor               *old_child,
559                                                                                  ClutterActor               *new_child);
560 CLUTTER_AVAILABLE_IN_1_10
561 void                            clutter_actor_remove_child                      (ClutterActor               *self,
562                                                                                  ClutterActor               *child);
563 CLUTTER_AVAILABLE_IN_1_10
564 void                            clutter_actor_remove_all_children               (ClutterActor               *self);
565 CLUTTER_AVAILABLE_IN_1_10
566 void                            clutter_actor_destroy_all_children              (ClutterActor               *self);
567 CLUTTER_AVAILABLE_IN_1_10
568 GList *                         clutter_actor_get_children                      (ClutterActor               *self);
569 CLUTTER_AVAILABLE_IN_1_10
570 gint                            clutter_actor_get_n_children                    (ClutterActor               *self);
571 CLUTTER_AVAILABLE_IN_1_10
572 ClutterActor *                  clutter_actor_get_child_at_index                (ClutterActor               *self,
573                                                                                  gint                        index_);
574 CLUTTER_AVAILABLE_IN_1_10
575 ClutterActor *                  clutter_actor_get_previous_sibling              (ClutterActor               *self);
576 CLUTTER_AVAILABLE_IN_1_10
577 ClutterActor *                  clutter_actor_get_next_sibling                  (ClutterActor               *self);
578 CLUTTER_AVAILABLE_IN_1_10
579 ClutterActor *                  clutter_actor_get_first_child                   (ClutterActor               *self);
580 CLUTTER_AVAILABLE_IN_1_10
581 ClutterActor *                  clutter_actor_get_last_child                    (ClutterActor               *self);
582 ClutterActor *                  clutter_actor_get_parent                        (ClutterActor               *self);
583 gboolean                        clutter_actor_contains                          (ClutterActor               *self,
584                                                                                  ClutterActor               *descendant);
585 ClutterActor*                   clutter_actor_get_stage                         (ClutterActor               *actor);
586 CLUTTER_AVAILABLE_IN_1_10
587 void                            clutter_actor_set_child_below_sibling           (ClutterActor               *self,
588                                                                                  ClutterActor               *child,
589                                                                                  ClutterActor               *sibling);
590 CLUTTER_AVAILABLE_IN_1_10
591 void                            clutter_actor_set_child_above_sibling           (ClutterActor               *self,
592                                                                                  ClutterActor               *child,
593                                                                                  ClutterActor               *sibling);
594 CLUTTER_AVAILABLE_IN_1_10
595 void                            clutter_actor_set_child_at_index                (ClutterActor               *self,
596                                                                                  ClutterActor               *child,
597                                                                                  gint                        index_);
598 CLUTTER_AVAILABLE_IN_1_10
599 void                            clutter_actor_iter_init                         (ClutterActorIter           *iter,
600                                                                                  ClutterActor               *root);
601 CLUTTER_AVAILABLE_IN_1_10
602 gboolean                        clutter_actor_iter_next                         (ClutterActorIter           *iter,
603                                                                                  ClutterActor              **child);
604 CLUTTER_AVAILABLE_IN_1_10
605 gboolean                        clutter_actor_iter_prev                         (ClutterActorIter           *iter,
606                                                                                  ClutterActor              **child);
607 CLUTTER_AVAILABLE_IN_1_10
608 void                            clutter_actor_iter_remove                       (ClutterActorIter           *iter);
609 CLUTTER_AVAILABLE_IN_1_10
610 void                            clutter_actor_iter_destroy                      (ClutterActorIter           *iter);
611
612 /* Transformations */
613 gboolean                        clutter_actor_is_rotated                        (ClutterActor               *self);
614 gboolean                        clutter_actor_is_scaled                         (ClutterActor               *self);
615 void                            clutter_actor_set_rotation                      (ClutterActor               *self,
616                                                                                  ClutterRotateAxis           axis,
617                                                                                  gdouble                     angle,
618                                                                                  gfloat                      x,
619                                                                                  gfloat                      y,
620                                                                                  gfloat                      z);
621 void                            clutter_actor_set_z_rotation_from_gravity       (ClutterActor               *self,
622                                                                                  gdouble                     angle,
623                                                                                  ClutterGravity              gravity);
624 gdouble                         clutter_actor_get_rotation                      (ClutterActor               *self,
625                                                                                  ClutterRotateAxis           axis,
626                                                                                  gfloat                     *x,
627                                                                                  gfloat                     *y,
628                                                                                  gfloat                     *z);
629 ClutterGravity                  clutter_actor_get_z_rotation_gravity            (ClutterActor               *self);
630 void                            clutter_actor_set_scale                         (ClutterActor               *self,
631                                                                                  gdouble                     scale_x,
632                                                                                  gdouble                     scale_y);
633 void                            clutter_actor_set_scale_full                    (ClutterActor               *self,
634                                                                                  gdouble                     scale_x,
635                                                                                  gdouble                     scale_y,
636                                                                                  gfloat                      center_x,
637                                                                                  gfloat                      center_y);
638 void                            clutter_actor_set_scale_with_gravity            (ClutterActor               *self,
639                                                                                  gdouble                     scale_x,
640                                                                                  gdouble                     scale_y,
641                                                                                  ClutterGravity              gravity);
642 void                            clutter_actor_get_scale                         (ClutterActor               *self,
643                                                                                  gdouble                    *scale_x,
644                                                                                  gdouble                    *scale_y);
645 void                            clutter_actor_get_scale_center                  (ClutterActor               *self,
646                                                                                  gfloat                     *center_x,
647                                                                                  gfloat                     *center_y);
648 ClutterGravity                  clutter_actor_get_scale_gravity                 (ClutterActor               *self);
649 void                            clutter_actor_set_anchor_point                  (ClutterActor               *self,
650                                                                                  gfloat                      anchor_x,
651                                                                                  gfloat                      anchor_y);
652 void                            clutter_actor_move_anchor_point                 (ClutterActor               *self,
653                                                                                  gfloat                      anchor_x,
654                                                                                  gfloat                      anchor_y);
655 void                            clutter_actor_get_anchor_point                  (ClutterActor               *self,
656                                                                                  gfloat                     *anchor_x,
657                                                                                  gfloat                     *anchor_y);
658 ClutterGravity                  clutter_actor_get_anchor_point_gravity          (ClutterActor               *self);
659 void                            clutter_actor_set_anchor_point_from_gravity     (ClutterActor               *self,
660                                                                                  ClutterGravity              gravity);
661 void                            clutter_actor_move_anchor_point_from_gravity    (ClutterActor               *self,
662                                                                                  ClutterGravity              gravity);
663 void                            clutter_actor_get_transformed_position          (ClutterActor               *self,
664                                                                                  gfloat                     *x,
665                                                                                  gfloat                     *y);
666 void                            clutter_actor_get_transformed_size              (ClutterActor               *self,
667                                                                                  gfloat                     *width,
668                                                                                  gfloat                     *height);
669 gboolean                        clutter_actor_transform_stage_point             (ClutterActor               *self,
670                                                                                  gfloat                      x,
671                                                                                  gfloat                      y,
672                                                                                  gfloat                     *x_out,
673                                                                                  gfloat                     *y_out);
674 void                            clutter_actor_get_abs_allocation_vertices       (ClutterActor               *self,
675                                                                                  ClutterVertex               verts[]);
676 void                            clutter_actor_apply_transform_to_point          (ClutterActor               *self,
677                                                                                  const ClutterVertex        *point,
678                                                                                  ClutterVertex              *vertex);
679 void                            clutter_actor_apply_relative_transform_to_point (ClutterActor               *self,
680                                                                                  ClutterActor               *ancestor,
681                                                                                  const ClutterVertex        *point,
682                                                                                  ClutterVertex              *vertex);
683 void                            clutter_actor_get_transformation_matrix         (ClutterActor               *self,
684                                                                                  CoglMatrix                 *matrix);
685
686 /* Implicit animations */
687 CLUTTER_AVAILABLE_IN_1_10
688 void                            clutter_actor_save_easing_state                 (ClutterActor               *self);
689 CLUTTER_AVAILABLE_IN_1_10
690 void                            clutter_actor_restore_easing_state              (ClutterActor               *self);
691 CLUTTER_AVAILABLE_IN_1_10
692 void                            clutter_actor_set_easing_mode                   (ClutterActor               *self,
693                                                                                  ClutterAnimationMode        mode);
694 CLUTTER_AVAILABLE_IN_1_10
695 ClutterAnimationMode            clutter_actor_get_easing_mode                   (ClutterActor               *self);
696 CLUTTER_AVAILABLE_IN_1_10
697 void                            clutter_actor_set_easing_duration               (ClutterActor               *self,
698                                                                                  guint                       msecs);
699 CLUTTER_AVAILABLE_IN_1_10
700 guint                           clutter_actor_get_easing_duration               (ClutterActor               *self);
701 CLUTTER_AVAILABLE_IN_1_10
702 void                            clutter_actor_set_easing_delay                  (ClutterActor               *self,
703                                                                                  guint                       msecs);
704 CLUTTER_AVAILABLE_IN_1_10
705 guint                           clutter_actor_get_easing_delay                  (ClutterActor               *self);
706 CLUTTER_AVAILABLE_IN_1_10
707 ClutterTransition *             clutter_actor_get_transition                    (ClutterActor               *self,
708                                                                                  const char                 *name);
709 CLUTTER_AVAILABLE_IN_1_10
710 void                            clutter_actor_add_transition                    (ClutterActor               *self,
711                                                                                  const char                 *name,
712                                                                                  ClutterTransition          *transition);
713 CLUTTER_AVAILABLE_IN_1_10
714 void                            clutter_actor_remove_transition                 (ClutterActor               *self,
715                                                                                  const char                 *name);
716 CLUTTER_AVAILABLE_IN_1_10
717 void                            clutter_actor_remove_all_transitions            (ClutterActor               *self);
718
719 G_END_DECLS
720
721 #endif /* __CLUTTER_ACTOR_H__ */