4 * An OpenGL based 'interactive canvas' library.
6 * Authored By Matthew Allum <mallum@openedhand.com>
8 * Copyright (C) 2006, 2007, 2008 OpenedHand Ltd
9 * Copyright (C) 2009, 2010 Intel Corp
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.
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.
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/>.
25 #if !defined(__CLUTTER_H_INSIDE__) && !defined(CLUTTER_COMPILATION)
26 #error "Only <clutter/clutter.h> can be included directly."
29 #ifndef __CLUTTER_ACTOR_H__
30 #define __CLUTTER_ACTOR_H__
34 #include <pango/pango.h>
37 #include <cogl/cogl.h>
39 #include <clutter/clutter-types.h>
40 #include <clutter/clutter-event.h>
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))
52 * CLUTTER_ACTOR_SET_FLAGS:
54 * @f: the #ClutterActorFlags to set
56 * Sets the given flags on a #ClutterActor
58 #define CLUTTER_ACTOR_SET_FLAGS(a,f) (((ClutterActor*)(a))->flags |= (f))
61 * CLUTTER_ACTOR_UNSET_FLAGS:
63 * @f: the #ClutterActorFlags to unset
65 * Unsets the given flags on a #ClutterActor
67 #define CLUTTER_ACTOR_UNSET_FLAGS(a,f) (((ClutterActor*)(a))->flags &= ~(f))
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)
74 typedef struct _ClutterActorClass ClutterActorClass;
75 typedef struct _ClutterActorPrivate ClutterActorPrivate;
79 * @actor: a #ClutterActor
80 * @data: (closure): user data
84 typedef void (*ClutterCallback) (ClutterActor *actor,
91 * Convenience macro to cast a function to #ClutterCallback
93 #define CLUTTER_CALLBACK(f) ((ClutterCallback) (f))
97 * @flags: #ClutterActorFlags
99 * Base class for actors.
104 GInitiallyUnowned parent_instance;
110 guint32 private_flags;
112 ClutterActorPrivate *priv;
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
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
185 * Base class for actors.
187 struct _ClutterActorClass
190 GInitiallyUnownedClass parent_class;
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);
205 void (* destroy) (ClutterActor *self);
206 void (* pick) (ClutterActor *actor,
207 const ClutterColor *color);
209 void (* queue_redraw) (ClutterActor *actor,
210 ClutterActor *leaf_that_queued);
212 /* size negotiation */
213 void (* get_preferred_width) (ClutterActor *self,
216 gfloat *natural_width_p);
217 void (* get_preferred_height) (ClutterActor *self,
219 gfloat *min_height_p,
220 gfloat *natural_height_p);
221 void (* allocate) (ClutterActor *self,
222 const ClutterActorBox *box,
223 ClutterAllocationFlags flags);
225 /* transformations */
226 void (* apply_transform) (ClutterActor *actor,
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);
253 void (* queue_relayout) (ClutterActor *self);
255 /* accessibility support */
256 AtkObject * (* get_accessible) (ClutterActor *self);
258 gboolean (* get_paint_volume) (ClutterActor *actor,
259 ClutterPaintVolume *volume);
261 gboolean (* has_overlaps) (ClutterActor *self);
263 void (* paint_node) (ClutterActor *self,
264 ClutterPaintNode *root);
267 /* padding for future expansion */
268 gpointer _padding_dummy[27];
274 * An iterator structure that allows to efficiently iterate over a
275 * section of the scene graph.
277 * The contents of the <structname>ClutterActorIter</structname> structure
278 * are private and should only be accessed using the provided API.
282 struct _ClutterActorIter
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);
292 GType clutter_actor_get_type (void) G_GNUC_CONST;
294 ClutterActor * clutter_actor_new (void);
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,
317 const gchar * clutter_actor_get_name (ClutterActor *self);
318 AtkObject * clutter_actor_get_accessible (ClutterActor *self);
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,
327 gfloat *natural_width_p);
328 void clutter_actor_get_preferred_height (ClutterActor *self,
330 gfloat *min_height_p,
331 gfloat *natural_height_p);
332 void clutter_actor_get_preferred_size (ClutterActor *self,
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,
345 gfloat available_width,
346 gfloat available_height,
347 ClutterAllocationFlags flags);
348 void clutter_actor_allocate_align_fill (ClutterActor *self,
349 const ClutterActorBox *box,
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,
369 void clutter_actor_get_size (ClutterActor *self,
372 void clutter_actor_set_position (ClutterActor *self,
375 void clutter_actor_get_position (ClutterActor *self,
378 gboolean clutter_actor_get_fixed_position_set (ClutterActor *self);
379 void clutter_actor_set_fixed_position_set (ClutterActor *self,
381 void clutter_actor_move_by (ClutterActor *self,
386 gfloat clutter_actor_get_width (ClutterActor *self);
387 gfloat clutter_actor_get_height (ClutterActor *self);
388 void clutter_actor_set_width (ClutterActor *self,
390 void clutter_actor_set_height (ClutterActor *self,
392 gfloat clutter_actor_get_x (ClutterActor *self);
393 gfloat clutter_actor_get_y (ClutterActor *self);
394 void clutter_actor_set_x (ClutterActor *self,
396 void clutter_actor_set_y (ClutterActor *self,
398 void clutter_actor_set_depth (ClutterActor *self,
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,
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,
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,
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,
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,
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,
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_x_expand (ClutterActor *self);
454 CLUTTER_AVAILABLE_IN_1_12
455 gboolean clutter_actor_needs_y_expand (ClutterActor *self);
458 void clutter_actor_set_clip (ClutterActor *self,
463 void clutter_actor_remove_clip (ClutterActor *self);
464 gboolean clutter_actor_has_clip (ClutterActor *self);
465 void clutter_actor_get_clip (ClutterActor *self,
470 void clutter_actor_set_clip_to_allocation (ClutterActor *self,
472 gboolean clutter_actor_get_clip_to_allocation (ClutterActor *self);
473 void clutter_actor_set_opacity (ClutterActor *self,
475 guint8 clutter_actor_get_opacity (ClutterActor *self);
476 guint8 clutter_actor_get_paint_opacity (ClutterActor *self);
477 gboolean clutter_actor_get_paint_visibility (ClutterActor *self);
478 void clutter_actor_set_offscreen_redirect (ClutterActor *self,
479 ClutterOffscreenRedirect redirect);
480 ClutterOffscreenRedirect clutter_actor_get_offscreen_redirect (ClutterActor *self);
481 gboolean clutter_actor_should_pick_paint (ClutterActor *self);
482 gboolean clutter_actor_is_in_clone_paint (ClutterActor *self);
483 gboolean clutter_actor_get_paint_box (ClutterActor *self,
484 ClutterActorBox *box);
485 gboolean clutter_actor_has_overlaps (ClutterActor *self);
488 CLUTTER_AVAILABLE_IN_1_10
489 void clutter_actor_set_content (ClutterActor *self,
490 ClutterContent *content);
491 CLUTTER_AVAILABLE_IN_1_10
492 ClutterContent * clutter_actor_get_content (ClutterActor *self);
493 CLUTTER_AVAILABLE_IN_1_10
494 void clutter_actor_set_content_gravity (ClutterActor *self,
495 ClutterContentGravity gravity);
496 CLUTTER_AVAILABLE_IN_1_10
497 ClutterContentGravity clutter_actor_get_content_gravity (ClutterActor *self);
498 CLUTTER_AVAILABLE_IN_1_10
499 void clutter_actor_set_content_scaling_filters (ClutterActor *self,
500 ClutterScalingFilter min_filter,
501 ClutterScalingFilter mag_filter);
502 CLUTTER_AVAILABLE_IN_1_10
503 void clutter_actor_get_content_scaling_filters (ClutterActor *self,
504 ClutterScalingFilter *min_filter,
505 ClutterScalingFilter *mag_filter);
506 CLUTTER_AVAILABLE_IN_1_10
507 void clutter_actor_get_content_box (ClutterActor *self,
508 ClutterActorBox *box);
509 CLUTTER_AVAILABLE_IN_1_10
510 void clutter_actor_set_background_color (ClutterActor *self,
511 const ClutterColor *color);
512 CLUTTER_AVAILABLE_IN_1_10
513 void clutter_actor_get_background_color (ClutterActor *self,
514 ClutterColor *color);
515 const ClutterPaintVolume * clutter_actor_get_paint_volume (ClutterActor *self);
516 const ClutterPaintVolume * clutter_actor_get_transformed_paint_volume (ClutterActor *self,
517 ClutterActor *relative_to_ancestor);
518 CLUTTER_AVAILABLE_IN_1_10
519 const ClutterPaintVolume * clutter_actor_get_default_paint_volume (ClutterActor *self);
522 void clutter_actor_set_reactive (ClutterActor *actor,
524 gboolean clutter_actor_get_reactive (ClutterActor *actor);
525 gboolean clutter_actor_has_key_focus (ClutterActor *self);
526 void clutter_actor_grab_key_focus (ClutterActor *self);
527 gboolean clutter_actor_event (ClutterActor *actor,
530 gboolean clutter_actor_has_pointer (ClutterActor *self);
533 PangoContext * clutter_actor_get_pango_context (ClutterActor *self);
534 PangoContext * clutter_actor_create_pango_context (ClutterActor *self);
535 PangoLayout * clutter_actor_create_pango_layout (ClutterActor *self,
537 void clutter_actor_set_text_direction (ClutterActor *self,
538 ClutterTextDirection text_dir);
539 ClutterTextDirection clutter_actor_get_text_direction (ClutterActor *self);
541 /* Actor hierarchy */
542 CLUTTER_AVAILABLE_IN_1_10
543 void clutter_actor_add_child (ClutterActor *self,
544 ClutterActor *child);
545 CLUTTER_AVAILABLE_IN_1_10
546 void clutter_actor_insert_child_at_index (ClutterActor *self,
549 CLUTTER_AVAILABLE_IN_1_10
550 void clutter_actor_insert_child_above (ClutterActor *self,
552 ClutterActor *sibling);
553 CLUTTER_AVAILABLE_IN_1_10
554 void clutter_actor_insert_child_below (ClutterActor *self,
556 ClutterActor *sibling);
557 CLUTTER_AVAILABLE_IN_1_10
558 void clutter_actor_replace_child (ClutterActor *self,
559 ClutterActor *old_child,
560 ClutterActor *new_child);
561 CLUTTER_AVAILABLE_IN_1_10
562 void clutter_actor_remove_child (ClutterActor *self,
563 ClutterActor *child);
564 CLUTTER_AVAILABLE_IN_1_10
565 void clutter_actor_remove_all_children (ClutterActor *self);
566 CLUTTER_AVAILABLE_IN_1_10
567 void clutter_actor_destroy_all_children (ClutterActor *self);
568 CLUTTER_AVAILABLE_IN_1_10
569 GList * clutter_actor_get_children (ClutterActor *self);
570 CLUTTER_AVAILABLE_IN_1_10
571 gint clutter_actor_get_n_children (ClutterActor *self);
572 CLUTTER_AVAILABLE_IN_1_10
573 ClutterActor * clutter_actor_get_child_at_index (ClutterActor *self,
575 CLUTTER_AVAILABLE_IN_1_10
576 ClutterActor * clutter_actor_get_previous_sibling (ClutterActor *self);
577 CLUTTER_AVAILABLE_IN_1_10
578 ClutterActor * clutter_actor_get_next_sibling (ClutterActor *self);
579 CLUTTER_AVAILABLE_IN_1_10
580 ClutterActor * clutter_actor_get_first_child (ClutterActor *self);
581 CLUTTER_AVAILABLE_IN_1_10
582 ClutterActor * clutter_actor_get_last_child (ClutterActor *self);
583 ClutterActor * clutter_actor_get_parent (ClutterActor *self);
584 gboolean clutter_actor_contains (ClutterActor *self,
585 ClutterActor *descendant);
586 ClutterActor* clutter_actor_get_stage (ClutterActor *actor);
587 CLUTTER_AVAILABLE_IN_1_10
588 void clutter_actor_set_child_below_sibling (ClutterActor *self,
590 ClutterActor *sibling);
591 CLUTTER_AVAILABLE_IN_1_10
592 void clutter_actor_set_child_above_sibling (ClutterActor *self,
594 ClutterActor *sibling);
595 CLUTTER_AVAILABLE_IN_1_10
596 void clutter_actor_set_child_at_index (ClutterActor *self,
599 CLUTTER_AVAILABLE_IN_1_10
600 void clutter_actor_iter_init (ClutterActorIter *iter,
602 CLUTTER_AVAILABLE_IN_1_10
603 gboolean clutter_actor_iter_next (ClutterActorIter *iter,
604 ClutterActor **child);
605 CLUTTER_AVAILABLE_IN_1_10
606 gboolean clutter_actor_iter_prev (ClutterActorIter *iter,
607 ClutterActor **child);
608 CLUTTER_AVAILABLE_IN_1_10
609 void clutter_actor_iter_remove (ClutterActorIter *iter);
610 CLUTTER_AVAILABLE_IN_1_10
611 void clutter_actor_iter_destroy (ClutterActorIter *iter);
613 /* Transformations */
614 gboolean clutter_actor_is_rotated (ClutterActor *self);
615 gboolean clutter_actor_is_scaled (ClutterActor *self);
616 void clutter_actor_set_rotation (ClutterActor *self,
617 ClutterRotateAxis axis,
622 void clutter_actor_set_z_rotation_from_gravity (ClutterActor *self,
624 ClutterGravity gravity);
625 gdouble clutter_actor_get_rotation (ClutterActor *self,
626 ClutterRotateAxis axis,
630 ClutterGravity clutter_actor_get_z_rotation_gravity (ClutterActor *self);
631 void clutter_actor_set_scale (ClutterActor *self,
634 void clutter_actor_set_scale_full (ClutterActor *self,
639 void clutter_actor_set_scale_with_gravity (ClutterActor *self,
642 ClutterGravity gravity);
643 void clutter_actor_get_scale (ClutterActor *self,
646 void clutter_actor_get_scale_center (ClutterActor *self,
649 ClutterGravity clutter_actor_get_scale_gravity (ClutterActor *self);
650 void clutter_actor_set_anchor_point (ClutterActor *self,
653 void clutter_actor_move_anchor_point (ClutterActor *self,
656 void clutter_actor_get_anchor_point (ClutterActor *self,
659 ClutterGravity clutter_actor_get_anchor_point_gravity (ClutterActor *self);
660 void clutter_actor_set_anchor_point_from_gravity (ClutterActor *self,
661 ClutterGravity gravity);
662 void clutter_actor_move_anchor_point_from_gravity (ClutterActor *self,
663 ClutterGravity gravity);
664 void clutter_actor_get_transformed_position (ClutterActor *self,
667 void clutter_actor_get_transformed_size (ClutterActor *self,
670 gboolean clutter_actor_transform_stage_point (ClutterActor *self,
675 void clutter_actor_get_abs_allocation_vertices (ClutterActor *self,
676 ClutterVertex verts[]);
677 void clutter_actor_apply_transform_to_point (ClutterActor *self,
678 const ClutterVertex *point,
679 ClutterVertex *vertex);
680 void clutter_actor_apply_relative_transform_to_point (ClutterActor *self,
681 ClutterActor *ancestor,
682 const ClutterVertex *point,
683 ClutterVertex *vertex);
684 void clutter_actor_get_transformation_matrix (ClutterActor *self,
687 /* Implicit animations */
688 CLUTTER_AVAILABLE_IN_1_10
689 void clutter_actor_save_easing_state (ClutterActor *self);
690 CLUTTER_AVAILABLE_IN_1_10
691 void clutter_actor_restore_easing_state (ClutterActor *self);
692 CLUTTER_AVAILABLE_IN_1_10
693 void clutter_actor_set_easing_mode (ClutterActor *self,
694 ClutterAnimationMode mode);
695 CLUTTER_AVAILABLE_IN_1_10
696 ClutterAnimationMode clutter_actor_get_easing_mode (ClutterActor *self);
697 CLUTTER_AVAILABLE_IN_1_10
698 void clutter_actor_set_easing_duration (ClutterActor *self,
700 CLUTTER_AVAILABLE_IN_1_10
701 guint clutter_actor_get_easing_duration (ClutterActor *self);
702 CLUTTER_AVAILABLE_IN_1_10
703 void clutter_actor_set_easing_delay (ClutterActor *self,
705 CLUTTER_AVAILABLE_IN_1_10
706 guint clutter_actor_get_easing_delay (ClutterActor *self);
707 CLUTTER_AVAILABLE_IN_1_10
708 ClutterTransition * clutter_actor_get_transition (ClutterActor *self,
710 CLUTTER_AVAILABLE_IN_1_10
711 void clutter_actor_add_transition (ClutterActor *self,
713 ClutterTransition *transition);
714 CLUTTER_AVAILABLE_IN_1_10
715 void clutter_actor_remove_transition (ClutterActor *self,
717 CLUTTER_AVAILABLE_IN_1_10
718 void clutter_actor_remove_all_transitions (ClutterActor *self);
722 #endif /* __CLUTTER_ACTOR_H__ */