42f82a42fdfa2c62de3850ec5462a333c0cadb3d
[framework/uifw/efl.git] / src / lib / evas / canvas / evas_object.eo
1 abstract Evas.Object (Eo.Base, Evas.Common_Interface, Efl.Gfx.Base)
2 {
3    eo_prefix: evas_obj;
4    data: Evas_Object_Protected_Data;
5    properties {
6       size_hint_max {
7          set {
8             /*@
9             @brief Sets the hints for an object's maximum size.
10
11             @if MOBILE @since_tizen 2.3
12             @elseif WEARABLE @since_tizen 2.3.1
13             @endif
14
15             @ingroup Evas_Object_Group_Size_Hints
16
17             @remark This is not a size enforcement in any way, it's just a hint that
18             should be used whenever appropriate.
19
20             @remark Values @c -1 will be treated as unset hint components, when queried
21             by managers.
22
23             @remark Example:
24             @dontinclude evas-hints.c
25             @skip evas_object_size_hint_max_set
26             @until return
27
28             @remark In this example the maximum size hints change the behavior of an
29             Evas box when layouting its children. See the full @ref
30             Example_Evas_Size_Hints "example".
31
32             @see evas_object_size_hint_max_get() */
33          }
34          get {
35             /*@
36             @brief Retrieves the hints for an object's maximum size.
37
38             @if MOBILE @since_tizen 2.3
39             @elseif WEARABLE @since_tizen 2.3.1
40             @endif
41
42             @ingroup Evas_Object_Group_Size_Hints
43
44             @remark These are hints on the maximum sizes @p obj should have. This is
45             not a size enforcement in any way, it's just a hint that should be
46             used whenever appropriate.
47
48             @remark Use @c NULL pointers on the hint components you're not
49             interested in: they'll be ignored by the function.
50
51             @see evas_object_size_hint_max_set() */
52          }
53          values {
54             Evas_Coord w; /*@ Integer to use as the maximum width hint. */
55             Evas_Coord h; /*@ Integer to use as the maximum height hint. */
56          }
57       }
58       size_hint_request {
59          set {
60             /*@
61             Sets the hints for an object's optimum size.
62
63             This is not a size enforcement in any way, it's just a hint that
64             should be used whenever appropriate.
65
66             Values @c 0 will be treated as unset hint components, when queried
67             by managers.
68
69             @see evas_object_size_hint_request_get() */
70          }
71          get {
72             /*@
73             Retrieves the hints for an object's optimum size.
74
75             These are hints on the optimum sizes @p obj should have. This is
76             not a size enforcement in any way, it's just a hint that should be
77             used whenever appropriate.
78
79             @note Use @c NULL pointers on the hint components you're not
80             interested in: they'll be ignored by the function.
81
82             @see evas_object_size_hint_request_set() */
83          }
84          values {
85             Evas_Coord w; /*@ Integer to use as the preferred width hint. */
86             Evas_Coord h; /*@ Integer to use as the preferred height hint. */
87          }
88       }
89       type {
90          set {
91             /*@ Sets the type of the given Evas object. */
92             legacy: null;
93          }
94          get {
95             /*@
96             @brief Retrieves the type of the given Evas object.
97
98             @if MOBILE @since_tizen 2.3
99             @elseif WEARABLE @since_tizen 2.3.1
100             @endif
101
102             @ingroup Evas_Object_Group_Basic
103
104             @return The type of the object.
105
106             @remark For Evas' builtin types, the return strings will be one of:
107             - <c>"rectangle"</c>,
108             - <c>"line"</c>,
109             - <c>"polygon"</c>,
110             - <c>"text"</c>,
111             - <c>"textblock"</c> and
112             - <c>"image"</c>.
113
114             @remark For Evas smart objects (see @ref Evas_Smart_Group), the name of the
115             smart class itself is returned on this call. For the built-in smart
116             objects, these names are:
117             - <c>"EvasObjectSmartClipped"</c>, for the clipped smart object
118             - <c>"Evas_Object_Box"</c>, for the box object and
119             - <c>"Evas_Object_Table"</c>, for the table object.
120
121             @remark Example:
122             @dontinclude evas-object-manipulation.c
123             @skip d.img = evas_object_image_filled_add(d.canvas);
124             @until border on the
125
126             See the full @ref Example_Evas_Object_Manipulation "example". */
127          }
128          values {
129             const(char)* type; /*@ in */
130          }
131       }
132       size_hint_min {
133          set {
134             /*@
135             @brief Sets the hints for an object's minimum size.
136
137             @if MOBILE @since_tizen 2.3
138             @elseif WEARABLE @since_tizen 2.3.1
139             @endif
140
141             @ingroup Evas_Object_Group_Size_Hints
142
143             @remark This is not a size enforcement in any way, it's just a hint that
144             should be used whenever appropriate.
145
146             @remark Values @c 0 will be treated as unset hint components, when queried
147             by managers.
148
149             @remark Example:
150             @dontinclude evas-hints.c
151             @skip evas_object_size_hint_min_set
152             @until return
153
154             @remark In this example the minimum size hints change the behavior of an
155             Evas box when layouting its children. See the full @ref
156             Example_Evas_Size_Hints "example".
157
158             @see evas_object_size_hint_min_get() */
159          }
160          get {
161             /*@
162             @brief Retrieves the hints for an object's minimum size.
163
164             @if MOBILE @since_tizen 2.3
165             @elseif WEARABLE @since_tizen 2.3.1
166             @endif
167
168             @ingroup Evas_Object_Group_Size_Hints
169
170             @remark These are hints on the minimum sizes @p obj should have. This is
171             not a size enforcement in any way, it's just a hint that should be
172             used whenever appropriate.
173
174             @remark Use @c NULL pointers on the hint components you're not
175             interested in: they'll be ignored by the function.
176
177             @see evas_object_size_hint_min_set() for an example */
178          }
179          values {
180             Evas_Coord w; /*@ Integer to use as the minimum width hint. */
181             Evas_Coord h; /*@ Integer to use as the minimum height hint. */
182          }
183       }
184       pointer_mode {
185          set {
186             /*@
187             @brief Set pointer behavior.
188
189             @if MOBILE @since_tizen 2.3
190             @elseif WEARABLE @since_tizen 2.3.1
191             @endif
192
193             @remark This function has direct effect on event callbacks related to
194             mouse.
195
196             @remark If @p setting is EVAS_OBJECT_POINTER_MODE_AUTOGRAB, then when mouse
197             is down at this object, events will be restricted to it as source,
198             mouse moves, for example, will be emitted even if outside this
199             object area.
200
201             @remark If @p setting is EVAS_OBJECT_POINTER_MODE_NOGRAB, then events will
202             be emitted just when inside this object area.
203
204             @remark The default value is EVAS_OBJECT_POINTER_MODE_AUTOGRAB.
205
206             @ingroup Evas_Object_Group_Extras */
207          }
208          get {
209             /*@
210             @brief Determine how pointer will behave.
211
212             @if MOBILE @since_tizen 2.3
213             @elseif WEARABLE @since_tizen 2.3.1
214             @endif
215
216             @return pointer behavior.
217             @ingroup Evas_Object_Group_Extras */
218          }
219          values {
220             Evas_Object_Pointer_Mode pointer_mode; /*@ desired behavior. */
221          }
222       }
223       render_op {
224          set {
225             /*@
226             @brief Sets the render_op to be used for rendering the Evas object.
227
228             @if MOBILE @since_tizen 2.3
229             @elseif WEARABLE @since_tizen 2.3.1
230             @endif
231
232             @ingroup Evas_Object_Group_Extras */
233          }
234          get {
235             /*@
236             @brief Retrieves the current value of the operation used for rendering the Evas object.
237
238             @if MOBILE @since_tizen 2.3
239             @elseif WEARABLE @since_tizen 2.3.1
240             @endif
241
242             @return  one of the enumerated values in Evas_Render_Op.
243             @ingroup Evas_Object_Group_Extras */
244          }
245          values {
246             Evas_Render_Op render_op; /*@ one of the Evas_Render_Op values. */
247          }
248       }
249       freeze_events {
250          set {
251             /*@
252             @brief Set whether an Evas object is to freeze (discard) events.
253
254             @if MOBILE @since_tizen 2.3
255             @elseif WEARABLE @since_tizen 2.3.1
256             @endif
257
258             @ingroup Evas_Object_Group_Events
259
260             @remark If @p freeze is @c EINA_TRUE, it will make events on @p obj to be @b
261             discarded. Unlike evas_object_pass_events_set(), events will not be
262             passed to @b next lower object. This API can be used for blocking
263             events while @p obj is on transiting.
264
265             @remark If @p freeze is @c EINA_FALSE, events will be processed on that
266             object as normal.
267
268             @warning If you block only key/mouse up events with this API, we won't
269                      guarantee the state of the object, that only had key/mouse down
270                      events, will be.
271
272             @see evas_object_freeze_events_get()
273             @see evas_object_pass_events_set()
274             @see evas_object_repeat_events_set()
275             @see evas_object_propagate_events_set()
276             @since 1.1 */
277          }
278          get {
279             /*@
280             @brief Determine whether an object is set to freeze (discard) events.
281
282             @if MOBILE @since_tizen 2.3
283             @elseif WEARABLE @since_tizen 2.3.1
284             @endif
285
286             @ingroup Evas_Object_Group_Events
287
288             @return freeze whether @p obj is set to freeze events (@c EINA_TRUE) or
289             not (@c EINA_FALSE)
290
291             @see evas_object_freeze_events_set()
292             @see evas_object_pass_events_get()
293             @see evas_object_repeat_events_get()
294             @see evas_object_propagate_events_get()
295             @since 1.1 */
296          }
297          values {
298             bool freeze; /*@ pass whether @p obj is to freeze events (@c EINA_TRUE) or not
299             (@c EINA_FALSE) */
300          }
301       }
302       map {
303          set {
304             /*@
305             @brief Set current object transformation map.
306
307             @if MOBILE @since_tizen 2.3
308             @elseif WEARABLE @since_tizen 2.3.1
309             @endif
310
311             @ingroup Evas_Object_Group_Map
312
313             @remark This sets the map on a given object. It is copied from the @p map pointer,
314             so there is no need to keep the @p map object if you don't need it anymore.
315
316             @remark A map is a set of 4 points which have canvas x, y coordinates per point,
317             with an optional z point value as a hint for perspective correction, if it
318             is available. As well each point has u and v coordinates. These are like
319             "texture coordinates" in OpenGL in that they define a point in the source
320             image that is mapped to that map vertex/point. The u corresponds to the x
321             coordinate of this mapped point and v, the y coordinate. Note that these
322             coordinates describe a bounding region to sample. If you have a 200x100
323             source image and want to display it at 200x100 with proper pixel
324             precision, then do:
325
326             @code
327             Evas_Map *m = evas_map_new(4);
328             evas_map_point_coord_set(m, 0,   0,   0, 0);
329             evas_map_point_coord_set(m, 1, 200,   0, 0);
330             evas_map_point_coord_set(m, 2, 200, 100, 0);
331             evas_map_point_coord_set(m, 3,   0, 100, 0);
332             evas_map_point_image_uv_set(m, 0,   0,   0);
333             evas_map_point_image_uv_set(m, 1, 200,   0);
334             evas_map_point_image_uv_set(m, 2, 200, 100);
335             evas_map_point_image_uv_set(m, 3,   0, 100);
336             evas_object_map_set(obj, m);
337             evas_map_free(m);
338             @endcode
339
340             @remark Note that the map points a uv coordinates match the image geometry. If
341             the @p map parameter is NULL, the stored map will be freed and geometry
342             prior to enabling/setting a map will be restored.
343
344             @see evas_map_new() */
345          }
346          get {
347             /*@
348             @brief Get current object transformation map.
349
350             @if MOBILE @since_tizen 2.3
351             @elseif WEARABLE @since_tizen 2.3.1
352             @endif
353
354             @ingroup Evas_Object_Group_Map
355
356             @remark This returns the current internal map set on the indicated object. It is
357             intended for read-only access and is only valid as long as the object is
358             not deleted or the map on the object is not changed. If you wish to modify
359             the map and set it back do the following:
360
361             @code
362             const Evas_Map *m = evas_object_map_get(obj);
363             Evas_Map *m2 = evas_map_dup(m);
364             evas_map_util_rotate(m2, 30.0, 0, 0);
365             evas_object_map_set(obj, m2);
366             evas_map_free(m2);
367             @endcode
368
369             @return map reference to map in use. This is an internal data structure, so
370             do not modify it.
371
372             @see evas_object_map_set() */
373          }
374          values {
375             const(Evas_Map)* map; /*@ new map to use */
376          }
377       }
378       size_hint_aspect {
379          set {
380             /*@
381             @brief Sets the hints for an object's aspect ratio.
382
383             @if MOBILE @since_tizen 2.3
384             @elseif WEARABLE @since_tizen 2.3.1
385             @endif
386
387             @ingroup Evas_Object_Group_Size_Hints
388
389             @remark This is not a size enforcement in any way, it's just a hint that should
390             be used whenever appropriate.
391
392             @remark If any of the given aspect ratio terms are @c 0,
393             the object's container will ignore the aspect and scale @p obj to
394             occupy the whole available area, for any given policy.
395
396             @see evas_object_size_hint_aspect_get() for more information. */
397          }
398          get {
399             /*@
400             @brief Retrieves the hints for an object's aspect ratio.
401
402             @if MOBILE @since_tizen 2.3
403             @elseif WEARABLE @since_tizen 2.3.1
404             @endif
405
406             @ingroup Evas_Object_Group_Size_Hints
407
408             @remark The different aspect ratio policies are documented in the
409             #Evas_Aspect_Control type. A container respecting these size hints
410             would @b resize its children accordingly to those policies.
411
412             @remark For any policy, if any of the given aspect ratio terms are @c 0,
413             the object's container should ignore the aspect and scale @p obj to
414             occupy the whole available area. If they are both positive
415             integers, that proportion will be respected, under each scaling
416             policy.
417
418             @remark These images illustrate some of the #Evas_Aspect_Control policies:
419
420             @image html any-policy.png
421             @image rtf any-policy.png
422             @image latex any-policy.eps
423
424             @image html aspect-control-none-neither.png
425             @image rtf aspect-control-none-neither.png
426             @image latex aspect-control-none-neither.eps
427
428             @image html aspect-control-both.png
429             @image rtf aspect-control-both.png
430             @image latex aspect-control-both.eps
431
432             @image html aspect-control-horizontal.png
433             @image rtf aspect-control-horizontal.png
434             @image latex aspect-control-horizontal.eps
435
436             @remark This is not a size enforcement in any way, it's just a hint that
437             should be used whenever appropriate.
438
439             @remark Use @c NULL pointers on the hint components you're not
440             interested in: they'll be ignored by the function.
441
442             @remark Example:
443             @dontinclude evas-aspect-hints.c
444             @skip if (strcmp(ev->key, "c") == 0)
445             @until }
446
447             @remark See the full @ref Example_Evas_Aspect_Hints "example".
448
449             @see evas_object_size_hint_aspect_set() */
450          }
451          values {
452             Evas_Aspect_Control aspect; /*@ The policy/type of aspect ratio to apply to @p obj. */
453             Evas_Coord w; /*@ Integer to use as aspect width ratio term. */
454             Evas_Coord h; /*@ Integer to use as aspect height ratio term. */
455          }
456       }
457       layer {
458          set {
459             /*@
460             @brief Sets the layer of its canvas that the given object will be part of.
461
462             @if MOBILE @since_tizen 2.3
463             @elseif WEARABLE @since_tizen 2.3.1
464             @endif
465
466             @ingroup Evas_Object_Group_Basic
467
468             @remark If you don't use this function, you'll be dealing with an @b unique
469             layer of objects, the default one. Additional layers are handy when
470             you don't want a set of objects to interfere with another set with
471             regard to @b stacking. Two layers are completely disjoint in that
472             matter.
473
474             @remark This is a low-level function, which you'd be using when something
475             should be always on top, for example.
476
477             @warning Be careful, it doesn't make sense to change the layer of
478             smart objects' children. Smart objects have a layer of their own,
479             which should contain all their children objects.
480
481             @see evas_object_layer_get() */
482          }
483          get {
484             /*@
485             @brief Retrieves the layer of its canvas that the given object is part of.
486
487             @if MOBILE @since_tizen 2.3
488             @elseif WEARABLE @since_tizen 2.3.1
489             @endif
490
491             @ingroup Evas_Object_Group_Basic
492
493             @return  Number of its layer
494
495             @see evas_object_layer_set() */
496          }
497          values {
498             short l; /*@ The number of the layer to place the object on.
499             Must be between #EVAS_LAYER_MIN and #EVAS_LAYER_MAX. */
500          }
501       }
502       clip {
503          set {
504             /*@
505             @brief Clip one object to another.
506
507             @if MOBILE @since_tizen 2.3
508             @elseif WEARABLE @since_tizen 2.3.1
509             @endif
510
511             @ingroup Evas_Object_Group_Basic
512
513             @remark This function will clip the object @p obj to the area occupied by
514             the object @p clip. This means the object @p obj will only be
515             visible within the area occupied by the clipping object (@p clip).
516
517             @remark The color of the object being clipped will be multiplied by the
518             color of the clipping one, so the resulting color for the former
519             will be <code>RESULT = (OBJ * CLIP) / (255 * 255)</code>, per color
520             element (red, green, blue and alpha).
521
522             @remark Clipping is recursive, so clipping objects may be clipped by
523             others, and their color will in term be multiplied. You may @b not
524             set up circular clipping lists (i.e. object 1 clips object 2, which
525             clips object 1): the behavior of Evas is undefined in this case.
526
527             @remark Objects which do not clip others are visible in the canvas as
528             normal; <b>those that clip one or more objects become invisible
529             themselves</b>, only affecting what they clip. If an object ceases
530             to have other objects being clipped by it, it will become visible
531             again.
532
533             @remark The visibility of an object affects the objects that are clipped by
534             it, so if the object clipping others is not shown (as in
535             evas_object_show()), the objects clipped by it will not be shown
536             either.
537
538             @remark If @p obj was being clipped by another object when this function is
539             called, it gets implicitly removed from the old clipper's domain
540             and is made now to be clipped by its new clipper.
541
542             @remark The following figure illustrates some clipping in Evas:
543
544             @image html clipping.png
545             @image rtf clipping.png
546             @image latex clipping.eps
547
548             @remark At the moment the <b>only objects that can validly be used to
549             clip other objects are rectangle objects</b>. All other object
550             types are invalid and the result of using them is undefined. The
551             clip object @p clip must be a valid object, but can also be @c
552             @remark NULL, in which case the effect of this function is the same as
553             calling evas_object_clip_unset() on the @p obj object.
554
555             @remark Example:
556             @dontinclude evas-object-manipulation.c
557             @skip solid white clipper (note that it's the default color for a
558             @until evas_object_show(d.clipper);
559
560             See the full @ref Example_Evas_Object_Manipulation "example". */
561          }
562          get {
563             /*@
564             @brief Get the object clipping @p obj (if any).
565
566             @if MOBILE @since_tizen 2.3
567             @elseif WEARABLE @since_tizen 2.3.1
568             @endif
569
570             @ingroup Evas_Object_Group_Basic
571
572             @remark This function returns the object clipping @p obj. If @p obj is
573             not being clipped at all, @c NULL is returned. The object @p obj
574             must be a valid .Evas_Object.
575
576             @remark See also evas_object_clip_set(), evas_object_clip_unset() and
577             evas_object_clipees_get().
578
579             @remark Example:
580             @dontinclude evas-object-manipulation.c
581             @skip if (evas_object_clip_get(d.img) == d.clipper)
582             @until return
583
584             See the full @ref Example_Evas_Object_Manipulation "example". */
585          }
586          values {
587             Evas_Object *clip @nonull; /*@ The object to clip @p obj by */
588          }
589       }
590       size_hint_padding {
591          set {
592             /*@
593             @brief Sets the hints for an object's padding space.
594
595             @if MOBILE @since_tizen 2.3
596             @elseif WEARABLE @since_tizen 2.3.1
597             @endif
598
599             @ingroup Evas_Object_Group_Size_Hints
600
601             @remark This is not a size enforcement in any way, it's just a hint that
602             should be used whenever appropriate.
603
604             @see evas_object_size_hint_padding_get() for more information */
605          }
606          get {
607             /*@
608             @brief Retrieves the hints for an object's padding space.
609
610             @if MOBILE @since_tizen 2.3
611             @elseif WEARABLE @since_tizen 2.3.1
612             @endif
613
614             @ingroup Evas_Object_Group_Size_Hints
615
616             @remark Padding is extra space an object takes on each of its delimiting
617             rectangle sides, in canvas units. This space will be rendered
618             transparent, naturally, as in the following figure:
619
620             @image html padding-hints.png
621             @image rtf padding-hints.png
622             @image latex padding-hints.eps
623
624             @remark This is not a size enforcement in any way, it's just a hint that
625             should be used whenever appropriate.
626
627             @remark Use @c NULL pointers on the hint components you're not
628             interested in: they'll be ignored by the function.
629
630             @remark Example:
631             @dontinclude evas-hints.c
632             @skip evas_object_size_hint_padding_set
633             @until return
634
635             @remark In this example the padding hints change the behavior of an Evas box
636             when layouting its children. See the full @ref
637             Example_Evas_Size_Hints "example".
638
639             @see evas_object_size_hint_padding_set() */
640          }
641          values {
642             Evas_Coord l; /*@ Integer to specify left padding. */
643             Evas_Coord r; /*@ Integer to specify right padding. */
644             Evas_Coord t; /*@ Integer to specify top padding. */
645             Evas_Coord b; /*@ Integer to specify bottom padding. */
646          }
647       }
648       repeat_events {
649          set {
650             /*@
651             @brief Set whether an Evas object is to repeat events.
652
653             @if MOBILE @since_tizen 2.3
654             @elseif WEARABLE @since_tizen 2.3.1
655             @endif
656
657             @ingroup Evas_Object_Group_Events
658
659             @remark If @p repeat is @c EINA_TRUE, it will make events on @p obj to also
660             be repeated for the @b next lower object in the objects' stack (see
661             see evas_object_below_get()).
662
663             @remark If @p repeat is @c EINA_FALSE, events occurring on @p obj will be
664             processed only on it.
665
666             @remark Example:
667             @dontinclude evas-stacking.c
668             @skip if (strcmp(ev->key, "r") == 0)
669             @until }
670
671             @remark See the full @ref Example_Evas_Stacking "example".
672
673             @see evas_object_repeat_events_get()
674             @see evas_object_pass_events_set()
675             @see evas_object_propagate_events_set()
676             @see evas_object_freeze_events_set() */
677          }
678          get {
679             /*@
680             @brief Determine whether an object is set to repeat events.
681
682             @if MOBILE @since_tizen 2.3
683             @elseif WEARABLE @since_tizen 2.3.1
684             @endif
685
686             @ingroup Evas_Object_Group_Events
687
688             @return whether @p obj is set to repeat events (@c EINA_TRUE)
689             or not (@c EINA_FALSE)
690
691             @see evas_object_repeat_events_set() for an example
692             @see evas_object_pass_events_get()
693             @see evas_object_propagate_events_get()
694             @see evas_object_freeze_events_get() */
695          }
696          values {
697             bool repeat; /*@ whether @p obj is to repeat events (@c EINA_TRUE) or not
698             (@c EINA_FALSE) */
699          }
700       }
701       size_hint_weight {
702          set {
703             /*@
704             @brief Sets the hints for an object's weight.
705
706             @if MOBILE @since_tizen 2.3
707             @elseif WEARABLE @since_tizen 2.3.1
708             @endif
709
710             @ingroup Evas_Object_Group_Size_Hints
711
712             @remark This is not a size enforcement in any way, it's just a hint that
713             should be used whenever appropriate.
714
715             @remark This is a hint on how a container object should @b resize a given
716             child within its area. Containers may adhere to the simpler logic
717             of just expanding the child object's dimensions to fit its own (see
718             the #EVAS_HINT_EXPAND helper weight macro) or the complete one of
719             taking each child's weight hint as real @b weights to how much of
720             its size to allocate for them in each axis. A container is supposed
721             to, after @b normalizing the weights of its children (with weight
722             hints), distribute the space it has to layout them by those factors
723             -- most weighted children get larger in this process than the least
724             ones.
725
726             @remark Example:
727             @dontinclude evas-hints.c
728             @skip evas_object_size_hint_weight_set
729             @until return
730
731             @remark In this example the weight hints change the behavior of an Evas box
732             when layouting its children. See the full @ref
733             Example_Evas_Size_Hints "example".
734
735             @remark Default weight hint values are 0.0, for both axis.
736
737             @see evas_object_size_hint_weight_get() for more information */
738          }
739          get {
740             /*@
741             @brief Retrieves the hints for an object's weight.
742
743             @if MOBILE @since_tizen 2.3
744             @elseif WEARABLE @since_tizen 2.3.1
745             @endif
746
747             @ingroup Evas_Object_Group_Size_Hints
748
749             @remark Accepted values are zero or positive values. Some users might use
750             this hint as a boolean, but some might consider it as a @b
751             proportion, see documentation of possible users, which in Evas are
752             the @ref Evas_Object_Box "box" and @ref Evas_Object_Table "table"
753             smart objects.
754
755             @remark This is not a size enforcement in any way, it's just a hint that
756             should be used whenever appropriate.
757
758             @remark Use @c NULL pointers on the hint components you're not
759             interested in: they'll be ignored by the function.
760             @note If @c obj is invalid, then the hint components will be set with 0.0
761
762             @see evas_object_size_hint_weight_set() for an example */
763          }
764          values {
765             double x; /*@ Nonnegative double value to use as horizontal weight hint. */
766             double y; /*@ Nonnegative double value to use as vertical weight hint. */
767          }
768       }
769       name {
770          set {
771             /*@
772             @brief Sets the name of the given Evas object to the given name.
773
774             @if MOBILE @since_tizen 2.3
775             @elseif WEARABLE @since_tizen 2.3.1
776             @endif
777
778             @ingroup Evas_Object_Group_Basic
779
780             @remark There might be occasions where one would like to name his/her
781             objects.
782
783             @remark Example:
784             @dontinclude evas-events.c
785             @skip d.bg = evas_object_rectangle_add(d.canvas);
786             @until evas_object_name_set(d.bg, "our dear rectangle");
787
788             See the full @ref Example_Evas_Events "example". */
789          }
790          get {
791             /*@
792             @brief Retrieves the name of the given Evas object.
793
794             @if MOBILE @since_tizen 2.3
795             @elseif WEARABLE @since_tizen 2.3.1
796             @endif
797
798             @ingroup Evas_Object_Group_Basic
799
800             @return  The name of the object or @c NULL, if no name has been given
801             to it.
802
803             @remark Example:
804             @dontinclude evas-events.c
805             @skip fprintf(stdout, "An object got focused: %s\n",
806             @until evas_focus_get
807
808             See the full @ref Example_Evas_Events "example". */
809          }
810          values {
811             const(char)* name; /*@ The given name. */
812          }
813       }
814       scale {
815          set {
816             /*@
817             @brief Sets the scaling factor for an Evas object. Does not affect all
818             objects.
819
820             @if MOBILE @since_tizen 2.3
821             @elseif WEARABLE @since_tizen 2.3.1
822             @endif
823
824             @remark This will multiply the object's dimension by the given factor, thus
825             altering its geometry (width and height). Useful when you want
826             scalable UI elements, possibly at run time.
827
828             @remark Only text and textblock objects have scaling change
829             handlers. Other objects won't change visually on this call.
830
831             @see evas_object_scale_get()
832
833             @ingroup Evas_Object_Group_Extras */
834          }
835          get {
836             /*@
837             @brief Retrieves the scaling factor for the given Evas object.
838
839             @if MOBILE @since_tizen 2.3
840             @elseif WEARABLE @since_tizen 2.3.1
841             @endif
842
843             @return  The scaling factor.
844
845             @ingroup Evas_Object_Group_Extras
846
847             @see evas_object_scale_set() */
848          }
849          values {
850             double scale; /*@ The scaling factor. <c>1.0</c> means no scaling,
851             default size. */
852          }
853       }
854       static_clip {
855          set {
856             /*@
857             @brief Set a hint flag on the given Evas object that it's used as a "static
858             clipper".
859
860             @if MOBILE @since_tizen 2.3
861             @elseif WEARABLE @since_tizen 2.3.1
862             @endif
863
864             @remark This is a hint to Evas that this object is used as a big static
865             clipper and shouldn't be moved with children and otherwise
866             considered specially. The default value for new objects is
867             @c EINA_FALSE.
868
869             @see evas_object_static_clip_get()
870
871             @ingroup Evas_Object_Group_Extras */
872          }
873          get {
874             /*@
875             @brief Get the "static clipper" hint flag for a given Evas object.
876
877             @if MOBILE @since_tizen 2.3
878             @elseif WEARABLE @since_tizen 2.3.1
879             @endif
880
881             @return @c EINA_TRUE if it's set as a static clipper,
882             @c EINA_FALSE otherwise.
883
884             @see evas_object_static_clip_set() for more details
885
886             @ingroup Evas_Object_Group_Extras */
887          }
888          values {
889             bool is_static_clip; /*@ @c EINA_TRUE if it's to be used as a static
890             clipper, @c EINA_FALSE otherwise. */
891          }
892       }
893       focus {
894          set {
895             /*@
896             @brief Sets or unsets a given object as the currently focused one on its
897             canvas.
898
899             @if MOBILE @since_tizen 2.3
900             @elseif WEARABLE @since_tizen 2.3.1
901             @endif
902
903             @ingroup Evas_Object_Group_Basic
904
905             @remark Changing focus only affects where (key) input events go. There can
906             be only one object focused at any time. If @p focus is @c EINA_TRUE,
907             @p obj will be set as the currently focused object and it will
908             receive all keyboard events that are not exclusive key grabs on
909             other objects.
910
911             @remark Example:
912             @dontinclude evas-events.c
913             @skip evas_object_focus_set
914             @until evas_object_focus_set
915
916             @remark See the full example @ref Example_Evas_Events "here".
917
918             @see evas_object_focus_get
919             @see evas_object_key_grab
920             @see evas_object_key_ungrab */
921          }
922          get {
923             /*@
924             @brief Retrieve whether an object has the focus.
925
926             @if MOBILE @since_tizen 2.3
927             @elseif WEARABLE @since_tizen 2.3.1
928             @endif
929
930             @ingroup Evas_Object_Group_Basic
931
932             @return @c EINA_TRUE if the object has the focus, @c EINA_FALSE otherwise.
933
934             @remark If the passed object is the currently focused one, @c EINA_TRUE is
935             returned. @c EINA_FALSE is returned, otherwise.
936
937             @remark Example:
938             @dontinclude evas-events.c
939             @skip And again
940             @until something is bad
941
942             @remark See the full example @ref Example_Evas_Events "here".
943
944             @see evas_object_focus_set
945             @see evas_object_key_grab
946             @see evas_object_key_ungrab */
947          }
948          values {
949             bool focus; /*@ @c EINA_TRUE, to set it as focused or @c EINA_FALSE,
950             to take away the focus from it. */
951          }
952       }
953       is_frame_object {
954          set {
955             /*@             @since 1.2 */
956          }
957          get {
958             /*@             @since 1.2 */
959          }
960          values {
961             bool is_frame; /*@ in */
962          }
963       }
964       map_enable {
965          set {
966             /*@
967             @brief Enable or disable the map that is set.
968
969             @if MOBILE @since_tizen 2.3
970             @elseif WEARABLE @since_tizen 2.3.1
971             @endif
972
973             @ingroup Evas_Object_Group_Map
974
975             @remark Enable or disable the use of map for the object @p obj.
976             On enable, the object geometry will be saved, and the new geometry will
977             change (position and size) to reflect the map geometry set.
978
979             @remark If the object doesn't have a map set (with evas_object_map_set()), the
980             initial geometry will be undefined. It is advised to always set a map
981             to the object first, and then call this function to enable its use. */
982          }
983          get {
984             /*@
985             @brief Get the map enabled state
986
987             @if MOBILE @since_tizen 2.3
988             @elseif WEARABLE @since_tizen 2.3.1
989             @endif
990
991             @ingroup Evas_Object_Group_Map
992
993             @remark This returns the currently enabled state of the map on the object indicated.
994             The default map enable state is off. You can enable and disable it with
995             evas_object_map_enable_set().
996
997             @return the map enabled state */
998          }
999          values {
1000             bool enabled; /*@ enabled state */
1001          }
1002       }
1003       precise_is_inside {
1004          set {
1005             /*@
1006             @brief Set whether to use precise (usually expensive) point collision
1007             detection for a given Evas object.
1008
1009             @if MOBILE @since_tizen 2.3
1010             @elseif WEARABLE @since_tizen 2.3.1
1011             @endif
1012
1013             @remark Use this function to make Evas treat objects' transparent areas as
1014             @b not belonging to it with regard to mouse pointer events. By
1015             default, all of the object's boundary rectangle will be taken in
1016             account for them.
1017
1018             @warning By using precise point collision detection you'll be
1019             making Evas more resource intensive.
1020
1021             @remark Example code follows.
1022             @dontinclude evas-events.c
1023             @skip if (strcmp(ev->key, "p") == 0)
1024             @until }
1025
1026             @remark See the full example @ref Example_Evas_Events "here".
1027
1028             @see evas_object_precise_is_inside_get()
1029             @ingroup Evas_Object_Group_Extras */
1030          }
1031          get {
1032             /*@
1033             @brief Determine whether an object is set to use precise point collision
1034             detection.
1035
1036             @if MOBILE @since_tizen 2.3
1037             @elseif WEARABLE @since_tizen 2.3.1
1038             @endif
1039
1040             @return whether @p obj is set to use precise point collision
1041             detection or not The default value is false.
1042
1043             @see evas_object_precise_is_inside_set() for an example
1044
1045             @ingroup Evas_Object_Group_Extras */
1046          }
1047          values {
1048             bool precise; /*@ Whether to use precise point collision detection or
1049             not. The default value is false. */
1050          }
1051       }
1052       size_hint_align {
1053          set {
1054             /*@
1055             @brief Sets the hints for an object's alignment.
1056
1057             @if MOBILE @since_tizen 2.3
1058             @elseif WEARABLE @since_tizen 2.3.1
1059             @endif
1060
1061             @ingroup Evas_Object_Group_Size_Hints
1062
1063             @remark These are hints on how to align an object <b>inside the boundaries
1064             of a container/manager</b>. Accepted values are in the @c 0.0 to @c
1065             1.0 range, with the special value #EVAS_HINT_FILL used to specify
1066             "justify" or "fill" by some users. In this case, maximum size hints
1067             should be enforced with higher priority, if they are set. Also, any
1068             padding hint set on objects should add up to the alignment space on
1069             the final scene composition.
1070
1071             @remark See documentation of possible users: in Evas, they are the @ref
1072             Evas_Object_Box "box" and @ref Evas_Object_Table "table" smart
1073             objects.
1074
1075             @remark For the horizontal component, @c 0.0 means to the left, @c 1.0
1076             means to the right. Analogously, for the vertical component, @c 0.0
1077             to the top, @c 1.0 means to the bottom.
1078
1079             @remark See the following figure:
1080
1081             @image html alignment-hints.png
1082             @image rtf alignment-hints.png
1083             @image latex alignment-hints.eps
1084
1085             @remark This is not a size enforcement in any way, it's just a hint that
1086             should be used whenever appropriate.
1087
1088             @remark Default alignment hint values are 0.5, for both axis.
1089
1090             @remark Example:
1091             @dontinclude evas-hints.c
1092             @skip evas_object_size_hint_align_set
1093             @until return
1094
1095             @remark In this example the alignment hints change the behavior of an Evas
1096             box when layouting its children. See the full @ref
1097             Example_Evas_Size_Hints "example".
1098
1099             @see evas_object_size_hint_align_get()
1100             @see evas_object_size_hint_max_set()
1101             @see evas_object_size_hint_padding_set() */
1102          }
1103          get {
1104             /*@
1105             @brief Retrieves the hints for on object's alignment.
1106
1107             @if MOBILE @since_tizen 2.3
1108             @elseif WEARABLE @since_tizen 2.3.1
1109             @endif
1110
1111             @ingroup Evas_Object_Group_Size_Hints
1112
1113             @remark This is not a size enforcement in any way, it's just a hint that
1114             should be used whenever appropriate.
1115
1116             @remark Use @c NULL pointers on the hint components you're not
1117             interested in: they'll be ignored by the function.
1118             @note If @c obj is invalid, then the hint components will be set with 0.5
1119
1120             @see evas_object_size_hint_align_set() for more information */
1121          }
1122          values {
1123             double x; /*@ Double, ranging from @c 0.0 to @c 1.0 or with the
1124             special value #EVAS_HINT_FILL, to use as horizontal alignment hint. */
1125             double y; /*@ Double, ranging from @c 0.0 to @c 1.0 or with the
1126             special value #EVAS_HINT_FILL, to use as vertical alignment hint. */
1127          }
1128       }
1129       propagate_events {
1130          set {
1131             /*@
1132             @brief Set whether events on a smart object's member should get propagated
1133             up to its parent.
1134
1135             @if MOBILE @since_tizen 2.3
1136             @elseif WEARABLE @since_tizen 2.3.1
1137             @endif
1138
1139             @ingroup Evas_Object_Group_Events
1140
1141             @remark This function has @b no effect if @p obj is not a member of a smart
1142             object.
1143
1144             @remark If @p prop is @c EINA_TRUE, events occurring on this object will be
1145             propagated on to the smart object of which @p obj is a member.  If
1146             @p prop is @c EINA_FALSE, events occurring on this object will @b
1147             not be propagated on to the smart object of which @p obj is a
1148             member.  The default value is @c EINA_TRUE.
1149
1150             @see evas_object_propagate_events_get()
1151             @see evas_object_repeat_events_set()
1152             @see evas_object_pass_events_set()
1153             @see evas_object_freeze_events_set() */
1154          }
1155          get {
1156             /*@
1157             @brief Retrieve whether an Evas object is set to propagate events.
1158
1159             @if MOBILE @since_tizen 2.3
1160             @elseif WEARABLE @since_tizen 2.3.1
1161             @endif
1162
1163             @ingroup Evas_Object_Group_Events
1164
1165             @return whether @p obj is set to propagate events (@c EINA_TRUE)
1166             or not (@c EINA_FALSE)
1167
1168             @see evas_object_propagate_events_set()
1169             @see evas_object_repeat_events_get()
1170             @see evas_object_pass_events_get()
1171             @see evas_object_freeze_events_get() */
1172          }
1173          values {
1174             bool propagate; /*@ whether to propagate events (@c EINA_TRUE) or not
1175             (@c EINA_FALSE) */
1176          }
1177       }
1178       pass_events {
1179          set {
1180             /*@
1181             @brief Set whether an Evas object is to pass (ignore) events.
1182
1183             @if MOBILE @since_tizen 2.3
1184             @elseif WEARABLE @since_tizen 2.3.1
1185             @endif
1186
1187             @ingroup Evas_Object_Group_Events
1188
1189             @remark If @p pass is @c EINA_TRUE, it will make events on @p obj to be @b
1190             ignored. They will be triggered on the @b next lower object (that
1191             is not set to pass events), instead (see evas_object_below_get()).
1192
1193             @remark If @p pass is @c EINA_FALSE, events will be processed on that
1194             object as normal.
1195
1196             @see evas_object_pass_events_get() for an example
1197             @see evas_object_repeat_events_set()
1198             @see evas_object_propagate_events_set()
1199             @see evas_object_freeze_events_set() */
1200          }
1201          get {
1202             /*@
1203             @brief Determine whether an object is set to pass (ignore) events.
1204
1205             @if MOBILE @since_tizen 2.3
1206             @elseif WEARABLE @since_tizen 2.3.1
1207             @endif
1208
1209             @ingroup Evas_Object_Group_Events
1210
1211             @return pass whether @p obj is set to pass events (@c EINA_TRUE) or not
1212             (@c EINA_FALSE)
1213
1214             @remark Example:
1215             @dontinclude evas-stacking.c
1216             @skip if (strcmp(ev->key, "p") == 0)
1217             @until }
1218
1219             @remark See the full @ref Example_Evas_Stacking "example".
1220
1221             @see evas_object_pass_events_set()
1222             @see evas_object_repeat_events_get()
1223             @see evas_object_propagate_events_get()
1224             @see evas_object_freeze_events_get() */
1225          }
1226          values {
1227             bool pass; /*@ whether @p obj is to pass events (@c EINA_TRUE) or not
1228             (@c EINA_FALSE) */
1229          }
1230       }
1231       anti_alias {
1232          set {
1233             /*@
1234             @brief Sets whether or not the given Evas object is to be drawn anti-aliased.
1235
1236             @if MOBILE @since_tizen 2.3
1237             @elseif WEARABLE @since_tizen 2.3.1
1238             @endif
1239
1240             @ingroup Evas_Object_Group_Extras */
1241          }
1242          get {
1243             /*@
1244             @brief Retrieves whether or not the given Evas object is to be drawn anti_aliased.
1245
1246             @if MOBILE @since_tizen 2.3
1247             @elseif WEARABLE @since_tizen 2.3.1
1248             @endif
1249
1250             @return  (@c EINA_TRUE) if the object is to be anti_aliased.  (@c EINA_FALSE) otherwise.
1251             @ingroup Evas_Object_Group_Extras */
1252          }
1253          values {
1254             bool anti_alias; /*@ (@c EINA_TRUE) if the object is to be anti_aliased, (@c EINA_FALSE) otherwise. */
1255          }
1256       }
1257       smart_data {
1258          get {
1259             /*@
1260             @brief Retrieve user data stored on a given smart object.
1261
1262             @if MOBILE @since_tizen 2.3
1263             @elseif WEARABLE @since_tizen 2.3.1
1264             @endif
1265
1266             @ingroup Evas_Smart_Object_Group
1267
1268             @return A pointer to data stored using
1269             evas_object_smart_data_set(), or @c NULL, if none has been
1270             set.
1271
1272             @see evas_object_smart_data_set()
1273
1274             @ingroup Evas_Smart_Object_Group */
1275             return: void * @warn_unused;
1276          }
1277       }
1278       smart_clipped_clipper {
1279          get {
1280             /*@
1281             Get the clipper object for the given clipped smart object.
1282
1283             @return the clipper object.
1284
1285             Use this function if you want to change any of this clipper's
1286             properties, like colors.
1287
1288             @see evas_object_smart_clipped_smart_add() */
1289             return: Evas_Object * @warn_unused;
1290          }
1291       }
1292       below {
1293          get {
1294             /*@
1295             @brief Get the Evas object stacked right below @p obj
1296
1297             @if MOBILE @since_tizen 2.3
1298             @elseif WEARABLE @since_tizen 2.3.1
1299             @endif
1300
1301             @ingroup Evas_Object_Group_Basic
1302
1303             @return the #Evas_Object directly below @p obj, if any, or @c NULL,
1304             if none
1305
1306             @remark This function will traverse layers in its search, if there are
1307             objects on layers below the one @p obj is placed at.
1308
1309             @see evas_object_layer_get()
1310             @see evas_object_layer_set()
1311             @see evas_object_below_get() */
1312             return: Evas_Object * @warn_unused;
1313          }
1314       }
1315       clipees {
1316          get {
1317             /*@
1318             @brief Return a list of objects currently clipped by @p obj.
1319
1320             @if MOBILE @since_tizen 2.3
1321             @elseif WEARABLE @since_tizen 2.3.1
1322             @endif
1323
1324             @ingroup Evas_Object_Group_Basic
1325
1326             @return a list of objects being clipped by @p obj
1327
1328             @remark This returns the internal list handle that contains all objects
1329             clipped by the object @p obj. If none are clipped by it, the call
1330             returns @c NULL. This list is only valid until the clip list is
1331             changed and should be fetched again with another call to
1332             evas_object_clipees_get() if any objects being clipped by this
1333             object are unclipped, clipped by a new object, deleted or get the
1334             clipper deleted. These operations will invalidate the list
1335             returned, so it should not be used anymore after that point. Any
1336             use of the list after this may have undefined results, possibly
1337             leading to crashes. The object @p obj must be a valid
1338             .Evas_Object.
1339
1340             @remark See also evas_object_clip_set(), evas_object_clip_unset() and
1341             evas_object_clip_get().
1342
1343             @remark Example:
1344             @code
1345             extern Evas_Object *obj;
1346             Evas_Object *clipper;
1347
1348             clipper = evas_object_clip_get(obj);
1349             if (clipper)
1350             {
1351             Eina_List *clippees, *l;
1352             Evas_Object *obj_tmp;
1353
1354             clippees = evas_object_clipees_get(clipper);
1355             printf("Clipper clips %i objects\n", eina_list_count(clippees));
1356             EINA_LIST_FOREACH(clippees, l, obj_tmp)
1357             evas_object_show(obj_tmp);
1358             }
1359             @endcode */
1360             return: const(list<Evas.Object*>)* @warn_unused;
1361          }
1362       }
1363       smart_parent {
1364          get {
1365             /*@
1366             @brief Gets the parent smart object of a given Evas object, if it has one.
1367
1368             @if MOBILE @since_tizen 2.3
1369             @elseif WEARABLE @since_tizen 2.3.1
1370             @endif
1371
1372             @ingroup Evas_Smart_Object_Group
1373
1374             @return Returns the parent smart object of @a obj or @c NULL, if @a
1375             obj is not a smart member of any
1376
1377             @ingroup Evas_Smart_Object_Group */
1378             return: Evas_Object * @warn_unused;
1379          }
1380       }
1381       above {
1382          get {
1383             /*@
1384             @brief Get the Evas object stacked right above @p obj
1385
1386             @if MOBILE @since_tizen 2.3
1387             @elseif WEARABLE @since_tizen 2.3.1
1388             @endif
1389
1390             @ingroup Evas_Object_Group_Basic
1391
1392             @return the #Evas_Object directly above @p obj, if any, or @c NULL,
1393             if none
1394
1395             @remark This function will traverse layers in its search, if there are
1396             objects on layers above the one @p obj is placed at.
1397
1398             @see evas_object_layer_get()
1399             @see evas_object_layer_set()
1400             @see evas_object_below_get() */
1401             return: Evas_Object * @warn_unused;
1402          }
1403       }
1404       size_hint_display_mode {
1405          get {
1406             /*@
1407             @brief Retrieves the hints for an object's display mode
1408
1409             @if MOBILE @since_tizen 2.3
1410             @elseif WEARABLE @since_tizen 2.3.1
1411             @endif
1412
1413             @ingroup Evas_Object_Group_Size_Hints
1414
1415             @remark These are hints on the display mode @p obj. This is
1416             not a size enforcement in any way, it's just a hint that can be
1417             used whenever appropriate.
1418             This mode can be used object's display mode like commpress or expand */
1419          }
1420          set {
1421             /*@
1422             @brief Sets the hints for an object's disply mode
1423
1424             @if MOBILE @since_tizen 2.3
1425             @elseif WEARABLE @since_tizen 2.3.1
1426             @endif
1427
1428             @ingroup Evas_Object_Group_Size_Hints
1429
1430             @remark This is not a size enforcement in any way, it's just a hint that
1431             can be used whenever appropriate.*/
1432          }
1433          values {
1434             Evas_Display_Mode dispmode; /*@ display mode hint */
1435          }
1436       }
1437    }
1438    methods {
1439       clipees_has @const {
1440          /*@
1441          Test if any object is clipped by @p obj.
1442
1443          @return EINA_TRUE if @p obj clip any object.
1444          @since 1.8 */
1445          return: bool @warn_unused;
1446       }
1447       key_grab {
1448          /*@
1449          @brief Requests @p keyname key events be directed to @p obj.
1450
1451          @if MOBILE @since_tizen 2.3
1452          @elseif WEARABLE @since_tizen 2.3.1
1453          @endif
1454
1455          @ingroup Evas_Keys
1456
1457          @return @c EINA_TRUE, if the call succeeded, @c EINA_FALSE otherwise.
1458
1459          @remark Key grabs allow one or more objects to receive key events for
1460          specific key strokes even if other objects have focus. Whenever a
1461          key is grabbed, only the objects grabbing it will get the events
1462          for the given keys.
1463
1464          @p keyname is a platform dependent symbolic name for the key
1465          @remark pressed (see @ref Evas_Keys for more information).
1466
1467          @p modifiers and @p not_modifiers are bit masks of all the
1468          @remark modifiers that must and mustn't, respectively, be pressed along
1469          with @p keyname key in order to trigger this new key
1470          grab. Modifiers can be things such as Shift and Ctrl as well as
1471          user defined types via evas_key_modifier_add(). Retrieve them with
1472          evas_key_modifier_mask_get() or use @c 0 for empty masks.
1473
1474          @p exclusive will make the given object the only one permitted to
1475          @remark grab the given key. If given @c EINA_TRUE, subsequent calls on this
1476          function with different @p obj arguments will fail, unless the key
1477          is ungrabbed again.
1478
1479          @remark Example code follows.
1480          @dontinclude evas-events.c
1481          @skip if (d.focus)
1482          @until else
1483
1484          @remark See the full example @ref Example_Evas_Events "here".
1485
1486          @warning Providing impossible modifier sets creates undefined behavior
1487
1488          @see evas_object_key_ungrab
1489          @see evas_object_focus_set
1490          @see evas_object_focus_get
1491          @see evas_key_modifier_add */
1492
1493          return: bool @warn_unused;
1494          params {
1495             @in const(char)* keyname @nonull; /*@ the key to request events for. */
1496             @in Evas_Modifier_Mask modifiers; /*@ a mask of modifiers that must be present to
1497             trigger the event. */
1498             @in Evas_Modifier_Mask not_modifiers; /*@ a mask of modifiers that must @b not be present
1499             to trigger the event. */
1500             @in bool exclusive; /*@ request that the @p obj is the only object
1501             receiving the @p keyname events. */
1502          }
1503       }
1504       stack_below {
1505          /*@
1506          @brief Stack @p obj immediately below @p below
1507
1508          @if MOBILE @since_tizen 2.3
1509          @elseif WEARABLE @since_tizen 2.3.1
1510          @endif
1511
1512          @ingroup Evas_Object_Group_Basic
1513
1514          @remark Objects, in a given canvas, are stacked in the order they get added
1515          to it.  This means that, if they overlap, the highest ones will
1516          cover the lowest ones, in that order. This function is a way to
1517          change the stacking order for the objects.
1518
1519          @remark This function is intended to be used with <b>objects belonging to
1520          the same layer</b> in a given canvas, otherwise it will fail (and
1521          accomplish nothing).
1522
1523          @remark If you have smart objects on your canvas and @p obj is a member of
1524          one of them, then @p below must also be a member of the same
1525          smart object.
1526
1527          @remark Similarly, if @p obj is not a member of a smart object, @p below
1528          must not be either.
1529
1530          @see evas_object_layer_get()
1531          @see evas_object_layer_set()
1532          @see evas_object_stack_below() */
1533
1534          params {
1535             @in Evas_Object *below @nonull; /*@ the object below which to stack */
1536          }
1537       }
1538       raise {
1539          /*@
1540          @brief Raise @p obj to the top of its layer.
1541
1542          @if MOBILE @since_tizen 2.3
1543          @elseif WEARABLE @since_tizen 2.3.1
1544          @endif
1545
1546          @ingroup Evas_Object_Group_Basic
1547
1548          @p obj will, then, be the highest one in the layer it belongs
1549          @remark to. Object on other layers won't get touched.
1550
1551          @see evas_object_stack_above()
1552          @see evas_object_stack_below()
1553          @see evas_object_lower() */
1554
1555       }
1556       stack_above {
1557          /*@
1558          @brief Stack @p obj immediately above @p above
1559
1560          @if MOBILE @since_tizen 2.3
1561          @elseif WEARABLE @since_tizen 2.3.1
1562          @endif
1563
1564          @ingroup Evas_Object_Group_Basic
1565
1566          @remark Objects, in a given canvas, are stacked in the order they get added
1567          to it.  This means that, if they overlap, the highest ones will
1568          cover the lowest ones, in that order. This function is a way to
1569          change the stacking order for the objects.
1570
1571          @remark This function is intended to be used with <b>objects belonging to
1572          the same layer</b> in a given canvas, otherwise it will fail (and
1573          accomplish nothing).
1574
1575          @remark If you have smart objects on your canvas and @p obj is a member of
1576          one of them, then @p above must also be a member of the same
1577          smart object.
1578
1579          @remark Similarly, if @p obj is not a member of a smart object, @p above
1580          must not be either.
1581
1582          @see evas_object_layer_get()
1583          @see evas_object_layer_set()
1584          @see evas_object_stack_below() */
1585
1586          params {
1587             @in Evas_Object *above @nonull; /*@ the object above which to stack */
1588          }
1589       }
1590       smart_type_check @const {
1591          /*@
1592          @brief Checks whether a given smart object or any of its smart object
1593          parents is of a given smart class.
1594
1595          @if MOBILE @since_tizen 2.3
1596          @elseif WEARABLE @since_tizen 2.3.1
1597          @endif
1598
1599          @ingroup Evas_Smart_Object_Group
1600
1601          @return @c EINA_TRUE, if @a obj or any of its parents is of type @a
1602          type, @c EINA_FALSE otherwise
1603
1604          @remark If @p obj is not a smart object, this call will fail
1605          immediately.
1606
1607          @remark This function supports Eo and legacy inheritance mechanisms. However,
1608          it is recommended to use eo_isa instead if your object is using Eo from
1609          top to bottom.
1610
1611          @remark The checks use smart classes names and <b>string
1612          comparison</b>. There is a version of this same check using
1613          <b>pointer comparison</b>, since a smart class' name is a single
1614          string in Evas.
1615
1616          @see eo_isa
1617
1618          @ingroup Evas_Smart_Object_Group */
1619          return: bool @warn_unused;
1620          params {
1621             @in const(char)* type @nonull; /*@ The @b name (type) of the smart class to check for */
1622          }
1623       }
1624       name_child_find @const {
1625          /*@
1626          Retrieves the object from children of the given object with the given name.
1627          @return  If successful, the Evas object with the given name.  Otherwise,
1628          @c NULL.
1629
1630          This looks for the evas object given a name by evas_object_name_set(), but
1631          it ONLY looks at the children of the object *p obj, and will only recurse
1632          into those children if @p recurse is greater than 0. If the name is not
1633          unique within immediate children (or the whole child tree) then it is not
1634          defined which child object will be returned. If @p recurse is set to -1 then
1635          it will recurse without limit.
1636
1637          @since 1.2
1638
1639          @ingroup Evas_Object_Group_Find */
1640          return: Evas_Object * @warn_unused;
1641          params {
1642             @in const(char)* name; /*@ The given name. */
1643             @in int recurse; /*@ Set to the number of child levels to recurse (0 == don't recurse, 1 == only look at the children of @p obj or their immediate children, but no further etc.). */
1644          }
1645       }
1646       key_ungrab {
1647          /*@
1648          @brief Removes the grab on @p keyname key events by @p obj.
1649
1650          @if MOBILE @since_tizen 2.3
1651          @elseif WEARABLE @since_tizen 2.3.1
1652          @endif
1653
1654          @ingroup Evas_Keys
1655
1656          @remark Removes a key grab on @p obj if @p keyname, @p modifiers, and @p
1657          not_modifiers match.
1658
1659          @remark Example code follows.
1660          @dontinclude evas-events.c
1661          @skip got here by key grabs
1662          @until }
1663
1664          @remark See the full example @ref Example_Evas_Events "here".
1665
1666          @see evas_object_key_grab
1667          @see evas_object_focus_set
1668          @see evas_object_focus_get
1669          */
1670
1671          params {
1672             @in const(char)* keyname @nonull; /*@ the key the grab is set for. */
1673             @in Evas_Modifier_Mask modifiers; /*@ a mask of modifiers that must be present to
1674             trigger the event. */
1675             @in Evas_Modifier_Mask not_modifiers; /*@ a mask of modifiers that must not not be
1676             present to trigger the event. */
1677          }
1678       }
1679       lower {
1680          /*@
1681          @brief Lower @p obj to the bottom of its layer.
1682
1683          @if MOBILE @since_tizen 2.3
1684          @elseif WEARABLE @since_tizen 2.3.1
1685          @endif
1686
1687          @ingroup Evas_Object_Group_Basic
1688
1689          @p obj will, then, be the lowest one in the layer it belongs
1690          @remark to. Objects on other layers won't get touched.
1691
1692          @see evas_object_stack_above()
1693          @see evas_object_stack_below()
1694          @see evas_object_raise() */
1695
1696       }
1697       clip_unset {
1698          /*@
1699          @brief Disable/cease clipping on a clipped @p obj object.
1700
1701          @if MOBILE @since_tizen 2.3
1702          @elseif WEARABLE @since_tizen 2.3.1
1703          @endif
1704
1705          @ingroup Evas_Object_Group_Basic
1706
1707          @remark This function disables clipping for the object @p obj, if it was
1708          already clipped, i.e., its visibility and color get detached from
1709          the previous clipper. If it wasn't, this has no effect. The object
1710          @p obj must be a valid .Evas_Object.
1711
1712          @remark See also evas_object_clip_set() (for an example),
1713          evas_object_clipees_get() and evas_object_clip_get(). */
1714
1715       }
1716       smart_move_children_relative {
1717          /*@
1718          Moves all children objects of a given smart object relative to a
1719          given offset.
1720
1721          This will make each of @p obj object's children to move, from where
1722          they before, with those delta values (offsets) on both directions.
1723
1724          @note This is most useful on custom smart @c move() functions.
1725
1726          @note Clipped smart objects already make use of this function on
1727          their @c move() smart function definition. */
1728
1729          params {
1730             @in Evas_Coord dx; /*@ horizontal offset (delta). */
1731             @in Evas_Coord dy; /*@ vertical offset (delta). */
1732          }
1733       }
1734       smart_type_check_ptr @const {
1735          /*@
1736          @internal
1737
1738          Checks whether a given smart object or any of its smart object
1739          parents is of a given smart class, <b>using pointer comparison</b>.
1740
1741          @return @c EINA_TRUE, if @a obj or any of its parents is of type @a
1742          type, @c EINA_FALSE otherwise
1743
1744          @see evas_object_smart_type_check() for more details
1745          @see eo_isa
1746
1747          @ingroup Evas_Smart_Object_Group */
1748          return: bool @warn_unused;
1749          params {
1750             @in const(char)* type @nonull; /*@ The type (name string) to check for. Must be the name */
1751          }
1752       }
1753    }
1754    implements {
1755       Eo.Base.constructor;
1756       Eo.Base.destructor;
1757       Eo.Base.dbg_info_get;
1758       Evas.Common_Interface.evas.get;
1759       Efl.Gfx.Base.visible.set;
1760       Efl.Gfx.Base.visible.get;
1761       Efl.Gfx.Base.position.set;
1762       Efl.Gfx.Base.position.get;
1763       Efl.Gfx.Base.color.set;
1764       Efl.Gfx.Base.color.get;
1765       Efl.Gfx.Base.size.set;
1766       Efl.Gfx.Base.size.get;
1767    }
1768    events {
1769        mouse,in; /*@ Mouse In Event */
1770        mouse,out; /*@ Mouse Out Event */
1771        mouse,down; /*@ Mouse Button Down Event */
1772        mouse,up; /*@ Mouse Button Up Event */
1773        mouse,move; /*@ Mouse Move Event */
1774        mouse,wheel; /*@ Mouse Wheel Event */
1775        multi,down; /*@ Mouse-touch Down Event */
1776        multi,up; /*@ Mouse-touch Up Event */
1777        multi,move; /*@ Multi-touch Move Event */
1778        free; /*@ Object Being Freed (Called after Del) */
1779        key,down; /*@ Key Press Event */
1780        key,up; /*@ Key Release Event */
1781        focus,in; /*@ Focus In Event */
1782        focus,out; /*@ Focus Out Event */
1783        show; /*@ Show Event */
1784        hide; /*@ Hide Event */
1785        move; /*@ Move Event */
1786        resize; /*@ Resize Event */
1787        restack; /*@ Restack Event */
1788        del; /*@ Object Being Deleted (called before Free) */
1789        hold; /*@ Events go on/off hold */
1790        changed,size,hints; /*@ Size hints changed event */
1791        image,preloaded; /*@ Image has been preloaded */
1792        image,resize; /*@ Image resize */
1793        image,unloaded; /*@ Image data has been unloaded (by some mechanism in Evas that throw out original image data) */
1794    }
1795 }