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);
444 void clutter_actor_set_clip (ClutterActor *self,
449 void clutter_actor_remove_clip (ClutterActor *self);
450 gboolean clutter_actor_has_clip (ClutterActor *self);
451 void clutter_actor_get_clip (ClutterActor *self,
456 void clutter_actor_set_clip_to_allocation (ClutterActor *self,
458 gboolean clutter_actor_get_clip_to_allocation (ClutterActor *self);
459 void clutter_actor_set_opacity (ClutterActor *self,
461 guint8 clutter_actor_get_opacity (ClutterActor *self);
462 guint8 clutter_actor_get_paint_opacity (ClutterActor *self);
463 gboolean clutter_actor_get_paint_visibility (ClutterActor *self);
464 void clutter_actor_set_offscreen_redirect (ClutterActor *self,
465 ClutterOffscreenRedirect redirect);
466 ClutterOffscreenRedirect clutter_actor_get_offscreen_redirect (ClutterActor *self);
467 gboolean clutter_actor_should_pick_paint (ClutterActor *self);
468 gboolean clutter_actor_is_in_clone_paint (ClutterActor *self);
469 gboolean clutter_actor_get_paint_box (ClutterActor *self,
470 ClutterActorBox *box);
471 gboolean clutter_actor_has_overlaps (ClutterActor *self);
474 CLUTTER_AVAILABLE_IN_1_10
475 void clutter_actor_set_content (ClutterActor *self,
476 ClutterContent *content);
477 CLUTTER_AVAILABLE_IN_1_10
478 ClutterContent * clutter_actor_get_content (ClutterActor *self);
479 CLUTTER_AVAILABLE_IN_1_10
480 void clutter_actor_set_content_gravity (ClutterActor *self,
481 ClutterContentGravity gravity);
482 CLUTTER_AVAILABLE_IN_1_10
483 ClutterContentGravity clutter_actor_get_content_gravity (ClutterActor *self);
484 CLUTTER_AVAILABLE_IN_1_10
485 void clutter_actor_set_content_scaling_filters (ClutterActor *self,
486 ClutterScalingFilter min_filter,
487 ClutterScalingFilter mag_filter);
488 CLUTTER_AVAILABLE_IN_1_10
489 void clutter_actor_get_content_scaling_filters (ClutterActor *self,
490 ClutterScalingFilter *min_filter,
491 ClutterScalingFilter *mag_filter);
492 CLUTTER_AVAILABLE_IN_1_10
493 void clutter_actor_get_content_box (ClutterActor *self,
494 ClutterActorBox *box);
495 CLUTTER_AVAILABLE_IN_1_10
496 void clutter_actor_set_background_color (ClutterActor *self,
497 const ClutterColor *color);
498 CLUTTER_AVAILABLE_IN_1_10
499 void clutter_actor_get_background_color (ClutterActor *self,
500 ClutterColor *color);
501 const ClutterPaintVolume * clutter_actor_get_paint_volume (ClutterActor *self);
502 const ClutterPaintVolume * clutter_actor_get_transformed_paint_volume (ClutterActor *self,
503 ClutterActor *relative_to_ancestor);
504 CLUTTER_AVAILABLE_IN_1_10
505 const ClutterPaintVolume * clutter_actor_get_default_paint_volume (ClutterActor *self);
508 void clutter_actor_set_reactive (ClutterActor *actor,
510 gboolean clutter_actor_get_reactive (ClutterActor *actor);
511 gboolean clutter_actor_has_key_focus (ClutterActor *self);
512 void clutter_actor_grab_key_focus (ClutterActor *self);
513 gboolean clutter_actor_event (ClutterActor *actor,
516 gboolean clutter_actor_has_pointer (ClutterActor *self);
519 PangoContext * clutter_actor_get_pango_context (ClutterActor *self);
520 PangoContext * clutter_actor_create_pango_context (ClutterActor *self);
521 PangoLayout * clutter_actor_create_pango_layout (ClutterActor *self,
523 void clutter_actor_set_text_direction (ClutterActor *self,
524 ClutterTextDirection text_dir);
525 ClutterTextDirection clutter_actor_get_text_direction (ClutterActor *self);
527 /* Actor hierarchy */
528 CLUTTER_AVAILABLE_IN_1_10
529 void clutter_actor_add_child (ClutterActor *self,
530 ClutterActor *child);
531 CLUTTER_AVAILABLE_IN_1_10
532 void clutter_actor_insert_child_at_index (ClutterActor *self,
535 CLUTTER_AVAILABLE_IN_1_10
536 void clutter_actor_insert_child_above (ClutterActor *self,
538 ClutterActor *sibling);
539 CLUTTER_AVAILABLE_IN_1_10
540 void clutter_actor_insert_child_below (ClutterActor *self,
542 ClutterActor *sibling);
543 CLUTTER_AVAILABLE_IN_1_10
544 void clutter_actor_replace_child (ClutterActor *self,
545 ClutterActor *old_child,
546 ClutterActor *new_child);
547 CLUTTER_AVAILABLE_IN_1_10
548 void clutter_actor_remove_child (ClutterActor *self,
549 ClutterActor *child);
550 CLUTTER_AVAILABLE_IN_1_10
551 void clutter_actor_remove_all_children (ClutterActor *self);
552 CLUTTER_AVAILABLE_IN_1_10
553 void clutter_actor_destroy_all_children (ClutterActor *self);
554 CLUTTER_AVAILABLE_IN_1_10
555 GList * clutter_actor_get_children (ClutterActor *self);
556 CLUTTER_AVAILABLE_IN_1_10
557 gint clutter_actor_get_n_children (ClutterActor *self);
558 CLUTTER_AVAILABLE_IN_1_10
559 ClutterActor * clutter_actor_get_child_at_index (ClutterActor *self,
561 CLUTTER_AVAILABLE_IN_1_10
562 ClutterActor * clutter_actor_get_previous_sibling (ClutterActor *self);
563 CLUTTER_AVAILABLE_IN_1_10
564 ClutterActor * clutter_actor_get_next_sibling (ClutterActor *self);
565 CLUTTER_AVAILABLE_IN_1_10
566 ClutterActor * clutter_actor_get_first_child (ClutterActor *self);
567 CLUTTER_AVAILABLE_IN_1_10
568 ClutterActor * clutter_actor_get_last_child (ClutterActor *self);
569 ClutterActor * clutter_actor_get_parent (ClutterActor *self);
570 gboolean clutter_actor_contains (ClutterActor *self,
571 ClutterActor *descendant);
572 ClutterActor* clutter_actor_get_stage (ClutterActor *actor);
573 CLUTTER_AVAILABLE_IN_1_10
574 void clutter_actor_set_child_below_sibling (ClutterActor *self,
576 ClutterActor *sibling);
577 CLUTTER_AVAILABLE_IN_1_10
578 void clutter_actor_set_child_above_sibling (ClutterActor *self,
580 ClutterActor *sibling);
581 CLUTTER_AVAILABLE_IN_1_10
582 void clutter_actor_set_child_at_index (ClutterActor *self,
585 CLUTTER_AVAILABLE_IN_1_10
586 void clutter_actor_iter_init (ClutterActorIter *iter,
588 CLUTTER_AVAILABLE_IN_1_10
589 gboolean clutter_actor_iter_next (ClutterActorIter *iter,
590 ClutterActor **child);
591 CLUTTER_AVAILABLE_IN_1_10
592 gboolean clutter_actor_iter_prev (ClutterActorIter *iter,
593 ClutterActor **child);
594 CLUTTER_AVAILABLE_IN_1_10
595 void clutter_actor_iter_remove (ClutterActorIter *iter);
596 CLUTTER_AVAILABLE_IN_1_10
597 void clutter_actor_iter_destroy (ClutterActorIter *iter);
599 /* Transformations */
600 gboolean clutter_actor_is_rotated (ClutterActor *self);
601 gboolean clutter_actor_is_scaled (ClutterActor *self);
602 void clutter_actor_set_rotation (ClutterActor *self,
603 ClutterRotateAxis axis,
608 void clutter_actor_set_z_rotation_from_gravity (ClutterActor *self,
610 ClutterGravity gravity);
611 gdouble clutter_actor_get_rotation (ClutterActor *self,
612 ClutterRotateAxis axis,
616 ClutterGravity clutter_actor_get_z_rotation_gravity (ClutterActor *self);
617 void clutter_actor_set_scale (ClutterActor *self,
620 void clutter_actor_set_scale_full (ClutterActor *self,
625 void clutter_actor_set_scale_with_gravity (ClutterActor *self,
628 ClutterGravity gravity);
629 void clutter_actor_get_scale (ClutterActor *self,
632 void clutter_actor_get_scale_center (ClutterActor *self,
635 ClutterGravity clutter_actor_get_scale_gravity (ClutterActor *self);
636 void clutter_actor_set_anchor_point (ClutterActor *self,
639 void clutter_actor_move_anchor_point (ClutterActor *self,
642 void clutter_actor_get_anchor_point (ClutterActor *self,
645 ClutterGravity clutter_actor_get_anchor_point_gravity (ClutterActor *self);
646 void clutter_actor_set_anchor_point_from_gravity (ClutterActor *self,
647 ClutterGravity gravity);
648 void clutter_actor_move_anchor_point_from_gravity (ClutterActor *self,
649 ClutterGravity gravity);
650 void clutter_actor_get_transformed_position (ClutterActor *self,
653 void clutter_actor_get_transformed_size (ClutterActor *self,
656 gboolean clutter_actor_transform_stage_point (ClutterActor *self,
661 void clutter_actor_get_abs_allocation_vertices (ClutterActor *self,
662 ClutterVertex verts[]);
663 void clutter_actor_apply_transform_to_point (ClutterActor *self,
664 const ClutterVertex *point,
665 ClutterVertex *vertex);
666 void clutter_actor_apply_relative_transform_to_point (ClutterActor *self,
667 ClutterActor *ancestor,
668 const ClutterVertex *point,
669 ClutterVertex *vertex);
670 void clutter_actor_get_transformation_matrix (ClutterActor *self,
673 /* Implicit animations */
674 CLUTTER_AVAILABLE_IN_1_10
675 void clutter_actor_save_easing_state (ClutterActor *self);
676 CLUTTER_AVAILABLE_IN_1_10
677 void clutter_actor_restore_easing_state (ClutterActor *self);
678 CLUTTER_AVAILABLE_IN_1_10
679 void clutter_actor_set_easing_mode (ClutterActor *self,
680 ClutterAnimationMode mode);
681 CLUTTER_AVAILABLE_IN_1_10
682 ClutterAnimationMode clutter_actor_get_easing_mode (ClutterActor *self);
683 CLUTTER_AVAILABLE_IN_1_10
684 void clutter_actor_set_easing_duration (ClutterActor *self,
686 CLUTTER_AVAILABLE_IN_1_10
687 guint clutter_actor_get_easing_duration (ClutterActor *self);
688 CLUTTER_AVAILABLE_IN_1_10
689 void clutter_actor_set_easing_delay (ClutterActor *self,
691 CLUTTER_AVAILABLE_IN_1_10
692 guint clutter_actor_get_easing_delay (ClutterActor *self);
693 CLUTTER_AVAILABLE_IN_1_10
694 ClutterTransition * clutter_actor_get_transition (ClutterActor *self,
696 CLUTTER_AVAILABLE_IN_1_10
697 void clutter_actor_add_transition (ClutterActor *self,
699 ClutterTransition *transition);
700 CLUTTER_AVAILABLE_IN_1_10
701 void clutter_actor_remove_transition (ClutterActor *self,
703 CLUTTER_AVAILABLE_IN_1_10
704 void clutter_actor_remove_all_transitions (ClutterActor *self);
708 #endif /* __CLUTTER_ACTOR_H__ */