1 /*
2  * Clutter.
3  *
4  * An OpenGL based 'interactive canvas' library.
5  *
6  * Copyright (C) 2011  Intel Corporation
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
20  */
21 
22 #ifndef __CLUTTER_ENUMS_H__
23 #define __CLUTTER_ENUMS_H__
24 
25 #if !defined(__CLUTTER_H_INSIDE__) && !defined(CLUTTER_COMPILATION)
26 #error "Only <clutter/clutter.h> can be included directly."
27 #endif
28 
29 #include <glib-object.h>
30 
31 G_BEGIN_DECLS
32 
33 /**
34  * ClutterGravity:
35  * @CLUTTER_GRAVITY_NONE: Do not apply any gravity
36  * @CLUTTER_GRAVITY_NORTH: Scale from topmost downwards
37  * @CLUTTER_GRAVITY_NORTH_EAST: Scale from the top right corner
38  * @CLUTTER_GRAVITY_EAST: Scale from the right side
39  * @CLUTTER_GRAVITY_SOUTH_EAST: Scale from the bottom right corner
40  * @CLUTTER_GRAVITY_SOUTH: Scale from the bottom upwards
41  * @CLUTTER_GRAVITY_SOUTH_WEST: Scale from the bottom left corner
42  * @CLUTTER_GRAVITY_WEST: Scale from the left side
43  * @CLUTTER_GRAVITY_NORTH_WEST: Scale from the top left corner
44  * @CLUTTER_GRAVITY_CENTER: Scale from the center.
45  *
46  * Gravity of the scaling operations. When a gravity different than
47  * %CLUTTER_GRAVITY_NONE is used, an actor is scaled keeping the position
48  * of the specified portion at the same coordinates.
49  *
50  * Since: 0.2
51  *
52  * Deprecated: 1.22: Use the normalized #ClutterActor pivot point instead
53  */
54 typedef enum { /*< prefix=CLUTTER_GRAVITY >*/
55   CLUTTER_GRAVITY_NONE       = 0,
56   CLUTTER_GRAVITY_NORTH,
57   CLUTTER_GRAVITY_NORTH_EAST,
58   CLUTTER_GRAVITY_EAST,
59   CLUTTER_GRAVITY_SOUTH_EAST,
60   CLUTTER_GRAVITY_SOUTH,
61   CLUTTER_GRAVITY_SOUTH_WEST,
62   CLUTTER_GRAVITY_WEST,
63   CLUTTER_GRAVITY_NORTH_WEST,
64   CLUTTER_GRAVITY_CENTER
65 } ClutterGravity;
66 
67 /**
68  * ClutterRotateAxis:
69  * @CLUTTER_X_AXIS: Rotate around the X axis
70  * @CLUTTER_Y_AXIS: Rotate around the Y axis
71  * @CLUTTER_Z_AXIS: Rotate around the Z axis
72  *
73  * Axis of a rotation.
74  *
75  * Since: 0.4
76  */
77 typedef enum { /*< prefix=CLUTTER >*/
78   CLUTTER_X_AXIS,
79   CLUTTER_Y_AXIS,
80   CLUTTER_Z_AXIS
81 } ClutterRotateAxis;
82 
83 /**
84  * ClutterRotateDirection:
85  * @CLUTTER_ROTATE_CW: Clockwise rotation
86  * @CLUTTER_ROTATE_CCW: Counter-clockwise rotation
87  *
88  * Direction of a rotation.
89  *
90  * Since: 0.4
91  *
92  * Deprecated: 1.22
93  */
94 typedef enum { /*< prefix=CLUTTER_ROTATE >*/
95   CLUTTER_ROTATE_CW,
96   CLUTTER_ROTATE_CCW
97 } ClutterRotateDirection;
98 
99 /**
100  * ClutterRequestMode:
101  * @CLUTTER_REQUEST_HEIGHT_FOR_WIDTH: Height for width requests
102  * @CLUTTER_REQUEST_WIDTH_FOR_HEIGHT: Width for height requests
103  * @CLUTTER_REQUEST_CONTENT_SIZE: Use the preferred size of the
104  *   #ClutterContent, if it has any (available since 1.22)
105  *
106  * Specifies the type of requests for a #ClutterActor.
107  *
108  * Since: 0.8
109  */
110 typedef enum { /*< prefix=CLUTTER_REQUEST >*/
111   CLUTTER_REQUEST_HEIGHT_FOR_WIDTH,
112   CLUTTER_REQUEST_WIDTH_FOR_HEIGHT,
113   CLUTTER_REQUEST_CONTENT_SIZE
114 } ClutterRequestMode;
115 
116 /**
117  * ClutterAnimationMode:
118  * @CLUTTER_CUSTOM_MODE: custom progress function
119  * @CLUTTER_LINEAR: linear tweening
120  * @CLUTTER_EASE_IN_QUAD: quadratic tweening
121  * @CLUTTER_EASE_OUT_QUAD: quadratic tweening, inverse of
122  *    %CLUTTER_EASE_IN_QUAD
123  * @CLUTTER_EASE_IN_OUT_QUAD: quadratic tweening, combininig
124  *    %CLUTTER_EASE_IN_QUAD and %CLUTTER_EASE_OUT_QUAD
125  * @CLUTTER_EASE_IN_CUBIC: cubic tweening
126  * @CLUTTER_EASE_OUT_CUBIC: cubic tweening, invers of
127  *    %CLUTTER_EASE_IN_CUBIC
128  * @CLUTTER_EASE_IN_OUT_CUBIC: cubic tweening, combining
129  *    %CLUTTER_EASE_IN_CUBIC and %CLUTTER_EASE_OUT_CUBIC
130  * @CLUTTER_EASE_IN_QUART: quartic tweening
131  * @CLUTTER_EASE_OUT_QUART: quartic tweening, inverse of
132  *    %CLUTTER_EASE_IN_QUART
133  * @CLUTTER_EASE_IN_OUT_QUART: quartic tweening, combining
134  *    %CLUTTER_EASE_IN_QUART and %CLUTTER_EASE_OUT_QUART
135  * @CLUTTER_EASE_IN_QUINT: quintic tweening
136  * @CLUTTER_EASE_OUT_QUINT: quintic tweening, inverse of
137  *    %CLUTTER_EASE_IN_QUINT
138  * @CLUTTER_EASE_IN_OUT_QUINT: fifth power tweening, combining
139  *    %CLUTTER_EASE_IN_QUINT and %CLUTTER_EASE_OUT_QUINT
140  * @CLUTTER_EASE_IN_SINE: sinusoidal tweening
141  * @CLUTTER_EASE_OUT_SINE: sinusoidal tweening, inverse of
142  *    %CLUTTER_EASE_IN_SINE
143  * @CLUTTER_EASE_IN_OUT_SINE: sine wave tweening, combining
144  *    %CLUTTER_EASE_IN_SINE and %CLUTTER_EASE_OUT_SINE
145  * @CLUTTER_EASE_IN_EXPO: exponential tweening
146  * @CLUTTER_EASE_OUT_EXPO: exponential tweening, inverse of
147  *    %CLUTTER_EASE_IN_EXPO
148  * @CLUTTER_EASE_IN_OUT_EXPO: exponential tweening, combining
149  *    %CLUTTER_EASE_IN_EXPO and %CLUTTER_EASE_OUT_EXPO
150  * @CLUTTER_EASE_IN_CIRC: circular tweening
151  * @CLUTTER_EASE_OUT_CIRC: circular tweening, inverse of
152  *    %CLUTTER_EASE_IN_CIRC
153  * @CLUTTER_EASE_IN_OUT_CIRC: circular tweening, combining
154  *    %CLUTTER_EASE_IN_CIRC and %CLUTTER_EASE_OUT_CIRC
155  * @CLUTTER_EASE_IN_ELASTIC: elastic tweening, with offshoot on start
156  * @CLUTTER_EASE_OUT_ELASTIC: elastic tweening, with offshoot on end
157  * @CLUTTER_EASE_IN_OUT_ELASTIC: elastic tweening with offshoot on both ends
158  * @CLUTTER_EASE_IN_BACK: overshooting cubic tweening, with
159  *   backtracking on start
160  * @CLUTTER_EASE_OUT_BACK: overshooting cubic tweening, with
161  *   backtracking on end
162  * @CLUTTER_EASE_IN_OUT_BACK: overshooting cubic tweening, with
163  *   backtracking on both ends
164  * @CLUTTER_EASE_IN_BOUNCE: exponentially decaying parabolic (bounce)
165  *   tweening, with bounce on start
166  * @CLUTTER_EASE_OUT_BOUNCE: exponentially decaying parabolic (bounce)
167  *   tweening, with bounce on end
168  * @CLUTTER_EASE_IN_OUT_BOUNCE: exponentially decaying parabolic (bounce)
169  *   tweening, with bounce on both ends
170  * @CLUTTER_STEPS: parametrized step function; see clutter_timeline_set_step_progress()
171  *   for further details. (Since 1.12)
172  * @CLUTTER_STEP_START: equivalent to %CLUTTER_STEPS with a number of steps
173  *   equal to 1, and a step mode of %CLUTTER_STEP_MODE_START. (Since 1.12)
174  * @CLUTTER_STEP_END: equivalent to %CLUTTER_STEPS with a number of steps
175  *   equal to 1, and a step mode of %CLUTTER_STEP_MODE_END. (Since 1.12)
176  * @CLUTTER_CUBIC_BEZIER: cubic bezier between (0, 0) and (1, 1) with two
177  *   control points; see clutter_timeline_set_cubic_bezier_progress(). (Since 1.12)
178  * @CLUTTER_EASE: equivalent to %CLUTTER_CUBIC_BEZIER with control points
179  *   in (0.25, 0.1) and (0.25, 1.0). (Since 1.12)
180  * @CLUTTER_EASE_IN: equivalent to %CLUTTER_CUBIC_BEZIER with control points
181  *   in (0.42, 0) and (1.0, 1.0). (Since 1.12)
182  * @CLUTTER_EASE_OUT: equivalent to %CLUTTER_CUBIC_BEZIER with control points
183  *   in (0, 0) and (0.58, 1.0). (Since 1.12)
184  * @CLUTTER_EASE_IN_OUT: equivalent to %CLUTTER_CUBIC_BEZIER with control points
185  *   in (0.42, 0) and (0.58, 1.0). (Since 1.12)
186  * @CLUTTER_ANIMATION_LAST: last animation mode, used as a guard for
187  *   registered global alpha functions
188  *
189  * The animation modes used by #ClutterAlpha and #ClutterAnimation. This
190  * enumeration can be expanded in later versions of Clutter.
191  *
192  * <figure id="easing-modes">
193  *   <title>Easing modes provided by Clutter</title>
194  *   <graphic fileref="easing-modes.png" format="PNG"/>
195  * </figure>
196  *
197  * Every global alpha function registered using clutter_alpha_register_func()
198  * or clutter_alpha_register_closure() will have a logical id greater than
199  * %CLUTTER_ANIMATION_LAST.
200  *
201  * Since: 1.0
202  */
203 typedef enum {
204   CLUTTER_CUSTOM_MODE = 0,
205 
206   /* linear */
207   CLUTTER_LINEAR,
208 
209   /* quadratic */
210   CLUTTER_EASE_IN_QUAD,
211   CLUTTER_EASE_OUT_QUAD,
212   CLUTTER_EASE_IN_OUT_QUAD,
213 
214   /* cubic */
215   CLUTTER_EASE_IN_CUBIC,
216   CLUTTER_EASE_OUT_CUBIC,
217   CLUTTER_EASE_IN_OUT_CUBIC,
218 
219   /* quartic */
220   CLUTTER_EASE_IN_QUART,
221   CLUTTER_EASE_OUT_QUART,
222   CLUTTER_EASE_IN_OUT_QUART,
223 
224   /* quintic */
225   CLUTTER_EASE_IN_QUINT,
226   CLUTTER_EASE_OUT_QUINT,
227   CLUTTER_EASE_IN_OUT_QUINT,
228 
229   /* sinusoidal */
230   CLUTTER_EASE_IN_SINE,
231   CLUTTER_EASE_OUT_SINE,
232   CLUTTER_EASE_IN_OUT_SINE,
233 
234   /* exponential */
235   CLUTTER_EASE_IN_EXPO,
236   CLUTTER_EASE_OUT_EXPO,
237   CLUTTER_EASE_IN_OUT_EXPO,
238 
239   /* circular */
240   CLUTTER_EASE_IN_CIRC,
241   CLUTTER_EASE_OUT_CIRC,
242   CLUTTER_EASE_IN_OUT_CIRC,
243 
244   /* elastic */
245   CLUTTER_EASE_IN_ELASTIC,
246   CLUTTER_EASE_OUT_ELASTIC,
247   CLUTTER_EASE_IN_OUT_ELASTIC,
248 
249   /* overshooting cubic */
250   CLUTTER_EASE_IN_BACK,
251   CLUTTER_EASE_OUT_BACK,
252   CLUTTER_EASE_IN_OUT_BACK,
253 
254   /* exponentially decaying parabolic */
255   CLUTTER_EASE_IN_BOUNCE,
256   CLUTTER_EASE_OUT_BOUNCE,
257   CLUTTER_EASE_IN_OUT_BOUNCE,
258 
259   /* step functions (see css3-transitions) */
260   CLUTTER_STEPS,
261   CLUTTER_STEP_START, /* steps(1, start) */
262   CLUTTER_STEP_END, /* steps(1, end) */
263 
264   /* cubic bezier (see css3-transitions) */
265   CLUTTER_CUBIC_BEZIER,
266   CLUTTER_EASE,
267   CLUTTER_EASE_IN,
268   CLUTTER_EASE_OUT,
269   CLUTTER_EASE_IN_OUT,
270 
271   /* guard, before registered alpha functions */
272   CLUTTER_ANIMATION_LAST
273 } ClutterAnimationMode;
274 
275 /**
276  * ClutterFontFlags:
277  * @CLUTTER_FONT_MIPMAPPING: Set to use mipmaps for the glyph cache textures.
278  * @CLUTTER_FONT_HINTING: Set to enable hinting on the glyphs.
279  *
280  * Runtime flags to change the font quality. To be used with
281  * clutter_set_font_flags().
282  *
283  * Since: 1.0
284  *
285  * Deprecated: 1.22: Use #cairo_font_options_t instead
286  */
287 typedef enum { /*< prefix=CLUTTER_FONT >*/
288   CLUTTER_FONT_MIPMAPPING = (1 << 0),
289   CLUTTER_FONT_HINTING    = (1 << 1)
290 } ClutterFontFlags;
291 
292 /**
293  * ClutterTextDirection:
294  * @CLUTTER_TEXT_DIRECTION_DEFAULT: Use the default setting, as returned
295  *   by clutter_get_default_text_direction()
296  * @CLUTTER_TEXT_DIRECTION_LTR: Use left-to-right text direction
297  * @CLUTTER_TEXT_DIRECTION_RTL: Use right-to-left text direction
298  *
299  * The text direction to be used by #ClutterActor<!-- -->s
300  *
301  * Since: 1.2
302  */
303 typedef enum {
304   CLUTTER_TEXT_DIRECTION_DEFAULT,
305   CLUTTER_TEXT_DIRECTION_LTR,
306   CLUTTER_TEXT_DIRECTION_RTL
307 } ClutterTextDirection;
308 
309 /**
310  * ClutterShaderType:
311  * @CLUTTER_VERTEX_SHADER: a vertex shader
312  * @CLUTTER_FRAGMENT_SHADER: a fragment shader
313  *
314  * The type of GLSL shader program
315  *
316  * Since: 1.4
317  */
318 typedef enum {
319   CLUTTER_VERTEX_SHADER,
320   CLUTTER_FRAGMENT_SHADER
321 } ClutterShaderType;
322 
323 /**
324  * ClutterModifierType:
325  * @CLUTTER_SHIFT_MASK: Mask applied by the Shift key
326  * @CLUTTER_LOCK_MASK: Mask applied by the Caps Lock key
327  * @CLUTTER_CONTROL_MASK: Mask applied by the Control key
328  * @CLUTTER_MOD1_MASK: Mask applied by the first Mod key
329  * @CLUTTER_MOD2_MASK: Mask applied by the second Mod key
330  * @CLUTTER_MOD3_MASK: Mask applied by the third Mod key
331  * @CLUTTER_MOD4_MASK: Mask applied by the fourth Mod key
332  * @CLUTTER_MOD5_MASK: Mask applied by the fifth Mod key
333  * @CLUTTER_BUTTON1_MASK: Mask applied by the first pointer button
334  * @CLUTTER_BUTTON2_MASK: Mask applied by the second pointer button
335  * @CLUTTER_BUTTON3_MASK: Mask applied by the third pointer button
336  * @CLUTTER_BUTTON4_MASK: Mask applied by the fourth pointer button
337  * @CLUTTER_BUTTON5_MASK: Mask applied by the fifth pointer button
338  * @CLUTTER_SUPER_MASK: Mask applied by the Super key
339  * @CLUTTER_HYPER_MASK: Mask applied by the Hyper key
340  * @CLUTTER_META_MASK: Mask applied by the Meta key
341  * @CLUTTER_RELEASE_MASK: Mask applied during release
342  * @CLUTTER_MODIFIER_MASK: A mask covering all modifier types
343  *
344  * Masks applied to a #ClutterEvent by modifiers.
345  *
346  * Note that Clutter may add internal values to events which include
347  * reserved values such as %CLUTTER_MODIFIER_RESERVED_13_MASK.  Your code
348  * should preserve and ignore them.  You can use %CLUTTER_MODIFIER_MASK to
349  * remove all reserved values.
350  *
351  * Since: 0.4
352  */
353 typedef enum {
354   CLUTTER_SHIFT_MASK    = 1 << 0,
355   CLUTTER_LOCK_MASK     = 1 << 1,
356   CLUTTER_CONTROL_MASK  = 1 << 2,
357   CLUTTER_MOD1_MASK     = 1 << 3,
358   CLUTTER_MOD2_MASK     = 1 << 4,
359   CLUTTER_MOD3_MASK     = 1 << 5,
360   CLUTTER_MOD4_MASK     = 1 << 6,
361   CLUTTER_MOD5_MASK     = 1 << 7,
362   CLUTTER_BUTTON1_MASK  = 1 << 8,
363   CLUTTER_BUTTON2_MASK  = 1 << 9,
364   CLUTTER_BUTTON3_MASK  = 1 << 10,
365   CLUTTER_BUTTON4_MASK  = 1 << 11,
366   CLUTTER_BUTTON5_MASK  = 1 << 12,
367 
368 #ifndef __GTK_DOC_IGNORE__
369   CLUTTER_MODIFIER_RESERVED_13_MASK  = 1 << 13,
370   CLUTTER_MODIFIER_RESERVED_14_MASK  = 1 << 14,
371   CLUTTER_MODIFIER_RESERVED_15_MASK  = 1 << 15,
372   CLUTTER_MODIFIER_RESERVED_16_MASK  = 1 << 16,
373   CLUTTER_MODIFIER_RESERVED_17_MASK  = 1 << 17,
374   CLUTTER_MODIFIER_RESERVED_18_MASK  = 1 << 18,
375   CLUTTER_MODIFIER_RESERVED_19_MASK  = 1 << 19,
376   CLUTTER_MODIFIER_RESERVED_20_MASK  = 1 << 20,
377   CLUTTER_MODIFIER_RESERVED_21_MASK  = 1 << 21,
378   CLUTTER_MODIFIER_RESERVED_22_MASK  = 1 << 22,
379   CLUTTER_MODIFIER_RESERVED_23_MASK  = 1 << 23,
380   CLUTTER_MODIFIER_RESERVED_24_MASK  = 1 << 24,
381   CLUTTER_MODIFIER_RESERVED_25_MASK  = 1 << 25,
382 #endif
383 
384   CLUTTER_SUPER_MASK    = 1 << 26,
385   CLUTTER_HYPER_MASK    = 1 << 27,
386   CLUTTER_META_MASK     = 1 << 28,
387 
388 #ifndef __GTK_DOC_IGNORE__
389   CLUTTER_MODIFIER_RESERVED_29_MASK  = 1 << 29,
390 #endif
391 
392   CLUTTER_RELEASE_MASK  = 1 << 30,
393 
394   /* Combination of CLUTTER_SHIFT_MASK..CLUTTER_BUTTON5_MASK + CLUTTER_SUPER_MASK
395      + CLUTTER_HYPER_MASK + CLUTTER_META_MASK + CLUTTER_RELEASE_MASK */
396   CLUTTER_MODIFIER_MASK = 0x5c001fff
397 } ClutterModifierType;
398 
399 /**
400  * ClutterKeyboardA11yFlags:
401  * @CLUTTER_A11Y_KEYBOARD_ENABLED:
402  * @CLUTTER_A11Y_TIMEOUT_ENABLED:
403  * @CLUTTER_A11Y_MOUSE_KEYS_ENABLED:
404  * @CLUTTER_A11Y_SLOW_KEYS_ENABLED:
405  * @CLUTTER_A11Y_SLOW_KEYS_BEEP_PRESS:
406  * @CLUTTER_A11Y_SLOW_KEYS_BEEP_ACCEPT:
407  * @CLUTTER_A11Y_SLOW_KEYS_BEEP_REJECT:
408  * @CLUTTER_A11Y_BOUNCE_KEYS_ENABLED:
409  * @CLUTTER_A11Y_BOUNCE_KEYS_BEEP_REJECT:
410  * @CLUTTER_A11Y_TOGGLE_KEYS_ENABLED:
411  * @CLUTTER_A11Y_STICKY_KEYS_ENABLED:
412  * @CLUTTER_A11Y_STICKY_KEYS_TWO_KEY_OFF:
413  * @CLUTTER_A11Y_STICKY_KEYS_BEEP:
414  * @CLUTTER_A11Y_FEATURE_STATE_CHANGE_BEEP:
415  *
416  * Keyboard accessibility features applied to a ClutterInputDevice keyboard.
417  *
418  */
419 typedef enum {
420   CLUTTER_A11Y_KEYBOARD_ENABLED          = 1 << 0,
421   CLUTTER_A11Y_TIMEOUT_ENABLED           = 1 << 1,
422   CLUTTER_A11Y_MOUSE_KEYS_ENABLED        = 1 << 2,
423   CLUTTER_A11Y_SLOW_KEYS_ENABLED         = 1 << 3,
424   CLUTTER_A11Y_SLOW_KEYS_BEEP_PRESS      = 1 << 4,
425   CLUTTER_A11Y_SLOW_KEYS_BEEP_ACCEPT     = 1 << 5,
426   CLUTTER_A11Y_SLOW_KEYS_BEEP_REJECT     = 1 << 6,
427   CLUTTER_A11Y_BOUNCE_KEYS_ENABLED       = 1 << 7,
428   CLUTTER_A11Y_BOUNCE_KEYS_BEEP_REJECT   = 1 << 8,
429   CLUTTER_A11Y_TOGGLE_KEYS_ENABLED       = 1 << 9,
430   CLUTTER_A11Y_STICKY_KEYS_ENABLED       = 1 << 10,
431   CLUTTER_A11Y_STICKY_KEYS_TWO_KEY_OFF   = 1 << 11,
432   CLUTTER_A11Y_STICKY_KEYS_BEEP          = 1 << 12,
433   CLUTTER_A11Y_FEATURE_STATE_CHANGE_BEEP = 1 << 13,
434 } ClutterKeyboardA11yFlags;
435 
436 /**
437  * ClutterActorFlags:
438  * @CLUTTER_ACTOR_MAPPED: the actor will be painted (is visible, and inside
439  *   a toplevel, and all parents visible)
440  * @CLUTTER_ACTOR_REALIZED: the resources associated to the actor have been
441  *   allocated
442  * @CLUTTER_ACTOR_REACTIVE: the actor 'reacts' to mouse events emmitting event
443  *   signals
444  * @CLUTTER_ACTOR_VISIBLE: the actor has been shown by the application program
445  * @CLUTTER_ACTOR_NO_LAYOUT: the actor provides an explicit layout management
446  *   policy for its children; this flag will prevent Clutter from automatic
447  *   queueing of relayout and will defer all layouting to the actor itself
448  *
449  * Flags used to signal the state of an actor.
450  */
451 typedef enum { /*< prefix=CLUTTER_ACTOR >*/
452   CLUTTER_ACTOR_MAPPED    = 1 << 1,
453   CLUTTER_ACTOR_REALIZED  = 1 << 2,
454   CLUTTER_ACTOR_REACTIVE  = 1 << 3,
455   CLUTTER_ACTOR_VISIBLE   = 1 << 4,
456   CLUTTER_ACTOR_NO_LAYOUT = 1 << 5
457 } ClutterActorFlags;
458 
459 /**
460  * ClutterOffscreenRedirect:
461  * @CLUTTER_OFFSCREEN_REDIRECT_AUTOMATIC_FOR_OPACITY: Only redirect
462  *   the actor if it is semi-transparent and its has_overlaps()
463  *   virtual returns %TRUE. This is the default.
464  * @CLUTTER_OFFSCREEN_REDIRECT_ALWAYS: Always redirect the actor to an
465  *   offscreen buffer even if it is fully opaque.
466  *
467  * Possible flags to pass to clutter_actor_set_offscreen_redirect().
468  *
469  * Since: 1.8
470  */
471 typedef enum { /*< prefix=CLUTTER_OFFSCREEN_REDIRECT >*/
472   CLUTTER_OFFSCREEN_REDIRECT_AUTOMATIC_FOR_OPACITY = 1<<0,
473   CLUTTER_OFFSCREEN_REDIRECT_ALWAYS = 1<<1
474 } ClutterOffscreenRedirect;
475 
476 /**
477  * ClutterAllocationFlags:
478  * @CLUTTER_ALLOCATION_NONE: No flag set
479  * @CLUTTER_ABSOLUTE_ORIGIN_CHANGED: Whether the absolute origin of the
480  *   actor has changed; this implies that any ancestor of the actor has
481  *   been moved.
482  * @CLUTTER_DELEGATE_LAYOUT: Whether the allocation should be delegated
483  *   to the #ClutterLayoutManager instance stored inside the
484  *   #ClutterActor:layout-manager property of #ClutterActor. This flag
485  *   should only be used if you are subclassing #ClutterActor and
486  *   overriding the #ClutterActorClass.allocate() virtual function, but
487  *   you wish to use the default implementation of the virtual function
488  *   inside #ClutterActor. Added in Clutter 1.10.
489  *
490  * Flags passed to the #ClutterActorClass.allocate() virtual function
491  * and to the clutter_actor_allocate() function.
492  *
493  * Since: 1.0
494  */
495 typedef enum {
496   CLUTTER_ALLOCATION_NONE         = 0,
497   CLUTTER_ABSOLUTE_ORIGIN_CHANGED = 1 << 1,
498   CLUTTER_DELEGATE_LAYOUT         = 1 << 2
499 } ClutterAllocationFlags;
500 
501 /**
502  * ClutterAlignAxis:
503  * @CLUTTER_ALIGN_X_AXIS: Maintain the alignment on the X axis
504  * @CLUTTER_ALIGN_Y_AXIS: Maintain the alignment on the Y axis
505  * @CLUTTER_ALIGN_BOTH: Maintain the alignment on both the X and Y axis
506  *
507  * Specifies the axis on which #ClutterAlignConstraint should maintain
508  * the alignment.
509  *
510  * Since: 1.4
511  */
512 typedef enum { /*< prefix=CLUTTER_ALIGN >*/
513   CLUTTER_ALIGN_X_AXIS,
514   CLUTTER_ALIGN_Y_AXIS,
515   CLUTTER_ALIGN_BOTH
516 } ClutterAlignAxis;
517 
518 /**
519  * ClutterInterpolation:
520  * @CLUTTER_INTERPOLATION_LINEAR: linear interpolation
521  * @CLUTTER_INTERPOLATION_CUBIC: cubic interpolation
522  *
523  * The mode of interpolation between key frames
524  *
525  * Since: 1.2
526  *
527  * Deprecated: 1.22
528  */
529 typedef enum {
530   CLUTTER_INTERPOLATION_LINEAR,
531   CLUTTER_INTERPOLATION_CUBIC
532 } ClutterInterpolation;
533 
534 /**
535  * ClutterBinAlignment:
536  * @CLUTTER_BIN_ALIGNMENT_FIXED: Fixed position alignment; the
537  *   #ClutterBinLayout will honour the fixed position provided
538  *   by the actors themselves when allocating them
539  * @CLUTTER_BIN_ALIGNMENT_FILL: Fill the allocation size
540  * @CLUTTER_BIN_ALIGNMENT_START: Position the actors at the top
541  *   or left side of the container, depending on the axis
542  * @CLUTTER_BIN_ALIGNMENT_END: Position the actors at the bottom
543  *   or right side of the container, depending on the axis
544  * @CLUTTER_BIN_ALIGNMENT_CENTER: Position the actors at the
545  *   center of the container, depending on the axis
546  *
547  * The alignment policies available on each axis for #ClutterBinLayout
548  *
549  * Since: 1.2
550  *
551  * Deprecated: 1.12: Use #ClutterActorAlign and the #ClutterActor
552  *   API instead
553  */
554 typedef enum {
555   CLUTTER_BIN_ALIGNMENT_FIXED,
556   CLUTTER_BIN_ALIGNMENT_FILL,
557   CLUTTER_BIN_ALIGNMENT_START,
558   CLUTTER_BIN_ALIGNMENT_END,
559   CLUTTER_BIN_ALIGNMENT_CENTER
560 } ClutterBinAlignment;
561 
562 /**
563  * ClutterBindCoordinate:
564  * @CLUTTER_BIND_X: Bind the X coordinate
565  * @CLUTTER_BIND_Y: Bind the Y coordinate
566  * @CLUTTER_BIND_WIDTH: Bind the width
567  * @CLUTTER_BIND_HEIGHT: Bind the height
568  * @CLUTTER_BIND_POSITION: Equivalent to to %CLUTTER_BIND_X and
569  *   %CLUTTER_BIND_Y (added in Clutter 1.6)
570  * @CLUTTER_BIND_SIZE: Equivalent to %CLUTTER_BIND_WIDTH and
571  *   %CLUTTER_BIND_HEIGHT (added in Clutter 1.6)
572  * @CLUTTER_BIND_ALL: Equivalent to %CLUTTER_BIND_POSITION and
573  *   %CLUTTER_BIND_SIZE (added in Clutter 1.10)
574  *
575  * Specifies which property should be used in a binding
576  *
577  * Since: 1.4
578  */
579 typedef enum { /*< prefix=CLUTTER_BIND >*/
580   CLUTTER_BIND_X,
581   CLUTTER_BIND_Y,
582   CLUTTER_BIND_WIDTH,
583   CLUTTER_BIND_HEIGHT,
584   CLUTTER_BIND_POSITION,
585   CLUTTER_BIND_SIZE,
586   CLUTTER_BIND_ALL
587 } ClutterBindCoordinate;
588 
589 /**
590  * ClutterEffectPaintFlags:
591  * @CLUTTER_EFFECT_PAINT_ACTOR_DIRTY: The actor or one of its children
592  *   has queued a redraw before this paint. This implies that the effect
593  *   should call clutter_actor_continue_paint() to chain to the next
594  *   effect and can not cache any results from a previous paint.
595  *
596  * Flags passed to the ‘paint’ or ‘pick’ method of #ClutterEffect.
597  */
598 typedef enum { /*< prefix=CLUTTER_EFFECT_PAINT >*/
599   CLUTTER_EFFECT_PAINT_ACTOR_DIRTY = (1 << 0)
600 } ClutterEffectPaintFlags;
601 
602 /**
603  * ClutterBoxAlignment:
604  * @CLUTTER_BOX_ALIGNMENT_START: Align the child to the top or to
605  *   to the left, depending on the used axis
606  * @CLUTTER_BOX_ALIGNMENT_CENTER: Align the child to the center
607  * @CLUTTER_BOX_ALIGNMENT_END: Align the child to the bottom or to
608  *   the right, depending on the used axis
609  *
610  * The alignment policies available on each axis of the #ClutterBoxLayout
611  *
612  * Since: 1.2
613  */
614 typedef enum {
615   CLUTTER_BOX_ALIGNMENT_START,
616   CLUTTER_BOX_ALIGNMENT_END,
617   CLUTTER_BOX_ALIGNMENT_CENTER
618 } ClutterBoxAlignment;
619 
620 /**
621  * ClutterLongPressState:
622  * @CLUTTER_LONG_PRESS_QUERY: Queries the action whether it supports
623  *   long presses
624  * @CLUTTER_LONG_PRESS_ACTIVATE: Activates the action on a long press
625  * @CLUTTER_LONG_PRESS_CANCEL: The long press was cancelled
626  *
627  * The states for the #ClutterClickAction::long-press signal.
628  *
629  * Since: 1.8
630  */
631 typedef enum { /*< prefix=CLUTTER_LONG_PRESS >*/
632   CLUTTER_LONG_PRESS_QUERY,
633   CLUTTER_LONG_PRESS_ACTIVATE,
634   CLUTTER_LONG_PRESS_CANCEL
635 } ClutterLongPressState;
636 
637 /**
638  * ClutterStaticColor:
639  * @CLUTTER_COLOR_WHITE: White color (ffffffff)
640  * @CLUTTER_COLOR_BLACK: Black color (000000ff)
641  * @CLUTTER_COLOR_RED: Red color (ff0000ff)
642  * @CLUTTER_COLOR_DARK_RED: Dark red color (800000ff)
643  * @CLUTTER_COLOR_GREEN: Green color (00ff00ff)
644  * @CLUTTER_COLOR_DARK_GREEN: Dark green color (008000ff)
645  * @CLUTTER_COLOR_BLUE: Blue color (0000ffff)
646  * @CLUTTER_COLOR_DARK_BLUE: Dark blue color (000080ff)
647  * @CLUTTER_COLOR_CYAN: Cyan color (00ffffff)
648  * @CLUTTER_COLOR_DARK_CYAN: Dark cyan color (008080ff)
649  * @CLUTTER_COLOR_MAGENTA: Magenta color (ff00ffff)
650  * @CLUTTER_COLOR_DARK_MAGENTA: Dark magenta color (800080ff)
651  * @CLUTTER_COLOR_YELLOW: Yellow color (ffff00ff)
652  * @CLUTTER_COLOR_DARK_YELLOW: Dark yellow color (808000ff)
653  * @CLUTTER_COLOR_GRAY: Gray color (a0a0a4ff)
654  * @CLUTTER_COLOR_DARK_GRAY: Dark Gray color (808080ff)
655  * @CLUTTER_COLOR_LIGHT_GRAY: Light gray color (c0c0c0ff)
656  * @CLUTTER_COLOR_BUTTER: Butter color (edd400ff)
657  * @CLUTTER_COLOR_BUTTER_LIGHT: Light butter color (fce94fff)
658  * @CLUTTER_COLOR_BUTTER_DARK: Dark butter color (c4a000ff)
659  * @CLUTTER_COLOR_ORANGE: Orange color (f57900ff)
660  * @CLUTTER_COLOR_ORANGE_LIGHT: Light orange color (fcaf3fff)
661  * @CLUTTER_COLOR_ORANGE_DARK: Dark orange color (ce5c00ff)
662  * @CLUTTER_COLOR_CHOCOLATE: Chocolate color (c17d11ff)
663  * @CLUTTER_COLOR_CHOCOLATE_LIGHT: Light chocolate color (e9b96eff)
664  * @CLUTTER_COLOR_CHOCOLATE_DARK: Dark chocolate color (8f5902ff)
665  * @CLUTTER_COLOR_CHAMELEON: Chameleon color (73d216ff)
666  * @CLUTTER_COLOR_CHAMELEON_LIGHT: Light chameleon color (8ae234ff)
667  * @CLUTTER_COLOR_CHAMELEON_DARK: Dark chameleon color (4e9a06ff)
668  * @CLUTTER_COLOR_SKY_BLUE: Sky color (3465a4ff)
669  * @CLUTTER_COLOR_SKY_BLUE_LIGHT: Light sky color (729fcfff)
670  * @CLUTTER_COLOR_SKY_BLUE_DARK: Dark sky color (204a87ff)
671  * @CLUTTER_COLOR_PLUM: Plum color (75507bff)
672  * @CLUTTER_COLOR_PLUM_LIGHT: Light plum color (ad7fa8ff)
673  * @CLUTTER_COLOR_PLUM_DARK: Dark plum color (5c3566ff)
674  * @CLUTTER_COLOR_SCARLET_RED: Scarlet red color (cc0000ff)
675  * @CLUTTER_COLOR_SCARLET_RED_LIGHT: Light scarlet red color (ef2929ff)
676  * @CLUTTER_COLOR_SCARLET_RED_DARK: Dark scarlet red color (a40000ff)
677  * @CLUTTER_COLOR_ALUMINIUM_1: Aluminium, first variant (eeeeecff)
678  * @CLUTTER_COLOR_ALUMINIUM_2: Aluminium, second variant (d3d7cfff)
679  * @CLUTTER_COLOR_ALUMINIUM_3: Aluminium, third variant (babdb6ff)
680  * @CLUTTER_COLOR_ALUMINIUM_4: Aluminium, fourth variant (888a85ff)
681  * @CLUTTER_COLOR_ALUMINIUM_5: Aluminium, fifth variant (555753ff)
682  * @CLUTTER_COLOR_ALUMINIUM_6: Aluminium, sixth variant (2e3436ff)
683  * @CLUTTER_COLOR_TRANSPARENT: Transparent color (00000000)
684  *
685  * Named colors, for accessing global colors defined by Clutter
686  *
687  * Since: 1.6
688  */
689 typedef enum { /*< prefix=CLUTTER_COLOR >*/
690   /* CGA/EGA-like palette */
691   CLUTTER_COLOR_WHITE           = 0,
692   CLUTTER_COLOR_BLACK,
693   CLUTTER_COLOR_RED,
694   CLUTTER_COLOR_DARK_RED,
695   CLUTTER_COLOR_GREEN,
696   CLUTTER_COLOR_DARK_GREEN,
697   CLUTTER_COLOR_BLUE,
698   CLUTTER_COLOR_DARK_BLUE,
699   CLUTTER_COLOR_CYAN,
700   CLUTTER_COLOR_DARK_CYAN,
701   CLUTTER_COLOR_MAGENTA,
702   CLUTTER_COLOR_DARK_MAGENTA,
703   CLUTTER_COLOR_YELLOW,
704   CLUTTER_COLOR_DARK_YELLOW,
705   CLUTTER_COLOR_GRAY,
706   CLUTTER_COLOR_DARK_GRAY,
707   CLUTTER_COLOR_LIGHT_GRAY,
708 
709   /* Tango icon palette */
710   CLUTTER_COLOR_BUTTER,
711   CLUTTER_COLOR_BUTTER_LIGHT,
712   CLUTTER_COLOR_BUTTER_DARK,
713   CLUTTER_COLOR_ORANGE,
714   CLUTTER_COLOR_ORANGE_LIGHT,
715   CLUTTER_COLOR_ORANGE_DARK,
716   CLUTTER_COLOR_CHOCOLATE,
717   CLUTTER_COLOR_CHOCOLATE_LIGHT,
718   CLUTTER_COLOR_CHOCOLATE_DARK,
719   CLUTTER_COLOR_CHAMELEON,
720   CLUTTER_COLOR_CHAMELEON_LIGHT,
721   CLUTTER_COLOR_CHAMELEON_DARK,
722   CLUTTER_COLOR_SKY_BLUE,
723   CLUTTER_COLOR_SKY_BLUE_LIGHT,
724   CLUTTER_COLOR_SKY_BLUE_DARK,
725   CLUTTER_COLOR_PLUM,
726   CLUTTER_COLOR_PLUM_LIGHT,
727   CLUTTER_COLOR_PLUM_DARK,
728   CLUTTER_COLOR_SCARLET_RED,
729   CLUTTER_COLOR_SCARLET_RED_LIGHT,
730   CLUTTER_COLOR_SCARLET_RED_DARK,
731   CLUTTER_COLOR_ALUMINIUM_1,
732   CLUTTER_COLOR_ALUMINIUM_2,
733   CLUTTER_COLOR_ALUMINIUM_3,
734   CLUTTER_COLOR_ALUMINIUM_4,
735   CLUTTER_COLOR_ALUMINIUM_5,
736   CLUTTER_COLOR_ALUMINIUM_6,
737 
738   /* Fully transparent black */
739   CLUTTER_COLOR_TRANSPARENT
740 } ClutterStaticColor;
741 
742 /**
743  * ClutterDragAxis:
744  * @CLUTTER_DRAG_AXIS_NONE: No constraint
745  * @CLUTTER_DRAG_X_AXIS: Set a constraint on the X axis
746  * @CLUTTER_DRAG_Y_AXIS: Set a constraint on the Y axis
747  *
748  * The axis of the constraint that should be applied on the
749  * dragging action
750  *
751  * Since: 1.4
752  */
753 typedef enum { /*< prefix=CLUTTER_DRAG >*/
754   CLUTTER_DRAG_AXIS_NONE = 0,
755 
756   CLUTTER_DRAG_X_AXIS,
757   CLUTTER_DRAG_Y_AXIS
758 } ClutterDragAxis;
759 
760 /**
761  * ClutterEventFlags:
762  * @CLUTTER_EVENT_NONE: No flag set
763  * @CLUTTER_EVENT_FLAG_SYNTHETIC: Synthetic event
764  *
765  * Flags for the #ClutterEvent
766  *
767  * Since: 0.6
768  */
769 typedef enum { /*< flags prefix=CLUTTER_EVENT >*/
770   CLUTTER_EVENT_NONE              = 0,
771   CLUTTER_EVENT_FLAG_SYNTHETIC    = 1 << 0,
772   CLUTTER_EVENT_FLAG_INPUT_METHOD = 1 << 1
773 } ClutterEventFlags;
774 
775 /**
776  * ClutterEventType:
777  * @CLUTTER_NOTHING: Empty event
778  * @CLUTTER_KEY_PRESS: Key press event
779  * @CLUTTER_KEY_RELEASE: Key release event
780  * @CLUTTER_MOTION: Pointer motion event
781  * @CLUTTER_ENTER: Actor enter event
782  * @CLUTTER_LEAVE: Actor leave event
783  * @CLUTTER_BUTTON_PRESS: Pointer button press event
784  * @CLUTTER_BUTTON_RELEASE: Pointer button release event
785  * @CLUTTER_SCROLL: Pointer scroll event
786  * @CLUTTER_STAGE_STATE: Stage state change event
787  * @CLUTTER_DESTROY_NOTIFY: Destroy notification event
788  * @CLUTTER_CLIENT_MESSAGE: Client message event
789  * @CLUTTER_DELETE: Stage delete event
790  * @CLUTTER_TOUCH_BEGIN: A new touch event sequence has started;
791  *   event added in 1.10
792  * @CLUTTER_TOUCH_UPDATE: A touch event sequence has been updated;
793  *   event added in 1.10
794  * @CLUTTER_TOUCH_END: A touch event sequence has finished;
795  *   event added in 1.10
796  * @CLUTTER_TOUCH_CANCEL: A touch event sequence has been canceled;
797  *   event added in 1.10
798  * @CLUTTER_TOUCHPAD_PINCH: A pinch gesture event, the current state is
799  *   determined by its phase field; event added in 1.24
800  * @CLUTTER_TOUCHPAD_SWIPE: A swipe gesture event, the current state is
801  *   determined by its phase field; event added in 1.24
802  * @CLUTTER_PROXIMITY_IN: A tool entered in proximity to a tablet;
803  *   event added in 1.28
804  * @CLUTTER_PROXIMITY_OUT: A tool left from the proximity area of a tablet;
805  *   event added in 1.28
806  * @CLUTTER_EVENT_LAST: Marks the end of the #ClutterEventType enumeration;
807  *   added in 1.10
808  *
809  * Types of events.
810  *
811  * Since: 0.4
812  */
813 typedef enum { /*< prefix=CLUTTER >*/
814   CLUTTER_NOTHING = 0,
815   CLUTTER_KEY_PRESS,
816   CLUTTER_KEY_RELEASE,
817   CLUTTER_MOTION,
818   CLUTTER_ENTER,
819   CLUTTER_LEAVE,
820   CLUTTER_BUTTON_PRESS,
821   CLUTTER_BUTTON_RELEASE,
822   CLUTTER_SCROLL,
823   CLUTTER_STAGE_STATE,
824   CLUTTER_DESTROY_NOTIFY,
825   CLUTTER_CLIENT_MESSAGE,
826   CLUTTER_DELETE,
827   CLUTTER_TOUCH_BEGIN,
828   CLUTTER_TOUCH_UPDATE,
829   CLUTTER_TOUCH_END,
830   CLUTTER_TOUCH_CANCEL,
831   CLUTTER_TOUCHPAD_PINCH,
832   CLUTTER_TOUCHPAD_SWIPE,
833   CLUTTER_PROXIMITY_IN,
834   CLUTTER_PROXIMITY_OUT,
835   CLUTTER_PAD_BUTTON_PRESS,
836   CLUTTER_PAD_BUTTON_RELEASE,
837   CLUTTER_PAD_STRIP,
838   CLUTTER_PAD_RING,
839 
840   CLUTTER_EVENT_LAST            /* helper */
841 } ClutterEventType;
842 
843 /**
844  * ClutterScrollDirection:
845  * @CLUTTER_SCROLL_UP: Scroll up
846  * @CLUTTER_SCROLL_DOWN: Scroll down
847  * @CLUTTER_SCROLL_LEFT: Scroll left
848  * @CLUTTER_SCROLL_RIGHT: Scroll right
849  * @CLUTTER_SCROLL_SMOOTH: Precise scrolling delta (available in 1.10)
850  *
851  * Direction of a pointer scroll event.
852  *
853  * The %CLUTTER_SCROLL_SMOOTH value implies that the #ClutterScrollEvent
854  * has precise scrolling delta information.
855  *
856  * Since: 0.4
857  */
858 typedef enum { /*< prefix=CLUTTER_SCROLL >*/
859   CLUTTER_SCROLL_UP,
860   CLUTTER_SCROLL_DOWN,
861   CLUTTER_SCROLL_LEFT,
862   CLUTTER_SCROLL_RIGHT,
863   CLUTTER_SCROLL_SMOOTH
864 } ClutterScrollDirection;
865 
866 /**
867  * ClutterStageState:
868  * @CLUTTER_STAGE_STATE_FULLSCREEN: Fullscreen mask
869  * @CLUTTER_STAGE_STATE_OFFSCREEN: Offscreen mask (deprecated)
870  * @CLUTTER_STAGE_STATE_ACTIVATED: Activated mask
871  *
872  * Stage state masks, used by the #ClutterEvent of type %CLUTTER_STAGE_STATE.
873  *
874  * Since: 0.4
875  */
876 typedef enum {
877   CLUTTER_STAGE_STATE_FULLSCREEN       = (1 << 1),
878   CLUTTER_STAGE_STATE_OFFSCREEN        = (1 << 2),
879   CLUTTER_STAGE_STATE_ACTIVATED        = (1 << 3)
880 } ClutterStageState;
881 
882 /**
883  * ClutterFeatureFlags:
884  * @CLUTTER_FEATURE_TEXTURE_NPOT: Set if NPOTS textures supported.
885  * @CLUTTER_FEATURE_SYNC_TO_VBLANK: Set if vblank syncing supported.
886  * @CLUTTER_FEATURE_TEXTURE_YUV: Set if YUV based textures supported.
887  * @CLUTTER_FEATURE_TEXTURE_READ_PIXELS: Set if texture pixels can be read.
888  * @CLUTTER_FEATURE_STAGE_STATIC: Set if stage size if fixed (i.e framebuffer)
889  * @CLUTTER_FEATURE_STAGE_USER_RESIZE: Set if stage is able to be user resized.
890  * @CLUTTER_FEATURE_STAGE_CURSOR: Set if stage has a graphical cursor.
891  * @CLUTTER_FEATURE_SHADERS_GLSL: Set if the backend supports GLSL shaders.
892  * @CLUTTER_FEATURE_OFFSCREEN: Set if the backend supports offscreen rendering.
893  * @CLUTTER_FEATURE_STAGE_MULTIPLE: Set if multiple stages are supported.
894  * @CLUTTER_FEATURE_SWAP_EVENTS: Set if the GLX_INTEL_swap_event is supported.
895  *
896  * Runtime flags indicating specific features available via Clutter window
897  * system and graphics backend.
898  *
899  * Since: 0.4
900  */
901 typedef enum
902 {
903   CLUTTER_FEATURE_TEXTURE_NPOT           = (1 << 2),
904   CLUTTER_FEATURE_SYNC_TO_VBLANK         = (1 << 3),
905   CLUTTER_FEATURE_TEXTURE_YUV            = (1 << 4),
906   CLUTTER_FEATURE_TEXTURE_READ_PIXELS    = (1 << 5),
907   CLUTTER_FEATURE_STAGE_STATIC           = (1 << 6),
908   CLUTTER_FEATURE_STAGE_USER_RESIZE      = (1 << 7),
909   CLUTTER_FEATURE_STAGE_CURSOR           = (1 << 8),
910   CLUTTER_FEATURE_SHADERS_GLSL           = (1 << 9),
911   CLUTTER_FEATURE_OFFSCREEN              = (1 << 10),
912   CLUTTER_FEATURE_STAGE_MULTIPLE         = (1 << 11),
913   CLUTTER_FEATURE_SWAP_EVENTS            = (1 << 12)
914 } ClutterFeatureFlags;
915 
916 /**
917  * ClutterFlowOrientation:
918  * @CLUTTER_FLOW_HORIZONTAL: Arrange the children of the flow layout
919  *   horizontally first
920  * @CLUTTER_FLOW_VERTICAL: Arrange the children of the flow layout
921  *   vertically first
922  *
923  * The direction of the arrangement of the children inside
924  * a #ClutterFlowLayout
925  *
926  * Since: 1.2
927  */
928 typedef enum { /*< prefix=CLUTTER_FLOW >*/
929   CLUTTER_FLOW_HORIZONTAL,
930   CLUTTER_FLOW_VERTICAL
931 } ClutterFlowOrientation;
932 
933 /**
934  * ClutterInputDeviceType:
935  * @CLUTTER_POINTER_DEVICE: A pointer device
936  * @CLUTTER_KEYBOARD_DEVICE: A keyboard device
937  * @CLUTTER_EXTENSION_DEVICE: A generic extension device
938  * @CLUTTER_JOYSTICK_DEVICE: A joystick device
939  * @CLUTTER_TABLET_DEVICE: A tablet device
940  * @CLUTTER_TOUCHPAD_DEVICE: A touchpad device
941  * @CLUTTER_TOUCHSCREEN_DEVICE: A touch screen device
942  * @CLUTTER_PEN_DEVICE: A pen device
943  * @CLUTTER_ERASER_DEVICE: An eraser device
944  * @CLUTTER_CURSOR_DEVICE: A cursor device
945  * @CLUTTER_PAD_DEVICE: A tablet pad
946  * @CLUTTER_N_DEVICE_TYPES: The number of device types
947  *
948  * The types of input devices available.
949  *
950  * The #ClutterInputDeviceType enumeration can be extended at later
951  * date; not every platform supports every input device type.
952  *
953  * Since: 1.0
954  */
955 typedef enum {
956   CLUTTER_POINTER_DEVICE,
957   CLUTTER_KEYBOARD_DEVICE,
958   CLUTTER_EXTENSION_DEVICE,
959   CLUTTER_JOYSTICK_DEVICE,
960   CLUTTER_TABLET_DEVICE,
961   CLUTTER_TOUCHPAD_DEVICE,
962   CLUTTER_TOUCHSCREEN_DEVICE,
963   CLUTTER_PEN_DEVICE,
964   CLUTTER_ERASER_DEVICE,
965   CLUTTER_CURSOR_DEVICE,
966   CLUTTER_PAD_DEVICE,
967 
968   CLUTTER_N_DEVICE_TYPES
969 } ClutterInputDeviceType;
970 
971 /**
972  * ClutterInputMode:
973  * @CLUTTER_INPUT_MODE_MASTER: A master, virtual device
974  * @CLUTTER_INPUT_MODE_SLAVE: A slave, physical device, attached to
975  *   a master device
976  * @CLUTTER_INPUT_MODE_FLOATING: A slave, physical device, not attached
977  *   to a master device
978  *
979  * The mode for input devices available.
980  *
981  * Since: 1.6
982  */
983 typedef enum {
984   CLUTTER_INPUT_MODE_MASTER,
985   CLUTTER_INPUT_MODE_SLAVE,
986   CLUTTER_INPUT_MODE_FLOATING
987 } ClutterInputMode;
988 
989 /**
990  * ClutterInputAxis:
991  * @CLUTTER_INPUT_AXIS_IGNORE: Unused axis
992  * @CLUTTER_INPUT_AXIS_X: The position on the X axis
993  * @CLUTTER_INPUT_AXIS_Y: The position of the Y axis
994  * @CLUTTER_INPUT_AXIS_PRESSURE: The pressure information
995  * @CLUTTER_INPUT_AXIS_XTILT: The tilt on the X axis
996  * @CLUTTER_INPUT_AXIS_YTILT: The tile on the Y axis
997  * @CLUTTER_INPUT_AXIS_WHEEL: A wheel
998  * @CLUTTER_INPUT_AXIS_DISTANCE: Distance (Since 1.12)
999  * @CLUTTER_INPUT_AXIS_ROTATION: Rotation along the z-axis (Since 1.28)
1000  * @CLUTTER_INPUT_AXIS_SLIDER: A slider (Since 1.28)
1001  * @CLUTTER_INPUT_AXIS_LAST: Last value of the enumeration; this value is
1002  *   useful when iterating over the enumeration values (Since 1.12)
1003  *
1004  * The type of axes Clutter recognizes on a #ClutterInputDevice
1005  *
1006  * Since: 1.6
1007  */
1008 typedef enum {
1009   CLUTTER_INPUT_AXIS_IGNORE,
1010 
1011   CLUTTER_INPUT_AXIS_X,
1012   CLUTTER_INPUT_AXIS_Y,
1013   CLUTTER_INPUT_AXIS_PRESSURE,
1014   CLUTTER_INPUT_AXIS_XTILT,
1015   CLUTTER_INPUT_AXIS_YTILT,
1016   CLUTTER_INPUT_AXIS_WHEEL,
1017   CLUTTER_INPUT_AXIS_DISTANCE,
1018   CLUTTER_INPUT_AXIS_ROTATION,
1019   CLUTTER_INPUT_AXIS_SLIDER,
1020 
1021   CLUTTER_INPUT_AXIS_LAST
1022 } ClutterInputAxis;
1023 
1024 /**
1025  * ClutterSnapEdge:
1026  * @CLUTTER_SNAP_EDGE_TOP: the top edge
1027  * @CLUTTER_SNAP_EDGE_RIGHT: the right edge
1028  * @CLUTTER_SNAP_EDGE_BOTTOM: the bottom edge
1029  * @CLUTTER_SNAP_EDGE_LEFT: the left edge
1030  *
1031  * The edge to snap
1032  *
1033  * Since: 1.6
1034  */
1035 typedef enum {
1036   CLUTTER_SNAP_EDGE_TOP,
1037   CLUTTER_SNAP_EDGE_RIGHT,
1038   CLUTTER_SNAP_EDGE_BOTTOM,
1039   CLUTTER_SNAP_EDGE_LEFT
1040 } ClutterSnapEdge;
1041 
1042 /**
1043  * ClutterPickMode:
1044  * @CLUTTER_PICK_NONE: Do not paint any actor
1045  * @CLUTTER_PICK_REACTIVE: Paint only the reactive actors
1046  * @CLUTTER_PICK_ALL: Paint all actors
1047  *
1048  * Controls the paint cycle of the scene graph when in pick mode
1049  *
1050  * Since: 1.0
1051  */
1052 typedef enum {
1053   CLUTTER_PICK_NONE = 0,
1054   CLUTTER_PICK_REACTIVE,
1055   CLUTTER_PICK_ALL
1056 } ClutterPickMode;
1057 
1058 /**
1059  * ClutterSwipeDirection:
1060  * @CLUTTER_SWIPE_DIRECTION_UP: Upwards swipe gesture
1061  * @CLUTTER_SWIPE_DIRECTION_DOWN: Downwards swipe gesture
1062  * @CLUTTER_SWIPE_DIRECTION_LEFT: Leftwards swipe gesture
1063  * @CLUTTER_SWIPE_DIRECTION_RIGHT: Rightwards swipe gesture
1064  *
1065  * The main direction of the swipe gesture
1066  *
1067  * Since: 1.8
1068  */
1069 typedef enum { /*< prefix=CLUTTER_SWIPE_DIRECTION >*/
1070   CLUTTER_SWIPE_DIRECTION_UP    = 1 << 0,
1071   CLUTTER_SWIPE_DIRECTION_DOWN  = 1 << 1,
1072   CLUTTER_SWIPE_DIRECTION_LEFT  = 1 << 2,
1073   CLUTTER_SWIPE_DIRECTION_RIGHT = 1 << 3
1074 } ClutterSwipeDirection;
1075 
1076 /**
1077  * ClutterPanAxis:
1078  * @CLUTTER_PAN_AXIS_NONE: No constraint
1079  * @CLUTTER_PAN_X_AXIS: Set a constraint on the X axis
1080  * @CLUTTER_PAN_Y_AXIS: Set a constraint on the Y axis
1081  * @CLUTTER_PAN_AXIS_AUTO: Constrain panning automatically based on initial
1082  *   movement (available since 1.24)
1083  *
1084  * The axis of the constraint that should be applied on the
1085  * panning action
1086  *
1087  * Since: 1.12
1088  */
1089 typedef enum { /*< prefix=CLUTTER_PAN >*/
1090   CLUTTER_PAN_AXIS_NONE = 0,
1091 
1092   CLUTTER_PAN_X_AXIS,
1093   CLUTTER_PAN_Y_AXIS,
1094 
1095   CLUTTER_PAN_AXIS_AUTO
1096 } ClutterPanAxis;
1097 
1098 
1099 /**
1100  * ClutterTableAlignment:
1101  * @CLUTTER_TABLE_ALIGNMENT_START: Align the child to the top or to the
1102  *   left of a cell in the table, depending on the axis
1103  * @CLUTTER_TABLE_ALIGNMENT_CENTER: Align the child to the center of
1104  *   a cell in the table
1105  * @CLUTTER_TABLE_ALIGNMENT_END: Align the child to the bottom or to the
1106  *   right of a cell in the table, depending on the axis
1107  *
1108  * The alignment policies available on each axis of the #ClutterTableLayout
1109  *
1110  * Since: 1.4
1111  *
1112  * Deprecated: 1.22: Use the alignment properties of #ClutterActor
1113  */
1114 typedef enum {
1115   CLUTTER_TABLE_ALIGNMENT_START,
1116   CLUTTER_TABLE_ALIGNMENT_CENTER,
1117   CLUTTER_TABLE_ALIGNMENT_END
1118 } ClutterTableAlignment;
1119 
1120 /**
1121  * ClutterTextureFlags:
1122  * @CLUTTER_TEXTURE_NONE: No flags
1123  * @CLUTTER_TEXTURE_RGB_FLAG_BGR: Unused flag
1124  * @CLUTTER_TEXTURE_RGB_FLAG_PREMULT: Unused flag
1125  * @CLUTTER_TEXTURE_YUV_FLAG_YUV2: Unused flag
1126  *
1127  * Flags for clutter_texture_set_from_rgb_data() and
1128  * clutter_texture_set_from_yuv_data().
1129  *
1130  * Since: 0.4
1131  *
1132  * Deprecated: 1.22: The #ClutterTexture class was the only user of
1133  *   this API
1134  */
1135 typedef enum { /*< prefix=CLUTTER_TEXTURE >*/
1136   CLUTTER_TEXTURE_NONE             = 0,
1137   CLUTTER_TEXTURE_RGB_FLAG_BGR     = 1 << 1,
1138   CLUTTER_TEXTURE_RGB_FLAG_PREMULT = 1 << 2, /* FIXME: not handled */
1139   CLUTTER_TEXTURE_YUV_FLAG_YUV2    = 1 << 3
1140 } ClutterTextureFlags;
1141 
1142 /**
1143  * ClutterTextureQuality:
1144  * @CLUTTER_TEXTURE_QUALITY_LOW: fastest rendering will use nearest neighbour
1145  *   interpolation when rendering. good setting.
1146  * @CLUTTER_TEXTURE_QUALITY_MEDIUM: higher quality rendering without using
1147  *   extra resources.
1148  * @CLUTTER_TEXTURE_QUALITY_HIGH: render the texture with the best quality
1149  *   available using extra memory.
1150  *
1151  * Enumaration controlling the texture quality.
1152  *
1153  * Since: 0.8
1154  *
1155  * Deprecated: 1.22: The #ClutterTexture class was the only used ot
1156  *   this API; use #ClutterImage and clutter_actor_set_content_scaling_filters()
1157  *   instead.
1158  */
1159 typedef enum { /*< prefix=CLUTTER_TEXTURE_QUALITY >*/
1160   CLUTTER_TEXTURE_QUALITY_LOW,
1161   CLUTTER_TEXTURE_QUALITY_MEDIUM,
1162   CLUTTER_TEXTURE_QUALITY_HIGH
1163 } ClutterTextureQuality;
1164 
1165 /**
1166  * ClutterTimelineDirection:
1167  * @CLUTTER_TIMELINE_FORWARD: forward direction for a timeline
1168  * @CLUTTER_TIMELINE_BACKWARD: backward direction for a timeline
1169  *
1170  * The direction of a #ClutterTimeline
1171  *
1172  * Since: 0.6
1173  */
1174 typedef enum {
1175   CLUTTER_TIMELINE_FORWARD,
1176   CLUTTER_TIMELINE_BACKWARD
1177 } ClutterTimelineDirection;
1178 
1179 /**
1180  * ClutterUnitType:
1181  * @CLUTTER_UNIT_PIXEL: Unit expressed in pixels (with subpixel precision)
1182  * @CLUTTER_UNIT_EM: Unit expressed in em
1183  * @CLUTTER_UNIT_MM: Unit expressed in millimeters
1184  * @CLUTTER_UNIT_POINT: Unit expressed in points
1185  * @CLUTTER_UNIT_CM: Unit expressed in centimeters
1186  *
1187  * The type of unit in which a value is expressed
1188  *
1189  * This enumeration might be expanded at later date
1190  *
1191  * Since: 1.0
1192  */
1193 typedef enum { /*< prefix=CLUTTER_UNIT >*/
1194   CLUTTER_UNIT_PIXEL,
1195   CLUTTER_UNIT_EM,
1196   CLUTTER_UNIT_MM,
1197   CLUTTER_UNIT_POINT,
1198   CLUTTER_UNIT_CM
1199 } ClutterUnitType;
1200 
1201 #define CLUTTER_PATH_RELATIVE           (32)
1202 
1203 /**
1204  * ClutterPathNodeType:
1205  * @CLUTTER_PATH_MOVE_TO: jump to the given position
1206  * @CLUTTER_PATH_LINE_TO: create a line from the last node to the
1207  *   given position
1208  * @CLUTTER_PATH_CURVE_TO: bezier curve using the last position and
1209  *   three control points.
1210  * @CLUTTER_PATH_CLOSE: create a line from the last node to the last
1211  *   %CLUTTER_PATH_MOVE_TO node.
1212  * @CLUTTER_PATH_REL_MOVE_TO: same as %CLUTTER_PATH_MOVE_TO but with
1213  *   coordinates relative to the last node.
1214  * @CLUTTER_PATH_REL_LINE_TO: same as %CLUTTER_PATH_LINE_TO but with
1215  *   coordinates relative to the last node.
1216  * @CLUTTER_PATH_REL_CURVE_TO: same as %CLUTTER_PATH_CURVE_TO but with
1217  *   coordinates relative to the last node.
1218  *
1219  * Types of nodes in a #ClutterPath.
1220  *
1221  * Since: 1.0
1222  */
1223 typedef enum {
1224   CLUTTER_PATH_MOVE_TO      = 0,
1225   CLUTTER_PATH_LINE_TO      = 1,
1226   CLUTTER_PATH_CURVE_TO     = 2,
1227   CLUTTER_PATH_CLOSE        = 3,
1228 
1229   CLUTTER_PATH_REL_MOVE_TO  = CLUTTER_PATH_MOVE_TO | CLUTTER_PATH_RELATIVE,
1230   CLUTTER_PATH_REL_LINE_TO  = CLUTTER_PATH_LINE_TO | CLUTTER_PATH_RELATIVE,
1231   CLUTTER_PATH_REL_CURVE_TO = CLUTTER_PATH_CURVE_TO | CLUTTER_PATH_RELATIVE
1232 } ClutterPathNodeType;
1233 
1234 /**
1235  * ClutterActorAlign:
1236  * @CLUTTER_ACTOR_ALIGN_FILL: Stretch to cover the whole allocated space
1237  * @CLUTTER_ACTOR_ALIGN_START: Snap to left or top side, leaving space
1238  *   to the right or bottom. For horizontal layouts, in right-to-left
1239  *   locales this should be reversed.
1240  * @CLUTTER_ACTOR_ALIGN_CENTER: Center the actor inside the allocation
1241  * @CLUTTER_ACTOR_ALIGN_END: Snap to right or bottom side, leaving space
1242  *   to the left or top. For horizontal layouts, in right-to-left locales
1243  *   this should be reversed.
1244  *
1245  * Controls how a #ClutterActor should align itself inside the extra space
1246  * assigned to it during the allocation.
1247  *
1248  * Alignment only matters if the allocated space given to an actor is
1249  * bigger than its natural size; for example, when the #ClutterActor:x-expand
1250  * or the #ClutterActor:y-expand properties of #ClutterActor are set to %TRUE.
1251  *
1252  * Since: 1.10
1253  */
1254 typedef enum {
1255   CLUTTER_ACTOR_ALIGN_FILL,
1256   CLUTTER_ACTOR_ALIGN_START,
1257   CLUTTER_ACTOR_ALIGN_CENTER,
1258   CLUTTER_ACTOR_ALIGN_END
1259 } ClutterActorAlign;
1260 
1261 /**
1262  * ClutterRepaintFlags:
1263  * @CLUTTER_REPAINT_FLAGS_PRE_PAINT: Run the repaint function prior to
1264  *   painting the stages
1265  * @CLUTTER_REPAINT_FLAGS_POST_PAINT: Run the repaint function after
1266  *   painting the stages
1267  * @CLUTTER_REPAINT_FLAGS_QUEUE_REDRAW_ON_ADD: Ensure that a new frame
1268  *   is queued after adding the repaint function
1269  *
1270  * Flags to pass to clutter_threads_add_repaint_func_full().
1271  *
1272  * Since: 1.10
1273  */
1274 typedef enum {
1275   CLUTTER_REPAINT_FLAGS_PRE_PAINT = 1 << 0,
1276   CLUTTER_REPAINT_FLAGS_POST_PAINT = 1 << 1,
1277   CLUTTER_REPAINT_FLAGS_QUEUE_REDRAW_ON_ADD = 1 << 2
1278 } ClutterRepaintFlags;
1279 
1280 /**
1281  * ClutterContentGravity:
1282  * @CLUTTER_CONTENT_GRAVITY_TOP_LEFT: Align the content to the top left corner
1283  * @CLUTTER_CONTENT_GRAVITY_TOP: Align the content to the top edge
1284  * @CLUTTER_CONTENT_GRAVITY_TOP_RIGHT: Align the content to the top right corner
1285  * @CLUTTER_CONTENT_GRAVITY_LEFT: Align the content to the left edge
1286  * @CLUTTER_CONTENT_GRAVITY_CENTER: Align the content to the center
1287  * @CLUTTER_CONTENT_GRAVITY_RIGHT: Align the content to the right edge
1288  * @CLUTTER_CONTENT_GRAVITY_BOTTOM_LEFT: Align the content to the bottom left corner
1289  * @CLUTTER_CONTENT_GRAVITY_BOTTOM: Align the content to the bottom edge
1290  * @CLUTTER_CONTENT_GRAVITY_BOTTOM_RIGHT: Align the content to the bottom right corner
1291  * @CLUTTER_CONTENT_GRAVITY_RESIZE_FILL: Resize the content to fill the allocation
1292  * @CLUTTER_CONTENT_GRAVITY_RESIZE_ASPECT: Resize the content to remain within the
1293  *   allocation, while maintaining the aspect ratio
1294  *
1295  * Controls the alignment of the #ClutterContent inside a #ClutterActor.
1296  *
1297  * Since: 1.10
1298  */
1299 typedef enum {
1300   CLUTTER_CONTENT_GRAVITY_TOP_LEFT,
1301   CLUTTER_CONTENT_GRAVITY_TOP,
1302   CLUTTER_CONTENT_GRAVITY_TOP_RIGHT,
1303 
1304   CLUTTER_CONTENT_GRAVITY_LEFT,
1305   CLUTTER_CONTENT_GRAVITY_CENTER,
1306   CLUTTER_CONTENT_GRAVITY_RIGHT,
1307 
1308   CLUTTER_CONTENT_GRAVITY_BOTTOM_LEFT,
1309   CLUTTER_CONTENT_GRAVITY_BOTTOM,
1310   CLUTTER_CONTENT_GRAVITY_BOTTOM_RIGHT,
1311 
1312   CLUTTER_CONTENT_GRAVITY_RESIZE_FILL,
1313   CLUTTER_CONTENT_GRAVITY_RESIZE_ASPECT
1314 } ClutterContentGravity;
1315 
1316 /**
1317  * ClutterScalingFilter:
1318  * @CLUTTER_SCALING_FILTER_LINEAR: Linear interpolation filter
1319  * @CLUTTER_SCALING_FILTER_NEAREST: Nearest neighbor interpolation filter
1320  * @CLUTTER_SCALING_FILTER_TRILINEAR: Trilinear minification filter, with
1321  *   mipmap generation; this filter linearly interpolates on every axis,
1322  *   as well as between mipmap levels.
1323  *
1324  * The scaling filters to be used with the #ClutterActor:minification-filter
1325  * and #ClutterActor:magnification-filter properties.
1326  *
1327  * Since: 1.10
1328  */
1329 typedef enum {
1330   CLUTTER_SCALING_FILTER_LINEAR,
1331   CLUTTER_SCALING_FILTER_NEAREST,
1332   CLUTTER_SCALING_FILTER_TRILINEAR
1333 } ClutterScalingFilter;
1334 
1335 /**
1336  * ClutterOrientation:
1337  * @CLUTTER_ORIENTATION_HORIZONTAL: An horizontal orientation
1338  * @CLUTTER_ORIENTATION_VERTICAL: A vertical orientation
1339  *
1340  * Represents the orientation of actors or layout managers.
1341  *
1342  * Since: 1.12
1343  */
1344 typedef enum {
1345   CLUTTER_ORIENTATION_HORIZONTAL,
1346   CLUTTER_ORIENTATION_VERTICAL
1347 } ClutterOrientation;
1348 
1349 /**
1350  * ClutterScrollMode:
1351  * @CLUTTER_SCROLL_NONE: Ignore scrolling
1352  * @CLUTTER_SCROLL_HORIZONTALLY: Scroll only horizontally
1353  * @CLUTTER_SCROLL_VERTICALLY: Scroll only vertically
1354  * @CLUTTER_SCROLL_BOTH: Scroll in both directions
1355  *
1356  * Scroll modes.
1357  *
1358  * Since: 1.12
1359  */
1360 typedef enum { /*< prefix=CLUTTER_SCROLL >*/
1361   CLUTTER_SCROLL_NONE         = 0,
1362 
1363   CLUTTER_SCROLL_HORIZONTALLY = 1 << 0,
1364   CLUTTER_SCROLL_VERTICALLY   = 1 << 1,
1365 
1366   CLUTTER_SCROLL_BOTH         = CLUTTER_SCROLL_HORIZONTALLY | CLUTTER_SCROLL_VERTICALLY
1367 } ClutterScrollMode;
1368 
1369 /**
1370  * ClutterGridPosition:
1371  * @CLUTTER_GRID_POSITION_LEFT: left position
1372  * @CLUTTER_GRID_POSITION_RIGHT: right position
1373  * @CLUTTER_GRID_POSITION_TOP: top position
1374  * @CLUTTER_GRID_POSITION_BOTTOM: bottom position
1375  *
1376  * Grid position modes.
1377  *
1378  * Since: 1.12
1379  */
1380 typedef enum {
1381   CLUTTER_GRID_POSITION_LEFT,
1382   CLUTTER_GRID_POSITION_RIGHT,
1383   CLUTTER_GRID_POSITION_TOP,
1384   CLUTTER_GRID_POSITION_BOTTOM
1385 } ClutterGridPosition;
1386 
1387 /**
1388  * ClutterContentRepeat:
1389  * @CLUTTER_REPEAT_NONE: No repeat
1390  * @CLUTTER_REPEAT_X_AXIS: Repeat the content on the X axis
1391  * @CLUTTER_REPEAT_Y_AXIS: Repeat the content on the Y axis
1392  * @CLUTTER_REPEAT_BOTH: Repeat the content on both axis
1393  *
1394  * Content repeat modes.
1395  *
1396  * Since: 1.12
1397  */
1398 typedef enum {
1399   CLUTTER_REPEAT_NONE   = 0,
1400   CLUTTER_REPEAT_X_AXIS = 1 << 0,
1401   CLUTTER_REPEAT_Y_AXIS = 1 << 1,
1402   CLUTTER_REPEAT_BOTH   = CLUTTER_REPEAT_X_AXIS | CLUTTER_REPEAT_Y_AXIS
1403 } ClutterContentRepeat;
1404 
1405 /**
1406  * ClutterStepMode:
1407  * @CLUTTER_STEP_MODE_START: The change in the value of a
1408  *   %CLUTTER_STEP progress mode should occur at the start of
1409  *   the transition
1410  * @CLUTTER_STEP_MODE_END: The change in the value of a
1411  *   %CLUTTER_STEP progress mode should occur at the end of
1412  *   the transition
1413  *
1414  * Change the value transition of a step function.
1415  *
1416  * See clutter_timeline_set_step_progress().
1417  *
1418  * Since: 1.12
1419  */
1420 typedef enum {
1421   CLUTTER_STEP_MODE_START,
1422   CLUTTER_STEP_MODE_END
1423 } ClutterStepMode;
1424 
1425 /**
1426  * ClutterZoomAxis:
1427  * @CLUTTER_ZOOM_X_AXIS: Scale only on the X axis
1428  * @CLUTTER_ZOOM_Y_AXIS: Scale only on the Y axis
1429  * @CLUTTER_ZOOM_BOTH: Scale on both axis
1430  *
1431  * The axis of the constraint that should be applied by the
1432  * zooming action.
1433  *
1434  * Since: 1.12
1435  */
1436 typedef enum { /*< prefix=CLUTTER_ZOOM >*/
1437   CLUTTER_ZOOM_X_AXIS,
1438   CLUTTER_ZOOM_Y_AXIS,
1439   CLUTTER_ZOOM_BOTH
1440 } ClutterZoomAxis;
1441 
1442 /**
1443  * ClutterGestureTriggerEdge:
1444  * @CLUTTER_GESTURE_TRIGGER_EDGE_NONE: Tell #ClutterGestureAction that
1445  * the gesture must begin immediately and there's no drag limit that
1446  * will cause its cancellation;
1447  * @CLUTTER_GESTURE_TRIGGER_EDGE_AFTER: Tell #ClutterGestureAction that
1448  * it needs to wait until the drag threshold has been exceeded before
1449  * considering that the gesture has begun;
1450  * @CLUTTER_GESTURE_TRIGGER_EDGE_BEFORE: Tell #ClutterGestureAction that
1451  * the gesture must begin immediately and that it must be cancelled
1452  * once the drag exceed the configured threshold.
1453  *
1454  * Enum passed to the clutter_gesture_action_set_threshold_trigger_edge()
1455  * function.
1456  *
1457  * Since: 1.18
1458  */
1459 typedef enum {
1460   CLUTTER_GESTURE_TRIGGER_EDGE_NONE  = 0,
1461   CLUTTER_GESTURE_TRIGGER_EDGE_AFTER,
1462   CLUTTER_GESTURE_TRIGGER_EDGE_BEFORE
1463 } ClutterGestureTriggerEdge;
1464 
1465 /**
1466  * ClutterTouchpadGesturePhase:
1467  * @CLUTTER_TOUCHPAD_GESTURE_PHASE_BEGIN: The gesture has begun.
1468  * @CLUTTER_TOUCHPAD_GESTURE_PHASE_UPDATE: The gesture has been updated.
1469  * @CLUTTER_TOUCHPAD_GESTURE_PHASE_END: The gesture was finished, changes
1470  *   should be permanently applied.
1471  * @CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL: The gesture was cancelled, all
1472  *   changes should be undone.
1473  *
1474  * The phase of a touchpad gesture event. All gestures are guaranteed to
1475  * begin with an event of type %CLUTTER_TOUCHPAD_GESTURE_PHASE_BEGIN,
1476  * followed by a number of %CLUTTER_TOUCHPAD_GESTURE_PHASE_UPDATE (possibly 0).
1477  *
1478  * A finished gesture may have 2 possible outcomes, an event with phase
1479  * %CLUTTER_TOUCHPAD_GESTURE_PHASE_END will be emitted when the gesture is
1480  * considered successful, this should be used as the hint to perform any
1481  * permanent changes.
1482 
1483  * Cancelled gestures may be so for a variety of reasons, due to hardware,
1484  * or due to the gesture recognition layers hinting the gesture did not
1485  * finish resolutely (eg. a 3rd finger being added during a pinch gesture).
1486  * In these cases, the last event with report the phase
1487  * %CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL, this should be used as a hint
1488  * to undo any visible/permanent changes that were done throughout the
1489  * progress of the gesture.
1490  *
1491  * See also #ClutterTouchpadPinchEvent and #ClutterTouchpadPinchEvent.
1492  *
1493  * Since: 1.24
1494  */
1495 typedef enum {
1496   CLUTTER_TOUCHPAD_GESTURE_PHASE_BEGIN,
1497   CLUTTER_TOUCHPAD_GESTURE_PHASE_UPDATE,
1498   CLUTTER_TOUCHPAD_GESTURE_PHASE_END,
1499   CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL
1500 } ClutterTouchpadGesturePhase;
1501 
1502 /**
1503  * ClutterScrollSource:
1504  * @CLUTTER_SCROLL_SOURCE_UNKNOWN: Source of scroll events is unknown.
1505  * @CLUTTER_SCROLL_SOURCE_WHEEL: The scroll event is originated by a mouse wheel.
1506  * @CLUTTER_SCROLL_SOURCE_FINGER: The scroll event is originated by one or more
1507  *   fingers on the device (eg. touchpads).
1508  * @CLUTTER_SCROLL_SOURCE_CONTINUOUS: The scroll event is originated by the
1509  *   motion of some device (eg. a scroll button is set).
1510  *
1511  * The scroll source determines the source of the scroll event. Keep in mind
1512  * that the source device #ClutterInputDeviceType is not enough to infer
1513  * the scroll source.
1514  *
1515  * Since: 1.26
1516  */
1517 typedef enum {
1518   CLUTTER_SCROLL_SOURCE_UNKNOWN,
1519   CLUTTER_SCROLL_SOURCE_WHEEL,
1520   CLUTTER_SCROLL_SOURCE_FINGER,
1521   CLUTTER_SCROLL_SOURCE_CONTINUOUS
1522 } ClutterScrollSource;
1523 
1524 /**
1525  * ClutterScrollFinishFlags:
1526  * @CLUTTER_SCROLL_FINISHED_NONE: no axis was stopped.
1527  * @CLUTTER_SCROLL_FINISHED_HORIZONTAL: The horizontal axis stopped.
1528  * @CLUTTER_SCROLL_FINISHED_VERTICAL: The vertical axis stopped.
1529  *
1530  * Flags used to notify the axes that were stopped in a #ClutterScrollEvent.
1531  * These can be used to trigger post-scroll effects like kinetic scrolling.
1532  *
1533  * Since: 1.26
1534  */
1535 typedef enum {
1536   CLUTTER_SCROLL_FINISHED_NONE       = 0,
1537   CLUTTER_SCROLL_FINISHED_HORIZONTAL = 1 << 0,
1538   CLUTTER_SCROLL_FINISHED_VERTICAL   = 1 << 1
1539 } ClutterScrollFinishFlags;
1540 
1541 /**
1542  * ClutterInputDeviceToolType:
1543  * @CLUTTER_INPUT_DEVICE_TOOL_NONE: No tool
1544  * @CLUTTER_INPUT_DEVICE_TOOL_PEN: The tool is a pen
1545  * @CLUTTER_INPUT_DEVICE_TOOL_ERASER: The tool is an eraser
1546  * @CLUTTER_INPUT_DEVICE_TOOL_BRUSH: The tool is a brush
1547  * @CLUTTER_INPUT_DEVICE_TOOL_PENCIL: The tool is a pencil
1548  * @CLUTTER_INPUT_DEVICE_TOOL_AIRBRUSH: The tool is an airbrush
1549  * @CLUTTER_INPUT_DEVICE_TOOL_MOUSE: The tool is a mouse
1550  * @CLUTTER_INPUT_DEVICE_TOOL_LENS: The tool is a lens
1551  *
1552  * Defines the type of tool that a #ClutterInputDeviceTool represents.
1553  *
1554  * Since: 1.28
1555  */
1556 typedef enum {
1557   CLUTTER_INPUT_DEVICE_TOOL_NONE,
1558   CLUTTER_INPUT_DEVICE_TOOL_PEN,
1559   CLUTTER_INPUT_DEVICE_TOOL_ERASER,
1560   CLUTTER_INPUT_DEVICE_TOOL_BRUSH,
1561   CLUTTER_INPUT_DEVICE_TOOL_PENCIL,
1562   CLUTTER_INPUT_DEVICE_TOOL_AIRBRUSH,
1563   CLUTTER_INPUT_DEVICE_TOOL_MOUSE,
1564   CLUTTER_INPUT_DEVICE_TOOL_LENS
1565 } ClutterInputDeviceToolType;
1566 
1567 typedef enum {
1568   CLUTTER_INPUT_DEVICE_PAD_SOURCE_UNKNOWN,
1569   CLUTTER_INPUT_DEVICE_PAD_SOURCE_FINGER,
1570 } ClutterInputDevicePadSource;
1571 
1572 typedef enum {
1573   CLUTTER_INPUT_DEVICE_MAPPING_ABSOLUTE,
1574   CLUTTER_INPUT_DEVICE_MAPPING_RELATIVE,
1575 } ClutterInputDeviceMapping;
1576 
1577 typedef enum {
1578   CLUTTER_INPUT_CONTENT_HINT_COMPLETION          = 1 << 0,
1579   CLUTTER_INPUT_CONTENT_HINT_SPELLCHECK          = 1 << 1,
1580   CLUTTER_INPUT_CONTENT_HINT_AUTO_CAPITALIZATION = 1 << 2,
1581   CLUTTER_INPUT_CONTENT_HINT_LOWERCASE           = 1 << 3,
1582   CLUTTER_INPUT_CONTENT_HINT_UPPERCASE           = 1 << 4,
1583   CLUTTER_INPUT_CONTENT_HINT_TITLECASE           = 1 << 5,
1584   CLUTTER_INPUT_CONTENT_HINT_HIDDEN_TEXT         = 1 << 6,
1585   CLUTTER_INPUT_CONTENT_HINT_SENSITIVE_DATA      = 1 << 7,
1586   CLUTTER_INPUT_CONTENT_HINT_LATIN               = 1 << 8,
1587   CLUTTER_INPUT_CONTENT_HINT_MULTILINE           = 1 << 9,
1588 } ClutterInputContentHintFlags;
1589 
1590 typedef enum {
1591   CLUTTER_INPUT_CONTENT_PURPOSE_NORMAL,
1592   CLUTTER_INPUT_CONTENT_PURPOSE_ALPHA,
1593   CLUTTER_INPUT_CONTENT_PURPOSE_DIGITS,
1594   CLUTTER_INPUT_CONTENT_PURPOSE_NUMBER,
1595   CLUTTER_INPUT_CONTENT_PURPOSE_PHONE,
1596   CLUTTER_INPUT_CONTENT_PURPOSE_URL,
1597   CLUTTER_INPUT_CONTENT_PURPOSE_EMAIL,
1598   CLUTTER_INPUT_CONTENT_PURPOSE_NAME,
1599   CLUTTER_INPUT_CONTENT_PURPOSE_PASSWORD,
1600   CLUTTER_INPUT_CONTENT_PURPOSE_DATE,
1601   CLUTTER_INPUT_CONTENT_PURPOSE_TIME,
1602   CLUTTER_INPUT_CONTENT_PURPOSE_DATETIME,
1603   CLUTTER_INPUT_CONTENT_PURPOSE_TERMINAL,
1604 } ClutterInputContentPurpose;
1605 
1606 typedef enum {
1607   CLUTTER_INPUT_PANEL_STATE_OFF,
1608   CLUTTER_INPUT_PANEL_STATE_ON,
1609   CLUTTER_INPUT_PANEL_STATE_TOGGLE,
1610 } ClutterInputPanelState;
1611 
1612 G_END_DECLS
1613 
1614 #endif /* __CLUTTER_ENUMS_H__ */
1615