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")))
38 #define EVAS_VERSION_MAJOR 1
39 #define EVAS_VERSION_MINOR 0
41 typedef struct _Evas_Version
49 EAPI extern Evas_Version *evas_version;
53 * @brief These routines are used for Evas library interaction.
55 * @todo check boolean return values and convert to Eina_Bool
56 * @todo change all api to use EINA_SAFETY_*
57 * @todo finish api documentation
62 * Identifier of callbacks to be used with object or canvas.
64 * @see evas_object_event_callback_add()
65 * @see evas_event_callback_add()
67 typedef enum _Evas_Callback_Type
70 * The following events are only for use with objects
71 * evas_object_event_callback_add():
73 EVAS_CALLBACK_MOUSE_IN, /**< Mouse In Event */
74 EVAS_CALLBACK_MOUSE_OUT, /**< Mouse Out Event */
75 EVAS_CALLBACK_MOUSE_DOWN, /**< Mouse Button Down Event */
76 EVAS_CALLBACK_MOUSE_UP, /**< Mouse Button Up Event */
77 EVAS_CALLBACK_MOUSE_MOVE, /**< Mouse Move Event */
78 EVAS_CALLBACK_MOUSE_WHEEL, /**< Mouse Wheel Event */
79 EVAS_CALLBACK_MULTI_DOWN, /**< Multi-touch Down Event */
80 EVAS_CALLBACK_MULTI_UP, /**< Multi-touch Up Event */
81 EVAS_CALLBACK_MULTI_MOVE, /**< Multi-touch Move Event */
82 EVAS_CALLBACK_FREE, /**< Object Being Freed (Called after Del) */
83 EVAS_CALLBACK_KEY_DOWN, /**< Key Press Event */
84 EVAS_CALLBACK_KEY_UP, /**< Key Release Event */
85 EVAS_CALLBACK_FOCUS_IN, /**< Focus In Event */
86 EVAS_CALLBACK_FOCUS_OUT, /**< Focus Out Event */
87 EVAS_CALLBACK_SHOW, /**< Show Event */
88 EVAS_CALLBACK_HIDE, /**< Hide Event */
89 EVAS_CALLBACK_MOVE, /**< Move Event */
90 EVAS_CALLBACK_RESIZE, /**< Resize Event */
91 EVAS_CALLBACK_RESTACK, /**< Restack Event */
92 EVAS_CALLBACK_DEL, /**< Object Being Deleted (called before Free) */
93 EVAS_CALLBACK_HOLD, /**< Events go on/off hold */
94 EVAS_CALLBACK_CHANGED_SIZE_HINTS, /**< Size hints changed event */
95 EVAS_CALLBACK_IMAGE_PRELOADED, /**< Image as been preloaded */
99 * The following events are only for use with canvas
100 * evas_event_callback_add():
103 EVAS_CALLBACK_CANVAS_FOCUS_IN, /**< Canvas got focus as a whole */
104 EVAS_CALLBACK_CANVAS_FOCUS_OUT, /**< Canvas lost focus as a whole */
105 EVAS_CALLBACK_RENDER_FLUSH_PRE, /**< Called just before rendering is updated on the canvas target */
106 EVAS_CALLBACK_RENDER_FLUSH_POST, /**< Called just after rendering is updated on the canvas target */
110 /* the following id no event number, but a sentinel: */
111 EVAS_CALLBACK_LAST /**< keep as last element/sentinel -- not really an event */
112 } Evas_Callback_Type; /**< The type of event to trigger the callback */
115 * Flags for Mouse Button events
117 typedef enum _Evas_Button_Flags
119 EVAS_BUTTON_NONE = 0, /**< No extra mouse button data */
120 EVAS_BUTTON_DOUBLE_CLICK = (1 << 0), /**< This mouse button press was the 2nd press of a double click */
121 EVAS_BUTTON_TRIPLE_CLICK = (1 << 1) /**< This mouse button press was the 3rd press of a triple click */
122 } Evas_Button_Flags; /**< Flags for Mouse Button events */
127 typedef enum _Evas_Event_Flags
129 EVAS_EVENT_FLAG_NONE = 0, /**< No fancy flags set */
130 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 */
131 } Evas_Event_Flags; /**< Flags for Events */
134 * Flags for Font Hinting
135 * @ingroup Evas_Font_Group
137 typedef enum _Evas_Font_Hinting_Flags
139 EVAS_FONT_HINTING_NONE, /**< No font hinting */
140 EVAS_FONT_HINTING_AUTO, /**< Automatic font hinting */
141 EVAS_FONT_HINTING_BYTECODE /**< Bytecode font hinting */
142 } Evas_Font_Hinting_Flags; /**< Flags for Font Hinting */
145 * Colorspaces for pixel data supported by Evas
146 * @ingroup Evas_Object_Image
148 typedef enum _Evas_Colorspace
150 EVAS_COLORSPACE_ARGB8888, /**< ARGB 32 bits per pixel, high-byte is Alpha, accessed 1 32bit word at a time */
151 /* these are not currently supported - but planned for the future */
152 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 */
153 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 */
154 EVAS_COLORSPACE_RGB565_A5P, /**< 16bit rgb565 + Alpha plane at end - 5 bits of the 8 being used per alpha byte */
155 EVAS_COLORSPACE_GRY8 /**< 8bit grayscale */
156 } Evas_Colorspace; /**< Colorspaces for pixel data supported by Evas */
159 * How to pack items into cells in a table.
160 * @ingroup Evas_Object_Table
162 typedef enum _Evas_Object_Table_Homogeneous_Mode
164 EVAS_OBJECT_TABLE_HOMOGENEOUS_NONE = 0,
165 EVAS_OBJECT_TABLE_HOMOGENEOUS_TABLE = 1,
166 EVAS_OBJECT_TABLE_HOMOGENEOUS_ITEM = 2
167 } Evas_Object_Table_Homogeneous_Mode; /**< Table cell pack mode. */
169 typedef struct _Evas_Coord_Rectangle Evas_Coord_Rectangle; /**< A generic rectangle handle */
170 typedef struct _Evas_Point Evas_Point; /**< integer point */
172 typedef struct _Evas_Coord_Point Evas_Coord_Point; /**< Evas_Coord point */
173 typedef struct _Evas_Coord_Precision_Point Evas_Coord_Precision_Point; /**< Evas_Coord point with sub-pixel precision */
175 typedef struct _Evas_Position Evas_Position; /**< associates given point in Canvas and Output */
176 typedef struct _Evas_Precision_Position Evas_Precision_Position; /**< associates given point in Canvas and Output, with sub-pixel precision */
179 * @typedef Evas_Smart_Class
180 * A smart object base class
181 * @ingroup Evas_Smart_Group
183 typedef struct _Evas_Smart_Class Evas_Smart_Class;
186 * @typedef Evas_Smart_Cb_Description
187 * A smart object callback description, used to provide introspection
188 * @ingroup Evas_Smart_Group
190 typedef struct _Evas_Smart_Cb_Description Evas_Smart_Cb_Description;
194 * An opaque handle to map points
195 * @see evas_map_new()
196 * @see evas_map_free()
197 * @see evas_map_dup()
198 * @ingroup Evas_Object_Group_Map
200 typedef struct _Evas_Map Evas_Map;
204 * An Evas canvas handle.
207 * @ingroup Evas_Canvas
209 typedef struct _Evas Evas;
212 * @typedef Evas_Object
213 * An Evas Object handle.
214 * @ingroup Evas_Object_Group
216 typedef struct _Evas_Object Evas_Object;
218 typedef void Evas_Performance; /**< An Evas Performance handle */
219 typedef struct _Evas_Modifier Evas_Modifier; /**< An Evas Modifier */
220 typedef struct _Evas_Lock Evas_Lock; /**< An Evas Lock */
221 typedef struct _Evas_Smart Evas_Smart; /**< An Evas Smart Object handle */
222 typedef struct _Evas_Native_Surface Evas_Native_Surface; /**< A generic datatype for engine specific native surface information */
223 typedef unsigned long long Evas_Modifier_Mask; /**< An Evas modifier mask type */
225 typedef int Evas_Coord;
226 typedef int Evas_Font_Size;
227 typedef int Evas_Angle;
229 struct _Evas_Coord_Rectangle /**< A rectangle in Evas_Coord */
231 Evas_Coord x; /**< top-left x co-ordinate of rectangle */
232 Evas_Coord y; /**< top-left y co-ordinate of rectangle */
233 Evas_Coord w; /**< width of rectangle */
234 Evas_Coord h; /**< height of rectangle */
242 struct _Evas_Coord_Point
247 struct _Evas_Coord_Precision_Point
253 struct _Evas_Position
256 Evas_Coord_Point canvas;
259 struct _Evas_Precision_Position
262 Evas_Coord_Precision_Point canvas;
265 typedef enum _Evas_Aspect_Control
267 EVAS_ASPECT_CONTROL_NONE = 0,
268 EVAS_ASPECT_CONTROL_NEITHER = 1,
269 EVAS_ASPECT_CONTROL_HORIZONTAL = 2,
270 EVAS_ASPECT_CONTROL_VERTICAL = 3,
271 EVAS_ASPECT_CONTROL_BOTH = 4
272 } Evas_Aspect_Control;
275 typedef struct _Evas_Pixel_Import_Source Evas_Pixel_Import_Source; /**< A source description of pixels for importing pixels */
276 typedef struct _Evas_Engine_Info Evas_Engine_Info; /**< A generic Evas Engine information structure */
277 typedef struct _Evas_Device Evas_Device; /**< A source device handle - where the event came from */
278 typedef struct _Evas_Event_Mouse_Down Evas_Event_Mouse_Down; /**< Event structure for #EVAS_CALLBACK_MOUSE_DOWN event callbacks */
279 typedef struct _Evas_Event_Mouse_Up Evas_Event_Mouse_Up; /**< Event structure for #EVAS_CALLBACK_MOUSE_UP event callbacks */
280 typedef struct _Evas_Event_Mouse_In Evas_Event_Mouse_In; /**< Event structure for #EVAS_CALLBACK_MOUSE_IN event callbacks */
281 typedef struct _Evas_Event_Mouse_Out Evas_Event_Mouse_Out; /**< Event structure for #EVAS_CALLBACK_MOUSE_OUT event callbacks */
282 typedef struct _Evas_Event_Mouse_Move Evas_Event_Mouse_Move; /**< Event structure for #EVAS_CALLBACK_MOUSE_MOVE event callbacks */
283 typedef struct _Evas_Event_Mouse_Wheel Evas_Event_Mouse_Wheel; /**< Event structure for #EVAS_CALLBACK_MOUSE_WHEEL event callbacks */
284 typedef struct _Evas_Event_Multi_Down Evas_Event_Multi_Down; /**< Event structure for #EVAS_CALLBACK_MULTI_DOWN event callbacks */
285 typedef struct _Evas_Event_Multi_Up Evas_Event_Multi_Up; /**< Event structure for #EVAS_CALLBACK_MULTI_UP event callbacks */
286 typedef struct _Evas_Event_Multi_Move Evas_Event_Multi_Move; /**< Event structure for #EVAS_CALLBACK_MULTI_MOVE event callbacks */
287 typedef struct _Evas_Event_Key_Down Evas_Event_Key_Down; /**< Event structure for #EVAS_CALLBACK_KEY_DOWN event callbacks */
288 typedef struct _Evas_Event_Key_Up Evas_Event_Key_Up; /**< Event structure for #EVAS_CALLBACK_KEY_UP event callbacks */
289 typedef struct _Evas_Event_Hold Evas_Event_Hold; /**< Event structure for #EVAS_CALLBACK_HOLD event callbacks */
291 /* load error identifiers, see evas_load_error_str() */
292 #define EVAS_LOAD_ERROR_NONE 0 /**< No error on load */
293 #define EVAS_LOAD_ERROR_GENERIC 1 /**< A non-specific error occured */
294 #define EVAS_LOAD_ERROR_DOES_NOT_EXIST 2 /**< File (or file path) does not exist */
295 #define EVAS_LOAD_ERROR_PERMISSION_DENIED 3 /**< Permission deinied to an existing file (or path) */
296 #define EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED 4 /**< Allocation of resources failure prevented load */
297 #define EVAS_LOAD_ERROR_CORRUPT_FILE 5 /**< File corrupt (but was detected as a known format) */
298 #define EVAS_LOAD_ERROR_UNKNOWN_FORMAT 6 /**< File is not a known format */
300 #define EVAS_ALLOC_ERROR_NONE 0 /**< No allocation error */
301 #define EVAS_ALLOC_ERROR_FATAL 1 /**< Allocation failed despite attempts to free up memory */
302 #define EVAS_ALLOC_ERROR_RECOVERED 2 /**< Allocation succeeded, but extra memory had to be found by freeing up speculative resources */
304 #define EVAS_TEXT_INVALID -1
305 #define EVAS_TEXT_SPECIAL -2
307 struct _Evas_Pixel_Import_Source
309 int format; /**< pixel format type ie ARGB32, YUV420P_601 etc. */
310 int w, h; /**< width and height of source in pixels */
311 void **rows; /**< an array of pointers (size depends on format) pointing to left edge of each scanline */
314 struct _Evas_Native_Surface
321 struct { /* padding data for future use - have space for 8 pointers */
327 #define EVAS_LAYER_MIN -32768 /**< bottom-most layer number */
328 #define EVAS_LAYER_MAX 32767 /**< top-most layer number */
330 #define EVAS_PIXEL_FORMAT_NONE 0 /**< No pixel format */
331 #define EVAS_PIXEL_FORMAT_ARGB32 1 /**< ARGB 32bit pixel format with A in the high byte per 32bit pixel word */
332 #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 */
334 #define EVAS_COLOR_SPACE_ARGB 0 /**< ARGB color space */
335 #define EVAS_COLOR_SPACE_AHSV 1 /**< AHSV color space */
337 #define EVAS_TEXTURE_REFLECT 0 /**< image fill tiling mode - tiling reflects */
338 #define EVAS_TEXTURE_REPEAT 1 /**< tiling repeats */
339 #define EVAS_TEXTURE_RESTRICT 2 /**< tiling clamps - range offset ignored */
340 #define EVAS_TEXTURE_RESTRICT_REFLECT 3 /**< tiling clamps and any range offset reflects */
341 #define EVAS_TEXTURE_RESTRICT_REPEAT 4 /**< tiling clamps and any range offset repeats */
342 #define EVAS_TEXTURE_PAD 5 /**< tiling extends with end values */
344 #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() */
345 #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() */
346 #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) */
347 #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) */
348 #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 */
349 #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 */
352 * How the object should be rendered to output.
353 * @ingroup Evas_Object_Group_Extras
355 typedef enum _Evas_Render_Op
357 EVAS_RENDER_BLEND = 0, /**< default op: d = d*(1-sa) + s */
358 EVAS_RENDER_BLEND_REL = 1, /**< d = d*(1 - sa) + s*da */
359 EVAS_RENDER_COPY = 2, /**< d = s */
360 EVAS_RENDER_COPY_REL = 3, /**< d = s*da */
361 EVAS_RENDER_ADD = 4, /**< d = d + s */
362 EVAS_RENDER_ADD_REL = 5, /**< d = d + s*da */
363 EVAS_RENDER_SUB = 6, /**< d = d - s */
364 EVAS_RENDER_SUB_REL = 7, /**< d = d - s*da */
365 EVAS_RENDER_TINT = 8, /**< d = d*s + d*(1 - sa) + s*(1 - da) */
366 EVAS_RENDER_TINT_REL = 9, /**< d = d*(1 - sa + s) */
367 EVAS_RENDER_MASK = 10, /**< d = d*sa */
368 EVAS_RENDER_MUL = 11 /**< d = d*s */
369 } Evas_Render_Op; /**< How the object should be rendered to output. */
371 typedef enum _Evas_Border_Fill_Mode
373 EVAS_BORDER_FILL_NONE = 0,
374 EVAS_BORDER_FILL_DEFAULT = 1,
375 EVAS_BORDER_FILL_SOLID = 2
376 } Evas_Border_Fill_Mode;
378 typedef enum _Evas_Image_Scale_Hint
380 EVAS_IMAGE_SCALE_HINT_NONE = 0,
381 EVAS_IMAGE_SCALE_HINT_DYNAMIC = 1,
382 EVAS_IMAGE_SCALE_HINT_STATIC = 2
383 } Evas_Image_Scale_Hint;
385 typedef enum _Evas_Engine_Render_Mode
387 EVAS_RENDER_MODE_BLOCKING = 0,
388 EVAS_RENDER_MODE_NONBLOCKING = 1,
389 } Evas_Engine_Render_Mode;
391 typedef enum _Evas_Image_Content_Hint
393 EVAS_IMAGE_CONTENT_HINT_NONE = 0,
394 EVAS_IMAGE_CONTENT_HINT_DYNAMIC = 1,
395 EVAS_IMAGE_CONTENT_HINT_STATIC = 2
396 } Evas_Image_Content_Hint;
398 struct _Evas_Engine_Info /** Generic engine information. Generic info is useless */
400 int magic; /**< Magic number */
403 struct _Evas_Event_Mouse_Down /** Mouse button press event */
405 int button; /**< Mouse button number that went down (1 - 32) */
408 Evas_Coord_Point canvas;
411 Evas_Modifier *modifiers;
414 Evas_Button_Flags flags;
415 unsigned int timestamp;
416 Evas_Event_Flags event_flags;
420 struct _Evas_Event_Mouse_Up /** Mouse button release event */
422 int button; /**< Mouse button number that was raised (1 - 32) */
425 Evas_Coord_Point canvas;
428 Evas_Modifier *modifiers;
431 Evas_Button_Flags flags;
432 unsigned int timestamp;
433 Evas_Event_Flags event_flags;
437 struct _Evas_Event_Mouse_In /** Mouse enter event */
439 int buttons; /**< Button pressed mask, Bits set to 1 are buttons currently pressed (bit 0 = mouse button 1, bit 1 = mouse button 2 etc.) */
442 Evas_Coord_Point canvas;
445 Evas_Modifier *modifiers;
447 unsigned int timestamp;
448 Evas_Event_Flags event_flags;
452 struct _Evas_Event_Mouse_Out /** Mouse leave event */
454 int buttons; /**< Button pressed mask, Bits set to 1 are buttons currently pressed (bit 0 = mouse button 1, bit 1 = mouse button 2 etc.) */
458 Evas_Coord_Point canvas;
461 Evas_Modifier *modifiers;
463 unsigned int timestamp;
464 Evas_Event_Flags event_flags;
468 struct _Evas_Event_Mouse_Move /** Mouse button down event */
470 int buttons; /**< Button pressed mask, Bits set to 1 are buttons currently pressed (bit 0 = mouse button 1, bit 1 = mouse button 2 etc.) */
472 Evas_Position cur, prev;
475 Evas_Modifier *modifiers;
477 unsigned int timestamp;
478 Evas_Event_Flags event_flags;
482 struct _Evas_Event_Mouse_Wheel /** Wheel event */
484 int direction; /* 0 = default up/down wheel FIXME: more wheel types */
485 int z; /* ...,-2,-1 = down, 1,2,... = up */
488 Evas_Coord_Point canvas;
491 Evas_Modifier *modifiers;
493 unsigned int timestamp;
494 Evas_Event_Flags event_flags;
498 struct _Evas_Event_Multi_Down /** Multi button press event */
500 int device; /**< Multi device number that went down (1 or more for extra touches) */
501 double radius, radius_x, radius_y;
502 double pressure, angle;
505 Evas_Coord_Precision_Point canvas;
508 Evas_Modifier *modifiers;
511 Evas_Button_Flags flags;
512 unsigned int timestamp;
513 Evas_Event_Flags event_flags;
517 struct _Evas_Event_Multi_Up /** Multi button release event */
519 int device; /**< Multi device number that went up (1 or more for extra touches) */
520 double radius, radius_x, radius_y;
521 double pressure, angle;
524 Evas_Coord_Precision_Point canvas;
527 Evas_Modifier *modifiers;
530 Evas_Button_Flags flags;
531 unsigned int timestamp;
532 Evas_Event_Flags event_flags;
536 struct _Evas_Event_Multi_Move /** Multi button down event */
538 int device; /**< Multi device number that moved (1 or more for extra touches) */
539 double radius, radius_x, radius_y;
540 double pressure, angle;
542 Evas_Precision_Position cur;
545 Evas_Modifier *modifiers;
547 unsigned int timestamp;
548 Evas_Event_Flags event_flags;
552 struct _Evas_Event_Key_Down /** Key press event */
554 char *keyname; /**< The string name of the key pressed */
556 Evas_Modifier *modifiers;
559 const char *key; /**< The logical key : (eg shift+1 == exclamation) */
560 const char *string; /**< A UTF8 string if this keystroke has produced a visible string to be ADDED */
561 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 */
562 unsigned int timestamp;
563 Evas_Event_Flags event_flags;
567 struct _Evas_Event_Key_Up /** Key release event */
569 char *keyname; /**< The string name of the key released */
571 Evas_Modifier *modifiers;
574 const char *key; /**< The logical key : (eg shift+1 == exclamation) */
575 const char *string; /**< A UTF8 string if this keystroke has produced a visible string to be ADDED */
576 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 */
577 unsigned int timestamp;
578 Evas_Event_Flags event_flags;
582 struct _Evas_Event_Hold /** Hold change event */
584 int hold; /**< The hold flag */
587 unsigned int timestamp;
588 Evas_Event_Flags event_flags;
593 * How mouse pointer should be handled by Evas.
595 * If #EVAS_OBJECT_POINTER_MODE_AUTOGRAB, then when mouse is down an
596 * object, then moves outside of it, the pointer still behaves as
597 * being bound to the object, albeit out of its drawing region. On
598 * mouse up, the event will be feed to the object, that may check if
599 * the final position is over or not and do something about it.
601 * @ingroup Evas_Object_Group_Extras
603 typedef enum _Evas_Object_Pointer_Mode
605 EVAS_OBJECT_POINTER_MODE_AUTOGRAB, /**< default, X11-like */
606 EVAS_OBJECT_POINTER_MODE_NOGRAB
607 } Evas_Object_Pointer_Mode; /**< How mouse pointer should be handled by Evas. */
609 typedef void (*Evas_Smart_Cb) (void *data, Evas_Object *obj, void *event_info);
610 typedef void (*Evas_Event_Cb) (void *data, Evas *e, void *event_info);
611 typedef Eina_Bool (*Evas_Object_Event_Post_Cb) (void *data, Evas *e);
612 typedef void (*Evas_Object_Event_Cb) (void *data, Evas *e, Evas_Object *obj, void *event_info);
615 * @defgroup Evas_Group Top Level Functions
617 * Functions that affect Evas as a whole.
619 EAPI int evas_init (void);
620 EAPI int evas_shutdown (void);
622 EAPI int evas_alloc_error (void);
624 EAPI int evas_async_events_fd_get (void) EINA_WARN_UNUSED_RESULT EINA_PURE;
625 EAPI int evas_async_events_process (void);
626 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);
629 * @defgroup Evas_Canvas Canvas Functions
631 * Functions that deal with the basic evas object. They are the
632 * functions you need to use at a minimum to get a working evas, and
637 EAPI Evas *evas_new (void) EINA_WARN_UNUSED_RESULT EINA_MALLOC;
638 EAPI void evas_free (Evas *e) EINA_ARG_NONNULL(1);
640 EAPI void evas_focus_in (Evas *e);
641 EAPI void evas_focus_out (Evas *e);
642 EAPI Eina_Bool evas_focus_state_get (const Evas *e) EINA_PURE;
644 EAPI void evas_data_attach_set (Evas *e, void *data) EINA_ARG_NONNULL(1);
645 EAPI void *evas_data_attach_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
647 EAPI void evas_damage_rectangle_add (Evas *e, int x, int y, int w, int h) EINA_ARG_NONNULL(1);
648 EAPI void evas_obscured_rectangle_add (Evas *e, int x, int y, int w, int h) EINA_ARG_NONNULL(1);
649 EAPI void evas_obscured_clear (Evas *e) EINA_ARG_NONNULL(1);
650 EAPI Eina_List *evas_render_updates (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
651 EAPI void evas_render_updates_free (Eina_List *updates);
652 EAPI void evas_render (Evas *e) EINA_ARG_NONNULL(1);
653 EAPI void evas_norender (Evas *e) EINA_ARG_NONNULL(1);
654 EAPI void evas_render_idle_flush (Evas *e) EINA_ARG_NONNULL(1);
655 EAPI void evas_render_dump (Evas *e) EINA_ARG_NONNULL(1);
658 * @defgroup Evas_Output_Method Render Engine Functions
660 * Functions that are used to set the render engine for a given
661 * function, and then get that engine working.
663 * The following code snippet shows how they can be used to
664 * initialise an evas that uses the X11 software engine:
667 * Evas_Engine_Info_Software_X11 *einfo;
668 * extern Display *display;
674 * evas_output_method_set(evas, evas_render_method_lookup("software_x11"));
675 * evas_output_size_set(evas, 640, 480);
676 * evas_output_viewport_set(evas, 0, 0, 640, 480);
677 * einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(evas);
678 * einfo->info.display = display;
679 * einfo->info.visual = DefaultVisual(display, DefaultScreen(display));
680 * einfo->info.colormap = DefaultColormap(display, DefaultScreen(display));
681 * einfo->info.drawable = win;
682 * einfo->info.depth = DefaultDepth(display, DefaultScreen(display));
683 * evas_engine_info_set(evas, (Evas_Engine_Info *)einfo);
686 * @ingroup Evas_Canvas
688 EAPI int evas_render_method_lookup (const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
689 EAPI Eina_List *evas_render_method_list (void) EINA_WARN_UNUSED_RESULT;
690 EAPI void evas_render_method_list_free (Eina_List *list);
692 EAPI void evas_output_method_set (Evas *e, int render_method) EINA_ARG_NONNULL(1);
693 EAPI int evas_output_method_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
695 EAPI Evas_Engine_Info *evas_engine_info_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
696 EAPI int evas_engine_info_set (Evas *e, Evas_Engine_Info *info) EINA_ARG_NONNULL(1);
699 * @defgroup Evas_Output_Size Output and Viewport Resizing Functions
701 * Functions that set and retrieve the output and viewport size of an
704 * @ingroup Evas_Canvas
706 EAPI void evas_output_size_set (Evas *e, int w, int h) EINA_ARG_NONNULL(1);
707 EAPI void evas_output_size_get (const Evas *e, int *w, int *h) EINA_ARG_NONNULL(1);
708 EAPI void evas_output_viewport_set (Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
709 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);
712 * @defgroup Evas_Coord_Mapping_Group Coordinate Mapping Functions
714 * Functions that are used to map coordinates from the canvas to the
715 * screen or the screen to the canvas.
717 * @ingroup Evas_Canvas
719 EAPI Evas_Coord evas_coord_screen_x_to_world (const Evas *e, int x) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
720 EAPI Evas_Coord evas_coord_screen_y_to_world (const Evas *e, int y) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
721 EAPI int evas_coord_world_x_to_screen (const Evas *e, Evas_Coord x) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
722 EAPI int evas_coord_world_y_to_screen (const Evas *e, Evas_Coord y) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
725 * @defgroup Evas_Pointer_Group Pointer (Mouse) Functions
727 * Functions that deal with the status of the pointer (mouse cursor).
729 * @ingroup Evas_Canvas
731 EAPI void evas_pointer_output_xy_get (const Evas *e, int *x, int *y) EINA_ARG_NONNULL(1);
732 EAPI void evas_pointer_canvas_xy_get (const Evas *e, Evas_Coord *x, Evas_Coord *y) EINA_ARG_NONNULL(1);
733 EAPI int evas_pointer_button_down_mask_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
734 EAPI Eina_Bool evas_pointer_inside_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
735 EAPI void evas_sync(Evas *e) EINA_ARG_NONNULL(1);
739 * @defgroup Evas_Event_Freezing_Group Event Freezing Functions
741 * Functions that deal with the freezing of event processing of an
744 * @ingroup Evas_Canvas
746 EAPI void evas_event_freeze (Evas *e) EINA_ARG_NONNULL(1);
747 EAPI void evas_event_thaw (Evas *e) EINA_ARG_NONNULL(1);
748 EAPI int evas_event_freeze_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
751 * @defgroup Evas_Event_Feeding_Group Event Feeding Functions
753 * Functions to tell Evas that events happened and should be
756 * As explained in @ref intro_not_evas, Evas does not know how to poll
757 * for events, so the developer should do it and then feed such events
758 * to the canvas to be processed. This is only required if operating
759 * Evas directly as modules such as Ecore_Evas does that for you.
761 * @ingroup Evas_Canvas
763 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);
764 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);
765 EAPI void evas_event_feed_mouse_move (Evas *e, int x, int y, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
766 EAPI void evas_event_feed_mouse_in (Evas *e, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
767 EAPI void evas_event_feed_mouse_out (Evas *e, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
768 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);
769 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);
770 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);
771 EAPI void evas_event_feed_mouse_cancel (Evas *e, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
772 EAPI void evas_event_feed_mouse_wheel (Evas *e, int direction, int z, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
773 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);
774 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);
775 EAPI void evas_event_feed_hold (Evas *e, int hold, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1);
778 * @defgroup Evas_Canvas_Events Canvas Events
780 * Canvas generates some events
782 * @ingroup Evas_Canvas
785 EAPI void evas_event_callback_add (Evas *e, Evas_Callback_Type type, Evas_Event_Cb func, const void *data) EINA_ARG_NONNULL(1, 3);
786 EAPI void *evas_event_callback_del (Evas *e, Evas_Callback_Type type, Evas_Event_Cb func) EINA_ARG_NONNULL(1, 3);
787 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);
788 EAPI void evas_post_event_callback_push (Evas *e, Evas_Object_Event_Post_Cb func, const void *data);
789 EAPI void evas_post_event_callback_remove (Evas *e, Evas_Object_Event_Post_Cb func);
790 EAPI void evas_post_event_callback_remove_full (Evas *e, Evas_Object_Event_Post_Cb func, const void *data);
793 * @defgroup Evas_Image_Group Image Functions
795 * Functions that deals with images at canvas level.
797 * @ingroup Evas_Canvas
799 EAPI void evas_image_cache_flush (Evas *e) EINA_ARG_NONNULL(1);
800 EAPI void evas_image_cache_reload (Evas *e) EINA_ARG_NONNULL(1);
801 EAPI void evas_image_cache_set (Evas *e, int size) EINA_ARG_NONNULL(1);
802 EAPI int evas_image_cache_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
806 * @defgroup Evas_Font_Group Font Functions
808 * Functions that deals with fonts.
810 * @ingroup Evas_Canvas
812 EAPI void evas_font_hinting_set (Evas *e, Evas_Font_Hinting_Flags hinting) EINA_ARG_NONNULL(1);
813 EAPI Evas_Font_Hinting_Flags evas_font_hinting_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
814 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;
816 EAPI void evas_font_cache_flush (Evas *e) EINA_ARG_NONNULL(1);
817 EAPI void evas_font_cache_set (Evas *e, int size) EINA_ARG_NONNULL(1);
818 EAPI int evas_font_cache_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
820 EAPI Eina_List *evas_font_available_list (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
821 EAPI void evas_font_available_list_free (Evas *e, Eina_List *available) EINA_ARG_NONNULL(1);
824 * @defgroup Evas_Font_Path_Group Font Path Functions
826 * Functions that edit the paths being used to load fonts.
828 * @ingroup Evas_Font_Group
830 EAPI void evas_font_path_clear (Evas *e) EINA_ARG_NONNULL(1);
831 EAPI void evas_font_path_append (Evas *e, const char *path) EINA_ARG_NONNULL(1, 2);
832 EAPI void evas_font_path_prepend (Evas *e, const char *path) EINA_ARG_NONNULL(1, 2);
833 EAPI const Eina_List *evas_font_path_list (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
836 * @defgroup Evas_Object_Group Generic Object Functions
838 * Functions that manipulate generic evas objects.
842 * @defgroup Evas_Object_Group_Basic Basic Object Manipulation
844 * Methods that are often used, like those that change the color,
845 * clippers and geometry of the object.
847 * @ingroup Evas_Object_Group
849 EAPI void evas_object_clip_set (Evas_Object *obj, Evas_Object *clip) EINA_ARG_NONNULL(1, 2);
850 EAPI Evas_Object *evas_object_clip_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
851 EAPI void evas_object_clip_unset (Evas_Object *obj);
852 EAPI const Eina_List *evas_object_clipees_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
854 EAPI void evas_object_focus_set (Evas_Object *obj, Eina_Bool focus) EINA_ARG_NONNULL(1);
855 EAPI Eina_Bool evas_object_focus_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
857 EAPI void evas_object_layer_set (Evas_Object *obj, short l) EINA_ARG_NONNULL(1);
858 EAPI short evas_object_layer_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
860 EAPI void evas_object_name_set (Evas_Object *obj, const char *name) EINA_ARG_NONNULL(1);
861 EAPI const char *evas_object_name_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
863 EAPI void evas_object_del (Evas_Object *obj) EINA_ARG_NONNULL(1);
864 EAPI void evas_object_move (Evas_Object *obj, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1);
865 EAPI void evas_object_resize (Evas_Object *obj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
866 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);
868 EAPI void evas_object_show (Evas_Object *obj) EINA_ARG_NONNULL(1);
869 EAPI void evas_object_hide (Evas_Object *obj) EINA_ARG_NONNULL(1);
870 EAPI Eina_Bool evas_object_visible_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
872 EAPI void evas_object_color_set (Evas_Object *obj, int r, int g, int b, int a) EINA_ARG_NONNULL(1);
873 EAPI void evas_object_color_get (const Evas_Object *obj, int *r, int *g, int *b, int *a) EINA_ARG_NONNULL(1);
875 EAPI Evas *evas_object_evas_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
877 EAPI const char *evas_object_type_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
879 EAPI void evas_object_raise (Evas_Object *obj) EINA_ARG_NONNULL(1);
880 EAPI void evas_object_lower (Evas_Object *obj) EINA_ARG_NONNULL(1);
881 EAPI void evas_object_stack_above (Evas_Object *obj, Evas_Object *above) EINA_ARG_NONNULL(1, 2);
882 EAPI void evas_object_stack_below (Evas_Object *obj, Evas_Object *below) EINA_ARG_NONNULL(1, 2);
883 EAPI Evas_Object *evas_object_above_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
884 EAPI Evas_Object *evas_object_below_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
888 * @defgroup Evas_Object_Group_Events Object Events
890 * Objects generates events when they are moved, resized, when their
891 * visibility change, when they are deleted and so on. These methods
892 * will allow one to handle such events.
894 * The events can be those from keyboard and mouse, if the object
895 * accepts these events.
897 * @ingroup Evas_Object_Group
899 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);
900 EAPI void *evas_object_event_callback_del (Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func) EINA_ARG_NONNULL(1, 3);
901 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);
903 EAPI void evas_object_pass_events_set (Evas_Object *obj, Eina_Bool pass) EINA_ARG_NONNULL(1);
904 EAPI Eina_Bool evas_object_pass_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
905 EAPI void evas_object_repeat_events_set (Evas_Object *obj, Eina_Bool repeat) EINA_ARG_NONNULL(1);
906 EAPI Eina_Bool evas_object_repeat_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
907 EAPI void evas_object_propagate_events_set (Evas_Object *obj, Eina_Bool prop) EINA_ARG_NONNULL(1);
908 EAPI Eina_Bool evas_object_propagate_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
911 * @defgroup Evas_Object_Group_Map UV Mapping (Rotation, Perspecitve, 3D...)
913 * Evas allows different transformations to be applied to all kinds of
914 * objects. These are applied by means of UV mapping.
916 * With UV mapping, one maps points in the source object to a 3D space
917 * positioning at target. This allows rotation, perspective, scale and
918 * lots of other effects, depending on the map that is used.
920 * Each map point may carry a multiplier color. If properly
921 * calculated, these can do shading effects on the object, producing
924 * As usual, Evas provides both the raw and easy to use methods. The
925 * raw methods allow developer to create its maps somewhere else,
926 * maybe load them from some file format. The easy to use methods,
927 * calculate the points given some high-level parameters, such as
928 * rotation angle, ambient light and so on.
930 * @note applying mapping will reduce performance, so use with
931 * care. The impact on performance depends on engine in
932 * use. Software is quite optimized, but not as fast as OpenGL.
934 * @ingroup Evas_Object_Group
936 EAPI void evas_object_map_enable_set (Evas_Object *obj, Eina_Bool enabled);
937 EAPI Eina_Bool evas_object_map_enable_get (const Evas_Object *obj);
938 EAPI void evas_object_map_source_set (Evas_Object *obj, Evas_Object *src);
939 EAPI Evas_Object *evas_object_map_source_get (const Evas_Object *obj);
940 EAPI void evas_object_map_set (Evas_Object *obj, const Evas_Map *map);
941 EAPI const Evas_Map *evas_object_map_get (const Evas_Object *obj);
943 EAPI void evas_map_util_points_populate_from_object_full (Evas_Map *m, const Evas_Object *obj, Evas_Coord z);
944 EAPI void evas_map_util_points_populate_from_object (Evas_Map *m, const Evas_Object *obj);
945 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);
947 EAPI void evas_map_util_points_color_set (Evas_Map *m, int r, int g, int b, int a);
949 EAPI void evas_map_util_rotate (Evas_Map *m, double degrees, Evas_Coord cx, Evas_Coord cy);
950 EAPI void evas_map_util_zoom (Evas_Map *m, double zoomx, double zoomy, Evas_Coord cx, Evas_Coord cy);
951 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);
952 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);
953 EAPI void evas_map_util_3d_perspective (Evas_Map *m, Evas_Coord px, Evas_Coord py, Evas_Coord z0, Evas_Coord foc);
954 EAPI Eina_Bool evas_map_util_clockwise_get (Evas_Map *m);
956 EAPI Evas_Map *evas_map_new (int count);
957 EAPI void evas_map_smooth_set (Evas_Map *m, Eina_Bool enabled);
958 EAPI Eina_Bool evas_map_smooth_get (const Evas_Map *m);
959 EAPI void evas_map_alpha_set (Evas_Map *m, Eina_Bool enabled);
960 EAPI Eina_Bool evas_map_alpha_get (const Evas_Map *m);
961 EAPI Evas_Map *evas_map_dup (const Evas_Map *m);
962 EAPI void evas_map_free (Evas_Map *m);
963 EAPI void evas_map_point_coord_set (Evas_Map *m, int idx, Evas_Coord x, Evas_Coord y, Evas_Coord z);
964 EAPI void evas_map_point_coord_get (const Evas_Map *m, int idx, Evas_Coord *x, Evas_Coord *y, Evas_Coord *z);
965 EAPI void evas_map_point_image_uv_set (Evas_Map *m, int idx, double u, double v);
966 EAPI void evas_map_point_image_uv_get (const Evas_Map *m, int idx, double *u, double *v);
967 EAPI void evas_map_point_color_set (Evas_Map *m, int idx, int r, int g, int b, int a);
968 EAPI void evas_map_point_color_get (const Evas_Map *m, int idx, int *r, int *g, int *b, int *a);
971 * @defgroup Evas_Object_Group_Size_Hints Size Hints
973 * Objects may carry hints so another object that acts as a manager
974 * (see @ref Evas_Smart_Object_Group) may know how to proper position
975 * and resize the object. The Size Hints provide a common interface
976 * that is recommended as the protocol for such information.
978 * @ingroup Evas_Object_Group
980 EAPI void evas_object_size_hint_min_get (const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
981 EAPI void evas_object_size_hint_min_set (Evas_Object *obj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
982 EAPI void evas_object_size_hint_max_get (const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
983 EAPI void evas_object_size_hint_max_set (Evas_Object *obj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
984 EAPI void evas_object_size_hint_request_get (const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
985 EAPI void evas_object_size_hint_request_set (Evas_Object *obj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
986 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);
987 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);
988 EAPI void evas_object_size_hint_align_get (const Evas_Object *obj, double *x, double *y) EINA_ARG_NONNULL(1);
989 EAPI void evas_object_size_hint_align_set (Evas_Object *obj, double x, double y) EINA_ARG_NONNULL(1);
990 EAPI void evas_object_size_hint_weight_get (const Evas_Object *obj, double *x, double *y) EINA_ARG_NONNULL(1);
991 EAPI void evas_object_size_hint_weight_set (Evas_Object *obj, double x, double y) EINA_ARG_NONNULL(1);
992 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);
993 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);
996 * @defgroup Evas_Object_Group_Extras Extra Object Manipulation
998 * Miscellaneous functions that also apply to any object, but are less
999 * used or not implemented by all objects.
1001 * @ingroup Evas_Object_Group
1003 EAPI void evas_object_data_set (Evas_Object *obj, const char *key, const void *data) EINA_ARG_NONNULL(1, 2);
1004 EAPI void *evas_object_data_get (const Evas_Object *obj, const char *key) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
1005 EAPI void *evas_object_data_del (Evas_Object *obj, const char *key) EINA_ARG_NONNULL(1, 2);
1007 EAPI void evas_object_pointer_mode_set (Evas_Object *obj, Evas_Object_Pointer_Mode setting) EINA_ARG_NONNULL(1);
1008 EAPI Evas_Object_Pointer_Mode evas_object_pointer_mode_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1010 EAPI void evas_object_anti_alias_set (Evas_Object *obj, Eina_Bool antialias) EINA_ARG_NONNULL(1);
1011 EAPI Eina_Bool evas_object_anti_alias_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1013 EAPI void evas_object_scale_set (Evas_Object *obj, double scale) EINA_ARG_NONNULL(1);
1014 EAPI double evas_object_scale_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1016 EAPI void evas_object_color_interpolation_set (Evas_Object *obj, int color_space) EINA_ARG_NONNULL(1);
1017 EAPI int evas_object_color_interpolation_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1019 EAPI void evas_object_render_op_set (Evas_Object *obj, Evas_Render_Op op) EINA_ARG_NONNULL(1);
1020 EAPI Evas_Render_Op evas_object_render_op_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1022 EAPI void evas_object_precise_is_inside_set (Evas_Object *obj, Eina_Bool precise) EINA_ARG_NONNULL(1);
1023 EAPI Eina_Bool evas_object_precise_is_inside_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1026 * @defgroup Evas_Object_Group_Find Finding Objects
1028 * Functions that allows finding objects by their position, name or
1031 * @ingroup Evas_Object_Group
1033 EAPI Evas_Object *evas_focus_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1035 EAPI Evas_Object *evas_object_name_find (const Evas *e, const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1037 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;
1038 EAPI Evas_Object *evas_object_top_at_pointer_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1039 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;
1041 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;
1042 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;
1044 EAPI Evas_Object *evas_object_bottom_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1045 EAPI Evas_Object *evas_object_top_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1048 * @defgroup Evas_Object_Group_Interceptors Object Method Interceptors
1050 * Evas provides a way to intercept method calls. The interceptor
1051 * callback may opt to completely deny the call, or may check and
1052 * change the parameters before continuing. The continuation of an
1053 * intercepted call is done by calling the intercepted call again,
1054 * from inside the interceptor callback.
1056 * @ingroup Evas_Object_Group
1058 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);
1059 EAPI void *evas_object_intercept_show_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) EINA_ARG_NONNULL(1, 2);
1060 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);
1061 EAPI void *evas_object_intercept_hide_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) EINA_ARG_NONNULL(1, 2);
1062 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);
1063 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);
1064 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);
1065 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);
1066 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);
1067 EAPI void *evas_object_intercept_raise_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) EINA_ARG_NONNULL(1, 2);
1068 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);
1069 EAPI void *evas_object_intercept_lower_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) EINA_ARG_NONNULL(1, 2);
1070 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);
1071 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);
1072 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);
1073 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);
1074 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);
1075 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);
1076 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);
1077 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);
1078 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);
1079 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);
1080 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);
1081 EAPI void *evas_object_intercept_clip_unset_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) EINA_ARG_NONNULL(1, 2);
1086 * @defgroup Evas_Object_Specific Specific Object Functions
1088 * Functions that work on specific objects.
1093 * @defgroup Evas_Object_Rectangle Rectangle Object Functions
1095 * Functions that operate on evas rectangle objects.
1097 * @ingroup Evas_Object_Specific
1099 EAPI Evas_Object *evas_object_rectangle_add (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1102 * @defgroup Evas_Object_Image Image Object Functions
1104 * Functions used to create and manipulate image objects.
1106 * Note - Image objects may return or accept "image data" in multiple
1107 * formats. This is based on the colorspace of an object. Here is a
1108 * rundown on formats:
1110 * EVAS_COLORSPACE_ARGB8888:
1112 * This pixel format is a linear block of pixels, starting at the
1113 * top-left row by row until the bottom right of the image or pixel
1114 * region. All pixels are 32-bit unsigned int's with the high-byte
1115 * being alpha and the low byte being blue in the format ARGB. Alpha
1116 * may or may not be used by evas depending on the alpha flag of the
1117 * image, but if not used, should be set to 0xff anyway.
1119 * This colorspace uses premultiplied alpha. That means that R, G and
1120 * B cannot exceed A in value. The conversion from non-premultiplied
1123 * R = (r * a) / 255; G = (g * a) / 255; B = (b * a) / 255;
1125 * So 50% transparent blue will be: 0x80000080. This will not be
1126 * "dark" - just 50% transparent. Values are 0 == black, 255 == solid
1127 * or full red, green or blue.
1129 * EVAS_COLORSPACE_YCBCR422P601_PL:
1131 * This is a pointer-list indirected set of YUV (YCbCr) pixel
1132 * data. This means that the data returned or set is not actual pixel
1133 * data, but pointers TO lines of pixel data. The list of pointers
1134 * will first be N rows of pointers to the Y plane - pointing to the
1135 * first pixel at the start of each row in the Y plane. N is the
1136 * height of the image data in pixels. Each pixel in the Y, U and V
1137 * planes is 1 byte exactly, packed. The next N / 2 pointers will
1138 * point to rows in the U plane, and the next N / 2 pointers will
1139 * point to the V plane rows. U and V planes are half the horizontal
1140 * and vertical resolution of the Y plane.
1142 * Row order is top to bottom and row pixels are stored left to right.
1144 * There is a limitation that these images MUST be a multiple of 2
1145 * pixels in size horizontally or vertically. This is due to the U and
1146 * V planes being half resolution. Also note that this assumes the
1147 * itu601 YUV colorspace specification. This is defined for standard
1148 * television and mpeg streams. HDTV may use the itu709
1151 * Values are 0 to 255, indicating full or no signal in that plane
1154 * EVAS_COLORSPACE_YCBCR422P709_PL:
1156 * Not implemented yet.
1158 * EVAS_COLORSPACE_RGB565_A5P:
1160 * In the process of being implemented in 1 engine only. This may change.
1162 * This is a pointer to image data for 16-bit half-word pixel data in
1163 * 16bpp RGB 565 format (5 bits red, 6 bits green, 5 bits blue), with
1164 * the high-byte containing red and the low byte containing blue, per
1165 * pixel. This data is packed row by row from the top-left to the
1168 * If the image has an alpha channel enabled there will be an extra
1169 * alpha plane after the color pixel plane. If not, then this data
1170 * will not exist and should not be accessed in any way. This plane is
1171 * a set of pixels with 1 byte per pixel defining the alpha values of
1172 * all pixels in the image from the top-left to the bottom right of
1173 * the image, row by row. Even though the values of the alpha pixels
1174 * can be 0 to 255, only values 0 through to 32 are used, 32 being
1175 * solid and 0 being transparent.
1177 * RGB values can be 0 to 31 for red and blue and 0 to 63 for green,
1178 * with 0 being black and 31 or 63 being full red, green or blue
1179 * respectively. This colorspace is also pre-multiplied like
1180 * EVAS_COLORSPACE_ARGB8888 so:
1182 * R = (r * a) / 32; G = (g * a) / 32; B = (b * a) / 32;
1184 * @ingroup Evas_Object_Specific
1186 EAPI Evas_Object *evas_object_image_add (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1187 EAPI Evas_Object *evas_object_image_filled_add (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1189 EAPI void evas_object_image_file_set (Evas_Object *obj, const char *file, const char *key) EINA_ARG_NONNULL(1, 2);
1190 EAPI void evas_object_image_file_get (const Evas_Object *obj, const char **file, const char **key) EINA_ARG_NONNULL(1, 2);
1191 EAPI void evas_object_image_border_set (Evas_Object *obj, int l, int r, int t, int b) EINA_ARG_NONNULL(1);
1192 EAPI void evas_object_image_border_get (const Evas_Object *obj, int *l, int *r, int *t, int *b) EINA_ARG_NONNULL(1);
1193 EAPI void evas_object_image_border_center_fill_set(Evas_Object *obj, Evas_Border_Fill_Mode fill) EINA_ARG_NONNULL(1);
1194 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;
1195 EAPI void evas_object_image_filled_set (Evas_Object *obj, Eina_Bool setting) EINA_ARG_NONNULL(1);
1196 EAPI Eina_Bool evas_object_image_filled_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1197 EAPI void evas_object_image_border_scale_set(Evas_Object *obj, double scale);
1198 EAPI double evas_object_image_border_scale_get(const Evas_Object *obj);
1199 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);
1200 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);
1201 EAPI void evas_object_image_fill_spread_set (Evas_Object *obj, int tile_mode) EINA_ARG_NONNULL(1);
1202 EAPI int evas_object_image_fill_spread_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1203 EAPI void evas_object_image_size_set (Evas_Object *obj, int w, int h) EINA_ARG_NONNULL(1);
1204 EAPI void evas_object_image_size_get (const Evas_Object *obj, int *w, int *h) EINA_ARG_NONNULL(1);
1205 EAPI int evas_object_image_stride_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1206 EAPI int evas_object_image_load_error_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1207 EAPI void evas_object_image_data_set (Evas_Object *obj, void *data) EINA_ARG_NONNULL(1);
1208 EAPI void *evas_object_image_data_convert (Evas_Object *obj, Evas_Colorspace to_cspace) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1209 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;
1210 EAPI void evas_object_image_data_copy_set (Evas_Object *obj, void *data) EINA_ARG_NONNULL(1);
1211 EAPI void evas_object_image_data_update_add (Evas_Object *obj, int x, int y, int w, int h) EINA_ARG_NONNULL(1);
1212 EAPI void evas_object_image_alpha_set (Evas_Object *obj, Eina_Bool has_alpha) EINA_ARG_NONNULL(1);
1213 EAPI Eina_Bool evas_object_image_alpha_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1214 EAPI void evas_object_image_smooth_scale_set(Evas_Object *obj, Eina_Bool smooth_scale) EINA_ARG_NONNULL(1);
1215 EAPI Eina_Bool evas_object_image_smooth_scale_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1216 EAPI void evas_object_image_preload (Evas_Object *obj, Eina_Bool cancel) EINA_ARG_NONNULL(1);
1217 EAPI void evas_object_image_reload (Evas_Object *obj) EINA_ARG_NONNULL(1);
1218 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);
1219 EAPI Eina_Bool evas_object_image_pixels_import (Evas_Object *obj, Evas_Pixel_Import_Source *pixels) EINA_ARG_NONNULL(1, 2);
1220 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);
1221 EAPI void evas_object_image_pixels_dirty_set (Evas_Object *obj, Eina_Bool dirty) EINA_ARG_NONNULL(1);
1222 EAPI Eina_Bool evas_object_image_pixels_dirty_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1223 EAPI void evas_object_image_load_dpi_set (Evas_Object *obj, double dpi) EINA_ARG_NONNULL(1);
1224 EAPI double evas_object_image_load_dpi_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1225 EAPI void evas_object_image_load_size_set (Evas_Object *obj, int w, int h) EINA_ARG_NONNULL(1);
1226 EAPI void evas_object_image_load_size_get (const Evas_Object *obj, int *w, int *h) EINA_ARG_NONNULL(1);
1227 EAPI void evas_object_image_load_scale_down_set (Evas_Object *obj, int scale_down) EINA_ARG_NONNULL(1);
1228 EAPI int evas_object_image_load_scale_down_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1229 EAPI void evas_object_image_load_region_set (Evas_Object *obj, int x, int y, int w, int h) EINA_ARG_NONNULL(1);
1230 EAPI void evas_object_image_load_region_get (const Evas_Object *obj, int *x, int *y, int *w, int *h) EINA_ARG_NONNULL(1);
1232 EAPI void evas_object_image_colorspace_set (Evas_Object *obj, Evas_Colorspace cspace) EINA_ARG_NONNULL(1);
1233 EAPI Evas_Colorspace evas_object_image_colorspace_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1234 EAPI void evas_object_image_native_surface_set (Evas_Object *obj, Evas_Native_Surface *surf) EINA_ARG_NONNULL(1, 2);
1235 EAPI Evas_Native_Surface *evas_object_image_native_surface_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1236 EAPI void evas_object_image_scale_hint_set (Evas_Object *obj, Evas_Image_Scale_Hint hint) EINA_ARG_NONNULL(1);
1237 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;
1238 EAPI void evas_object_image_content_hint_set (Evas_Object *obj, Evas_Image_Content_Hint hint) EINA_ARG_NONNULL(1);
1239 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;
1242 * @defgroup Evas_Object_Text Text Object Functions
1244 * Functions that operate on single line, single style text objects.
1246 * For multiline and multiple style text, see @ref Evas_Object_Textblock.
1248 * @ingroup Evas_Object_Specific
1250 typedef enum _Evas_Text_Style_Type
1252 EVAS_TEXT_STYLE_PLAIN,
1253 EVAS_TEXT_STYLE_SHADOW,
1254 EVAS_TEXT_STYLE_OUTLINE,
1255 EVAS_TEXT_STYLE_SOFT_OUTLINE,
1256 EVAS_TEXT_STYLE_GLOW,
1257 EVAS_TEXT_STYLE_OUTLINE_SHADOW,
1258 EVAS_TEXT_STYLE_FAR_SHADOW,
1259 EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW,
1260 EVAS_TEXT_STYLE_SOFT_SHADOW,
1261 EVAS_TEXT_STYLE_FAR_SOFT_SHADOW
1262 } Evas_Text_Style_Type;
1264 EAPI Evas_Object *evas_object_text_add (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1265 EAPI void evas_object_text_font_source_set (Evas_Object *obj, const char *font) EINA_ARG_NONNULL(1);
1266 EAPI const char *evas_object_text_font_source_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1267 EAPI void evas_object_text_font_set (Evas_Object *obj, const char *font, Evas_Font_Size size) EINA_ARG_NONNULL(1);
1268 EAPI void evas_object_text_font_get (const Evas_Object *obj, const char **font, Evas_Font_Size *size) EINA_ARG_NONNULL(1, 2);
1269 EAPI void evas_object_text_text_set (Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1);
1270 EAPI const char *evas_object_text_text_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1271 EAPI Evas_Coord evas_object_text_ascent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1272 EAPI Evas_Coord evas_object_text_descent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1273 EAPI Evas_Coord evas_object_text_max_ascent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1274 EAPI Evas_Coord evas_object_text_max_descent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1275 EAPI Evas_Coord evas_object_text_horiz_advance_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1276 EAPI Evas_Coord evas_object_text_vert_advance_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1277 EAPI Evas_Coord evas_object_text_inset_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1278 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);
1279 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);
1280 EAPI int evas_object_text_last_up_to_pos(const Evas_Object *obj, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1);
1281 EAPI Evas_Text_Style_Type evas_object_text_style_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1282 EAPI void evas_object_text_style_set (Evas_Object *obj, Evas_Text_Style_Type type) EINA_ARG_NONNULL(1);
1283 EAPI void evas_object_text_shadow_color_set (Evas_Object *obj, int r, int g, int b, int a) EINA_ARG_NONNULL(1);
1284 EAPI void evas_object_text_shadow_color_get (const Evas_Object *obj, int *r, int *g, int *b, int *a) EINA_ARG_NONNULL(1);
1285 EAPI void evas_object_text_glow_color_set (Evas_Object *obj, int r, int g, int b, int a) EINA_ARG_NONNULL(1);
1286 EAPI void evas_object_text_glow_color_get (const Evas_Object *obj, int *r, int *g, int *b, int *a) EINA_ARG_NONNULL(1);
1287 EAPI void evas_object_text_glow2_color_set (Evas_Object *obj, int r, int g, int b, int a) EINA_ARG_NONNULL(1);
1288 EAPI void evas_object_text_glow2_color_get (const Evas_Object *obj, int *r, int *g, int *b, int *a) EINA_ARG_NONNULL(1);
1289 EAPI void evas_object_text_outline_color_set(Evas_Object *obj, int r, int g, int b, int a) EINA_ARG_NONNULL(1);
1290 EAPI void evas_object_text_outline_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a) EINA_ARG_NONNULL(1);
1291 EAPI void evas_object_text_style_pad_get (const Evas_Object *obj, int *l, int *r, int *t, int *b) EINA_ARG_NONNULL(1);
1295 * @defgroup Evas_Object_Textblock Textblock Object Functions
1297 * Functions used to create and manipulate textblock objects. Unlike
1298 * @ref Evas_Object_Text, these handle complex text, doing multiple
1299 * styles and multiline text based on HTML-like tags. Of these extra
1300 * features will be heavier on memory and processing cost.
1302 * @todo put here some usage examples
1304 * @ingroup Evas_Object_Specific
1306 typedef struct _Evas_Textblock_Style Evas_Textblock_Style;
1307 typedef struct _Evas_Textblock_Cursor Evas_Textblock_Cursor;
1309 * @typedef Evas_Object_Textblock_Node_Format
1312 typedef struct _Evas_Object_Textblock_Node_Format Evas_Object_Textblock_Node_Format;
1313 typedef struct _Evas_Textblock_Rectangle Evas_Textblock_Rectangle;
1315 struct _Evas_Textblock_Rectangle
1317 Evas_Coord x, y, w, h;
1320 typedef enum _Evas_Textblock_Text_Type
1322 EVAS_TEXTBLOCK_TEXT_RAW,
1323 EVAS_TEXTBLOCK_TEXT_PLAIN,
1324 EVAS_TEXTBLOCK_TEXT_MARKUP
1325 } Evas_Textblock_Text_Type;
1327 EAPI Evas_Object *evas_object_textblock_add(Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1329 EAPI const char *evas_textblock_escape_string_get(const char *escape) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1330 EAPI const char *evas_textblock_string_escape_get(const char *string, int *len_ret) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1331 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;
1333 EAPI Evas_Textblock_Style *evas_textblock_style_new(void) EINA_WARN_UNUSED_RESULT EINA_MALLOC;
1334 EAPI void evas_textblock_style_free(Evas_Textblock_Style *ts) EINA_ARG_NONNULL(1);
1335 EAPI void evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text) EINA_ARG_NONNULL(1);
1336 EAPI const char *evas_textblock_style_get(const Evas_Textblock_Style *ts) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1338 EAPI void evas_object_textblock_style_set(Evas_Object *obj, Evas_Textblock_Style *ts) EINA_ARG_NONNULL(1);
1339 EAPI const Evas_Textblock_Style *evas_object_textblock_style_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1340 EAPI void evas_object_textblock_replace_char_set(Evas_Object *obj, const char *ch) EINA_ARG_NONNULL(1);
1341 EAPI const char *evas_object_textblock_replace_char_get(Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1343 EAPI void evas_object_textblock_text_markup_set(Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1);
1344 EAPI void evas_object_textblock_text_markup_prepend(Evas_Textblock_Cursor *cur, const char *text) EINA_ARG_NONNULL(1, 2);
1345 EAPI const char *evas_object_textblock_text_markup_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1347 EAPI const Evas_Textblock_Cursor *evas_object_textblock_cursor_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1348 EAPI Evas_Textblock_Cursor *evas_object_textblock_cursor_new(Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1350 EAPI void evas_textblock_cursor_free(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1352 EAPI void evas_textblock_cursor_paragraph_first(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1353 EAPI void evas_textblock_cursor_paragraph_last(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1354 EAPI Eina_Bool evas_textblock_cursor_paragraph_next(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1355 EAPI Eina_Bool evas_textblock_cursor_paragraph_prev(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1356 EAPI const Evas_Object_Textblock_Node_Format *evas_textblock_node_format_first_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1357 EAPI const Evas_Object_Textblock_Node_Format *evas_textblock_node_format_last_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1358 EAPI const Evas_Object_Textblock_Node_Format *evas_textblock_node_format_next_get(const Evas_Object_Textblock_Node_Format *n) EINA_ARG_NONNULL(1);
1359 EAPI const Evas_Object_Textblock_Node_Format *evas_textblock_node_format_prev_get(const Evas_Object_Textblock_Node_Format *n) EINA_ARG_NONNULL(1);
1360 EAPI void evas_textblock_cursor_set_at_format(Evas_Textblock_Cursor *cur, const Evas_Object_Textblock_Node_Format *n) EINA_ARG_NONNULL(1, 2);
1361 EAPI const Evas_Object_Textblock_Node_Format *evas_textblock_cursor_format_get(const Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1362 EAPI const char *evas_textblock_node_format_text_get(const Evas_Object_Textblock_Node_Format *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
1363 EAPI void evas_textblock_cursor_at_format_set(Evas_Textblock_Cursor *cur, const Evas_Object_Textblock_Node_Format *fmt) EINA_ARG_NONNULL(1, 2);
1364 EAPI Eina_Bool evas_textblock_cursor_format_is_visible_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1365 EAPI Eina_Bool evas_textblock_cursor_format_next(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1366 EAPI Eina_Bool evas_textblock_cursor_format_prev(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1367 EAPI Eina_Bool evas_textblock_cursor_is_format(const Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1368 EAPI Eina_Bool evas_textblock_cursor_char_next(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1369 EAPI Eina_Bool evas_textblock_cursor_char_prev(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1370 EAPI void evas_textblock_cursor_paragraph_char_first(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1371 EAPI void evas_textblock_cursor_paragraph_char_last(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1372 EAPI void evas_textblock_cursor_line_char_first(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1373 EAPI void evas_textblock_cursor_line_char_last(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1374 EAPI int evas_textblock_cursor_pos_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1375 EAPI void evas_textblock_cursor_pos_set(Evas_Textblock_Cursor *cur, int pos) EINA_ARG_NONNULL(1);
1376 EAPI Eina_Bool evas_textblock_cursor_line_set(Evas_Textblock_Cursor *cur, int line) EINA_ARG_NONNULL(1);
1377 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;
1378 EAPI void evas_textblock_cursor_copy(const Evas_Textblock_Cursor *cur, Evas_Textblock_Cursor *cur_dest) EINA_ARG_NONNULL(1, 2);
1380 EAPI size_t evas_textblock_cursor_text_append(Evas_Textblock_Cursor *cur, const char *text) EINA_ARG_NONNULL(1, 2);
1381 EAPI size_t evas_textblock_cursor_text_prepend(Evas_Textblock_Cursor *cur, const char *text) EINA_ARG_NONNULL(1, 2);
1383 EAPI Eina_Bool evas_textblock_cursor_format_append(Evas_Textblock_Cursor *cur, const char *format) EINA_ARG_NONNULL(1, 2);
1384 EAPI Eina_Bool evas_textblock_cursor_format_prepend(Evas_Textblock_Cursor *cur, const char *format) EINA_ARG_NONNULL(1, 2);
1385 EAPI void evas_textblock_cursor_node_delete(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1386 EAPI void evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
1387 EAPI void evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_Cursor *cur2) EINA_ARG_NONNULL(1, 2);
1389 EAPI const char *evas_textblock_cursor_paragraph_text_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1390 EAPI int evas_textblock_cursor_paragraph_text_length_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1391 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;
1392 EAPI char *evas_textblock_cursor_content_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1393 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);
1394 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);
1395 EAPI Eina_Bool evas_textblock_cursor_char_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1);
1396 EAPI int evas_textblock_cursor_line_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord y) EINA_ARG_NONNULL(1);
1397 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;
1398 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);
1400 EAPI Eina_Bool evas_textblock_cursor_eol_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1402 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);
1403 EAPI void evas_object_textblock_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
1404 EAPI void evas_object_textblock_size_formatted_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
1405 EAPI void evas_object_textblock_size_native_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
1406 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);
1409 * @defgroup Evas_Line_Group Line Object Functions
1411 * Functions used to deal with evas line objects.
1413 * @ingroup Evas_Object_Specific
1415 EAPI Evas_Object *evas_object_line_add (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1416 EAPI void evas_object_line_xy_set (Evas_Object *obj, Evas_Coord x1, Evas_Coord y1, Evas_Coord x2, Evas_Coord y2);
1417 EAPI void evas_object_line_xy_get (const Evas_Object *obj, Evas_Coord *x1, Evas_Coord *y1, Evas_Coord *x2, Evas_Coord *y2);
1420 * @defgroup Evas_Object_Polygon Polygon Object Functions
1422 * Functions that operate on evas polygon objects.
1424 * Hint: as evas does not provide ellipse, smooth paths or circle, one
1425 * can calculate points and convert these to a polygon.
1427 * @ingroup Evas_Object_Specific
1429 EAPI Evas_Object *evas_object_polygon_add (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1430 EAPI void evas_object_polygon_point_add (Evas_Object *obj, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1);
1431 EAPI void evas_object_polygon_points_clear (Evas_Object *obj) EINA_ARG_NONNULL(1);
1434 * @defgroup Evas_Smart_Group Smart Functions
1436 * Functions that deal with Evas_Smart's, creating definition
1437 * (classes) of objects that will have customized behavior for methods
1438 * like evas_object_move(), evas_object_resize(),
1439 * evas_object_clip_set() and others.
1441 * These objects will accept the generic methods defined in @ref
1442 * Evas_Object_Group and the extensions defined in @ref
1443 * Evas_Smart_Object_Group. There are couple of existent smart objects
1444 * in Evas itself, see @ref Evas_Object_Box, @ref Evas_Object_Table
1445 * and @ref Evas_Smart_Object_Clipped.
1449 * @def EVAS_SMART_CLASS_VERSION
1450 * The version you have to put into the version field in the smart
1452 * @ingroup Evas_Smart_Group
1454 #define EVAS_SMART_CLASS_VERSION 4
1456 * @struct _Evas_Smart_Class
1457 * a smart object class
1458 * @ingroup Evas_Smart_Group
1460 struct _Evas_Smart_Class
1462 const char *name; /**< the string name of the class */
1466 void (*add) (Evas_Object *o);
1467 void (*del) (Evas_Object *o);
1468 void (*move) (Evas_Object *o, Evas_Coord x, Evas_Coord y);
1469 void (*resize) (Evas_Object *o, Evas_Coord w, Evas_Coord h);
1470 void (*show) (Evas_Object *o);
1471 void (*hide) (Evas_Object *o);
1472 void (*color_set) (Evas_Object *o, int r, int g, int b, int a);
1473 void (*clip_set) (Evas_Object *o, Evas_Object *clip);
1474 void (*clip_unset) (Evas_Object *o);
1475 void (*calculate) (Evas_Object *o);
1476 void (*member_add) (Evas_Object *o, Evas_Object *child);
1477 void (*member_del) (Evas_Object *o, Evas_Object *child);
1479 const Evas_Smart_Class *parent; /**< this class inherits from this parent */
1480 const Evas_Smart_Cb_Description *callbacks; /**< callbacks at this level, NULL terminated */
1482 void *interfaces; /**< to be used in a future near you */
1488 * @struct _Evas_Smart_Cb_Description
1490 * Describes a callback used by a smart class
1491 * evas_object_smart_callback_call(), particularly useful to explain
1492 * to user and its code (ie: introspection) what the parameter @c
1493 * event_info will contain.
1495 * @ingroup Evas_Smart_Group
1497 struct _Evas_Smart_Cb_Description
1499 const char *name; /**< callback name, ie: "changed" */
1502 * @brief Hint type of @c event_info parameter of Evas_Smart_Cb.
1504 * The type string uses the pattern similar to
1506 * http://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-signatures
1508 * but extended to optionally include variable names within
1509 * brackets preceding types. Example:
1511 * @li Structure with two integers:
1514 * @li Structure called 'x' with two integers named 'a' and 'b':
1515 * @c "[x]([a]i[b]i)"
1517 * @li Array of integers:
1520 * @li Array called 'x' of struct with two integers:
1523 * @note This type string is used as a hint and is @b not validated
1524 * or enforced anyhow. Implementors should make the best use
1525 * of it to help bindings, documentation and other users of
1526 * introspection features.
1532 * @def EVAS_SMART_CLASS_INIT_NULL
1533 * Initializer to zero a whole Evas_Smart_Class structure.
1535 * @see EVAS_SMART_CLASS_INIT_VERSION
1536 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION
1537 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT
1538 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT_CALLBACKS
1539 * @ingroup Evas_Smart_Group
1541 #define EVAS_SMART_CLASS_INIT_NULL {NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
1544 * @def EVAS_SMART_CLASS_INIT_VERSION
1545 * Initializer to zero a whole Evas_Smart_Class structure and set version.
1547 * Similar to EVAS_SMART_CLASS_INIT_NULL, but will set version field to
1548 * latest EVAS_SMART_CLASS_VERSION.
1550 * @see EVAS_SMART_CLASS_INIT_NULL
1551 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION
1552 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT
1553 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT_CALLBACKS
1554 * @ingroup Evas_Smart_Group
1556 #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}
1559 * @def EVAS_SMART_CLASS_INIT_NAME_VERSION
1560 * Initializer to zero a whole Evas_Smart_Class structure and set name
1563 * Similar to EVAS_SMART_CLASS_INIT_NULL, but will set version field to
1564 * latest EVAS_SMART_CLASS_VERSION and name to the specified value.
1566 * It will keep a reference to name field as a "const char *", that is,
1567 * name must be available while the structure is used (hint: static or global!)
1568 * and will not be modified.
1570 * @see EVAS_SMART_CLASS_INIT_NULL
1571 * @see EVAS_SMART_CLASS_INIT_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_NAME_VERSION(name) {name, EVAS_SMART_CLASS_VERSION, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
1579 * @def EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT
1580 * Initializer to zero a whole Evas_Smart_Class structure and set name,
1581 * version and parent class.
1583 * Similar to EVAS_SMART_CLASS_INIT_NULL, but will set version field to
1584 * latest EVAS_SMART_CLASS_VERSION, name to the specified value and
1587 * It will keep a reference to name field as a "const char *", that is,
1588 * name must be available while the structure is used (hint: static or global!)
1589 * and will not be modified. Similarly, parent reference will be kept.
1591 * @see EVAS_SMART_CLASS_INIT_NULL
1592 * @see EVAS_SMART_CLASS_INIT_VERSION
1593 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION
1594 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT_CALLBACKS
1595 * @ingroup Evas_Smart_Group
1597 #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}
1600 * @def EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT_CALLBACKS
1601 * Initializer to zero a whole Evas_Smart_Class structure and set name,
1602 * version, parent class and callbacks definition.
1604 * Similar to EVAS_SMART_CLASS_INIT_NULL, but will set version field to
1605 * latest EVAS_SMART_CLASS_VERSION, name to the specified value, parent
1606 * class and callbacks at this level.
1608 * It will keep a reference to name field as a "const char *", that is,
1609 * name must be available while the structure is used (hint: static or global!)
1610 * and will not be modified. Similarly, parent and callbacks reference
1613 * @see EVAS_SMART_CLASS_INIT_NULL
1614 * @see EVAS_SMART_CLASS_INIT_VERSION
1615 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION
1616 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT
1617 * @ingroup Evas_Smart_Group
1619 #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}
1622 * @def EVAS_SMART_SUBCLASS_NEW
1624 * Convenience macro to subclass a Smart Class.
1626 * This macro saves some typing when writing a Smart Class derived from
1627 * another one. In order to work, the user needs to provide some functions
1628 * adhering to the following guidelines.
1629 * - @<prefix@>_smart_set_user(): the internal _smart_set function will call
1630 * this one provided by the user after inheriting everything from the
1631 * parent, which should take care of setting the right member functions
1633 * - @<prefix@>_parent_sc: pointer to the smart class of the parent. When calling
1634 * parent functions from overloaded ones, use this global variable.
1635 * - @<prefix@>_smart_class_new(): this function returns the Evas_Smart needed
1636 * to create smart objects with this class, should be called by the public
1638 * - If this new class should be subclassable as well, a public _smart_set()
1639 * function is desirable to fill the class used as parent by the children.
1640 * It's up to the user to provide this interface, which will most likely
1641 * call @<prefix@>_smart_set() to get the job done.
1643 * @param smart_name The name used for the Smart Class. e.g: "Evas_Object_Box".
1644 * @param prefix Prefix used for all variables and functions defined.
1645 * @param api_type Type of the structure used as API for the Smart Class. Either Evas_Smart_Class or something derived from it.
1646 * @param parent_type Type of the parent class API.
1647 * @param parent_func Function that gets the parent class. e.g: evas_object_box_smart_class_get().
1648 * @param cb_desc Array of callback descriptions for this Smart Class.
1650 * @ingroup Evas_Smart_Group
1652 #define EVAS_SMART_SUBCLASS_NEW(smart_name, prefix, api_type, parent_type, parent_func, cb_desc) \
1653 static const parent_type * prefix##_parent_sc = NULL; \
1654 static void prefix##_smart_set_user(api_type *api); \
1655 static void prefix##_smart_set(api_type *api) \
1657 Evas_Smart_Class *sc; \
1658 if (!(sc = (Evas_Smart_Class *)api)) \
1660 if (!prefix##_parent_sc) \
1661 prefix##_parent_sc = parent_func(); \
1662 evas_smart_class_inherit(sc, (const Evas_Smart_Class *)prefix##_parent_sc); \
1663 prefix##_smart_set_user(api); \
1665 static Evas_Smart * prefix##_smart_class_new(void) \
1667 static Evas_Smart *smart = NULL; \
1668 static api_type api; \
1671 Evas_Smart_Class *sc = (Evas_Smart_Class *)&api; \
1672 memset(&api, 0, sizeof(api_type)); \
1673 sc->version = EVAS_SMART_CLASS_VERSION; \
1674 sc->name = smart_name; \
1675 sc->callbacks = cb_desc; \
1676 prefix##_smart_set(&api); \
1677 smart = evas_smart_class_new(sc); \
1683 * @def EVAS_SMART_DATA_ALLOC
1684 * Convenience macro to allocate smart data only if needed.
1686 * When writing a subclassable smart object, the .add function will need
1687 * to check if the smart private data was already allocated by some child
1688 * object or not. This macro makes it easier to do it.
1690 * @param o Evas object passed to the .add function
1691 * @param priv_type The type of the data to allocate
1692 * @ingroup Evas_Smart_Group
1694 #define EVAS_SMART_DATA_ALLOC(o, priv_type) \
1696 priv = evas_object_smart_data_get(o); \
1699 priv = (priv_type *)calloc(1, sizeof(priv_type)); \
1702 evas_object_smart_data_set(o, priv); \
1705 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;
1706 EAPI void evas_smart_free (Evas_Smart *s) EINA_ARG_NONNULL(1);
1707 EAPI Evas_Smart *evas_smart_class_new (const Evas_Smart_Class *sc) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1708 EAPI const Evas_Smart_Class *evas_smart_class_get (const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1710 EAPI void *evas_smart_data_get (const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1711 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;
1713 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);
1715 * @def evas_smart_class_inherit
1716 * Easy to use version of evas_smart_class_inherit_full().
1718 * This version will use sizeof(parent_sc), copying everything.
1720 * @param sc child class, will have methods copied from @a parent_sc
1721 * @param parent_sc parent class, will provide contents to be copied.
1722 * @return 1 on success, 0 on failure.
1723 * @ingroup Evas_Smart_Group
1725 #define evas_smart_class_inherit(sc, parent_sc) evas_smart_class_inherit_full(sc, parent_sc, sizeof(*parent_sc))
1728 * @defgroup Evas_Smart_Object_Group Smart Object Functions
1730 * Functions dealing with evas smart objects (instances).
1732 * Smart objects are groupings of primitive evas objects that behave as a
1733 * cohesive group. For instance, a file manager icon may be a smart object
1734 * composed of an image object, a text label and two rectangles that appear
1735 * behind the image and text when the icon is selected. As a smart object,
1736 * the normal evas api could be used on the icon object.
1738 * @see @ref Evas_Smart_Group for class definitions.
1740 EAPI Evas_Object *evas_object_smart_add (Evas *e, Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_MALLOC;
1741 EAPI void evas_object_smart_member_add (Evas_Object *obj, Evas_Object *smart_obj) EINA_ARG_NONNULL(1, 2);
1742 EAPI void evas_object_smart_member_del (Evas_Object *obj) EINA_ARG_NONNULL(1);
1743 EAPI Evas_Object *evas_object_smart_parent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1744 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;
1745 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;
1746 EAPI Eina_List *evas_object_smart_members_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1747 EAPI Evas_Smart *evas_object_smart_smart_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1748 EAPI void *evas_object_smart_data_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1749 EAPI void evas_object_smart_data_set (Evas_Object *obj, void *data) EINA_ARG_NONNULL(1);
1750 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);
1751 EAPI void *evas_object_smart_callback_del (Evas_Object *obj, const char *event, Evas_Smart_Cb func) EINA_ARG_NONNULL(1, 2, 3);
1752 EAPI void evas_object_smart_callback_call (Evas_Object *obj, const char *event, void *event_info) EINA_ARG_NONNULL(1, 2);
1754 EAPI Eina_Bool evas_object_smart_callbacks_descriptions_set(Evas_Object *obj, const Evas_Smart_Cb_Description *descriptions) EINA_ARG_NONNULL(1);
1755 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);
1756 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);
1758 EAPI void evas_object_smart_changed (Evas_Object *obj) EINA_ARG_NONNULL(1);
1759 EAPI void evas_object_smart_need_recalculate_set(Evas_Object *obj, Eina_Bool value) EINA_ARG_NONNULL(1);
1760 EAPI Eina_Bool evas_object_smart_need_recalculate_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1761 EAPI void evas_object_smart_calculate (Evas_Object *obj) EINA_ARG_NONNULL(1);
1763 EAPI void evas_smart_objects_calculate (Evas *e);
1766 * @defgroup Evas_Smart_Object_Clipped Clipped Smart Object
1768 * Clipped smart object is a base to construct other smart objects
1769 * that based on the concept of having an internal clipper that is
1770 * applied to all its other children. This clipper will control the
1771 * visibility, clipping and color of sibling objects (remember that
1772 * the clipping is recursive, and clipper color modulates the color of
1773 * its clippees). By default, this base will also move children
1774 * relatively to the parent, and delete them when parent is
1775 * deleted. In other words, it is the base for simple object grouping.
1777 * @see evas_object_smart_clipped_smart_set()
1779 * @ingroup Evas_Smart_Object_Group
1783 * Every subclass should provide this at the beginning of their own
1784 * data set with evas_object_smart_data_set().
1786 typedef struct _Evas_Object_Smart_Clipped_Data Evas_Object_Smart_Clipped_Data;
1787 struct _Evas_Object_Smart_Clipped_Data
1789 Evas_Object *clipper;
1793 EAPI Evas_Object *evas_object_smart_clipped_clipper_get(Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
1794 EAPI void evas_object_smart_clipped_smart_set(Evas_Smart_Class *sc) EINA_ARG_NONNULL(1);
1795 EAPI const Evas_Smart_Class *evas_object_smart_clipped_class_get(void) EINA_CONST;
1797 EAPI void evas_object_smart_move_children_relative(Evas_Object *obj, Evas_Coord dx, Evas_Coord dy) EINA_ARG_NONNULL(1);
1800 * @defgroup Evas_Object_Box Box (Sequence) Smart Object.
1802 * Convenience smart object that packs children as a sequence using
1803 * a layout function specified by user. There are a couple of helper
1804 * layout functions, all of them using children size hints to define
1805 * their size and alignment inside their cell space.
1807 * @see @ref Evas_Object_Group_Size_Hints
1809 * @ingroup Evas_Smart_Object_Group
1812 * @typedef Evas_Object_Box_Api
1813 * Smart Class extension providing extra box requirements.
1814 * @ingroup Evas_Object_Box
1816 typedef struct _Evas_Object_Box_Api Evas_Object_Box_Api;
1818 * @typedef Evas_Object_Box_Data
1819 * Smart instance data providing box requirements.
1820 * @ingroup Evas_Object_Box
1822 typedef struct _Evas_Object_Box_Data Evas_Object_Box_Data;
1824 * @typedef Evas_Object_Box_Option
1825 * The base structure for a box option.
1826 * @ingroup Evas_Object_Box
1828 typedef struct _Evas_Object_Box_Option Evas_Object_Box_Option;
1829 typedef void (*Evas_Object_Box_Layout)(Evas_Object *o, Evas_Object_Box_Data *priv, void *user_data);
1832 * @def EVAS_OBJECT_BOX_API_VERSION
1833 * @ingroup Evas_Object_Box
1835 #define EVAS_OBJECT_BOX_API_VERSION 1
1837 * @struct _Evas_Object_Box_Api
1839 * This structure should be used by any class that wants to inherit
1840 * from box to provide custom behavior not allowed only by providing a
1841 * layout function with evas_object_box_layout_set().
1843 * @extends Evas_Smart_Class
1844 * @ingroup Evas_Object_Box
1846 struct _Evas_Object_Box_Api
1848 Evas_Smart_Class base;
1850 Evas_Object_Box_Option *(*append)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child);
1851 Evas_Object_Box_Option *(*prepend)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child);
1852 Evas_Object_Box_Option *(*insert_before)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, const Evas_Object *reference);
1853 Evas_Object_Box_Option *(*insert_after)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, const Evas_Object *reference);
1854 Evas_Object_Box_Option *(*insert_at)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, unsigned int pos);
1855 Evas_Object *(*remove)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child);
1856 Evas_Object *(*remove_at)(Evas_Object *o, Evas_Object_Box_Data *priv, unsigned int pos);
1857 Eina_Bool (*property_set)(Evas_Object *o, Evas_Object_Box_Option *opt, int property, va_list args);
1858 Eina_Bool (*property_get)(Evas_Object *o, Evas_Object_Box_Option *opt, int property, va_list args);
1859 const char *(*property_name_get)(Evas_Object *o, int property);
1860 int (*property_id_get)(Evas_Object *o, const char *name);
1861 Evas_Object_Box_Option *(*option_new)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child);
1862 void (*option_free)(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object_Box_Option *opt);
1866 * @def EVAS_OBJECT_BOX_API_INIT
1867 * Initializer for whole Evas_Object_Box_Api structure.
1869 * @param smart_class_init initializer to use for the "base" field
1870 * (Evas_Smart_Class).
1872 * @see EVAS_SMART_CLASS_INIT_NULL
1873 * @see EVAS_SMART_CLASS_INIT_VERSION
1874 * @see EVAS_SMART_CLASS_INIT_NAME_VERSION
1875 * @see EVAS_OBJECT_BOX_API_INIT_NULL
1876 * @see EVAS_OBJECT_BOX_API_INIT_VERSION
1877 * @see EVAS_OBJECT_BOX_API_INIT_NAME_VERSION
1878 * @ingroup Evas_Object_Box
1880 #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}
1883 * @def EVAS_OBJECT_BOX_API_INIT_NULL
1884 * Initializer to zero a whole Evas_Object_Box_Api structure.
1886 * @see EVAS_OBJECT_BOX_API_INIT_VERSION
1887 * @see EVAS_OBJECT_BOX_API_INIT_NAME_VERSION
1888 * @see EVAS_OBJECT_BOX_API_INIT
1889 * @ingroup Evas_Object_Box
1891 #define EVAS_OBJECT_BOX_API_INIT_NULL EVAS_OBJECT_BOX_API_INIT(EVAS_SMART_CLASS_INIT_NULL)
1894 * @def EVAS_OBJECT_BOX_API_INIT_VERSION
1895 * Initializer to zero a whole Evas_Object_Box_Api structure and set version.
1897 * Similar to EVAS_OBJECT_BOX_API_INIT_NULL, but will set version field of
1898 * Evas_Smart_Class (base field) to latest EVAS_SMART_CLASS_VERSION
1900 * @see EVAS_OBJECT_BOX_API_INIT_NULL
1901 * @see EVAS_OBJECT_BOX_API_INIT_NAME_VERSION
1902 * @see EVAS_OBJECT_BOX_API_INIT
1903 * @ingroup Evas_Object_Box
1905 #define EVAS_OBJECT_BOX_API_INIT_VERSION EVAS_OBJECT_BOX_API_INIT(EVAS_SMART_CLASS_INIT_VERSION)
1908 * @def EVAS_OBJECT_BOX_API_INIT_NAME_VERSION
1909 * Initializer to zero a whole Evas_Object_Box_Api structure and set
1912 * Similar to EVAS_OBJECT_BOX_API_INIT_NULL, but will set version field of
1913 * Evas_Smart_Class (base field) to latest EVAS_SMART_CLASS_VERSION and name
1914 * to the specific value.
1916 * It will keep a reference to name field as a "const char *", that is,
1917 * name must be available while the structure is used (hint: static or global!)
1918 * and will not be modified.
1920 * @see EVAS_OBJECT_BOX_API_INIT_NULL
1921 * @see EVAS_OBJECT_BOX_API_INIT_VERSION
1922 * @see EVAS_OBJECT_BOX_API_INIT
1923 * @ingroup Evas_Object_Box
1925 #define EVAS_OBJECT_BOX_API_INIT_NAME_VERSION(name) EVAS_OBJECT_BOX_API_INIT(EVAS_SMART_CLASS_INIT_NAME_VERSION(name))
1928 * @struct _Evas_Object_Box_Data
1930 * This structure augments clipped smart object's instance data,
1931 * providing extra members required by generic box implementation. If
1932 * a subclass inherits from #Evas_Object_Box_Api then it may augment
1933 * #Evas_Object_Box_Data to fit its own needs.
1935 * @extends Evas_Object_Smart_Clipped_Data
1936 * @ingroup Evas_Object_Box
1938 struct _Evas_Object_Box_Data
1940 Evas_Object_Smart_Clipped_Data base;
1941 const Evas_Object_Box_Api *api;
1948 Eina_List *children;
1950 Evas_Object_Box_Layout cb;
1952 void (*free_data)(void *data);
1954 Eina_Bool layouting : 1;
1957 struct _Evas_Object_Box_Option
1960 Eina_Bool max_reached:1;
1961 Eina_Bool min_reached:1;
1962 Evas_Coord alloc_size;
1965 EAPI void evas_object_box_smart_set(Evas_Object_Box_Api *api) EINA_ARG_NONNULL(1);
1966 EAPI const Evas_Object_Box_Api *evas_object_box_smart_class_get(void) EINA_CONST;
1967 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);
1969 EAPI Evas_Object *evas_object_box_add(Evas *evas) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1970 EAPI Evas_Object *evas_object_box_add_to(Evas_Object *parent) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1972 EAPI void evas_object_box_layout_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
1973 EAPI void evas_object_box_layout_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
1974 EAPI void evas_object_box_layout_homogeneous_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
1975 EAPI void evas_object_box_layout_homogeneous_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
1976 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);
1977 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);
1978 EAPI void evas_object_box_layout_flow_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
1979 EAPI void evas_object_box_layout_flow_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
1980 EAPI void evas_object_box_layout_stack(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_ARG_NONNULL(1, 2);
1982 EAPI void evas_object_box_align_set(Evas_Object *o, double horizontal, double vertical) EINA_ARG_NONNULL(1);
1983 EAPI void evas_object_box_align_get(const Evas_Object *o, double *horizontal, double *vertical) EINA_ARG_NONNULL(1);
1984 EAPI void evas_object_box_padding_set(Evas_Object *o, Evas_Coord horizontal, Evas_Coord vertical) EINA_ARG_NONNULL(1);
1985 EAPI void evas_object_box_padding_get(const Evas_Object *o, Evas_Coord *horizontal, Evas_Coord *vertical) EINA_ARG_NONNULL(1);
1987 EAPI Evas_Object_Box_Option *evas_object_box_append(Evas_Object *o, Evas_Object *child) EINA_ARG_NONNULL(1, 2);
1988 EAPI Evas_Object_Box_Option *evas_object_box_prepend(Evas_Object *o, Evas_Object *child) EINA_ARG_NONNULL(1, 2);
1989 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);
1990 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);
1991 EAPI Evas_Object_Box_Option *evas_object_box_insert_at(Evas_Object *o, Evas_Object *child, unsigned int pos) EINA_ARG_NONNULL(1, 2);
1992 EAPI Eina_Bool evas_object_box_remove(Evas_Object *o, Evas_Object *child) EINA_ARG_NONNULL(1, 2);
1993 EAPI Eina_Bool evas_object_box_remove_at(Evas_Object *o, unsigned int pos) EINA_ARG_NONNULL(1);
1994 EAPI Eina_Bool evas_object_box_remove_all(Evas_Object *o, Eina_Bool clear) EINA_ARG_NONNULL(1);
1995 EAPI Eina_Iterator *evas_object_box_iterator_new(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1996 EAPI Eina_Accessor *evas_object_box_accessor_new(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1997 EAPI Eina_List *evas_object_box_children_get(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
1999 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;
2000 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;
2001 EAPI Eina_Bool evas_object_box_option_property_set(Evas_Object *o, Evas_Object_Box_Option *opt, int property, ...) EINA_ARG_NONNULL(1, 2);
2002 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);
2003 EAPI Eina_Bool evas_object_box_option_property_get(Evas_Object *o, Evas_Object_Box_Option *opt, int property, ...) EINA_ARG_NONNULL(1, 2);
2004 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);
2008 * @defgroup Evas_Object_Table Table Smart Object.
2010 * Convenience smart object that packs children using a tabular
2011 * layout using children size hints to define their size and
2012 * alignment inside their cell space.
2014 * @see @ref Evas_Object_Group_Size_Hints
2016 * @ingroup Evas_Smart_Object_Group
2018 EAPI Evas_Object *evas_object_table_add(Evas *evas) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
2019 EAPI Evas_Object *evas_object_table_add_to(Evas_Object *parent) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
2020 EAPI void evas_object_table_homogeneous_set(Evas_Object *o, Evas_Object_Table_Homogeneous_Mode homogeneous) EINA_ARG_NONNULL(1);
2021 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;
2022 EAPI void evas_object_table_padding_set(Evas_Object *o, Evas_Coord horizontal, Evas_Coord vertical) EINA_ARG_NONNULL(1);
2023 EAPI void evas_object_table_padding_get(const Evas_Object *o, Evas_Coord *horizontal, Evas_Coord *vertical) EINA_ARG_NONNULL(1);
2024 EAPI void evas_object_table_align_set(Evas_Object *o, double horizontal, double vertical) EINA_ARG_NONNULL(1);
2025 EAPI void evas_object_table_align_get(const Evas_Object *o, double *horizontal, double *vertical) EINA_ARG_NONNULL(1);
2027 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);
2028 EAPI Eina_Bool evas_object_table_unpack(Evas_Object *o, Evas_Object *child) EINA_ARG_NONNULL(1, 2);
2029 EAPI void evas_object_table_clear(Evas_Object *o, Eina_Bool clear) EINA_ARG_NONNULL(1);
2031 EAPI void evas_object_table_col_row_size_get(const Evas_Object *o, int *cols, int *rows) EINA_ARG_NONNULL(1);
2032 EAPI Eina_Iterator *evas_object_table_iterator_new(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
2033 EAPI Eina_Accessor *evas_object_table_accessor_new(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
2034 EAPI Eina_List *evas_object_table_children_get(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
2035 EAPI Evas_Object *evas_object_table_child_get(const Evas_Object *o, unsigned short col, unsigned short row) EINA_ARG_NONNULL(1);
2039 * @defgroup Evas_Cserve Shared Image Cache Server
2041 * Provides client-server infrastructure to share bitmaps across
2042 * multiple processes, saving data and processing power.
2044 typedef struct _Evas_Cserve_Stats Evas_Cserve_Stats;
2045 typedef struct _Evas_Cserve_Image_Cache Evas_Cserve_Image_Cache;
2046 typedef struct _Evas_Cserve_Image Evas_Cserve_Image;
2047 typedef struct _Evas_Cserve_Config Evas_Cserve_Config;
2050 * Statistics about server that shares cached bitmaps.
2051 * @ingroup Evas_Cserve
2053 struct _Evas_Cserve_Stats
2055 int saved_memory; /**< current saved memory, in bytes */
2056 int wasted_memory; /**< current wasted memory, in bytes */
2057 int saved_memory_peak; /**< peak of saved memory, in bytes */
2058 int wasted_memory_peak; /**< peak of wasted memory, in bytes */
2059 double saved_time_image_header_load;
2060 double saved_time_image_data_load;
2064 * Cache of images shared by server.
2065 * @ingroup Evas_Cserve
2067 struct _Evas_Cserve_Image_Cache
2077 * An image shared by the server.
2078 * @ingroup Evas_Cserve
2080 struct _Evas_Cserve_Image
2082 const char *file, *key;
2084 time_t file_mod_time;
2085 time_t file_checked_time;
2089 int memory_footprint;
2090 double head_load_time;
2091 double data_load_time;
2092 Eina_Bool alpha : 1;
2093 Eina_Bool data_loaded : 1;
2094 Eina_Bool active : 1;
2096 Eina_Bool useless : 1;
2100 * Configuration that controls the server that shares cached bitmaps.
2101 * @ingroup Evas_Cserve
2103 struct _Evas_Cserve_Config
2105 int cache_max_usage;
2106 int cache_item_timeout;
2107 int cache_item_timeout_check;
2110 EAPI Eina_Bool evas_cserve_want_get (void) EINA_WARN_UNUSED_RESULT EINA_PURE;
2111 EAPI Eina_Bool evas_cserve_connected_get (void) EINA_WARN_UNUSED_RESULT;
2112 EAPI Eina_Bool evas_cserve_stats_get (Evas_Cserve_Stats *stats) EINA_WARN_UNUSED_RESULT;
2113 EAPI void evas_cserve_image_cache_contents_clean (Evas_Cserve_Image_Cache *cache) EINA_PURE;
2114 EAPI Eina_Bool evas_cserve_config_get (Evas_Cserve_Config *config) EINA_WARN_UNUSED_RESULT EINA_PURE;
2115 EAPI Eina_Bool evas_cserve_config_set (const Evas_Cserve_Config *config) EINA_WARN_UNUSED_RESULT EINA_PURE;
2116 EAPI void evas_cserve_disconnect (void);
2120 * @defgroup Evas_Utils General Utilities
2122 * Some functions that are handy but are not specific of canvas or
2125 EAPI const char *evas_load_error_str(int error);
2127 /* Evas utility routines for color space conversions */
2128 /* hsv color space has h in the range 0.0 to 360.0, and s,v in the range 0.0 to 1.0 */
2129 /* rgb color space has r,g,b in the range 0 to 255 */
2130 EAPI void evas_color_hsv_to_rgb (float h, float s, float v, int *r, int *g, int *b);
2131 EAPI void evas_color_rgb_to_hsv (int r, int g, int b, float *h, float *s, float *v);
2133 /* argb color space has a,r,g,b in the range 0 to 255 */
2134 EAPI void evas_color_argb_premul (int a, int *r, int *g, int *b);
2135 EAPI void evas_color_argb_unpremul (int a, int *r, int *g, int *b);
2137 EAPI void evas_data_argb_premul (unsigned int *data, unsigned int len);
2138 EAPI void evas_data_argb_unpremul (unsigned int *data, unsigned int len);
2140 /* string and font handling */
2141 EAPI int evas_string_char_next_get (const char *str, int pos, int *decoded) EINA_ARG_NONNULL(1);
2142 EAPI int evas_string_char_prev_get (const char *str, int pos, int *decoded) EINA_ARG_NONNULL(1);
2143 EAPI int evas_string_char_len_get (const char *str) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2146 * @defgroup Evas_Imaging Imaging and Commong GFX
2148 * Evas imaging api - exports some of the comon gfx engine routines
2149 * this is not complete and should be considered experimental. use at your
2153 typedef struct _Evas_Imaging_Image Evas_Imaging_Image;
2154 typedef struct _Evas_Imaging_Font Evas_Imaging_Font;
2157 * Error identifier or EVAS_LOAD_ERROR_NONE. see evas_load_error_str().
2158 * @ingroup Evas_Imaging
2160 EAPI extern int evas_imaging_image_load_error;
2162 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;
2163 EAPI void evas_imaging_image_free (Evas_Imaging_Image *im) EINA_ARG_NONNULL(1);
2164 EAPI void evas_imaging_image_size_get (const Evas_Imaging_Image *im, int *w, int *h) EINA_ARG_NONNULL(1);
2165 EAPI Eina_Bool evas_imaging_image_alpha_get (const Evas_Imaging_Image *im) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2166 EAPI void evas_imaging_image_cache_set (int bytes);
2167 EAPI int evas_imaging_image_cache_get (void) EINA_WARN_UNUSED_RESULT;
2169 EAPI void evas_imaging_font_hinting_set (Evas_Font_Hinting_Flags hinting);
2170 EAPI Evas_Font_Hinting_Flags evas_imaging_font_hinting_get (void) EINA_WARN_UNUSED_RESULT;
2171 EAPI Eina_Bool evas_imaging_font_hinting_can_hint (Evas_Font_Hinting_Flags hinting) EINA_WARN_UNUSED_RESULT;
2173 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;
2174 EAPI void evas_imaging_font_free (Evas_Imaging_Font *fn) EINA_ARG_NONNULL(1);
2175 EAPI int evas_imaging_font_ascent_get (const Evas_Imaging_Font *fn) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2176 EAPI int evas_imaging_font_descent_get (const Evas_Imaging_Font *fn) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2177 EAPI int evas_imaging_font_max_ascent_get (const Evas_Imaging_Font *fn) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2178 EAPI int evas_imaging_font_max_descent_get (const Evas_Imaging_Font *fn) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2179 EAPI int evas_imaging_font_line_advance_get (const Evas_Imaging_Font *fn) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2180 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);
2181 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);
2182 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;
2183 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;
2184 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;
2186 EAPI void evas_imaging_font_cache_set (int bytes);
2187 EAPI int evas_imaging_font_cache_get (void) EINA_WARN_UNUSED_RESULT;
2195 * @todo document key modifiers.
2197 EAPI const Evas_Modifier *evas_key_modifier_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2198 EAPI const Evas_Lock *evas_key_lock_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
2200 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;
2202 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;
2204 EAPI void evas_key_modifier_add (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
2205 EAPI void evas_key_modifier_del (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
2206 EAPI void evas_key_lock_add (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
2207 EAPI void evas_key_lock_del (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
2209 EAPI void evas_key_modifier_on (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
2210 EAPI void evas_key_modifier_off (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
2211 EAPI void evas_key_lock_on (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
2212 EAPI void evas_key_lock_off (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
2214 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;
2216 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);
2217 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);