13 # ifdef EFL_EVAS_BUILD
15 # define EAPI __declspec(dllexport)
18 # endif /* ! DLL_EXPORT */
20 # define EAPI __declspec(dllimport)
21 # endif /* ! EFL_EVAS_BUILD */
25 # define EAPI __attribute__ ((visibility("default")))
37 * @brief These routines are used for Evas library interaction.
39 * @todo check boolean return values and convert to Eina_Bool
40 * @todo change all api to use EINA_SAFETY_*
41 * @todo finish api documentation
46 * Identifier of callbacks to be used with object or canvas.
48 * @see evas_object_event_callback_add()
49 * @see evas_event_callback_add()
51 typedef enum _Evas_Callback_Type
54 * The following events are only for use with objects
55 * evas_object_event_callback_add():
57 EVAS_CALLBACK_MOUSE_IN, /**< Mouse In Event */
58 EVAS_CALLBACK_MOUSE_OUT, /**< Mouse Out Event */
59 EVAS_CALLBACK_MOUSE_DOWN, /**< Mouse Button Down Event */
60 EVAS_CALLBACK_MOUSE_UP, /**< Mouse Button Up Event */
61 EVAS_CALLBACK_MOUSE_MOVE, /**< Mouse Move Event */
62 EVAS_CALLBACK_MOUSE_WHEEL, /**< Mouse Wheel Event */
63 EVAS_CALLBACK_MULTI_DOWN, /**< Multi-touch Down Event */
64 EVAS_CALLBACK_MULTI_UP, /**< Multi-touch Up Event */
65 EVAS_CALLBACK_MULTI_MOVE, /**< Multi-touch Move Event */
66 EVAS_CALLBACK_FREE, /**< Object Being Freed (Called after Del) */
67 EVAS_CALLBACK_KEY_DOWN, /**< Key Press Event */
68 EVAS_CALLBACK_KEY_UP, /**< Key Release Event */
69 EVAS_CALLBACK_FOCUS_IN, /**< Focus In Event */
70 EVAS_CALLBACK_FOCUS_OUT, /**< Focus Out Event */
71 EVAS_CALLBACK_SHOW, /**< Show Event */
72 EVAS_CALLBACK_HIDE, /**< Hide Event */
73 EVAS_CALLBACK_MOVE, /**< Move Event */
74 EVAS_CALLBACK_RESIZE, /**< Resize Event */
75 EVAS_CALLBACK_RESTACK, /**< Restack Event */
76 EVAS_CALLBACK_DEL, /**< Object Being Deleted (called before Free) */
77 EVAS_CALLBACK_HOLD, /**< Events go on/off hold */
78 EVAS_CALLBACK_CHANGED_SIZE_HINTS, /**< Size hints changed event */
79 EVAS_CALLBACK_IMAGE_PRELOADED, /**< Image as been preloaded */
83 * The following events are only for use with canvas
84 * evas_event_callback_add():
87 EVAS_CALLBACK_CANVAS_FOCUS_IN, /**< Canvas got focus as a whole */
88 EVAS_CALLBACK_CANVAS_FOCUS_OUT, /**< Canvas lost focus as a whole */
89 EVAS_CALLBACK_RENDER_FLUSH_PRE, /**< Called just before rendering is updated on the canvas target */
90 EVAS_CALLBACK_RENDER_FLUSH_POST, /**< Called just after rendering is updated on the canvas target */
94 /* the following id no event number, but a sentinel: */
95 EVAS_CALLBACK_LAST /**< keep as last element/sentinel -- not really an event */
96 } Evas_Callback_Type; /**< The type of event to trigger the callback */
99 * Flags for Mouse Button events
101 typedef enum _Evas_Button_Flags
103 EVAS_BUTTON_NONE = 0, /**< No extra mouse button data */
104 EVAS_BUTTON_DOUBLE_CLICK = (1 << 0), /**< This mouse button press was the 2nd press of a double click */
105 EVAS_BUTTON_TRIPLE_CLICK = (1 << 1) /**< This mouse button press was the 3rd press of a triple click */
106 } Evas_Button_Flags; /**< Flags for Mouse Button events */
111 typedef enum _Evas_Event_Flags
113 EVAS_EVENT_FLAG_NONE = 0, /**< No fancy flags set */
114 EVAS_EVENT_FLAG_ON_HOLD = (1 << 0) /**< This event is being delivered but should be put "on hold" until the on hold flag is unset. the event should be used for informational purposes and maybe some indications visually, but not actually perform anything */
115 } Evas_Event_Flags; /**< Flags for Events */
118 * Flags for Font Hinting
119 * @ingroup Evas_Font_Group
121 typedef enum _Evas_Font_Hinting_Flags
123 EVAS_FONT_HINTING_NONE, /**< No font hinting */
124 EVAS_FONT_HINTING_AUTO, /**< Automatic font hinting */
125 EVAS_FONT_HINTING_BYTECODE /**< Bytecode font hinting */
126 } Evas_Font_Hinting_Flags; /**< Flags for Font Hinting */
129 * Colorspaces for pixel data supported by Evas
130 * @ingroup Evas_Object_Image
132 typedef enum _Evas_Colorspace
134 EVAS_COLORSPACE_ARGB8888, /**< ARGB 32 bits per pixel, high-byte is Alpha, accessed 1 32bit word at a time */
135 /* these are not currently supported - but planned for the future */
136 EVAS_COLORSPACE_YCBCR422P601_PL, /**< YCbCr 4:2:2 Planar, ITU.BT-601 specifications. The data poitned to is just an array of row pointer, pointing to the Y rows, then the Cb, then Cr rows */
137 EVAS_COLORSPACE_YCBCR422P709_PL,/**< YCbCr 4:2:2 Planar, ITU.BT-709 specifications. The data poitned to is just an array of row pointer, pointing to the Y rows, then the Cb, then Cr rows */
138 EVAS_COLORSPACE_RGB565_A5P /**< 16bit rgb565 + Alpha plane at end - 5 bits of the 8 being used per alpha byte */
139 } Evas_Colorspace; /**< Colorspaces for pixel data supported by Evas */
142 * How to pack items into cells in a table.
143 * @ingroup Evas_Object_Table
145 typedef enum _Evas_Object_Table_Homogeneous_Mode
147 EVAS_OBJECT_TABLE_HOMOGENEOUS_NONE = 0,
148 EVAS_OBJECT_TABLE_HOMOGENEOUS_TABLE = 1,
149 EVAS_OBJECT_TABLE_HOMOGENEOUS_ITEM = 2
150 } Evas_Object_Table_Homogeneous_Mode; /**< Table cell pack mode. */
152 typedef struct _Evas_Transform Evas_Transform; /**< An Evas projective or affine transform */
153 typedef struct _Evas_Coord_Rectangle Evas_Coord_Rectangle; /**< A generic rectangle handle */
154 typedef struct _Evas_Point Evas_Point; /**< integer point */
156 typedef struct _Evas_Coord_Point Evas_Coord_Point; /**< Evas_Coord point */
157 typedef struct _Evas_Coord_Precision_Point Evas_Coord_Precision_Point; /**< Evas_Coord point with sub-pixel precision */
159 typedef struct _Evas_Position Evas_Position; /**< associates given point in Canvas and Output */
160 typedef struct _Evas_Precision_Position Evas_Precision_Position; /**< associates given point in Canvas and Output, with sub-pixel precision */
163 * @typedef Evas_Smart_Class
164 * A smart object base class
165 * @ingroup Evas_Smart_Group
167 typedef struct _Evas_Smart_Class Evas_Smart_Class;
170 * @typedef Evas_Smart_Cb_Description
171 * A smart object callback description, used to provide introspection
172 * @ingroup Evas_Smart_Group
174 typedef struct _Evas_Smart_Cb_Description Evas_Smart_Cb_Description;
178 * An opaque handle to map points
179 * @see evas_map_new()
180 * @see evas_map_free()
181 * @see evas_map_dup()
182 * @ingroup Evas_Object_Group_Map
184 typedef struct _Evas_Map Evas_Map;
188 * An Evas canvas handle.
191 * @ingroup Evas_Canvas
193 typedef struct _Evas Evas;
196 * @typedef Evas_Object
197 * An Evas Object handle.
198 * @ingroup Evas_Object_Group
200 typedef struct _Evas_Object Evas_Object;
202 typedef void Evas_Performance; /**< An Evas Performance handle */
203 typedef struct _Evas_Modifier Evas_Modifier; /**< An Evas Modifier */
204 typedef struct _Evas_Lock Evas_Lock; /**< An Evas Lock */
205 typedef struct _Evas_Smart Evas_Smart; /**< An Evas Smart Object handle */
206 typedef struct _Evas_Native_Surface Evas_Native_Surface; /**< A generic datatype for engine specific native surface information */
207 typedef unsigned long long Evas_Modifier_Mask; /**< An Evas modifier mask type */
209 typedef int Evas_Coord;
210 typedef int Evas_Font_Size;
211 typedef int Evas_Angle;
213 struct _Evas_Transform /** An affine or projective coordinate transformation matrix */
220 struct _Evas_Coord_Rectangle /**< A rectangle in Evas_Coord */
222 Evas_Coord x; /**< top-left x co-ordinate of rectangle */
223 Evas_Coord y; /**< top-left y co-ordinate of rectangle */
224 Evas_Coord w; /**< width of rectangle */
225 Evas_Coord h; /**< height of rectangle */
233 struct _Evas_Coord_Point
238 struct _Evas_Coord_Precision_Point
244 struct _Evas_Position
247 Evas_Coord_Point canvas;
250 struct _Evas_Precision_Position
253 Evas_Coord_Precision_Point canvas;
256 typedef enum _Evas_Aspect_Control
258 EVAS_ASPECT_CONTROL_NONE = 0,
259 EVAS_ASPECT_CONTROL_NEITHER = 1,
260 EVAS_ASPECT_CONTROL_HORIZONTAL = 2,
261 EVAS_ASPECT_CONTROL_VERTICAL = 3,
262 EVAS_ASPECT_CONTROL_BOTH = 4
263 } Evas_Aspect_Control;
266 typedef struct _Evas_Pixel_Import_Source Evas_Pixel_Import_Source; /**< A source description of pixels for importing pixels */
267 typedef struct _Evas_Engine_Info Evas_Engine_Info; /**< A generic Evas Engine information structure */
268 typedef struct _Evas_Device Evas_Device; /**< A source device handle - where the event came from */
269 typedef struct _Evas_Event_Mouse_Down Evas_Event_Mouse_Down; /**< Event structure for #EVAS_CALLBACK_MOUSE_DOWN event callbacks */
270 typedef struct _Evas_Event_Mouse_Up Evas_Event_Mouse_Up; /**< Event structure for #EVAS_CALLBACK_MOUSE_UP event callbacks */
271 typedef struct _Evas_Event_Mouse_In Evas_Event_Mouse_In; /**< Event structure for #EVAS_CALLBACK_MOUSE_IN event callbacks */
272 typedef struct _Evas_Event_Mouse_Out Evas_Event_Mouse_Out; /**< Event structure for #EVAS_CALLBACK_MOUSE_OUT event callbacks */
273 typedef struct _Evas_Event_Mouse_Move Evas_Event_Mouse_Move; /**< Event structure for #EVAS_CALLBACK_MOUSE_MOVE event callbacks */
274 typedef struct _Evas_Event_Mouse_Wheel Evas_Event_Mouse_Wheel; /**< Event structure for #EVAS_CALLBACK_MOUSE_WHEEL event callbacks */
275 typedef struct _Evas_Event_Multi_Down Evas_Event_Multi_Down; /**< Event structure for #EVAS_CALLBACK_MULTI_DOWN event callbacks */
276 typedef struct _Evas_Event_Multi_Up Evas_Event_Multi_Up; /**< Event structure for #EVAS_CALLBACK_MULTI_UP event callbacks */
277 typedef struct _Evas_Event_Multi_Move Evas_Event_Multi_Move; /**< Event structure for #EVAS_CALLBACK_MULTI_MOVE event callbacks */
278 typedef struct _Evas_Event_Key_Down Evas_Event_Key_Down; /**< Event structure for #EVAS_CALLBACK_KEY_DOWN event callbacks */
279 typedef struct _Evas_Event_Key_Up Evas_Event_Key_Up; /**< Event structure for #EVAS_CALLBACK_KEY_UP event callbacks */
280 typedef struct _Evas_Event_Hold Evas_Event_Hold; /**< Event structure for #EVAS_CALLBACK_HOLD event callbacks */
282 /* load error identifiers, see evas_load_error_str() */
283 #define EVAS_LOAD_ERROR_NONE 0 /**< No error on load */
284 #define EVAS_LOAD_ERROR_GENERIC 1 /**< A non-specific error occured */
285 #define EVAS_LOAD_ERROR_DOES_NOT_EXIST 2 /**< File (or file path) does not exist */
286 #define EVAS_LOAD_ERROR_PERMISSION_DENIED 3 /**< Permission deinied to an existing file (or path) */
287 #define EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED 4 /**< Allocation of resources failure prevented load */
288 #define EVAS_LOAD_ERROR_CORRUPT_FILE 5 /**< File corrupt (but was detected as a known format) */
289 #define EVAS_LOAD_ERROR_UNKNOWN_FORMAT 6 /**< File is not a known format */
291 #define EVAS_ALLOC_ERROR_NONE 0 /**< No allocation error */
292 #define EVAS_ALLOC_ERROR_FATAL 1 /**< Allocation failed despite attempts to free up memory */
293 #define EVAS_ALLOC_ERROR_RECOVERED 2 /**< Allocation succeeded, but extra memory had to be found by freeing up speculative resources */
295 #define EVAS_TEXT_INVALID -1
296 #define EVAS_TEXT_SPECIAL -2
298 struct _Evas_Pixel_Import_Source
300 int format; /**< pixel format type ie ARGB32, YUV420P_601 etc. */
301 int w, h; /**< width and height of source in pixels */
302 void **rows; /**< an array of pointers (size depends on format) pointing to left edge of each scanline */
305 struct _Evas_Native_Surface
312 struct { /* padding data for future use - have space for 8 pointers */
318 #define EVAS_LAYER_MIN -32768 /**< bottom-most layer number */
319 #define EVAS_LAYER_MAX 32767 /**< top-most layer number */
321 #define EVAS_PIXEL_FORMAT_NONE 0 /**< No pixel format */
322 #define EVAS_PIXEL_FORMAT_ARGB32 1 /**< ARGB 32bit pixel format with A in the high byte per 32bit pixel word */
323 #define EVAS_PIXEL_FORMAT_YUV420P_601 2 /**< YUV 420 Planar format with CCIR 601 color encoding wuth contiguous planes in the order Y, U and V */
325 #define EVAS_COLOR_SPACE_ARGB 0 /**< ARGB color space */
326 #define EVAS_COLOR_SPACE_AHSV 1 /**< AHSV color space */
328 #define EVAS_TEXTURE_REFLECT 0 /**< Gradient and image fill tiling mode - tiling reflects */
329 #define EVAS_TEXTURE_REPEAT 1 /**< tiling repeats */
330 #define EVAS_TEXTURE_RESTRICT 2 /**< tiling clamps - range offset ignored */
331 #define EVAS_TEXTURE_RESTRICT_REFLECT 3 /**< tiling clamps and any range offset reflects */
332 #define EVAS_TEXTURE_RESTRICT_REPEAT 4 /**< tiling clamps and any range offset repeats */
333 #define EVAS_TEXTURE_PAD 5 /**< tiling extends with end values */
335 #define EVAS_HINT_EXPAND 1.0 /**< Use with evas_object_size_hint_weight_set(), evas_object_size_hint_weight_get(), evas_object_size_hint_expand_set(), evas_object_size_hint_expand_get() */
336 #define EVAS_HINT_FILL -1.0 /**< Use with evas_object_size_hint_align_set(), evas_object_size_hint_align_get(), evas_object_size_hint_fill_set(), evas_object_size_hint_fill_get() */
337 #define evas_object_size_hint_fill_set evas_object_size_hint_align_set /**< Convenience macro to make it easier to understand that align is also used for fill properties (as fill is mutually exclusive to align) */
338 #define evas_object_size_hint_fill_get evas_object_size_hint_align_get /**< Convenience macro to make it easier to understand that align is also used for fill properties (as fill is mutually exclusive to align) */
339 #define evas_object_size_hint_expand_set evas_object_size_hint_weight_set /**< Convenience macro to make it easier to understand that weight is also used for expand properties */
340 #define evas_object_size_hint_expand_get evas_object_size_hint_weight_get /**< Convenience macro to make it easier to understand that weight is also used for expand properties */
343 * How the object should be rendered to output.
344 * @ingroup Evas_Object_Group_Extras
346 typedef enum _Evas_Render_Op
348 EVAS_RENDER_BLEND = 0, /**< default op: d = d*(1-sa) + s */
349 EVAS_RENDER_BLEND_REL = 1, /**< d = d*(1 - sa) + s*da */
350 EVAS_RENDER_COPY = 2, /**< d = s */
351 EVAS_RENDER_COPY_REL = 3, /**< d = s*da */
352 EVAS_RENDER_ADD = 4, /**< d = d + s */
353 EVAS_RENDER_ADD_REL = 5, /**< d = d + s*da */
354 EVAS_RENDER_SUB = 6, /**< d = d - s */
355 EVAS_RENDER_SUB_REL = 7, /**< d = d - s*da */
356 EVAS_RENDER_TINT = 8, /**< d = d*s + d*(1 - sa) + s*(1 - da) */
357 EVAS_RENDER_TINT_REL = 9, /**< d = d*(1 - sa + s) */
358 EVAS_RENDER_MASK = 10, /**< d = d*sa */
359 EVAS_RENDER_MUL = 11 /**< d = d*s */
360 } Evas_Render_Op; /**< How the object should be rendered to output. */
362 typedef enum _Evas_Border_Fill_Mode
364 EVAS_BORDER_FILL_NONE = 0,
365 EVAS_BORDER_FILL_DEFAULT = 1,
366 EVAS_BORDER_FILL_SOLID = 2
367 } Evas_Border_Fill_Mode;
369 typedef enum _Evas_Image_Scale_Hint
371 EVAS_IMAGE_SCALE_HINT_NONE = 0,
372 EVAS_IMAGE_SCALE_HINT_DYNAMIC = 1,
373 EVAS_IMAGE_SCALE_HINT_STATIC = 2
374 } Evas_Image_Scale_Hint;
376 typedef enum _Evas_Engine_Render_Mode
378 EVAS_RENDER_MODE_BLOCKING = 0,
379 EVAS_RENDER_MODE_NONBLOCKING = 1,
380 } Evas_Engine_Render_Mode;
382 typedef enum _Evas_Image_Content_Hint
384 EVAS_IMAGE_CONTENT_HINT_NONE = 0,
385 EVAS_IMAGE_CONTENT_HINT_DYNAMIC = 1,
386 EVAS_IMAGE_CONTENT_HINT_STATIC = 2
387 } Evas_Image_Content_Hint;
389 struct _Evas_Engine_Info /** Generic engine information. Generic info is useless */
391 int magic; /**< Magic number */
394 struct _Evas_Event_Mouse_Down /** Mouse button press event */
396 int button; /**< Mouse button number that went down (1 - 32) */
399 Evas_Coord_Point canvas;
402 Evas_Modifier *modifiers;
405 Evas_Button_Flags flags;
406 unsigned int timestamp;
407 Evas_Event_Flags event_flags;
411 struct _Evas_Event_Mouse_Up /** Mouse button release event */
413 int button; /**< Mouse button number that was raised (1 - 32) */
416 Evas_Coord_Point canvas;
419 Evas_Modifier *modifiers;
422 Evas_Button_Flags flags;
423 unsigned int timestamp;
424 Evas_Event_Flags event_flags;
428 struct _Evas_Event_Mouse_In /** Mouse enter event */
430 int buttons; /**< Button pressed mask, Bits set to 1 are buttons currently pressed (bit 0 = mouse button 1, bit 1 = mouse button 2 etc.) */
433 Evas_Coord_Point canvas;
436 Evas_Modifier *modifiers;
438 unsigned int timestamp;
439 Evas_Event_Flags event_flags;
443 struct _Evas_Event_Mouse_Out /** Mouse leave event */
445 int buttons; /**< Button pressed mask, Bits set to 1 are buttons currently pressed (bit 0 = mouse button 1, bit 1 = mouse button 2 etc.) */
449 Evas_Coord_Point canvas;
452 Evas_Modifier *modifiers;
454 unsigned int timestamp;
455 Evas_Event_Flags event_flags;
459 struct _Evas_Event_Mouse_Move /** Mouse button down event */
461 int buttons; /**< Button pressed mask, Bits set to 1 are buttons currently pressed (bit 0 = mouse button 1, bit 1 = mouse button 2 etc.) */
463 Evas_Position cur, prev;
466 Evas_Modifier *modifiers;
468 unsigned int timestamp;
469 Evas_Event_Flags event_flags;
473 struct _Evas_Event_Mouse_Wheel /** Wheel event */
475 int direction; /* 0 = default up/down wheel FIXME: more wheel types */
476 int z; /* ...,-2,-1 = down, 1,2,... = up */
479 Evas_Coord_Point canvas;
482 Evas_Modifier *modifiers;
484 unsigned int timestamp;
485 Evas_Event_Flags event_flags;
489 struct _Evas_Event_Multi_Down /** Multi button press event */
491 int device; /**< Multi device number that went down (1 or more for extra touches) */
492 double radius, radius_x, radius_y;
493 double pressure, angle;
496 Evas_Coord_Precision_Point canvas;
499 Evas_Modifier *modifiers;
502 Evas_Button_Flags flags;
503 unsigned int timestamp;
504 Evas_Event_Flags event_flags;
508 struct _Evas_Event_Multi_Up /** Multi button release event */
510 int device; /**< Multi device number that went up (1 or more for extra touches) */
511 double radius, radius_x, radius_y;
512 double pressure, angle;
515 Evas_Coord_Precision_Point canvas;
518 Evas_Modifier *modifiers;
521 Evas_Button_Flags flags;
522 unsigned int timestamp;
523 Evas_Event_Flags event_flags;
527 struct _Evas_Event_Multi_Move /** Multi button down event */
529 int device; /**< Multi device number that moved (1 or more for extra touches) */
530 double radius, radius_x, radius_y;
531 double pressure, angle;
533 Evas_Precision_Position cur;
536 Evas_Modifier *modifiers;
538 unsigned int timestamp;
539 Evas_Event_Flags event_flags;
543 struct _Evas_Event_Key_Down /** Key press event */
545 char *keyname; /**< The string name of the key pressed */
547 Evas_Modifier *modifiers;
550 const char *key; /**< The logical key : (eg shift+1 == exclamation) */
551 const char *string; /**< A UTF8 string if this keystroke has produced a visible string to be ADDED */
552 const char *compose; /**< A UTF8 string if this keystroke has modified a string in the middle of being composed - this string replaces the previous one */
553 unsigned int timestamp;
554 Evas_Event_Flags event_flags;
558 struct _Evas_Event_Key_Up /** Key release event */
560 char *keyname; /**< The string name of the key released */
562 Evas_Modifier *modifiers;
565 const char *key; /**< The logical key : (eg shift+1 == exclamation) */
566 const char *string; /**< A UTF8 string if this keystroke has produced a visible string to be ADDED */
567 const char *compose; /**< A UTF8 string if this keystroke has modified a string in the middle of being composed - this string replaces the previous one */
568 unsigned int timestamp;
569 Evas_Event_Flags event_flags;
573 struct _Evas_Event_Hold /** Hold change event */
575 int hold; /**< The hold flag */
578 unsigned int timestamp;
579 Evas_Event_Flags event_flags;
584 * How mouse pointer should be handled by Evas.
586 * If #EVAS_OBJECT_POINTER_MODE_AUTOGRAB, then when mouse is down an
587 * object, then moves outside of it, the pointer still behaves as
588 * being bound to the object, albeit out of its drawing region. On
589 * mouse up, the event will be feed to the object, that may check if
590 * the final position is over or not and do something about it.
592 * @ingroup Evas_Object_Group_Extras
594 typedef enum _Evas_Object_Pointer_Mode
596 EVAS_OBJECT_POINTER_MODE_AUTOGRAB, /**< default, X11-like */
597 EVAS_OBJECT_POINTER_MODE_NOGRAB
598 } Evas_Object_Pointer_Mode; /**< How mouse pointer should be handled by Evas. */
600 typedef void (*Evas_Smart_Cb) (void *data, Evas_Object *obj, void *event_info);
601 typedef void (*Evas_Event_Cb) (void *data, Evas *e, void *event_info);
602 typedef Eina_Bool (*Evas_Object_Event_Post_Cb) (void *data, Evas *e);
603 typedef void (*Evas_Object_Event_Cb) (void *data, Evas *e, Evas_Object *obj, void *event_info);
610 * @defgroup Evas_Group Top Level Functions
612 * Functions that affect Evas as a whole.
614 EAPI int evas_init (void);
615 EAPI int evas_shutdown (void);
617 EAPI int evas_alloc_error (void);
619 EAPI int evas_async_events_fd_get (void) EINA_WARN_UNUSED_RESULT EINA_PURE;
620 EAPI int evas_async_events_process (void);
621 EAPI Eina_Bool evas_async_events_put (const void *target, Evas_Callback_Type type, void *event_info, void (*func)(void *target, Evas_Callback_Type type, void *event_info)) EINA_ARG_NONNULL(1, 4);
624 * @defgroup Evas_Canvas Canvas Functions
626 * Functions that deal with the basic evas object. They are the
627 * functions you need to use at a minimum to get a working evas, and
632 EAPI Evas *evas_new (void) EINA_WARN_UNUSED_RESULT EINA_MALLOC;
633 EAPI void evas_free (Evas *e) EINA_ARG_NONNULL(1);
635 EAPI void evas_focus_in (Evas *e);
636 EAPI void evas_focus_out (Evas *e);
637 EAPI Eina_Bool evas_focus_state_get (const Evas *e) EINA_PURE;
639 EAPI void evas_data_attach_set (Evas *e, void *data) EINA_ARG_NONNULL(1);
640 EAPI void *evas_data_attach_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
642 EAPI void evas_damage_rectangle_add (Evas *e, int x, int y, int w, int h) EINA_ARG_NONNULL(1);
643 EAPI void evas_obscured_rectangle_add (Evas *e, int x, int y, int w, int h) EINA_ARG_NONNULL(1);
644 EAPI void evas_obscured_clear (Evas *e) EINA_ARG_NONNULL(1);
645 EAPI Eina_List *evas_render_updates (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
646 EAPI void evas_render_updates_free (Eina_List *updates);
647 EAPI void evas_render (Evas *e) EINA_ARG_NONNULL(1);
648 EAPI void evas_norender (Evas *e) EINA_ARG_NONNULL(1);
649 EAPI void evas_render_idle_flush (Evas *e) EINA_ARG_NONNULL(1);
650 EAPI void evas_render_dump (Evas *e) EINA_ARG_NONNULL(1);
653 * @defgroup Evas_Output_Method Render Engine Functions
655 * Functions that are used to set the render engine for a given
656 * function, and then get that engine working.
658 * The following code snippet shows how they can be used to
659 * initialise an evas that uses the X11 software engine:
662 * Evas_Engine_Info_Software_X11 *einfo;
663 * extern Display *display;
669 * evas_output_method_set(evas, evas_render_method_lookup("software_x11"));
670 * evas_output_size_set(evas, 640, 480);
671 * evas_output_viewport_set(evas, 0, 0, 640, 480);
672 * einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(evas);
673 * einfo->info.display = display;
674 * einfo->info.visual = DefaultVisual(display, DefaultScreen(display));
675 * einfo->info.colormap = DefaultColormap(display, DefaultScreen(display));
676 * einfo->info.drawable = win;
677 * einfo->info.depth = DefaultDepth(display, DefaultScreen(display));
678 * evas_engine_info_set(evas, (Evas_Engine_Info *)einfo);
681 * @ingroup Evas_Canvas
683 EAPI int evas_render_method_lookup (const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
684 EAPI Eina_List *evas_render_method_list (void) EINA_WARN_UNUSED_RESULT;
685 EAPI void evas_render_method_list_free (Eina_List *list);
687 EAPI void evas_output_method_set (Evas *e, int render_method) EINA_ARG_NONNULL(1);
688 EAPI int evas_output_method_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
690 EAPI Evas_Engine_Info *evas_engine_info_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
691 EAPI int evas_engine_info_set (Evas *e, Evas_Engine_Info *info) EINA_ARG_NONNULL(1);
694 * @defgroup Evas_Output_Size Output and Viewport Resizing Functions
696 * Functions that set and retrieve the output and viewport size of an
699 * @ingroup Evas_Canvas
701 EAPI void evas_output_size_set (Evas *e, int w, int h) EINA_ARG_NONNULL(1);
702 EAPI void evas_output_size_get (const Evas *e, int *w, int *h) EINA_ARG_NONNULL(1);
703 EAPI void evas_output_viewport_set (Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
704 EAPI void evas_output_viewport_get (const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
707 * @defgroup Evas_Coord_Mapping_Group Coordinate Mapping Functions
709 * Functions that are used to map coordinates from the canvas to the
710 * screen or the screen to the canvas.
712 * @ingroup Evas_Canvas
714 EAPI Evas_Coord evas_coord_screen_x_to_world (const Evas *e, int x) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
715 EAPI Evas_Coord evas_coord_screen_y_to_world (const Evas *e, int y) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
716 EAPI int evas_coord_world_x_to_screen (const Evas *e, Evas_Coord x) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
717 EAPI int evas_coord_world_y_to_screen (const Evas *e, Evas_Coord y) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
720 * @defgroup Evas_Pointer_Group Pointer (Mouse) Functions
722 * Functions that deal with the status of the pointer (mouse cursor).
724 * @ingroup Evas_Canvas
726 EAPI void evas_pointer_output_xy_get (const Evas *e, int *x, int *y) EINA_ARG_NONNULL(1);
727 EAPI void evas_pointer_canvas_xy_get (const Evas *e, Evas_Coord *x, Evas_Coord *y) EINA_ARG_NONNULL(1);
728 EAPI int evas_pointer_button_down_mask_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
729 EAPI Eina_Bool evas_pointer_inside_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
730 EAPI void evas_sync(Evas *e) EINA_ARG_NONNULL(1);
734 * @defgroup Evas_Event_Freezing_Group Event Freezing Functions
736 * Functions that deal with the freezing of event processing of an
739 * @ingroup Evas_Canvas
741 EAPI void evas_event_freeze (Evas *e) EINA_ARG_NONNULL(1);
742 EAPI void evas_event_thaw (Evas *e) EINA_ARG_NONNULL(1);
743 EAPI int evas_event_freeze_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
746 * @defgroup Evas_Event_Feeding_Group Event Feeding Functions
748 * Functions to tell Evas that events happened and should be
751 * As explained in @ref intro_not_evas, Evas does not know how to poll
752 * for events, so the developer should do it and then feed such events
753 * to the canvas to be processed. This is only required if operating
754 * Evas directly as modules such as Ecore_Evas does that for you.
756 * @ingroup Evas_Canvas
758 EAPI void evas_event_feed_mouse_down (Evas *e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
759 EAPI void evas_event_feed_mouse_up (Evas *e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
760 EAPI void evas_event_feed_mouse_move (Evas *e, int x, int y, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
761 EAPI void evas_event_feed_mouse_in (Evas *e, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
762 EAPI void evas_event_feed_mouse_out (Evas *e, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
763 EAPI void evas_event_feed_multi_down (Evas *e, int d, int x, int y, double rad, double radx, double rady, double pres, double ang, double fx, double fy, Evas_Button_Flags flags, unsigned int timestamp, const void *data);
764 EAPI void evas_event_feed_multi_up (Evas *e, int d, int x, int y, double rad, double radx, double rady, double pres, double ang, double fx, double fy, Evas_Button_Flags flags, unsigned int timestamp, const void *data);
765 EAPI void evas_event_feed_multi_move (Evas *e, int d, int x, int y, double rad, double radx, double rady, double pres, double ang, double fx, double fy, unsigned int timestamp, const void *data);
766 EAPI void evas_event_feed_mouse_cancel (Evas *e, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
767 EAPI void evas_event_feed_mouse_wheel (Evas *e, int direction, int z, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
768 EAPI void evas_event_feed_key_down (Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
769 EAPI void evas_event_feed_key_up (Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
770 EAPI void evas_event_feed_hold (Evas *e, int hold, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
773 * @defgroup Evas_Canvas_Events Canvas Events
775 * Canvas generates some events
777 * @ingroup Evas_Canvas
780 EAPI void evas_event_callback_add (Evas *e, Evas_Callback_Type type, Evas_Event_Cb func, const void *data) EINA_ARG_NONNULL(1, 3);
781 EAPI void *evas_event_callback_del (Evas *e, Evas_Callback_Type type, Evas_Event_Cb func) EINA_ARG_NONNULL(1, 3);
782 EAPI void *evas_event_callback_del_full (Evas *e, Evas_Callback_Type type, Evas_Event_Cb func, const void *data) EINA_ARG_NONNULL(1, 3);
783 EAPI void evas_post_event_callback_push (Evas *e, Evas_Object_Event_Post_Cb func, const void *data);
784 EAPI void evas_post_event_callback_remove (Evas *e, Evas_Object_Event_Post_Cb func);
785 EAPI void evas_post_event_callback_remove_full (Evas *e, Evas_Object_Event_Post_Cb func, const void *data);
788 * @defgroup Evas_Image_Group Image Functions
790 * Functions that deals with images at canvas level.
792 * @ingroup Evas_Canvas
794 EAPI void evas_image_cache_flush (Evas *e) EINA_ARG_NONNULL(1);
795 EAPI void evas_image_cache_reload (Evas *e) EINA_ARG_NONNULL(1);
796 EAPI void evas_image_cache_set (Evas *e, int size) EINA_ARG_NONNULL(1);
797 EAPI int evas_image_cache_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
801 * @defgroup Evas_Font_Group Font Functions
803 * Functions that deals with fonts.
805 * @ingroup Evas_Canvas
807 EAPI void evas_font_hinting_set (Evas *e, Evas_Font_Hinting_Flags hinting) EINA_ARG_NONNULL(1);
808 EAPI Evas_Font_Hinting_Flags evas_font_hinting_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
809 EAPI Eina_Bool evas_font_hinting_can_hint (const Evas *e, Evas_Font_Hinting_Flags hinting) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
811 EAPI void evas_font_cache_flush (Evas *e) EINA_ARG_NONNULL(1);
812 EAPI void evas_font_cache_set (Evas *e, int size) EINA_ARG_NONNULL(1);
813 EAPI int evas_font_cache_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
815 EAPI Eina_List *evas_font_available_list (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
816 EAPI void evas_font_available_list_free (Evas *e, Eina_List *available) EINA_ARG_NONNULL(1);
819 * @defgroup Evas_Font_Path_Group Font Path Functions
821 * Functions that edit the paths being used to load fonts.
823 * @ingroup Evas_Font_Group
825 EAPI void evas_font_path_clear (Evas *e) EINA_ARG_NONNULL(1);
826 EAPI void evas_font_path_append (Evas *e, const char *path) EINA_ARG_NONNULL(1, 2);
827 EAPI void evas_font_path_prepend (Evas *e, const char *path) EINA_ARG_NONNULL(1, 2);
828 EAPI const Eina_List *evas_font_path_list (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
831 * @defgroup Evas_Object_Group Generic Object Functions
833 * Functions that manipulate generic evas objects.
837 * @defgroup Evas_Object_Group_Basic Basic Object Manipulation
839 * Methods that are often used, like those that change the color,
840 * clippers and geometry of the object.
842 * @ingroup Evas_Object_Group
844 EAPI void evas_object_clip_set (Evas_Object *obj, Evas_Object *clip) EINA_ARG_NONNULL(1, 2);
845 EAPI Evas_Object *evas_object_clip_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
846 EAPI void evas_object_clip_unset (Evas_Object *obj);
847 EAPI const Eina_List *evas_object_clipees_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
849 EAPI void evas_object_focus_set (Evas_Object *obj, Eina_Bool focus) EINA_ARG_NONNULL(1);
850 EAPI Eina_Bool evas_object_focus_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
852 EAPI void evas_object_layer_set (Evas_Object *obj, short l) EINA_ARG_NONNULL(1);
853 EAPI short evas_object_layer_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
855 EAPI void evas_object_name_set (Evas_Object *obj, const char *name) EINA_ARG_NONNULL(1);
856 EAPI const char *evas_object_name_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
858 EAPI void evas_object_del (Evas_Object *obj) EINA_ARG_NONNULL(1);
859 EAPI void evas_object_move (Evas_Object *obj, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1);
860 EAPI void evas_object_resize (Evas_Object *obj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
861 EAPI void evas_object_geometry_get (const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
863 EAPI void evas_object_show (Evas_Object *obj) EINA_ARG_NONNULL(1);
864 EAPI void evas_object_hide (Evas_Object *obj) EINA_ARG_NONNULL(1);
865 EAPI Eina_Bool evas_object_visible_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
867 EAPI void evas_object_color_set (Evas_Object *obj, int r, int g, int b, int a) EINA_ARG_NONNULL(1);
868 EAPI void evas_object_color_get (const Evas_Object *obj, int *r, int *g, int *b, int *a) EINA_ARG_NONNULL(1);
870 EAPI Evas *evas_object_evas_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
872 EAPI const char *evas_object_type_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
874 EAPI void evas_object_raise (Evas_Object *obj) EINA_ARG_NONNULL(1);
875 EAPI void evas_object_lower (Evas_Object *obj) EINA_ARG_NONNULL(1);
876 EAPI void evas_object_stack_above (Evas_Object *obj, Evas_Object *above) EINA_ARG_NONNULL(1, 2);
877 EAPI void evas_object_stack_below (Evas_Object *obj, Evas_Object *below) EINA_ARG_NONNULL(1, 2);
878 EAPI Evas_Object *evas_object_above_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
879 EAPI Evas_Object *evas_object_below_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
883 * @defgroup Evas_Object_Group_Events Object Events
885 * Objects generates events when they are moved, resized, when their
886 * visibility change, when they are deleted and so on. These methods
887 * will allow one to handle such events.
889 * The events can be those from keyboard and mouse, if the object
890 * accepts these events.
892 * @ingroup Evas_Object_Group
894 EAPI void evas_object_event_callback_add (Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data) EINA_ARG_NONNULL(1, 3);
895 EAPI void *evas_object_event_callback_del (Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func) EINA_ARG_NONNULL(1, 3);
896 EAPI void *evas_object_event_callback_del_full(Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data) EINA_ARG_NONNULL(1, 3);
898 EAPI void evas_object_pass_events_set (Evas_Object *obj, Eina_Bool pass) EINA_ARG_NONNULL(1);
899 EAPI Eina_Bool evas_object_pass_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
900 EAPI void evas_object_repeat_events_set (Evas_Object *obj, Eina_Bool repeat) EINA_ARG_NONNULL(1);
901 EAPI Eina_Bool evas_object_repeat_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
902 EAPI void evas_object_propagate_events_set (Evas_Object *obj, Eina_Bool prop) EINA_ARG_NONNULL(1);
903 EAPI Eina_Bool evas_object_propagate_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
906 * @defgroup Evas_Object_Group_Map UV Mapping (Rotation, Perspecitve, 3D...)
908 * Evas allows different transformations to be applied to all kinds of
909 * objects. These are applied by means of UV mapping.
911 * With UV mapping, one maps points in the source object to a 3D space
912 * positioning at target. This allows rotation, perspective, scale and
913 * lots of other effects, depending on the map that is used.
915 * Each map point may carry a multiplier color. If properly
916 * calculated, these can do shading effects on the object, producing
919 * As usual, Evas provides both the raw and easy to use methods. The
920 * raw methods allow developer to create its maps somewhere else,
921 * maybe load them from some file format. The easy to use methods,
922 * calculate the points given some high-level parameters, such as
923 * rotation angle, ambient light and so on.
925 * @note applying mapping will reduce performance, so use with
926 * care. The impact on performance depends on engine in
927 * use. Software is quite optimized, but not as fast as OpenGL.
929 * @ingroup Evas_Object_Group
931 EAPI void evas_object_map_enable_set (Evas_Object *obj, Eina_Bool enabled);
932 EAPI Eina_Bool evas_object_map_enable_get (const Evas_Object *obj);
933 EAPI void evas_object_map_source_set (Evas_Object *obj, Evas_Object *src);
934 EAPI Evas_Object *evas_object_map_source_get (const Evas_Object *obj);
935 EAPI void evas_object_map_set (Evas_Object *obj, const Evas_Map *map);
936 EAPI const Evas_Map *evas_object_map_get (const Evas_Object *obj);
938 EAPI void evas_map_util_points_populate_from_object_full (Evas_Map *m, const Evas_Object *obj, Evas_Coord z);
939 EAPI void evas_map_util_points_populate_from_object (Evas_Map *m, const Evas_Object *obj);
940 EAPI void evas_map_util_points_populate_from_geometry (Evas_Map *m, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Evas_Coord z);
942 EAPI void evas_map_util_points_color_set (Evas_Map *m, int r, int g, int b, int a);
944 EAPI void evas_map_util_rotate (Evas_Map *m, double degrees, Evas_Coord cx, Evas_Coord cy);
945 EAPI void evas_map_util_zoom (Evas_Map *m, double zoomx, double zoomy, Evas_Coord cx, Evas_Coord cy);
946 EAPI void evas_map_util_3d_rotate (Evas_Map *m, double dx, double dy, double dz, Evas_Coord cx, Evas_Coord cy, Evas_Coord cz);
947 EAPI void evas_map_util_3d_lighting (Evas_Map *m, Evas_Coord lx, Evas_Coord ly, Evas_Coord lz, int lr, int lg, int lb, int ar, int ag, int ab);
948 EAPI void evas_map_util_3d_perspective (Evas_Map *m, Evas_Coord px, Evas_Coord py, Evas_Coord z0, Evas_Coord foc);
949 EAPI Eina_Bool evas_map_util_clockwise_get (Evas_Map *m);
951 EAPI Evas_Map *evas_map_new (int count);
952 EAPI void evas_map_smooth_set (Evas_Map *m, Eina_Bool enabled);
953 EAPI Eina_Bool evas_map_smooth_get (const Evas_Map *m);
954 EAPI void evas_map_alpha_set (Evas_Map *m, Eina_Bool enabled);
955 EAPI Eina_Bool evas_map_alpha_get (const Evas_Map *m);
956 EAPI Evas_Map *evas_map_dup (const Evas_Map *m);
957 EAPI void evas_map_free (Evas_Map *m);
958 EAPI void evas_map_point_coord_set (Evas_Map *m, int idx, Evas_Coord x, Evas_Coord y, Evas_Coord z);
959 EAPI void evas_map_point_coord_get (const Evas_Map *m, int idx, Evas_Coord *x, Evas_Coord *y, Evas_Coord *z);
960 EAPI void evas_map_point_image_uv_set (Evas_Map *m, int idx, double u, double v);
961 EAPI void evas_map_point_image_uv_get (const Evas_Map *m, int idx, double *u, double *v);
962 EAPI void evas_map_point_color_set (Evas_Map *m, int idx, int r, int g, int b, int a);
963 EAPI void evas_map_point_color_get (const Evas_Map *m, int idx, int *r, int *g, int *b, int *a);
966 * @defgroup Evas_Object_Group_Size_Hints Size Hints
968 * Objects may carry hints so another object that acts as a manager
969 * (see @ref Evas_Smart_Object_Group) may know how to proper position
970 * and resize the object. The Size Hints provide a common interface
971 * that is recommended as the protocol for such information.
973 * @ingroup Evas_Object_Group
975 EAPI void evas_object_size_hint_min_get (const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
976 EAPI void evas_object_size_hint_min_set (Evas_Object *obj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
977 EAPI void evas_object_size_hint_max_get (const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
978 EAPI void evas_object_size_hint_max_set (Evas_Object *obj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
979 EAPI void evas_object_size_hint_request_get (const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
980 EAPI void evas_object_size_hint_request_set (Evas_Object *obj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
981 EAPI void evas_object_size_hint_aspect_get (const Evas_Object *obj, Evas_Aspect_Control *aspect, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
982 EAPI void evas_object_size_hint_aspect_set (Evas_Object *obj, Evas_Aspect_Control aspect, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
983 EAPI void evas_object_size_hint_align_get (const Evas_Object *obj, double *x, double *y) EINA_ARG_NONNULL(1);
984 EAPI void evas_object_size_hint_align_set (Evas_Object *obj, double x, double y) EINA_ARG_NONNULL(1);
985 EAPI void evas_object_size_hint_weight_get (const Evas_Object *obj, double *x, double *y) EINA_ARG_NONNULL(1);
986 EAPI void evas_object_size_hint_weight_set (Evas_Object *obj, double x, double y) EINA_ARG_NONNULL(1);
987 EAPI void evas_object_size_hint_padding_get (const Evas_Object *obj, Evas_Coord *l, Evas_Coord *r, Evas_Coord *t, Evas_Coord *b) EINA_ARG_NONNULL(1);
988 EAPI void evas_object_size_hint_padding_set (Evas_Object *obj, Evas_Coord l, Evas_Coord r, Evas_Coord t, Evas_Coord b) EINA_ARG_NONNULL(1);
991 * @defgroup Evas_Object_Group_Extras Extra Object Manipulation
993 * Miscellaneous functions that also apply to any object, but are less
994 * used or not implemented by all objects.
996 * @ingroup Evas_Object_Group
998 EAPI void evas_object_data_set (Evas_Object *obj, const char *key, const void *data) EINA_ARG_NONNULL(1, 2);
999 EAPI void *evas_object_data_get (const Evas_Object *obj, const char *key) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
1000 EAPI void *evas_object_data_del (Evas_Object *obj, const char *key) EINA_ARG_NONNULL(1, 2);
1002 EAPI void evas_object_pointer_mode_set (Evas_Object *obj, Evas_Object_Pointer_Mode setting) EINA_ARG_NONNULL(1);
1003 EAPI Evas_Object_Pointer_Mode evas_object_pointer_mode_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1005 EAPI void evas_object_anti_alias_set (Evas_Object *obj, Eina_Bool antialias) EINA_ARG_NONNULL(1);
1006 EAPI Eina_Bool evas_object_anti_alias_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1008 EAPI void evas_object_scale_set (Evas_Object *obj, double scale) EINA_ARG_NONNULL(1);
1009 EAPI double evas_object_scale_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1011 EAPI void evas_object_color_interpolation_set (Evas_Object *obj, int color_space) EINA_ARG_NONNULL(1);
1012 EAPI int evas_object_color_interpolation_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1014 EAPI void evas_object_render_op_set (Evas_Object *obj, Evas_Render_Op op) EINA_ARG_NONNULL(1);
1015 EAPI Evas_Render_Op evas_object_render_op_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1017 EAPI void evas_object_precise_is_inside_set (Evas_Object *obj, Eina_Bool precise) EINA_ARG_NONNULL(1);
1018 EAPI Eina_Bool evas_object_precise_is_inside_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1021 * @defgroup Evas_Object_Group_Find Finding Objects
1023 * Functions that allows finding objects by their position, name or
1026 * @ingroup Evas_Object_Group
1028 EAPI Evas_Object *evas_focus_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1030 EAPI Evas_Object *evas_object_name_find (const Evas *e, const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1032 EAPI Evas_Object *evas_object_top_at_xy_get (const Evas *e, Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1033 EAPI Evas_Object *evas_object_top_at_pointer_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1034 EAPI Evas_Object *evas_object_top_in_rectangle_get (const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1036 EAPI Eina_List *evas_objects_at_xy_get (const Evas *e, Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1037 EAPI Eina_List *evas_objects_in_rectangle_get (const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1039 EAPI Evas_Object *evas_object_bottom_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1040 EAPI Evas_Object *evas_object_top_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1043 * @defgroup Evas_Object_Group_Interceptors Object Method Interceptors
1045 * Evas provides a way to intercept method calls. The interceptor
1046 * callback may opt to completely deny the call, or may check and
1047 * change the parameters before continuing. The continuation of an
1048 * intercepted call is done by calling the intercepted call again,
1049 * from inside the interceptor callback.
1051 * @ingroup Evas_Object_Group
1053 EAPI void evas_object_intercept_show_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), const void *data) EINA_ARG_NONNULL(1, 2);
1054 EAPI void *evas_object_intercept_show_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) EINA_ARG_NONNULL(1, 2);
1055 EAPI void evas_object_intercept_hide_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), const void *data) EINA_ARG_NONNULL(1, 2);
1056 EAPI void *evas_object_intercept_hide_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) EINA_ARG_NONNULL(1, 2);
1057 EAPI void evas_object_intercept_move_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Coord x, Evas_Coord y), const void *data) EINA_ARG_NONNULL(1, 2);
1058 EAPI void *evas_object_intercept_move_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Coord x, Evas_Coord y)) EINA_ARG_NONNULL(1, 2);
1059 EAPI void evas_object_intercept_resize_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Coord w, Evas_Coord h), const void *data) EINA_ARG_NONNULL(1, 2);
1060 EAPI void *evas_object_intercept_resize_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Coord w, Evas_Coord h)) EINA_ARG_NONNULL(1, 2);
1061 EAPI void evas_object_intercept_raise_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), const void *data) EINA_ARG_NONNULL(1, 2);
1062 EAPI void *evas_object_intercept_raise_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) EINA_ARG_NONNULL(1, 2);
1063 EAPI void evas_object_intercept_lower_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), const void *data) EINA_ARG_NONNULL(1, 2);
1064 EAPI void *evas_object_intercept_lower_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) EINA_ARG_NONNULL(1, 2);
1065 EAPI void evas_object_intercept_stack_above_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *above), const void *data) EINA_ARG_NONNULL(1, 2);
1066 EAPI void *evas_object_intercept_stack_above_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *above)) EINA_ARG_NONNULL(1, 2);
1067 EAPI void evas_object_intercept_stack_below_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *below), const void *data) EINA_ARG_NONNULL(1, 2);
1068 EAPI void *evas_object_intercept_stack_below_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *below)) EINA_ARG_NONNULL(1, 2);
1069 EAPI void evas_object_intercept_layer_set_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int l), const void *data) EINA_ARG_NONNULL(1, 2);
1070 EAPI void *evas_object_intercept_layer_set_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int l)) EINA_ARG_NONNULL(1, 2);
1071 EAPI void evas_object_intercept_color_set_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int r, int g, int b, int a), const void *data) EINA_ARG_NONNULL(1, 2);
1072 EAPI void *evas_object_intercept_color_set_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int r, int g, int b, int a)) EINA_ARG_NONNULL(1, 2);
1073 EAPI void evas_object_intercept_clip_set_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *clip), const void *data) EINA_ARG_NONNULL(1, 2);
1074 EAPI void *evas_object_intercept_clip_set_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *clip)) EINA_ARG_NONNULL(1, 2);
1075 EAPI void evas_object_intercept_clip_unset_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), const void *data) EINA_ARG_NONNULL(1, 2);
1076 EAPI void *evas_object_intercept_clip_unset_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) EINA_ARG_NONNULL(1, 2);
1081 * @defgroup Evas_Object_Specific Specific Object Functions
1083 * Functions that work on specific objects.
1088 * @defgroup Evas_Object_Rectangle Rectangle Object Functions
1090 * Functions that operate on evas rectangle objects.
1092 * @ingroup Evas_Object_Specific
1094 EAPI Evas_Object *evas_object_rectangle_add (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1097 * @defgroup Evas_Object_Image Image Object Functions
1099 * Functions used to create and manipulate image objects.
1101 * Note - Image objects may return or accept "image data" in multiple
1102 * formats. This is based on the colorspace of an object. Here is a
1103 * rundown on formats:
1105 * EVAS_COLORSPACE_ARGB8888:
1107 * This pixel format is a linear block of pixels, starting at the
1108 * top-left row by row until the bottom right of the image or pixel
1109 * region. All pixels are 32-bit unsigned int's with the high-byte
1110 * being alpha and the low byte being blue in the format ARGB. Alpha
1111 * may or may not be used by evas depending on the alpha flag of the
1112 * image, but if not used, should be set to 0xff anyway.
1114 * This colorspace uses premultiplied alpha. That means that R, G and
1115 * B cannot exceed A in value. The conversion from non-premultiplied
1118 * R = (r * a) / 255; G = (g * a) / 255; B = (b * a) / 255;
1120 * So 50% transparent blue will be: 0x80000080. This will not be
1121 * "dark" - just 50% transparent. Values are 0 == black, 255 == solid
1122 * or full red, green or blue.
1124 * EVAS_COLORSPACE_YCBCR422P601_PL:
1126 * This is a pointer-list indirected set of YUV (YCbCr) pixel
1127 * data. This means that the data returned or set is not actual pixel
1128 * data, but pointers TO lines of pixel data. The list of pointers
1129 * will first be N rows of pointers to the Y plane - pointing to the
1130 * first pixel at the start of each row in the Y plane. N is the
1131 * height of the image data in pixels. Each pixel in the Y, U and V
1132 * planes is 1 byte exactly, packed. The next N / 2 pointers will
1133 * point to rows in the U plane, and the next N / 2 pointers will
1134 * point to the V plane rows. U and V planes are half the horizontal
1135 * and vertical resolution of the Y plane.
1137 * Row order is top to bottom and row pixels are stored left to right.
1139 * There is a limitation that these images MUST be a multiple of 2
1140 * pixels in size horizontally or vertically. This is due to the U and
1141 * V planes being half resolution. Also note that this assumes the
1142 * itu601 YUV colorspace specification. This is defined for standard
1143 * television and mpeg streams. HDTV may use the itu709
1146 * Values are 0 to 255, indicating full or no signal in that plane
1149 * EVAS_COLORSPACE_YCBCR422P709_PL:
1151 * Not implemented yet.
1153 * EVAS_COLORSPACE_RGB565_A5P:
1155 * In the process of being implemented in 1 engine only. This may change.
1157 * This is a pointer to image data for 16-bit half-word pixel data in
1158 * 16bpp RGB 565 format (5 bits red, 6 bits green, 5 bits blue), with
1159 * the high-byte containing red and the low byte containing blue, per
1160 * pixel. This data is packed row by row from the top-left to the
1163 * If the image has an alpha channel enabled there will be an extra
1164 * alpha plane after the color pixel plane. If not, then this data
1165 * will not exist and should not be accessed in any way. This plane is
1166 * a set of pixels with 1 byte per pixel defining the alpha values of
1167 * all pixels in the image from the top-left to the bottom right of
1168 * the image, row by row. Even though the values of the alpha pixels
1169 * can be 0 to 255, only values 0 through to 32 are used, 32 being
1170 * solid and 0 being transparent.
1172 * RGB values can be 0 to 31 for red and blue and 0 to 63 for green,
1173 * with 0 being black and 31 or 63 being full red, green or blue
1174 * respectively. This colorspace is also pre-multiplied like
1175 * EVAS_COLORSPACE_ARGB8888 so:
1177 * R = (r * a) / 32; G = (g * a) / 32; B = (b * a) / 32;
1179 * @ingroup Evas_Object_Specific
1181 EAPI Evas_Object *evas_object_image_add (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1182 EAPI Evas_Object *evas_object_image_filled_add (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1184 EAPI void evas_object_image_file_set (Evas_Object *obj, const char *file, const char *key) EINA_ARG_NONNULL(1, 2);
1185 EAPI void evas_object_image_file_get (const Evas_Object *obj, const char **file, const char **key) EINA_ARG_NONNULL(1, 2);
1186 EAPI void evas_object_image_border_set (Evas_Object *obj, int l, int r, int t, int b) EINA_ARG_NONNULL(1);
1187 EAPI void evas_object_image_border_get (const Evas_Object *obj, int *l, int *r, int *t, int *b) EINA_ARG_NONNULL(1);
1188 EAPI void evas_object_image_border_center_fill_set(Evas_Object *obj, Evas_Border_Fill_Mode fill) EINA_ARG_NONNULL(1);
1189 EAPI Evas_Border_Fill_Mode evas_object_image_border_center_fill_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1190 EAPI void evas_object_image_filled_set (Evas_Object *obj, Eina_Bool setting) EINA_ARG_NONNULL(1);
1191 EAPI Eina_Bool evas_object_image_filled_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1192 EAPI void evas_object_image_border_scale_set(Evas_Object *obj, double scale);
1193 EAPI double evas_object_image_border_scale_get(const Evas_Object *obj);
1194 EAPI void evas_object_image_fill_set (Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
1195 EAPI void evas_object_image_fill_get (const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
1196 EAPI void evas_object_image_fill_spread_set (Evas_Object *obj, int tile_mode) EINA_ARG_NONNULL(1);
1197 EAPI int evas_object_image_fill_spread_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1198 EAPI void evas_object_image_fill_transform_set (Evas_Object *obj, Evas_Transform *t) EINA_ARG_NONNULL(1);
1199 EAPI void evas_object_image_fill_transform_get (const Evas_Object *obj, Evas_Transform *t) EINA_ARG_NONNULL(1, 2);
1200 EAPI void evas_object_image_size_set (Evas_Object *obj, int w, int h) EINA_ARG_NONNULL(1);
1201 EAPI void evas_object_image_size_get (const Evas_Object *obj, int *w, int *h) EINA_ARG_NONNULL(1);
1202 EAPI int evas_object_image_stride_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1203 EAPI int evas_object_image_load_error_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1204 EAPI void evas_object_image_data_set (Evas_Object *obj, void *data) EINA_ARG_NONNULL(1);
1205 EAPI void *evas_object_image_data_convert (Evas_Object *obj, Evas_Colorspace to_cspace) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1206 EAPI void *evas_object_image_data_get (const Evas_Object *obj, Eina_Bool for_writing) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1207 EAPI void evas_object_image_data_copy_set (Evas_Object *obj, void *data) EINA_ARG_NONNULL(1);
1208 EAPI void evas_object_image_data_update_add (Evas_Object *obj, int x, int y, int w, int h) EINA_ARG_NONNULL(1);
1209 EAPI void evas_object_image_alpha_set (Evas_Object *obj, Eina_Bool has_alpha) EINA_ARG_NONNULL(1);
1210 EAPI Eina_Bool evas_object_image_alpha_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1211 EAPI void evas_object_image_smooth_scale_set(Evas_Object *obj, Eina_Bool smooth_scale) EINA_ARG_NONNULL(1);
1212 EAPI Eina_Bool evas_object_image_smooth_scale_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1213 EAPI void evas_object_image_preload (Evas_Object *obj, Eina_Bool cancel) EINA_ARG_NONNULL(1);
1214 EAPI void evas_object_image_reload (Evas_Object *obj) EINA_ARG_NONNULL(1);
1215 EAPI Eina_Bool evas_object_image_save (const Evas_Object *obj, const char *file, const char *key, const char *flags) EINA_ARG_NONNULL(1, 2);
1216 EAPI Eina_Bool evas_object_image_pixels_import (Evas_Object *obj, Evas_Pixel_Import_Source *pixels) EINA_ARG_NONNULL(1, 2);
1217 EAPI void evas_object_image_pixels_get_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *o), void *data) EINA_ARG_NONNULL(1, 2);
1218 EAPI void evas_object_image_pixels_dirty_set (Evas_Object *obj, Eina_Bool dirty) EINA_ARG_NONNULL(1);
1219 EAPI Eina_Bool evas_object_image_pixels_dirty_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1220 EAPI void evas_object_image_load_dpi_set (Evas_Object *obj, double dpi) EINA_ARG_NONNULL(1);
1221 EAPI double evas_object_image_load_dpi_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1222 EAPI void evas_object_image_load_size_set (Evas_Object *obj, int w, int h) EINA_ARG_NONNULL(1);
1223 EAPI void evas_object_image_load_size_get (const Evas_Object *obj, int *w, int *h) EINA_ARG_NONNULL(1);
1224 EAPI void evas_object_image_load_scale_down_set (Evas_Object *obj, int scale_down) EINA_ARG_NONNULL(1);
1225 EAPI int evas_object_image_load_scale_down_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1226 EAPI void evas_object_image_load_region_set (Evas_Object *obj, int x, int y, int w, int h) EINA_ARG_NONNULL(1);
1227 EAPI void evas_object_image_load_region_get (const Evas_Object *obj, int *x, int *y, int *w, int *h) EINA_ARG_NONNULL(1);
1229 EAPI void evas_object_image_colorspace_set (Evas_Object *obj, Evas_Colorspace cspace) EINA_ARG_NONNULL(1);
1230 EAPI Evas_Colorspace evas_object_image_colorspace_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1231 EAPI void evas_object_image_native_surface_set (Evas_Object *obj, Evas_Native_Surface *surf) EINA_ARG_NONNULL(1, 2);
1232 EAPI Evas_Native_Surface *evas_object_image_native_surface_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1233 EAPI void evas_object_image_scale_hint_set (Evas_Object *obj, Evas_Image_Scale_Hint hint) EINA_ARG_NONNULL(1);
1234 EAPI Evas_Image_Scale_Hint evas_object_image_scale_hint_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1235 EAPI void evas_object_image_content_hint_set (Evas_Object *obj, Evas_Image_Content_Hint hint) EINA_ARG_NONNULL(1);
1236 EAPI Evas_Image_Content_Hint evas_object_image_content_hint_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1239 * @defgroup Evas_Object_Text Text Object Functions
1241 * Functions that operate on single line, single style text objects.
1243 * For multiline and multiple style text, see @ref Evas_Object_Textblock.
1245 * @ingroup Evas_Object_Specific
1247 typedef enum _Evas_Text_Style_Type
1249 EVAS_TEXT_STYLE_PLAIN,
1250 EVAS_TEXT_STYLE_SHADOW,
1251 EVAS_TEXT_STYLE_OUTLINE,
1252 EVAS_TEXT_STYLE_SOFT_OUTLINE,
1253 EVAS_TEXT_STYLE_GLOW,
1254 EVAS_TEXT_STYLE_OUTLINE_SHADOW,
1255 EVAS_TEXT_STYLE_FAR_SHADOW,
1256 EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW,
1257 EVAS_TEXT_STYLE_SOFT_SHADOW,
1258 EVAS_TEXT_STYLE_FAR_SOFT_SHADOW
1259 } Evas_Text_Style_Type;
1261 EAPI Evas_Object *evas_object_text_add (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1262 EAPI void evas_object_text_font_source_set (Evas_Object *obj, const char *font) EINA_ARG_NONNULL(1);
1263 EAPI const char *evas_object_text_font_source_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1264 EAPI void evas_object_text_font_set (Evas_Object *obj, const char *font, Evas_Font_Size size) EINA_ARG_NONNULL(1);
1265 EAPI void evas_object_text_font_get (const Evas_Object *obj, const char **font, Evas_Font_Size *size) EINA_ARG_NONNULL(1, 2);
1266 EAPI void evas_object_text_text_set (Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1);
1267 EAPI const char *evas_object_text_text_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1268 EAPI Evas_Coord evas_object_text_ascent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1269 EAPI Evas_Coord evas_object_text_descent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1270 EAPI Evas_Coord evas_object_text_max_ascent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1271 EAPI Evas_Coord evas_object_text_max_descent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1272 EAPI Evas_Coord evas_object_text_horiz_advance_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1273 EAPI Evas_Coord evas_object_text_vert_advance_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1274 EAPI Evas_Coord evas_object_text_inset_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1275 EAPI Eina_Bool evas_object_text_char_pos_get (const Evas_Object *obj, int pos, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1);
1276 EAPI int evas_object_text_char_coords_get (const Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1);
1277 EAPI int evas_object_text_last_up_to_pos(const Evas_Object *obj, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1);
1278 EAPI Evas_Text_Style_Type evas_object_text_style_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1279 EAPI void evas_object_text_style_set (Evas_Object *obj, Evas_Text_Style_Type type) EINA_ARG_NONNULL(1);
1280 EAPI void evas_object_text_shadow_color_set (Evas_Object *obj, int r, int g, int b, int a) EINA_ARG_NONNULL(1);
1281 EAPI void evas_object_text_shadow_color_get (const Evas_Object *obj, int *r, int *g, int *b, int *a) EINA_ARG_NONNULL(1);
1282 EAPI void evas_object_text_glow_color_set (Evas_Object *obj, int r, int g, int b, int a) EINA_ARG_NONNULL(1);
1283 EAPI void evas_object_text_glow_color_get (const Evas_Object *obj, int *r, int *g, int *b, int *a) EINA_ARG_NONNULL(1);
1284 EAPI void evas_object_text_glow2_color_set (Evas_Object *obj, int r, int g, int b, int a) EINA_ARG_NONNULL(1);
1285 EAPI void evas_object_text_glow2_color_get (const Evas_Object *obj, int *r, int *g, int *b, int *a) EINA_ARG_NONNULL(1);
1286 EAPI void evas_object_text_outline_color_set(Evas_Object *obj, int r, int g, int b, int a) EINA_ARG_NONNULL(1);
1287 EAPI void evas_object_text_outline_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a) EINA_ARG_NONNULL(1);
1288 EAPI void evas_object_text_style_pad_get (const Evas_Object *obj, int *l, int *r, int *t, int *b) EINA_ARG_NONNULL(1);
1292 * @defgroup Evas_Object_Textblock Textblock Object Functions
1294 * Functions used to create and manipulate textblock objects. Unlike
1295 * @ref Evas_Object_Text, these handle complex text, doing multiple
1296 * styles and multiline text based on HTML-like tags. Of these extra
1297 * features will be heavier on memory and processing cost.
1299 * @todo put here some usage examples
1301 * @ingroup Evas_Object_Specific
1303 typedef struct _Evas_Textblock_Style Evas_Textblock_Style;
1304 typedef struct _Evas_Textblock_Cursor Evas_Textblock_Cursor;
1305 typedef struct _Evas_Textblock_Rectangle Evas_Textblock_Rectangle;
1307 struct _Evas_Textblock_Rectangle
1309 Evas_Coord x, y, w, h;
1312 typedef enum _Evas_Textblock_Text_Type
1314 EVAS_TEXTBLOCK_TEXT_RAW,
1315 EVAS_TEXTBLOCK_TEXT_PLAIN,
1316 EVAS_TEXTBLOCK_TEXT_MARKUP
1317 } Evas_Textblock_Text_Type;
1319 EAPI Evas_Object *evas_object_textblock_add(Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1321 EAPI const char *evas_textblock_escape_string_get(const char *escape) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1322 EAPI const char *evas_textblock_string_escape_get(const char *string, int *len_ret) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1323 EAPI const char *evas_textblock_escape_string_range_get(const char *escape_start, const char *escape_end) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
1325 EAPI Evas_Textblock_Style *evas_textblock_style_new(void) EINA_WARN_UNUSED_RESULT EINA_MALLOC;
1326 EAPI void evas_textblock_style_free(Evas_Textblock_Style *ts) EINA_ARG_NONNULL(1);
1327 EAPI void evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text) EINA_ARG_NONNULL(1);
1328 EAPI const char *evas_textblock_style_get(const Evas_Textblock_Style *ts) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1330 EAPI void evas_object_textblock_style_set(Evas_Object *obj, Evas_Textblock_Style *ts) EINA_ARG_NONNULL(1);
1331 EAPI const Evas_Textblock_Style *evas_object_textblock_style_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1332 EAPI void evas_object_textblock_replace_char_set(Evas_Object *obj, const char *ch) EINA_ARG_NONNULL(1);
1333 EAPI const char *evas_object_textblock_replace_char_get(Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1335 EAPI void evas_object_textblock_text_markup_set(Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1);
1336 EAPI void evas_object_textblock_text_markup_prepend(Evas_Textblock_Cursor *cur, const char *text) EINA_ARG_NONNULL(1, 2);
1337 EAPI const char *evas_object_textblock_text_markup_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1339 EAPI const Evas_Textblock_Cursor *evas_object_textblock_cursor_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1340 EAPI Evas_Textblock_Cursor *evas_object_textblock_cursor_new(Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1342 EAPI void evas_textblock_cursor_free(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1344 EAPI void evas_textblock_cursor_node_first(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1345 EAPI void evas_textblock_cursor_node_last(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1346 EAPI Eina_Bool evas_textblock_cursor_node_next(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1347 EAPI Eina_Bool evas_textblock_cursor_node_prev(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1348 EAPI Eina_Bool evas_textblock_cursor_char_next(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1349 EAPI Eina_Bool evas_textblock_cursor_char_prev(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1350 EAPI void evas_textblock_cursor_char_first(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1351 EAPI void evas_textblock_cursor_char_last(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1352 EAPI void evas_textblock_cursor_line_first(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1353 EAPI void evas_textblock_cursor_line_last(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1354 EAPI int evas_textblock_cursor_pos_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1355 EAPI void evas_textblock_cursor_pos_set(Evas_Textblock_Cursor *cur, int pos) EINA_ARG_NONNULL(1);
1356 EAPI Eina_Bool evas_textblock_cursor_line_set(Evas_Textblock_Cursor *cur, int line) EINA_ARG_NONNULL(1);
1357 EAPI int evas_textblock_cursor_compare(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
1358 EAPI void evas_textblock_cursor_copy(const Evas_Textblock_Cursor *cur, Evas_Textblock_Cursor *cur_dest) EINA_ARG_NONNULL(1, 2);
1360 EAPI void evas_textblock_cursor_text_append(Evas_Textblock_Cursor *cur, const char *text) EINA_ARG_NONNULL(1, 2);
1361 EAPI void evas_textblock_cursor_text_prepend(Evas_Textblock_Cursor *cur, const char *text) EINA_ARG_NONNULL(1, 2);
1363 EAPI void evas_textblock_cursor_format_append(Evas_Textblock_Cursor *cur, const char *format) EINA_ARG_NONNULL(1, 2);
1364 EAPI void evas_textblock_cursor_format_prepend(Evas_Textblock_Cursor *cur, const char *format) EINA_ARG_NONNULL(1, 2);
1365 EAPI void evas_textblock_cursor_node_delete(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1366 EAPI void evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1367 EAPI void evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_Cursor *cur2) EINA_ARG_NONNULL(1, 2);
1369 EAPI const char *evas_textblock_cursor_node_text_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1370 EAPI int evas_textblock_cursor_node_text_length_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1371 EAPI const char *evas_textblock_cursor_node_format_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1372 EAPI Eina_Bool evas_textblock_cursor_node_format_is_visible_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1373 EAPI char *evas_textblock_cursor_range_text_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2, Evas_Textblock_Text_Type format) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
1375 EAPI int evas_textblock_cursor_char_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1);
1376 EAPI int evas_textblock_cursor_line_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1);
1377 EAPI Eina_Bool evas_textblock_cursor_char_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1);
1378 EAPI int evas_textblock_cursor_line_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord y) EINA_ARG_NONNULL(1);
1379 EAPI Eina_List *evas_textblock_cursor_range_geometry_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
1380 EAPI Eina_Bool evas_textblock_cursor_format_item_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1);
1382 EAPI Eina_Bool evas_textblock_cursor_eol_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1383 EAPI void evas_textblock_cursor_eol_set(Evas_Textblock_Cursor *cur, Eina_Bool eol) EINA_ARG_NONNULL(1);
1385 EAPI Eina_Bool evas_object_textblock_line_number_geometry_get(const Evas_Object *obj, int line, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1);
1386 EAPI void evas_object_textblock_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
1387 EAPI void evas_object_textblock_size_formatted_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
1388 EAPI void evas_object_textblock_size_native_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
1389 EAPI void evas_object_textblock_style_insets_get(const Evas_Object *obj, Evas_Coord *l, Evas_Coord *r, Evas_Coord *t, Evas_Coord *b) EINA_ARG_NONNULL(1);
1392 * @defgroup Evas_Line_Group Line Object Functions
1394 * Functions used to deal with evas line objects.
1396 * @ingroup Evas_Object_Specific
1398 EAPI Evas_Object *evas_object_line_add (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1399 EAPI void evas_object_line_xy_set (Evas_Object *obj, Evas_Coord x1, Evas_Coord y1, Evas_Coord x2, Evas_Coord y2);
1400 EAPI void evas_object_line_xy_get (const Evas_Object *obj, Evas_Coord *x1, Evas_Coord *y1, Evas_Coord *x2, Evas_Coord *y2);
1403 * @defgroup Evas_Object_Polygon Polygon Object Functions
1405 * Functions that operate on evas polygon objects.
1407 * Hint: as evas does not provide ellipse, smooth paths or circle, one
1408 * can calculate points and convert these to a polygon.
1410 * @ingroup Evas_Object_Specific
1412 EAPI Evas_Object *evas_object_polygon_add (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1413 EAPI void evas_object_polygon_point_add (Evas_Object *obj, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1);
1414 EAPI void evas_object_polygon_points_clear (Evas_Object *obj) EINA_ARG_NONNULL(1);
1417 * @defgroup Evas_Object_Gradient_Group Gradient Object Functions
1419 * Functions that work on evas gradient objects.
1421 * @ingroup Evas_Object_Specific
1423 EAPI Evas_Object *evas_object_gradient_add (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1424 EAPI void evas_object_gradient_color_stop_add (Evas_Object *obj, int r, int g, int b, int a, int delta) EINA_ARG_NONNULL(1);
1425 EAPI void evas_object_gradient_alpha_stop_add (Evas_Object *obj, int a, int delta) EINA_ARG_NONNULL(1);
1426 EAPI void evas_object_gradient_color_data_set (Evas_Object *obj, void *color_data, int len, Eina_Bool has_alpha) EINA_ARG_NONNULL(1, 2);
1427 EAPI void evas_object_gradient_alpha_data_set (Evas_Object *obj, void *alpha_data, int len) EINA_ARG_NONNULL(1, 2);
1428 EAPI void evas_object_gradient_clear (Evas_Object *obj) EINA_ARG_NONNULL(1);
1429 EAPI void evas_object_gradient_type_set (Evas_Object *obj, const char *type, const char *instance_params) EINA_ARG_NONNULL(1, 2);
1430 EAPI void evas_object_gradient_type_get (const Evas_Object *obj, char **type, char **instance_params) EINA_ARG_NONNULL(1, 2);
1431 EAPI void evas_object_gradient_fill_set (Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
1432 EAPI void evas_object_gradient_fill_get (const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
1433 EAPI void evas_object_gradient_fill_angle_set (Evas_Object *obj, Evas_Angle angle) EINA_ARG_NONNULL(1);
1434 EAPI Evas_Angle evas_object_gradient_fill_angle_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1435 EAPI void evas_object_gradient_fill_spread_set(Evas_Object *obj, int tile_mode) EINA_ARG_NONNULL(1);
1436 EAPI int evas_object_gradient_fill_spread_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1437 EAPI void evas_object_gradient_angle_set (Evas_Object *obj, Evas_Angle angle) EINA_ARG_NONNULL(1);
1438 EAPI Evas_Angle evas_object_gradient_angle_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1439 EAPI void evas_object_gradient_direction_set (Evas_Object *obj, int direction) EINA_ARG_NONNULL(1);
1440 EAPI int evas_object_gradient_direction_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1441 EAPI void evas_object_gradient_offset_set (Evas_Object *obj, float offset) EINA_ARG_NONNULL(1);
1442 EAPI float evas_object_gradient_offset_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1445 * @defgroup Evas_Object_Gradient2_Group Gradient2 Object Functions
1447 * Functions that work on evas gradient2 objects.
1449 * @ingroup Evas_Object_Specific
1451 EAPI void evas_object_gradient2_color_np_stop_insert (Evas_Object *obj, int r, int g, int b, int a, float pos) EINA_ARG_NONNULL(1);
1452 EAPI void evas_object_gradient2_fill_spread_set (Evas_Object *obj, int tile_mode) EINA_ARG_NONNULL(1);
1453 EAPI int evas_object_gradient2_fill_spread_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1454 EAPI void evas_object_gradient2_fill_transform_set (Evas_Object *obj, Evas_Transform *t) EINA_ARG_NONNULL(1);
1455 EAPI void evas_object_gradient2_fill_transform_get (const Evas_Object *obj, Evas_Transform *t) EINA_ARG_NONNULL(1);
1457 /* linear gradient2 objects */
1458 EAPI Evas_Object *evas_object_gradient2_linear_add (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1459 EAPI void evas_object_gradient2_linear_fill_set (Evas_Object *obj, float x0, float y0, float x1, float y1) EINA_ARG_NONNULL(1);
1460 EAPI void evas_object_gradient2_linear_fill_get (const Evas_Object *obj, float *x0, float *y0, float *x1, float *y1) EINA_ARG_NONNULL(1);
1462 /* radial gradient2 objects */
1463 EAPI Evas_Object *evas_object_gradient2_radial_add (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1464 EAPI void evas_object_gradient2_radial_fill_set (Evas_Object *obj, float cx, float cy, float rx, float ry) EINA_ARG_NONNULL(1);
1465 EAPI void evas_object_gradient2_radial_fill_get (const Evas_Object *obj, float *cx, float *cy, float *rx, float *ry) EINA_ARG_NONNULL(1);
1469 * @defgroup Evas_Smart_Group Smart Functions
1471 * Functions that deal with Evas_Smart's, creating definition
1472 * (classes) of objects that will have customized behavior for methods
1473 * like evas_object_move(), evas_object_resize(),
1474 * evas_object_clip_set() and others.
1476 * These objects will accept the generic methods defined in @ref
1477 * Evas_Object_Group and the extensions defined in @ref
1478 * Evas_Smart_Object_Group. There are couple of existent smart objects
1479 * in Evas itself, see @ref Evas_Object_Box, @ref Evas_Object_Table
1480 * and @ref Evas_Smart_Object_Clipped.
1484 * @def EVAS_SMART_CLASS_VERSION
1485 * The version you have to put into the version field in the smart
1487 * @ingroup Evas_Smart_Group
1489 #define EVAS_SMART_CLASS_VERSION 4
1491 * @struct _Evas_Smart_Class
1492 * a smart object class
1493 * @ingroup Evas_Smart_Group
1495 struct _Evas_Smart_Class
1497 const char *name; /**< the string name of the class */
1501 void (*add) (Evas_Object *o);
1502 void (*del) (Evas_Object *o);
1503 void (*move) (Evas_Object *o, Evas_Coord x, Evas_Coord y);
1504 void (*resize) (Evas_Object *o, Evas_Coord w, Evas_Coord h);
1505 void (*show) (Evas_Object *o);
1506 void (*hide) (Evas_Object *o);
1507 void (*color_set) (Evas_Object *o, int r, int g, int b, int a);
1508 void (*clip_set) (Evas_Object *o, Evas_Object *clip);
1509 void (*clip_unset) (Evas_Object *o);
1510 void (*calculate) (Evas_Object *o);
1511 void (*member_add) (Evas_Object *o, Evas_Object *child);
1512 void (*member_del) (Evas_Object *o, Evas_Object *child);
1514 const Evas_Smart_Class *parent; /**< this class inherits from this parent */
1515 const Evas_Smart_Cb_Description *callbacks; /**< callbacks at this level, NULL terminated */
1517 void *interfaces; /**< to be used in a future near you */
1523 * @struct _Evas_Smart_Cb_Description
1525 * Describes a callback used by a smart class
1526 * evas_object_smart_callback_call(), particularly useful to explain
1527 * to user and its code (ie: introspection) what the parameter @c
1528 * event_info will contain.
1530 * @ingroup Evas_Smart_Group
1532 struct _Evas_Smart_Cb_Description
1534 const char *name; /**< callback name, ie: "changed" */
1537 * @brief Hint type of @c event_info parameter of Evas_Smart_Cb.
1539 * The type string uses the pattern similar to
1541 * http://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-signatures
1543 * but extended to optionally include variable names within
1544 * brackets preceding types. Example:
1546 * @li Structure with two integers:
1549 * @li Structure called 'x' with two integers named 'a' and 'b':
1550 * @c "[x]([a]i[b]i)"
1552 * @li Array of integers:
1555 * @li Array called 'x' of struct with two integers:
1558 * @note This type string is used as a hint and is @b not validated
1559 * or enforced anyhow. Implementors should make the best use
1560 * of it to help bindings, documentation and other users of
1561 * introspection features.
1567 * @def EVAS_SMART_CLASS_INIT_NULL
1568 * Initializer to zero a whole Evas_Smart_Class structure.
1570 * @see EVAS_SMART_CLASS_INIT_VERSION
1571 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION
1572 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT
1573 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT_CALLBACKS
1574 * @ingroup Evas_Smart_Group
1576 #define EVAS_SMART_CLASS_INIT_NULL {NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
1579 * @def EVAS_SMART_CLASS_INIT_VERSION
1580 * Initializer to zero a whole Evas_Smart_Class structure and set version.
1582 * Similar to EVAS_SMART_CLASS_INIT_NULL, but will set version field to
1583 * latest EVAS_SMART_CLASS_VERSION.
1585 * @see EVAS_SMART_CLASS_INIT_NULL
1586 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION
1587 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT
1588 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT_CALLBACKS
1589 * @ingroup Evas_Smart_Group
1591 #define EVAS_SMART_CLASS_INIT_VERSION {NULL, EVAS_SMART_CLASS_VERSION, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
1594 * @def EVAS_SMART_CLASS_INIT_NAME_VERSION
1595 * Initializer to zero a whole Evas_Smart_Class structure and set name
1598 * Similar to EVAS_SMART_CLASS_INIT_NULL, but will set version field to
1599 * latest EVAS_SMART_CLASS_VERSION and name to the specified value.
1601 * It will keep a reference to name field as a "const char *", that is,
1602 * name must be available while the structure is used (hint: static or global!)
1603 * and will not be modified.
1605 * @see EVAS_SMART_CLASS_INIT_NULL
1606 * @see EVAS_SMART_CLASS_INIT_VERSION
1607 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT
1608 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT_CALLBACKS
1609 * @ingroup Evas_Smart_Group
1611 #define EVAS_SMART_CLASS_INIT_NAME_VERSION(name) {name, EVAS_SMART_CLASS_VERSION, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
1614 * @def EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT
1615 * Initializer to zero a whole Evas_Smart_Class structure and set name,
1616 * version and parent class.
1618 * Similar to EVAS_SMART_CLASS_INIT_NULL, but will set version field to
1619 * latest EVAS_SMART_CLASS_VERSION, name to the specified value and
1622 * It will keep a reference to name field as a "const char *", that is,
1623 * name must be available while the structure is used (hint: static or global!)
1624 * and will not be modified. Similarly, parent reference will be kept.
1626 * @see EVAS_SMART_CLASS_INIT_NULL
1627 * @see EVAS_SMART_CLASS_INIT_VERSION
1628 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION
1629 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT_CALLBACKS
1630 * @ingroup Evas_Smart_Group
1632 #define EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT(name, parent) {name, EVAS_SMART_CLASS_VERSION, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, parent, NULL, NULL}
1635 * @def EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT_CALLBACKS
1636 * Initializer to zero a whole Evas_Smart_Class structure and set name,
1637 * version, parent class and callbacks definition.
1639 * Similar to EVAS_SMART_CLASS_INIT_NULL, but will set version field to
1640 * latest EVAS_SMART_CLASS_VERSION, name to the specified value, parent
1641 * class and callbacks at this level.
1643 * It will keep a reference to name field as a "const char *", that is,
1644 * name must be available while the structure is used (hint: static or global!)
1645 * and will not be modified. Similarly, parent and callbacks reference
1648 * @see EVAS_SMART_CLASS_INIT_NULL
1649 * @see EVAS_SMART_CLASS_INIT_VERSION
1650 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION
1651 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT
1652 * @ingroup Evas_Smart_Group
1654 #define EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT_CALLBACKS(name, parent, callbacks) {name, EVAS_SMART_CLASS_VERSION, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, parent, callbacks, NULL}
1657 * @def EVAS_SMART_SUBCLASS_NEW
1659 * Convenience macro to subclass a Smart Class.
1661 * This macro saves some typing when writing a Smart Class derived from
1662 * another one. In order to work, the user needs to provide some functions
1663 * adhering to the following guidelines.
1664 * - @<prefix@>_smart_set_user(): the internal _smart_set function will call
1665 * this one provided by the user after inheriting everything from the
1666 * parent, which should take care of setting the right member functions
1668 * - @<prefix@>_parent_sc: pointer to the smart class of the parent. When calling
1669 * parent functions from overloaded ones, use this global variable.
1670 * - @<prefix@>_smart_class_new(): this function returns the Evas_Smart needed
1671 * to create smart objects with this class, should be called by the public
1673 * - If this new class should be subclassable as well, a public _smart_set()
1674 * function is desirable to fill the class used as parent by the children.
1675 * It's up to the user to provide this interface, which will most likely
1676 * call @<prefix@>_smart_set() to get the job done.
1678 * @param smart_name The name used for the Smart Class. e.g: "Evas_Object_Box".
1679 * @param prefix Prefix used for all variables and functions defined.
1680 * @param api_type Type of the structure used as API for the Smart Class. Either Evas_Smart_Class or something derived from it.
1681 * @param parent_type Type of the parent class API.
1682 * @param parent_func Function that gets the parent class. e.g: evas_object_box_smart_class_get().
1683 * @param cb_desc Array of callback descriptions for this Smart Class.
1685 * @ingroup Evas_Smart_Group
1687 #define EVAS_SMART_SUBCLASS_NEW(smart_name, prefix, api_type, parent_type, parent_func, cb_desc) \
1688 static const parent_type * prefix##_parent_sc = NULL; \
1689 static void prefix##_smart_set_user(api_type *api); \
1690 static void prefix##_smart_set(api_type *api) \
1692 Evas_Smart_Class *sc; \
1693 if (!(sc = (Evas_Smart_Class *)api)) \
1695 if (!prefix##_parent_sc) \
1696 prefix##_parent_sc = parent_func(); \
1697 evas_smart_class_inherit(sc, (const Evas_Smart_Class *)prefix##_parent_sc); \
1698 prefix##_smart_set_user(api); \
1700 static Evas_Smart * prefix##_smart_class_new(void) \
1702 static Evas_Smart *smart = NULL; \
1703 static api_type api; \
1706 Evas_Smart_Class *sc = (Evas_Smart_Class *)&api; \
1707 memset(&api, 0, sizeof(api_type)); \
1708 sc->version = EVAS_SMART_CLASS_VERSION; \
1709 sc->name = smart_name; \
1710 sc->callbacks = cb_desc; \
1711 prefix##_smart_set(&api); \
1712 smart = evas_smart_class_new(sc); \
1718 * @def EVAS_SMART_DATA_ALLOC
1719 * Convenience macro to allocate smart data only if needed.
1721 * When writing a subclassable smart object, the .add function will need
1722 * to check if the smart private data was already allocated by some child
1723 * object or not. This macro makes it easier to do it.
1725 * @param o Evas object passed to the .add function
1726 * @param priv_type The type of the data to allocate
1727 * @ingroup Evas_Smart_Group
1729 #define EVAS_SMART_DATA_ALLOC(o, priv_type) \
1731 priv = evas_object_smart_data_get(o); \
1734 priv = (priv_type *)calloc(1, sizeof(priv_type)); \
1737 evas_object_smart_data_set(o, priv); \
1740 EINA_DEPRECATED EAPI Evas_Smart *evas_smart_new (const char *name, void (*func_add) (Evas_Object *obj), void (*func_del) (Evas_Object *obj), void (*func_layer_set) (Evas_Object *obj, int l), void (*func_raise) (Evas_Object *obj), void (*func_lower) (Evas_Object *obj), void (*func_stack_above) (Evas_Object *obj, Evas_Object *above), void (*func_stack_below) (Evas_Object *obj, Evas_Object *below), void (*func_move) (Evas_Object *obj, Evas_Coord x, Evas_Coord y), void (*func_resize) (Evas_Object *obj, Evas_Coord w, Evas_Coord h), void (*func_show) (Evas_Object *obj), void (*func_hide) (Evas_Object *obj), void (*func_color_set) (Evas_Object *obj, int r, int g, int b, int a), void (*func_clip_set) (Evas_Object *obj, Evas_Object *clip), void (*func_clip_unset) (Evas_Object *obj), const void *data) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1741 EAPI void evas_smart_free (Evas_Smart *s) EINA_ARG_NONNULL(1);
1742 EAPI Evas_Smart *evas_smart_class_new (const Evas_Smart_Class *sc) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1743 EAPI const Evas_Smart_Class *evas_smart_class_get (const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1745 EAPI void *evas_smart_data_get (const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1746 EAPI const Evas_Smart_Cb_Description *evas_smart_callback_description_find(const Evas_Smart *s, const char *name) EINA_ARG_NONNULL(1, 2) EINA_PURE;
1748 EAPI Eina_Bool evas_smart_class_inherit_full (Evas_Smart_Class *sc, const Evas_Smart_Class *parent_sc, unsigned int parent_sc_size) EINA_ARG_NONNULL(1, 2);
1750 * @def evas_smart_class_inherit
1751 * Easy to use version of evas_smart_class_inherit_full().
1753 * This version will use sizeof(parent_sc), copying everything.
1755 * @param sc child class, will have methods copied from @a parent_sc
1756 * @param parent_sc parent class, will provide contents to be copied.
1757 * @return 1 on success, 0 on failure.
1758 * @ingroup Evas_Smart_Group
1760 #define evas_smart_class_inherit(sc, parent_sc) evas_smart_class_inherit_full(sc, parent_sc, sizeof(*parent_sc))
1763 * @defgroup Evas_Smart_Object_Group Smart Object Functions
1765 * Functions dealing with evas smart objects (instances).
1767 * Smart objects are groupings of primitive evas objects that behave as a
1768 * cohesive group. For instance, a file manager icon may be a smart object
1769 * composed of an image object, a text label and two rectangles that appear
1770 * behind the image and text when the icon is selected. As a smart object,
1771 * the normal evas api could be used on the icon object.
1773 * @see @ref Evas_Smart_Group for class definitions.
1775 EAPI Evas_Object *evas_object_smart_add (Evas *e, Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_MALLOC;
1776 EAPI void evas_object_smart_member_add (Evas_Object *obj, Evas_Object *smart_obj) EINA_ARG_NONNULL(1, 2);
1777 EAPI void evas_object_smart_member_del (Evas_Object *obj) EINA_ARG_NONNULL(1);
1778 EAPI Evas_Object *evas_object_smart_parent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1779 EAPI Eina_Bool evas_object_smart_type_check (const Evas_Object *obj, const char *type) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
1780 EAPI Eina_Bool evas_object_smart_type_check_ptr (const Evas_Object *obj, const char *type) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
1781 EAPI Eina_List *evas_object_smart_members_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1782 EAPI Evas_Smart *evas_object_smart_smart_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1783 EAPI void *evas_object_smart_data_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1784 EAPI void evas_object_smart_data_set (Evas_Object *obj, void *data) EINA_ARG_NONNULL(1);
1785 EAPI void evas_object_smart_callback_add (Evas_Object *obj, const char *event, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1, 2, 3);
1786 EAPI void *evas_object_smart_callback_del (Evas_Object *obj, const char *event, Evas_Smart_Cb func) EINA_ARG_NONNULL(1, 2, 3);
1787 EAPI void evas_object_smart_callback_call (Evas_Object *obj, const char *event, void *event_info) EINA_ARG_NONNULL(1, 2);
1789 EAPI Eina_Bool evas_object_smart_callbacks_descriptions_set(Evas_Object *obj, const Evas_Smart_Cb_Description *descriptions) EINA_ARG_NONNULL(1);
1790 EAPI void evas_object_smart_callbacks_descriptions_get(const Evas_Object *obj, const Evas_Smart_Cb_Description ***class_descriptions, unsigned int *class_count, const Evas_Smart_Cb_Description ***instance_descriptions, unsigned int *instance_count) EINA_ARG_NONNULL(1);
1791 EAPI void evas_object_smart_callback_description_find(const Evas_Object *obj, const char *name, const Evas_Smart_Cb_Description **class_description, const Evas_Smart_Cb_Description **instance_description) EINA_ARG_NONNULL(1, 2);
1793 EAPI void evas_object_smart_changed (Evas_Object *obj) EINA_ARG_NONNULL(1);
1794 EAPI void evas_object_smart_need_recalculate_set(Evas_Object *obj, Eina_Bool value) EINA_ARG_NONNULL(1);
1795 EAPI Eina_Bool evas_object_smart_need_recalculate_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1796 EAPI void evas_object_smart_calculate (Evas_Object *obj) EINA_ARG_NONNULL(1);
1798 EAPI void evas_smart_objects_calculate (Evas *e);
1802 * @defgroup Evas_Smart_Object_Clipped Clipped Smart Object
1804 * Clipped smart object is a base to construct other smart objects
1805 * that based on the concept of having an internal clipper that is
1806 * applied to all its other children. This clipper will control the
1807 * visibility, clipping and color of sibling objects (remember that
1808 * the clipping is recursive, and clipper color modulates the color of
1809 * its clippees). By default, this base will also move children
1810 * relatively to the parent, and delete them when parent is
1811 * deleted. In other words, it is the base for simple object grouping.
1813 * @see evas_object_smart_clipped_smart_set()
1815 * @ingroup Evas_Smart_Object_Group
1819 * Every subclass should provide this at the beginning of their own
1820 * data set with evas_object_smart_data_set().
1822 typedef struct _Evas_Object_Smart_Clipped_Data Evas_Object_Smart_Clipped_Data;
1823 struct _Evas_Object_Smart_Clipped_Data
1825 Evas_Object *clipper;
1829 EAPI Evas_Object *evas_object_smart_clipped_clipper_get(Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1830 EAPI void evas_object_smart_clipped_smart_set(Evas_Smart_Class *sc) EINA_ARG_NONNULL(1);
1831 EAPI const Evas_Smart_Class *evas_object_smart_clipped_class_get(void) EINA_CONST;
1833 EAPI void evas_object_smart_move_children_relative(Evas_Object *obj, Evas_Coord dx, Evas_Coord dy) EINA_ARG_NONNULL(1);
1836 * @defgroup Evas_Object_Box Box (Sequence) Smart Object.
1838 * Convenience smart object that packs children as a sequence using
1839 * a layout function specified by user. There are a couple of helper
1840 * layout functions, all of them using children size hints to define
1841 * their size and alignment inside their cell space.
1843 * @see @ref Evas_Object_Group_Size_Hints
1845 * @ingroup Evas_Smart_Object_Group
1848 * @typedef Evas_Object_Box_Api
1849 * Smart Class extension providing extra box requirements.
1850 * @ingroup Evas_Object_Box
1852 typedef struct _Evas_Object_Box_Api Evas_Object_Box_Api;
1854 * @typedef Evas_Object_Box_Data
1855 * Smart instance data providing box requirements.
1856 * @ingroup Evas_Object_Box
1858 typedef struct _Evas_Object_Box_Data Evas_Object_Box_Data;
1860 * @typedef Evas_Object_Box_Option
1861 * The base structure for a box option.
1862 * @ingroup Evas_Object_Box
1864 typedef struct _Evas_Object_Box_Option Evas_Object_Box_Option;
1865 typedef void (*Evas_Object_Box_Layout)(Evas_Object *o, Evas_Object_Box_Data *priv, void *user_data);
1868 * @def EVAS_OBJECT_BOX_API_VERSION
1869 * @ingroup Evas_Object_Box
1871 #define EVAS_OBJECT_BOX_API_VERSION 1
1873 * @struct _Evas_Object_Box_Api
1875 * This structure should be used by any class that wants to inherit
1876 * from box to provide custom behavior not allowed only by providing a
1877 * layout function with evas_object_box_layout_set().
1879 * @extends Evas_Smart_Class
1880 * @ingroup Evas_Object_Box
1882 struct _Evas_Object_Box_Api
1884 Evas_Smart_Class base;
1886 Evas_Object_Box_Option *(*append)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child);
1887 Evas_Object_Box_Option *(*prepend)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child);
1888 Evas_Object_Box_Option *(*insert_before)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, const Evas_Object *reference);
1889 Evas_Object_Box_Option *(*insert_after)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, const Evas_Object *reference);
1890 Evas_Object_Box_Option *(*insert_at)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, unsigned int pos);
1891 Evas_Object *(*remove)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child);
1892 Evas_Object *(*remove_at)(Evas_Object *o, Evas_Object_Box_Data *priv, unsigned int pos);
1893 Eina_Bool (*property_set)(Evas_Object *o, Evas_Object_Box_Option *opt, int property, va_list args);
1894 Eina_Bool (*property_get)(Evas_Object *o, Evas_Object_Box_Option *opt, int property, va_list args);
1895 const char *(*property_name_get)(Evas_Object *o, int property);
1896 int (*property_id_get)(Evas_Object *o, const char *name);
1897 Evas_Object_Box_Option *(*option_new)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child);
1898 void (*option_free)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object_Box_Option *opt);
1902 * @def EVAS_OBJECT_BOX_API_INIT
1903 * Initializer for whole Evas_Object_Box_Api structure.
1905 * @param smart_class_init initializer to use for the "base" field
1906 * (Evas_Smart_Class).
1908 * @see EVAS_SMART_CLASS_INIT_NULL
1909 * @see EVAS_SMART_CLASS_INIT_VERSION
1910 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION
1911 * @see EVAS_OBJECT_BOX_API_INIT_NULL
1912 * @see EVAS_OBJECT_BOX_API_INIT_VERSION
1913 * @see EVAS_OBJECT_BOX_API_INIT_NAME_VERSION
1914 * @ingroup Evas_Object_Box
1916 #define EVAS_OBJECT_BOX_API_INIT(smart_class_init) {smart_class_init, EVAS_OBJECT_BOX_API_VERSION, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
1919 * @def EVAS_OBJECT_BOX_API_INIT_NULL
1920 * Initializer to zero a whole Evas_Object_Box_Api structure.
1922 * @see EVAS_OBJECT_BOX_API_INIT_VERSION
1923 * @see EVAS_OBJECT_BOX_API_INIT_NAME_VERSION
1924 * @see EVAS_OBJECT_BOX_API_INIT
1925 * @ingroup Evas_Object_Box
1927 #define EVAS_OBJECT_BOX_API_INIT_NULL EVAS_OBJECT_BOX_API_INIT(EVAS_SMART_CLASS_INIT_NULL)
1930 * @def EVAS_OBJECT_BOX_API_INIT_VERSION
1931 * Initializer to zero a whole Evas_Object_Box_Api structure and set version.
1933 * Similar to EVAS_OBJECT_BOX_API_INIT_NULL, but will set version field of
1934 * Evas_Smart_Class (base field) to latest EVAS_SMART_CLASS_VERSION
1936 * @see EVAS_OBJECT_BOX_API_INIT_NULL
1937 * @see EVAS_OBJECT_BOX_API_INIT_NAME_VERSION
1938 * @see EVAS_OBJECT_BOX_API_INIT
1939 * @ingroup Evas_Object_Box
1941 #define EVAS_OBJECT_BOX_API_INIT_VERSION EVAS_OBJECT_BOX_API_INIT(EVAS_SMART_CLASS_INIT_VERSION)
1944 * @def EVAS_OBJECT_BOX_API_INIT_NAME_VERSION
1945 * Initializer to zero a whole Evas_Object_Box_Api structure and set
1948 * Similar to EVAS_OBJECT_BOX_API_INIT_NULL, but will set version field of
1949 * Evas_Smart_Class (base field) to latest EVAS_SMART_CLASS_VERSION and name
1950 * to the specific value.
1952 * It will keep a reference to name field as a "const char *", that is,
1953 * name must be available while the structure is used (hint: static or global!)
1954 * and will not be modified.
1956 * @see EVAS_OBJECT_BOX_API_INIT_NULL
1957 * @see EVAS_OBJECT_BOX_API_INIT_VERSION
1958 * @see EVAS_OBJECT_BOX_API_INIT
1959 * @ingroup Evas_Object_Box
1961 #define EVAS_OBJECT_BOX_API_INIT_NAME_VERSION(name) EVAS_OBJECT_BOX_API_INIT(EVAS_SMART_CLASS_INIT_NAME_VERSION(name))
1964 * @struct _Evas_Object_Box_Data
1966 * This structure augments clipped smart object's instance data,
1967 * providing extra members required by generic box implementation. If
1968 * a subclass inherits from #Evas_Object_Box_Api then it may augment
1969 * #Evas_Object_Box_Data to fit its own needs.
1971 * @extends Evas_Object_Smart_Clipped_Data
1972 * @ingroup Evas_Object_Box
1974 struct _Evas_Object_Box_Data
1976 Evas_Object_Smart_Clipped_Data base;
1977 const Evas_Object_Box_Api *api;
1984 Eina_List *children;
1986 Evas_Object_Box_Layout cb;
1988 void (*free_data)(void *data);
1990 Eina_Bool layouting : 1;
1993 struct _Evas_Object_Box_Option
1998 EAPI void evas_object_box_smart_set(Evas_Object_Box_Api *api) EINA_ARG_NONNULL(1);
1999 EAPI const Evas_Object_Box_Api *evas_object_box_smart_class_get(void) EINA_CONST;
2000 EAPI void evas_object_box_layout_set(Evas_Object *o, Evas_Object_Box_Layout cb, const void *data, void (*free_data)(void *data)) EINA_ARG_NONNULL(1, 2);
2002 EAPI Evas_Object *evas_object_box_add(Evas *evas) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
2003 EAPI Evas_Object *evas_object_box_add_to(Evas_Object *parent) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
2005 EAPI void evas_object_box_layout_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
2006 EAPI void evas_object_box_layout_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
2007 EAPI void evas_object_box_layout_homogeneous_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
2008 EAPI void evas_object_box_layout_homogeneous_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
2009 EAPI void evas_object_box_layout_homogeneous_max_size_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
2010 EAPI void evas_object_box_layout_homogeneous_max_size_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
2011 EAPI void evas_object_box_layout_flow_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
2012 EAPI void evas_object_box_layout_flow_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
2013 EAPI void evas_object_box_layout_stack(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
2015 EAPI void evas_object_box_align_set(Evas_Object *o, double horizontal, double vertical) EINA_ARG_NONNULL(1);
2016 EAPI void evas_object_box_align_get(const Evas_Object *o, double *horizontal, double *vertical) EINA_ARG_NONNULL(1);
2017 EAPI void evas_object_box_padding_set(Evas_Object *o, Evas_Coord horizontal, Evas_Coord vertical) EINA_ARG_NONNULL(1);
2018 EAPI void evas_object_box_padding_get(const Evas_Object *o, Evas_Coord *horizontal, Evas_Coord *vertical) EINA_ARG_NONNULL(1);
2020 EAPI Evas_Object_Box_Option *evas_object_box_append(Evas_Object *o, Evas_Object *child) EINA_ARG_NONNULL(1, 2);
2021 EAPI Evas_Object_Box_Option *evas_object_box_prepend(Evas_Object *o, Evas_Object *child) EINA_ARG_NONNULL(1, 2);
2022 EAPI Evas_Object_Box_Option *evas_object_box_insert_before(Evas_Object *o, Evas_Object *child, const Evas_Object *reference) EINA_ARG_NONNULL(1, 2, 3);
2023 EAPI Evas_Object_Box_Option *evas_object_box_insert_after(Evas_Object *o, Evas_Object *child, const Evas_Object *referente) EINA_ARG_NONNULL(1, 2, 3);
2024 EAPI Evas_Object_Box_Option *evas_object_box_insert_at(Evas_Object *o, Evas_Object *child, unsigned int pos) EINA_ARG_NONNULL(1, 2);
2025 EAPI Eina_Bool evas_object_box_remove(Evas_Object *o, Evas_Object *child) EINA_ARG_NONNULL(1, 2);
2026 EAPI Eina_Bool evas_object_box_remove_at(Evas_Object *o, unsigned int pos) EINA_ARG_NONNULL(1);
2027 EAPI Eina_Bool evas_object_box_remove_all(Evas_Object *o, Eina_Bool clear) EINA_ARG_NONNULL(1);
2028 EAPI Eina_Iterator *evas_object_box_iterator_new(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
2029 EAPI Eina_Accessor *evas_object_box_accessor_new(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
2030 EAPI Eina_List *evas_object_box_children_get(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
2032 EAPI const char *evas_object_box_option_property_name_get(Evas_Object *o, int property) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2033 EAPI int evas_object_box_option_property_id_get(Evas_Object *o, const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
2034 EAPI Eina_Bool evas_object_box_option_property_set(Evas_Object *o, Evas_Object_Box_Option *opt, int property, ...) EINA_ARG_NONNULL(1, 2);
2035 EAPI Eina_Bool evas_object_box_option_property_vset(Evas_Object *o, Evas_Object_Box_Option *opt, int property, va_list args) EINA_ARG_NONNULL(1, 2);
2036 EAPI Eina_Bool evas_object_box_option_property_get(Evas_Object *o, Evas_Object_Box_Option *opt, int property, ...) EINA_ARG_NONNULL(1, 2);
2037 EAPI Eina_Bool evas_object_box_option_property_vget(Evas_Object *o, Evas_Object_Box_Option *opt, int property, va_list args) EINA_ARG_NONNULL(1, 2);
2041 * @defgroup Evas_Object_Table Table Smart Object.
2043 * Convenience smart object that packs children using a tabular
2044 * layout using children size hints to define their size and
2045 * alignment inside their cell space.
2047 * @see @ref Evas_Object_Group_Size_Hints
2049 * @ingroup Evas_Smart_Object_Group
2051 EAPI Evas_Object *evas_object_table_add(Evas *evas) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
2052 EAPI Evas_Object *evas_object_table_add_to(Evas_Object *parent) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
2053 EAPI void evas_object_table_homogeneous_set(Evas_Object *o, Evas_Object_Table_Homogeneous_Mode homogeneous) EINA_ARG_NONNULL(1);
2054 EAPI Evas_Object_Table_Homogeneous_Mode evas_object_table_homogeneous_get(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2055 EAPI void evas_object_table_padding_set(Evas_Object *o, Evas_Coord horizontal, Evas_Coord vertical) EINA_ARG_NONNULL(1);
2056 EAPI void evas_object_table_padding_get(const Evas_Object *o, Evas_Coord *horizontal, Evas_Coord *vertical) EINA_ARG_NONNULL(1);
2057 EAPI void evas_object_table_align_set(Evas_Object *o, double horizontal, double vertical) EINA_ARG_NONNULL(1);
2058 EAPI void evas_object_table_align_get(const Evas_Object *o, double *horizontal, double *vertical) EINA_ARG_NONNULL(1);
2060 EAPI Eina_Bool evas_object_table_pack(Evas_Object *o, Evas_Object *child, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan) EINA_ARG_NONNULL(1, 2);
2061 EAPI Eina_Bool evas_object_table_unpack(Evas_Object *o, Evas_Object *child) EINA_ARG_NONNULL(1, 2);
2062 EAPI void evas_object_table_clear(Evas_Object *o, Eina_Bool clear) EINA_ARG_NONNULL(1);
2064 EAPI void evas_object_table_col_row_size_get(const Evas_Object *o, int *cols, int *rows) EINA_ARG_NONNULL(1);
2065 EAPI Eina_Iterator *evas_object_table_iterator_new(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
2066 EAPI Eina_Accessor *evas_object_table_accessor_new(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
2067 EAPI Eina_List *evas_object_table_children_get(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
2068 EAPI Evas_Object *evas_object_table_child_get(const Evas_Object *o, unsigned short col, unsigned short row) EINA_ARG_NONNULL(1);
2072 * @defgroup Evas_Cserve Shared Image Cache Server
2074 * Provides client-server infrastructure to share bitmaps across
2075 * multiple processes, saving data and processing power.
2077 typedef struct _Evas_Cserve_Stats Evas_Cserve_Stats;
2078 typedef struct _Evas_Cserve_Image_Cache Evas_Cserve_Image_Cache;
2079 typedef struct _Evas_Cserve_Image Evas_Cserve_Image;
2080 typedef struct _Evas_Cserve_Config Evas_Cserve_Config;
2083 * Statistics about server that shares cached bitmaps.
2084 * @ingroup Evas_Cserve
2086 struct _Evas_Cserve_Stats
2088 int saved_memory; /**< current saved memory, in bytes */
2089 int wasted_memory; /**< current wasted memory, in bytes */
2090 int saved_memory_peak; /**< peak of saved memory, in bytes */
2091 int wasted_memory_peak; /**< peak of wasted memory, in bytes */
2092 double saved_time_image_header_load;
2093 double saved_time_image_data_load;
2097 * Cache of images shared by server.
2098 * @ingroup Evas_Cserve
2100 struct _Evas_Cserve_Image_Cache
2110 * An image shared by the server.
2111 * @ingroup Evas_Cserve
2113 struct _Evas_Cserve_Image
2115 const char *file, *key;
2117 time_t file_mod_time;
2118 time_t file_checked_time;
2122 int memory_footprint;
2123 double head_load_time;
2124 double data_load_time;
2125 Eina_Bool alpha : 1;
2126 Eina_Bool data_loaded : 1;
2127 Eina_Bool active : 1;
2129 Eina_Bool useless : 1;
2133 * Configuration that controls the server that shares cached bitmaps.
2134 * @ingroup Evas_Cserve
2136 struct _Evas_Cserve_Config
2138 int cache_max_usage;
2139 int cache_item_timeout;
2140 int cache_item_timeout_check;
2143 EAPI Eina_Bool evas_cserve_want_get (void) EINA_WARN_UNUSED_RESULT EINA_PURE;
2144 EAPI Eina_Bool evas_cserve_connected_get (void) EINA_WARN_UNUSED_RESULT;
2145 EAPI Eina_Bool evas_cserve_stats_get (Evas_Cserve_Stats *stats) EINA_WARN_UNUSED_RESULT;
2146 EAPI void evas_cserve_image_cache_contents_clean (Evas_Cserve_Image_Cache *cache) EINA_PURE;
2147 EAPI Eina_Bool evas_cserve_config_get (Evas_Cserve_Config *config) EINA_WARN_UNUSED_RESULT EINA_PURE;
2148 EAPI Eina_Bool evas_cserve_config_set (const Evas_Cserve_Config *config) EINA_WARN_UNUSED_RESULT EINA_PURE;
2149 EAPI void evas_cserve_disconnect (void);
2153 * @defgroup Evas_Utils General Utilities
2155 * Some functions that are handy but are not specific of canvas or
2158 EAPI const char *evas_load_error_str(int error);
2160 /* Evas utility routines for color space conversions */
2161 /* hsv color space has h in the range 0.0 to 360.0, and s,v in the range 0.0 to 1.0 */
2162 /* rgb color space has r,g,b in the range 0 to 255 */
2163 EAPI void evas_color_hsv_to_rgb (float h, float s, float v, int *r, int *g, int *b);
2164 EAPI void evas_color_rgb_to_hsv (int r, int g, int b, float *h, float *s, float *v);
2166 /* argb color space has a,r,g,b in the range 0 to 255 */
2167 EAPI void evas_color_argb_premul (int a, int *r, int *g, int *b);
2168 EAPI void evas_color_argb_unpremul (int a, int *r, int *g, int *b);
2170 EAPI void evas_data_argb_premul (unsigned int *data, unsigned int len);
2171 EAPI void evas_data_argb_unpremul (unsigned int *data, unsigned int len);
2173 /* Evas utility routines for working with transforms */
2174 /* Set t to the identity */
2175 EAPI void evas_transform_identity_set (Evas_Transform *t);
2176 /* Left-multiply t by an xy rotation defined by the given angle (in degrees) */
2177 EAPI void evas_transform_rotate (double angle, Evas_Transform *t);
2178 /* Left-multiply t by an xy translation defined by the given dx, dy values */
2179 EAPI void evas_transform_translate (float dx, float dy, Evas_Transform *t);
2180 /* Left-multiply t by an xy scaling defined by the given sx, sy factors */
2181 EAPI void evas_transform_scale (float sx, float sy, Evas_Transform *t);
2182 /* Left-multiply t by an xy shearing defined by the given sh, sv values */
2183 EAPI void evas_transform_shear (float sh, float sv, Evas_Transform *t);
2184 /* Left-multiply t by the given transform l */
2185 EAPI void evas_transform_compose (Evas_Transform *l, Evas_Transform *t);
2187 /* string and font handling */
2188 EAPI int evas_string_char_next_get (const char *str, int pos, int *decoded) EINA_ARG_NONNULL(1);
2189 EAPI int evas_string_char_prev_get (const char *str, int pos, int *decoded) EINA_ARG_NONNULL(1);
2190 EAPI int evas_string_char_len_get (const char *str) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2193 * @defgroup Evas_Imaging Imaging and Commong GFX
2195 * Evas imaging api - exports some of the comon gfx engine routines
2196 * this is not complete and should be considered experimental. use at your
2200 typedef struct _Evas_Imaging_Image Evas_Imaging_Image;
2201 typedef struct _Evas_Imaging_Font Evas_Imaging_Font;
2204 * Error identifier or EVAS_LOAD_ERROR_NONE. see evas_load_error_str().
2205 * @ingroup Evas_Imaging
2207 EAPI extern int evas_imaging_image_load_error;
2209 EAPI Evas_Imaging_Image *evas_imaging_image_load (const char *file, const char *key) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_MALLOC;
2210 EAPI void evas_imaging_image_free (Evas_Imaging_Image *im) EINA_ARG_NONNULL(1);
2211 EAPI void evas_imaging_image_size_get (const Evas_Imaging_Image *im, int *w, int *h) EINA_ARG_NONNULL(1);
2212 EAPI Eina_Bool evas_imaging_image_alpha_get (const Evas_Imaging_Image *im) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2213 EAPI void evas_imaging_image_cache_set (int bytes);
2214 EAPI int evas_imaging_image_cache_get (void) EINA_WARN_UNUSED_RESULT;
2216 EAPI void evas_imaging_font_hinting_set (Evas_Font_Hinting_Flags hinting);
2217 EAPI Evas_Font_Hinting_Flags evas_imaging_font_hinting_get (void) EINA_WARN_UNUSED_RESULT;
2218 EAPI Eina_Bool evas_imaging_font_hinting_can_hint (Evas_Font_Hinting_Flags hinting) EINA_WARN_UNUSED_RESULT;
2220 EAPI Evas_Imaging_Font *evas_imaging_font_load (const char *file, const char *key, int size) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
2221 EAPI void evas_imaging_font_free (Evas_Imaging_Font *fn) EINA_ARG_NONNULL(1);
2222 EAPI int evas_imaging_font_ascent_get (const Evas_Imaging_Font *fn) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2223 EAPI int evas_imaging_font_descent_get (const Evas_Imaging_Font *fn) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2224 EAPI int evas_imaging_font_max_ascent_get (const Evas_Imaging_Font *fn) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2225 EAPI int evas_imaging_font_max_descent_get (const Evas_Imaging_Font *fn) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2226 EAPI int evas_imaging_font_line_advance_get (const Evas_Imaging_Font *fn) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2227 EAPI void evas_imaging_font_string_advance_get (const Evas_Imaging_Font *fn, const char *str, int *x, int *y) EINA_ARG_NONNULL(1, 2);
2228 EAPI void evas_imaging_font_string_size_query (const Evas_Imaging_Font *fn, const char *str, int *w, int *h) EINA_ARG_NONNULL(1, 2);
2229 EAPI int evas_imaging_font_string_inset_get (const Evas_Imaging_Font *fn, const char *str) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
2230 EAPI int evas_imaging_font_string_char_coords_get (const Evas_Imaging_Font *fn, const char *str, int pos, int *cx, int *cy, int *cw, int *ch) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
2231 EAPI int evas_imaging_font_string_char_at_coords_get (const Evas_Imaging_Font *fn, const char *str, int x, int y, int *cx, int *cy, int *cw, int *ch) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
2233 EAPI void evas_imaging_font_cache_set (int bytes);
2234 EAPI int evas_imaging_font_cache_get (void) EINA_WARN_UNUSED_RESULT;
2242 * @todo document key modifiers.
2244 EAPI const Evas_Modifier *evas_key_modifier_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2245 EAPI const Evas_Lock *evas_key_lock_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2247 EAPI Eina_Bool evas_key_modifier_is_set (const Evas_Modifier *m, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
2249 EAPI Eina_Bool evas_key_lock_is_set (const Evas_Lock *l, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
2251 EAPI void evas_key_modifier_add (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
2252 EAPI void evas_key_modifier_del (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
2253 EAPI void evas_key_lock_add (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
2254 EAPI void evas_key_lock_del (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
2256 EAPI void evas_key_modifier_on (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
2257 EAPI void evas_key_modifier_off (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
2258 EAPI void evas_key_lock_on (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
2259 EAPI void evas_key_lock_off (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
2261 EAPI Evas_Modifier_Mask evas_key_modifier_mask_get (const Evas *e, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
2263 EAPI Eina_Bool evas_object_key_grab (Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, Eina_Bool exclusive) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2);
2264 EAPI void evas_object_key_ungrab (Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers) EINA_ARG_NONNULL(1, 2);