Evas.h   Evas.h 
/** /**
@mainpage Evas @mainpage Evas
@version 1.1 @version 1.1
@date 2000-2011 @date 2000-2012
Please see the @ref authors page for contact details. Please see the @ref authors page for contact details.
@link Evas.h Evas API @endlink @link Evas.h Evas API @endlink
@link Evas.h Evas API @endlink
@section toc Table of Contents @section toc Table of Contents
@li @ref intro @li @ref intro
@li @ref work @li @ref work
@li @ref compiling @li @ref compiling
@li @ref install @li @ref install
@li @ref next_steps @li @ref next_steps
@li @ref intro_example @li @ref intro_example
@section intro What is Evas? @section intro What is Evas?
skipping to change at line 289 skipping to change at line 291
@author Bernhard Nemec <Bernhard.Nemec@@viasyshc.com> @author Bernhard Nemec <Bernhard.Nemec@@viasyshc.com>
@author Jorge Luis Zapata Muga <jorgeluis.zapata@@gmail.com> @author Jorge Luis Zapata Muga <jorgeluis.zapata@@gmail.com>
@author Cedric Bail <cedric.bail@@free.fr> @author Cedric Bail <cedric.bail@@free.fr>
@author Gustavo Sverzut Barbieri <barbieri@@profusion.mobi> @author Gustavo Sverzut Barbieri <barbieri@@profusion.mobi>
@author Vincent Torri <vtorri@@univ-evry.fr> @author Vincent Torri <vtorri@@univ-evry.fr>
@author Tim Horton <hortont424@@gmail.com> @author Tim Horton <hortont424@@gmail.com>
@author Tom Hacohen <tom@@stosb.com> @author Tom Hacohen <tom@@stosb.com>
@author Mathieu Taillefumier <mathieu.taillefumier@@free.fr> @author Mathieu Taillefumier <mathieu.taillefumier@@free.fr>
@author Iván Briano <ivan@@profusion.mobi> @author Iván Briano <ivan@@profusion.mobi>
@author Gustavo Lima Chaves <glima@@profusion.mobi> @author Gustavo Lima Chaves <glima@@profusion.mobi>
@author Samsung Electronics <tbd> @author Samsung Electronics
@author Samsung SAIT <tbd> @author Samsung SAIT
@author Sung W. Park <sungwoo@@gmail.com> @author Sung W. Park <sungwoo@@gmail.com>
@author Jiyoun Park <jy0703.park@@samsung.com> @author Jiyoun Park <jy0703.park@@samsung.com>
@author Myoungwoon Roy Kim(roy_kim) <myoungwoon.kim@@samsung.com> <myoungwo on@@gmail.com> @author Myoungwoon Roy Kim(roy_kim) <myoungwoon.kim@@samsung.com> <myoungwo on@@gmail.com>
@author Thierry el Borgi <thierry@@substantiel.fr> @author Thierry el Borgi <thierry@@substantiel.fr>
@author ChunEon Park <hermet@@hermet.pe.kr> @author ChunEon Park <hermet@@hermet.pe.kr>
@author Christopher 'devilhorns' Michael <cpmichael1@comcast.net> @author Christopher 'devilhorns' Michael <cpmichael1@comcast.net>
@author Seungsoo Woo <om101.woo@samsung.com> @author Seungsoo Woo <om101.woo@samsung.com>
Please contact <enlightenment-devel@lists.sourceforge.net> to get in Please contact <enlightenment-devel@lists.sourceforge.net> to get in
contact with the developers and maintainers. contact with the developers and maintainers.
skipping to change at line 341 skipping to change at line 343
# else # else
# define EAPI # define EAPI
# endif # endif
#endif /* ! _WIN32 */ #endif /* ! _WIN32 */
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#define EVAS_VERSION_MAJOR 1 #define EVAS_VERSION_MAJOR 1
#define EVAS_VERSION_MINOR 0 #define EVAS_VERSION_MINOR 2
typedef struct _Evas_Version typedef struct _Evas_Version
{ {
int major; int major;
int minor; int minor;
int micro; int micro;
int revision; int revision;
} Evas_Version; } Evas_Version;
EAPI extern Evas_Version *evas_version; EAPI extern Evas_Version *evas_version;
skipping to change at line 429 skipping to change at line 431
EVAS_CALLBACK_CANVAS_FOCUS_IN, /**< Canvas got focus as a whole */ EVAS_CALLBACK_CANVAS_FOCUS_IN, /**< Canvas got focus as a whole */
EVAS_CALLBACK_CANVAS_FOCUS_OUT, /**< Canvas lost focus as a whole */ EVAS_CALLBACK_CANVAS_FOCUS_OUT, /**< Canvas lost focus as a whole */
EVAS_CALLBACK_RENDER_FLUSH_PRE, /**< Called just before rendering is upd ated on the canvas target */ EVAS_CALLBACK_RENDER_FLUSH_PRE, /**< Called just before rendering is upd ated on the canvas target */
EVAS_CALLBACK_RENDER_FLUSH_POST, /**< Called just after rendering is upd ated on the canvas target */ EVAS_CALLBACK_RENDER_FLUSH_POST, /**< Called just after rendering is upd ated on the canvas target */
EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_IN, /**< Canvas object got focus */ EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_IN, /**< Canvas object got focus */
EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_OUT, /**< Canvas object lost focus */ EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_OUT, /**< Canvas object lost focus */
/* /*
* More Evas object event types - see evas_object_event_callback_add(): * More Evas object event types - see evas_object_event_callback_add():
*/ */
EVAS_CALLBACK_IMAGE_UNLOADED, /**< Image data has been unloaded (by some EVAS_CALLBACK_IMAGE_UNLOADED, /**< Image data has been unloaded (by some
mechanims in Evas that throw out original image data) */ mechanism in Evas that throw out original image data) */
EVAS_CALLBACK_RENDER_PRE, /**< Called just before rendering starts on th
e canvas target @since 1.2 */
EVAS_CALLBACK_RENDER_POST, /**< Called just after rendering stops on the
canvas target @since 1.2 */
EVAS_CALLBACK_LAST /**< kept as last element/sentinel -- not really an e vent */ EVAS_CALLBACK_LAST /**< kept as last element/sentinel -- not really an e vent */
} Evas_Callback_Type; /**< The types of events triggering a callback */ } Evas_Callback_Type; /**< The types of events triggering a callback */
/** /**
* @def EVAS_CALLBACK_PRIORITY_BEFORE * @def EVAS_CALLBACK_PRIORITY_BEFORE
* Slightly more prioritized than default. * Slightly more prioritized than default.
* @since 1.1.0 * @since 1.1.0
*/ */
#define EVAS_CALLBACK_PRIORITY_BEFORE -100 #define EVAS_CALLBACK_PRIORITY_BEFORE -100
skipping to change at line 484 skipping to change at line 489
EVAS_BUTTON_TRIPLE_CLICK = (1 << 1) /**< This mouse button press was the 3rd press of a triple click */ EVAS_BUTTON_TRIPLE_CLICK = (1 << 1) /**< This mouse button press was the 3rd press of a triple click */
} Evas_Button_Flags; /**< Flags for Mouse Button events */ } Evas_Button_Flags; /**< Flags for Mouse Button events */
/** /**
* Flags for Events * Flags for Events
*/ */
typedef enum _Evas_Event_Flags typedef enum _Evas_Event_Flags
{ {
EVAS_EVENT_FLAG_NONE = 0, /**< No fancy flags set */ EVAS_EVENT_FLAG_NONE = 0, /**< No fancy flags set */
EVAS_EVENT_FLAG_ON_HOLD = (1 << 0), /**< This event is being delivered b ut should be put "on hold" until the on hold flag is unset. the event shoul d be used for informational purposes and maybe some indications visually, b ut not actually perform anything */ EVAS_EVENT_FLAG_ON_HOLD = (1 << 0), /**< This event is being delivered b ut should be put "on hold" until the on hold flag is unset. the event shoul d be used for informational purposes and maybe some indications visually, b ut not actually perform anything */
EVAS_EVENT_FLAG_ON_SCROLL = (1 << 1) /**< This event flag indicates the event occurs while scrolling; for exameple, DOWN event occurs during scroll ing; the event should be used for informational purposes and maybe some ind ications visually, but not actually perform anything */ EVAS_EVENT_FLAG_ON_SCROLL = (1 << 1) /**< This event flag indicates the event occurs while scrolling; for example, DOWN event occurs during scrolli ng; the event should be used for informational purposes and maybe some indi cations visually, but not actually perform anything */
} Evas_Event_Flags; /**< Flags for Events */ } Evas_Event_Flags; /**< Flags for Events */
/** /**
* State of Evas_Coord_Touch_Point * State of Evas_Coord_Touch_Point
*/ */
typedef enum _Evas_Touch_Point_State typedef enum _Evas_Touch_Point_State
{ {
EVAS_TOUCH_POINT_DOWN, /**< Touch point is pressed down */ EVAS_TOUCH_POINT_DOWN, /**< Touch point is pressed down */
EVAS_TOUCH_POINT_UP, /**< Touch point is released */ EVAS_TOUCH_POINT_UP, /**< Touch point is released */
EVAS_TOUCH_POINT_MOVE, /**< Touch point is moved */ EVAS_TOUCH_POINT_MOVE, /**< Touch point is moved */
EVAS_TOUCH_POINT_STILL, /**< Touch point is not moved after pressed */ EVAS_TOUCH_POINT_STILL, /**< Touch point is not moved after pressed */
EVAS_TOUCH_POINT_CANCEL /**< Touch point is calcelled */ EVAS_TOUCH_POINT_CANCEL /**< Touch point is cancelled */
} Evas_Touch_Point_State; } Evas_Touch_Point_State;
/** /**
* Flags for Font Hinting * Flags for Font Hinting
* @ingroup Evas_Font_Group * @ingroup Evas_Font_Group
*/ */
typedef enum _Evas_Font_Hinting_Flags typedef enum _Evas_Font_Hinting_Flags
{ {
EVAS_FONT_HINTING_NONE, /**< No font hinting */ EVAS_FONT_HINTING_NONE, /**< No font hinting */
EVAS_FONT_HINTING_AUTO, /**< Automatic font hinting */ EVAS_FONT_HINTING_AUTO, /**< Automatic font hinting */
skipping to change at line 522 skipping to change at line 527
* @ingroup Evas_Object_Image * @ingroup Evas_Object_Image
*/ */
typedef enum _Evas_Colorspace typedef enum _Evas_Colorspace
{ {
EVAS_COLORSPACE_ARGB8888, /**< ARGB 32 bits per pixel, high-byte is Alph a, accessed 1 32bit word at a time */ EVAS_COLORSPACE_ARGB8888, /**< ARGB 32 bits per pixel, high-byte is Alph a, accessed 1 32bit word at a time */
/* these are not currently supported - but planned for the future */ /* these are not currently supported - but planned for the future */
EVAS_COLORSPACE_YCBCR422P601_PL, /**< YCbCr 4:2:2 Planar, ITU.BT-601 spe cifications. The data pointed to is just an array of row pointer, pointing to the Y rows, then the Cb, then Cr rows */ EVAS_COLORSPACE_YCBCR422P601_PL, /**< YCbCr 4:2:2 Planar, ITU.BT-601 spe cifications. The data pointed to is just an array of row pointer, pointing to the Y rows, then the Cb, then Cr rows */
EVAS_COLORSPACE_YCBCR422P709_PL,/**< YCbCr 4:2:2 Planar, ITU.BT-709 spec ifications. The data pointed to is just an array of row pointer, pointing t o the Y rows, then the Cb, then Cr rows */ EVAS_COLORSPACE_YCBCR422P709_PL,/**< YCbCr 4:2:2 Planar, ITU.BT-709 spec ifications. The data pointed to is just an array of row pointer, pointing t o the Y rows, then the Cb, then Cr rows */
EVAS_COLORSPACE_RGB565_A5P, /**< 16bit rgb565 + Alpha plane at end - 5 b its of the 8 being used per alpha byte */ EVAS_COLORSPACE_RGB565_A5P, /**< 16bit rgb565 + Alpha plane at end - 5 b its of the 8 being used per alpha byte */
EVAS_COLORSPACE_GRY8, /**< 8bit grayscale */ EVAS_COLORSPACE_GRY8, /**< 8bit grayscale */
EVAS_COLORSPACE_YCBCR422601_PL, /**< YCbCr 4:2:2, ITU.BT-601 specificat ions. The data poitned to is just an array of row pointer, pointing to line of Y,Cb,Y,Cr bytes */ EVAS_COLORSPACE_YCBCR422601_PL, /**< YCbCr 4:2:2, ITU.BT-601 specificat ions. The data pointed to is just an array of row pointer, pointing to line of Y,Cb,Y,Cr bytes */
EVAS_COLORSPACE_YCBCR420NV12601_PL, /**< YCbCr 4:2:0, ITU.BT-601 specifi cation. The data pointed to is just an array of row pointer, pointing to th e Y rows, then the Cb,Cr rows. */ EVAS_COLORSPACE_YCBCR420NV12601_PL, /**< YCbCr 4:2:0, ITU.BT-601 specifi cation. The data pointed to is just an array of row pointer, pointing to th e Y rows, then the Cb,Cr rows. */
EVAS_COLORSPACE_YCBCR420TM12601_PL, /**< YCbCr 4:2:0, ITU.BT-601 specifi cation. The data pointed to is just an array of tiled row pointer, pointing to the Y rows, then the Cb,Cr rows. */ EVAS_COLORSPACE_YCBCR420TM12601_PL, /**< YCbCr 4:2:0, ITU.BT-601 specifi cation. The data pointed to is just an array of tiled row pointer, pointing to the Y rows, then the Cb,Cr rows. */
} Evas_Colorspace; /**< Colorspaces for pixel data supported by Evas */ } Evas_Colorspace; /**< Colorspaces for pixel data supported by Evas */
/** /**
* How to pack items into cells in a table. * How to pack items into cells in a table.
* @ingroup Evas_Object_Table * @ingroup Evas_Object_Table
* *
* @see evas_object_table_homogeneous_set() for an explanation of the funci on of * @see evas_object_table_homogeneous_set() for an explanation of the funct ion of
* each one. * each one.
*/ */
typedef enum _Evas_Object_Table_Homogeneous_Mode typedef enum _Evas_Object_Table_Homogeneous_Mode
{ {
EVAS_OBJECT_TABLE_HOMOGENEOUS_NONE = 0, EVAS_OBJECT_TABLE_HOMOGENEOUS_NONE = 0,
EVAS_OBJECT_TABLE_HOMOGENEOUS_TABLE = 1, EVAS_OBJECT_TABLE_HOMOGENEOUS_TABLE = 1,
EVAS_OBJECT_TABLE_HOMOGENEOUS_ITEM = 2 EVAS_OBJECT_TABLE_HOMOGENEOUS_ITEM = 2
} Evas_Object_Table_Homogeneous_Mode; /**< Table cell pack mode. */ } Evas_Object_Table_Homogeneous_Mode; /**< Table cell pack mode. */
typedef struct _Evas_Coord_Rectangle Evas_Coord_Rectangle; /**< A generic rectangle handle */ typedef struct _Evas_Coord_Rectangle Evas_Coord_Rectangle; /**< A generic rectangle handle */
skipping to change at line 688 skipping to change at line 693
typedef struct _Evas_Event_Multi_Move Evas_Event_Multi_Move; /**< Event str ucture for #EVAS_CALLBACK_MULTI_MOVE event callbacks */ typedef struct _Evas_Event_Multi_Move Evas_Event_Multi_Move; /**< Event str ucture for #EVAS_CALLBACK_MULTI_MOVE event callbacks */
typedef struct _Evas_Event_Key_Down Evas_Event_Key_Down; /**< Event struc ture for #EVAS_CALLBACK_KEY_DOWN event callbacks */ typedef struct _Evas_Event_Key_Down Evas_Event_Key_Down; /**< Event struc ture for #EVAS_CALLBACK_KEY_DOWN event callbacks */
typedef struct _Evas_Event_Key_Up Evas_Event_Key_Up; /**< Event structu re for #EVAS_CALLBACK_KEY_UP event callbacks */ typedef struct _Evas_Event_Key_Up Evas_Event_Key_Up; /**< Event structu re for #EVAS_CALLBACK_KEY_UP event callbacks */
typedef struct _Evas_Event_Hold Evas_Event_Hold; /**< Event structure for #EVAS_CALLBACK_HOLD event callbacks */ typedef struct _Evas_Event_Hold Evas_Event_Hold; /**< Event structure for #EVAS_CALLBACK_HOLD event callbacks */
typedef enum _Evas_Load_Error typedef enum _Evas_Load_Error
{ {
EVAS_LOAD_ERROR_NONE = 0, /**< No error on load */ EVAS_LOAD_ERROR_NONE = 0, /**< No error on load */
EVAS_LOAD_ERROR_GENERIC = 1, /**< A non-specific error occurred */ EVAS_LOAD_ERROR_GENERIC = 1, /**< A non-specific error occurred */
EVAS_LOAD_ERROR_DOES_NOT_EXIST = 2, /**< File (or file path) does not ex ist */ EVAS_LOAD_ERROR_DOES_NOT_EXIST = 2, /**< File (or file path) does not ex ist */
EVAS_LOAD_ERROR_PERMISSION_DENIED = 3, /**< Permission deinied to an exi sting file (or path) */ EVAS_LOAD_ERROR_PERMISSION_DENIED = 3, /**< Permission denied to an exis ting file (or path) */
EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED = 4, /**< Allocation of resou rces failure prevented load */ EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED = 4, /**< Allocation of resou rces failure prevented load */
EVAS_LOAD_ERROR_CORRUPT_FILE = 5, /**< File corrupt (but was detected as a known format) */ EVAS_LOAD_ERROR_CORRUPT_FILE = 5, /**< File corrupt (but was detected as a known format) */
EVAS_LOAD_ERROR_UNKNOWN_FORMAT = 6 /**< File is not a known format */ EVAS_LOAD_ERROR_UNKNOWN_FORMAT = 6 /**< File is not a known format */
} Evas_Load_Error; /**< Evas image load error codes one can get - see evas_ load_error_str() too. */ } Evas_Load_Error; /**< Evas image load error codes one can get - see evas_ load_error_str() too. */
typedef enum _Evas_Alloc_Error typedef enum _Evas_Alloc_Error
{ {
EVAS_ALLOC_ERROR_NONE = 0, /**< No allocation error */ EVAS_ALLOC_ERROR_NONE = 0, /**< No allocation error */
EVAS_ALLOC_ERROR_FATAL = 1, /**< Allocation failed despite attempts to f ree up memory */ EVAS_ALLOC_ERROR_FATAL = 1, /**< Allocation failed despite attempts to f ree up memory */
EVAS_ALLOC_ERROR_RECOVERED = 2 /**< Allocation succeeded, but extra memo ry had to be found by freeing up speculative resources */ EVAS_ALLOC_ERROR_RECOVERED = 2 /**< Allocation succeeded, but extra memo ry had to be found by freeing up speculative resources */
skipping to change at line 715 skipping to change at line 720
EVAS_TEXTURE_RESTRICT = 2, /**< tiling clamps - range offset ignored */ EVAS_TEXTURE_RESTRICT = 2, /**< tiling clamps - range offset ignored */
EVAS_TEXTURE_RESTRICT_REFLECT = 3, /**< tiling clamps and any range offs et reflects */ EVAS_TEXTURE_RESTRICT_REFLECT = 3, /**< tiling clamps and any range offs et reflects */
EVAS_TEXTURE_RESTRICT_REPEAT = 4, /**< tiling clamps and any range offse t repeats */ EVAS_TEXTURE_RESTRICT_REPEAT = 4, /**< tiling clamps and any range offse t repeats */
EVAS_TEXTURE_PAD = 5 /**< tiling extends with end values */ EVAS_TEXTURE_PAD = 5 /**< tiling extends with end values */
} Evas_Fill_Spread; /**< Fill types used for evas_object_image_fill_spread_ set() */ } Evas_Fill_Spread; /**< Fill types used for evas_object_image_fill_spread_ set() */
typedef enum _Evas_Pixel_Import_Pixel_Format typedef enum _Evas_Pixel_Import_Pixel_Format
{ {
EVAS_PIXEL_FORMAT_NONE = 0, /**< No pixel format */ EVAS_PIXEL_FORMAT_NONE = 0, /**< No pixel format */
EVAS_PIXEL_FORMAT_ARGB32 = 1, /**< ARGB 32bit pixel format with A in the high byte per 32bit pixel word */ EVAS_PIXEL_FORMAT_ARGB32 = 1, /**< ARGB 32bit pixel format with A in the high byte per 32bit pixel word */
EVAS_PIXEL_FORMAT_YUV420P_601 = 2 /**< YUV 420 Planar format with CCIR 6 01 color encoding wuth contiguous planes in the order Y, U and V */ EVAS_PIXEL_FORMAT_YUV420P_601 = 2 /**< YUV 420 Planar format with CCIR 6 01 color encoding with contiguous planes in the order Y, U and V */
} Evas_Pixel_Import_Pixel_Format; /**< Pixel format for import call. See ev as_object_image_pixels_import() */ } Evas_Pixel_Import_Pixel_Format; /**< Pixel format for import call. See ev as_object_image_pixels_import() */
struct _Evas_Pixel_Import_Source struct _Evas_Pixel_Import_Source
{ {
Evas_Pixel_Import_Pixel_Format format; /**< pixel format type ie ARGB32, YUV420P_601 etc. */ Evas_Pixel_Import_Pixel_Format format; /**< pixel format type ie ARGB32, YUV420P_601 etc. */
int w, h; /**< width and height of source in pixels */ int w, h; /**< width and height of source in pixels */
void **rows; /**< an array of pointers (size depends on format) pointing to left edge of each scanline */ void **rows; /**< an array of pointers (size depends on format) pointing to left edge of each scanline */
}; };
/* magic version number to know what the native surf struct looks like */ /* magic version number to know what the native surf struct looks like */
skipping to change at line 803 skipping to change at line 808
/** /**
* How the object should be rendered to output. * How the object should be rendered to output.
* @ingroup Evas_Object_Group_Extras * @ingroup Evas_Object_Group_Extras
*/ */
typedef enum _Evas_Render_Op typedef enum _Evas_Render_Op
{ {
EVAS_RENDER_BLEND = 0, /**< default op: d = d*(1-sa) + s */ EVAS_RENDER_BLEND = 0, /**< default op: d = d*(1-sa) + s */
EVAS_RENDER_BLEND_REL = 1, /**< d = d*(1 - sa) + s*da */ EVAS_RENDER_BLEND_REL = 1, /**< d = d*(1 - sa) + s*da */
EVAS_RENDER_COPY = 2, /**< d = s */ EVAS_RENDER_COPY = 2, /**< d = s */
EVAS_RENDER_COPY_REL = 3, /**< d = s*da */ EVAS_RENDER_COPY_REL = 3, /**< d = s*da */
EVAS_RENDER_ADD = 4, /**< d = d + s */ EVAS_RENDER_ADD = 4, /* d = d + s */
EVAS_RENDER_ADD_REL = 5, /**< d = d + s*da */ EVAS_RENDER_ADD_REL = 5, /**< d = d + s*da */
EVAS_RENDER_SUB = 6, /**< d = d - s */ EVAS_RENDER_SUB = 6, /**< d = d - s */
EVAS_RENDER_SUB_REL = 7, /**< d = d - s*da */ EVAS_RENDER_SUB_REL = 7, /* d = d - s*da */
EVAS_RENDER_TINT = 8, /**< d = d*s + d*(1 - sa) + s*(1 - da) */ EVAS_RENDER_TINT = 8, /**< d = d*s + d*(1 - sa) + s*(1 - da) */
EVAS_RENDER_TINT_REL = 9, /**< d = d*(1 - sa + s) */ EVAS_RENDER_TINT_REL = 9, /**< d = d*(1 - sa + s) */
EVAS_RENDER_MASK = 10, /**< d = d*sa */ EVAS_RENDER_MASK = 10, /**< d = d*sa */
EVAS_RENDER_MUL = 11 /**< d = d*s */ EVAS_RENDER_MUL = 11 /**< d = d*s */
} Evas_Render_Op; /**< How the object should be rendered to output. */ } Evas_Render_Op; /**< How the object should be rendered to output. */
typedef enum _Evas_Border_Fill_Mode typedef enum _Evas_Border_Fill_Mode
{ {
EVAS_BORDER_FILL_NONE = 0, /**< Image's center region is @b not to be re ndered */ EVAS_BORDER_FILL_NONE = 0, /**< Image's center region is @b not to be re ndered */
EVAS_BORDER_FILL_DEFAULT = 1, /**< Image's center region is to be @b ble nded with objects underneath it, if it has transparency. This is the defaul t behavior for image objects */ EVAS_BORDER_FILL_DEFAULT = 1, /**< Image's center region is to be @b ble nded with objects underneath it, if it has transparency. This is the defaul t behavior for image objects */
skipping to change at line 1058 skipping to change at line 1063
* the final position is over it or not and do something about it. * the final position is over it or not and do something about it.
* *
* In the mode #EVAS_OBJECT_POINTER_MODE_NOGRAB, the pointer will * In the mode #EVAS_OBJECT_POINTER_MODE_NOGRAB, the pointer will
* always be bound to the object right below it. * always be bound to the object right below it.
* *
* @ingroup Evas_Object_Group_Extras * @ingroup Evas_Object_Group_Extras
*/ */
typedef enum _Evas_Object_Pointer_Mode typedef enum _Evas_Object_Pointer_Mode
{ {
EVAS_OBJECT_POINTER_MODE_AUTOGRAB, /**< default, X11-like */ EVAS_OBJECT_POINTER_MODE_AUTOGRAB, /**< default, X11-like */
EVAS_OBJECT_POINTER_MODE_NOGRAB /**< pointer always bound to the object EVAS_OBJECT_POINTER_MODE_NOGRAB, /**< pointer always bound to the object
right below it */ right below it */
EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN /**< useful on object w
ith "repeat events" enabled, where mouse/touch up and down events WONT be r
epeated to objects and these objects wont be auto-grabbed. @since 1.2 */
} Evas_Object_Pointer_Mode; /**< How the mouse pointer should be handled by Evas. */ } Evas_Object_Pointer_Mode; /**< How the mouse pointer should be handled by Evas. */
typedef void (*Evas_Smart_Cb) (void *data, Evas_Object *obj, void *eve nt_info); /**< Evas smart objects' "smart callback" function signature */ typedef void (*Evas_Smart_Cb) (void *data, Evas_Object *obj, void *eve nt_info); /**< Evas smart objects' "smart callback" function signature */
typedef void (*Evas_Event_Cb) (void *data, Evas *e, void *event_info); /**< Evas event callback function signature */ typedef void (*Evas_Event_Cb) (void *data, Evas *e, void *event_info); /**< Evas event callback function signature */
typedef Eina_Bool (*Evas_Object_Event_Post_Cb) (void *data, Evas *e); typedef Eina_Bool (*Evas_Object_Event_Post_Cb) (void *data, Evas *e);
typedef void (*Evas_Object_Event_Cb) (void *data, Evas *e, Evas_Object *obj, void *event_info); /**< Evas object event callback function signatur e */ typedef void (*Evas_Object_Event_Cb) (void *data, Evas *e, Evas_Object *obj, void *event_info); /**< Evas object event callback function signatur e */
typedef void (*Evas_Async_Events_Put_Cb)(void *target, Evas_Callback_T ype type, void *event_info); typedef void (*Evas_Async_Events_Put_Cb)(void *target, Evas_Callback_T ype type, void *event_info);
/** /**
* @defgroup Evas_Group Top Level Functions * @defgroup Evas_Group Top Level Functions
skipping to change at line 1215 skipping to change at line 1221
* preload inside evas. If the canvas was instantiated through * preload inside evas. If the canvas was instantiated through
* ecore-evas usage, ecore itself will take care of calling those * ecore-evas usage, ecore itself will take care of calling those
* events' processing. * events' processing.
* *
* This function returns the read file descriptor where to get the * This function returns the read file descriptor where to get the
* asynchronous events of the canvas. Naturally, other mainloops, * asynchronous events of the canvas. Naturally, other mainloops,
* apart from ecore, may make use of it. * apart from ecore, may make use of it.
* *
* @ingroup Evas_Group * @ingroup Evas_Group
*/ */
EAPI int evas_async_events_fd_get (void) EINA_WARN_U NUSED_RESULT EINA_PURE; EAPI int evas_async_events_fd_get (void) EINA_WARN_U NUSED_RESULT;
/** /**
* @brief Trigger the processing of all events waiting on the file * @brief Trigger the processing of all events waiting on the file
* descriptor returned by evas_async_events_fd_get(). * descriptor returned by evas_async_events_fd_get().
* *
* @return The number of events processed. * @return The number of events processed.
* *
* All asynchronous events queued up by evas_async_events_put() are * All asynchronous events queued up by evas_async_events_put() are
* processed here. More precisely, the callback functions, informed * processed here. More precisely, the callback functions, informed
* together with other event parameters, when queued, get called (with * together with other event parameters, when queued, get called (with
skipping to change at line 1270 skipping to change at line 1276
* *
* Most users will be using Evas by means of the @c Ecore_Evas * Most users will be using Evas by means of the @c Ecore_Evas
* wrapper, which deals with all the above mentioned issues * wrapper, which deals with all the above mentioned issues
* automatically for them. Thus, you'll be looking at this section * automatically for them. Thus, you'll be looking at this section
* only if you're building low level stuff. * only if you're building low level stuff.
* *
* The groups within present you functions that deal with the canvas * The groups within present you functions that deal with the canvas
* directly, too, and not yet with its @b objects. They are the * directly, too, and not yet with its @b objects. They are the
* functions you need to use at a minimum to get a working canvas. * functions you need to use at a minimum to get a working canvas.
* *
* Some of the funcions in this group are exemplified @ref * Some of the functions in this group are exemplified @ref
* Example_Evas_Events "here". * Example_Evas_Events "here".
*/ */
/** /**
* Creates a new empty evas. * Creates a new empty evas.
* *
* Note that before you can use the evas, you will to at a minimum: * Note that before you can use the evas, you will to at a minimum:
* @li Set its render method with @ref evas_output_method_set . * @li Set its render method with @ref evas_output_method_set .
* @li Set its viewport size with @ref evas_output_viewport_set . * @li Set its viewport size with @ref evas_output_viewport_set .
* @li Set its size of the canvas with @ref evas_output_size_set . * @li Set its size of the canvas with @ref evas_output_size_set .
skipping to change at line 1294 skipping to change at line 1300
* This function should only fail if the memory allocation fails * This function should only fail if the memory allocation fails
* *
* @note this function is very low level. Instead of using it * @note this function is very low level. Instead of using it
* directly, consider using the high level functions in * directly, consider using the high level functions in
* Ecore_Evas such as @c ecore_evas_new(). See * Ecore_Evas such as @c ecore_evas_new(). See
* http://docs.enlightenment.org/auto/ecore/. * http://docs.enlightenment.org/auto/ecore/.
* *
* @attention it is recommended that one calls evas_init() before * @attention it is recommended that one calls evas_init() before
* creating new canvas. * creating new canvas.
* *
* @return A new uninitialised Evas canvas on success. Otherwise, @c * @return A new uninitialised Evas canvas on success. Otherwise, @c NULL.
* NULL.
* @ingroup Evas_Canvas * @ingroup Evas_Canvas
*/ */
EAPI Evas *evas_new (void) EINA_WARN_U NUSED_RESULT EINA_MALLOC; EAPI Evas *evas_new (void) EINA_WARN_U NUSED_RESULT EINA_MALLOC;
/** /**
* Frees the given evas and any objects created on it. * Frees the given evas and any objects created on it.
* *
* Any objects with 'free' callbacks will have those callbacks called * Any objects with 'free' callbacks will have those callbacks called
* in this function. * in this function.
* *
skipping to change at line 1334 skipping to change at line 1339
* @ingroup Evas_Canvas * @ingroup Evas_Canvas
*/ */
EAPI void evas_focus_out (Evas *e); EAPI void evas_focus_out (Evas *e);
/** /**
* Get the focus state known by the given evas * Get the focus state known by the given evas
* *
* @param e The evas to query information. * @param e The evas to query information.
* @ingroup Evas_Canvas * @ingroup Evas_Canvas
*/ */
EAPI Eina_Bool evas_focus_state_get (const Evas *e) EI NA_PURE; EAPI Eina_Bool evas_focus_state_get (const Evas *e);
/** /**
* Push the nochange flag up 1 * Push the nochange flag up 1
* *
* This tells evas, that while the nochange flag is greater than 0, do not * This tells evas, that while the nochange flag is greater than 0, do not
* mark objects as "changed" when making changes. * mark objects as "changed" when making changes.
* *
* @param e The evas to change information. * @param e The evas to change information.
* @ingroup Evas_Canvas * @ingroup Evas_Canvas
*/ */
skipping to change at line 1374 skipping to change at line 1379
*/ */
EAPI void evas_data_attach_set (Evas *e, void *da ta) EINA_ARG_NONNULL(1); EAPI void evas_data_attach_set (Evas *e, void *da ta) EINA_ARG_NONNULL(1);
/** /**
* Returns the pointer attached by evas_data_attach_set() * Returns the pointer attached by evas_data_attach_set()
* *
* @param e The canvas to attach the pointer to * @param e The canvas to attach the pointer to
* @return The pointer attached * @return The pointer attached
* @ingroup Evas_Canvas * @ingroup Evas_Canvas
*/ */
EAPI void *evas_data_attach_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI void *evas_data_attach_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Add a damage rectangle. * Add a damage rectangle.
* *
* @param e The given canvas pointer. * @param e The given canvas pointer.
* @param x The rectangle's left position. * @param x The rectangle's left position.
* @param y The rectangle's top position. * @param y The rectangle's top position.
* @param w The rectangle's width. * @param w The rectangle's width.
* @param h The rectangle's height. * @param h The rectangle's height.
* *
skipping to change at line 1410 skipping to change at line 1415
* *
* This is the function by which one tells an Evas canvas that a part * This is the function by which one tells an Evas canvas that a part
* of it <b>must not</b> be repainted. The region must be * of it <b>must not</b> be repainted. The region must be
* rectangular and its coordinates inside the canvas viewport are * rectangular and its coordinates inside the canvas viewport are
* passed in the call. After this call, the region specified won't * passed in the call. After this call, the region specified won't
* participate in any form in Evas' calculations and actions during * participate in any form in Evas' calculations and actions during
* its rendering updates, having its displaying content frozen as it * its rendering updates, having its displaying content frozen as it
* was just after this function took place. * was just after this function took place.
* *
* We call it "obscured region" because the most common use case for * We call it "obscured region" because the most common use case for
* this rendering (partial) freeze is something else (most problaby * this rendering (partial) freeze is something else (most probably
* other canvas) being on top of the specified rectangular region, * other canvas) being on top of the specified rectangular region,
* thus shading it completely from the user's final scene in a * thus shading it completely from the user's final scene in a
* display. To avoid unnecessary processing, one should indicate to the * display. To avoid unnecessary processing, one should indicate to the
* obscured canvas not to bother about the non-important area. * obscured canvas not to bother about the non-important area.
* *
* The majority of users won't have to worry about this funcion, as * The majority of users won't have to worry about this function, as
* they'll be using just one canvas in their applications, with * they'll be using just one canvas in their applications, with
* nothing inset or on top of it in any form. * nothing inset or on top of it in any form.
* *
* To make this region one that @b has to be repainted again, call the * To make this region one that @b has to be repainted again, call the
* function evas_obscured_clear(). * function evas_obscured_clear().
* *
* @note This is a <b>very low level function</b>, which most of * @note This is a <b>very low level function</b>, which most of
* Evas' users wouldn't care about. * Evas' users wouldn't care about.
* *
* @note This function does @b not flag the canvas as having its state * @note This function does @b not flag the canvas as having its state
skipping to change at line 1484 skipping to change at line 1489
/** /**
* Force immediate renderization of the given Evas canvas. * Force immediate renderization of the given Evas canvas.
* *
* @param e The given canvas pointer. * @param e The given canvas pointer.
* @return A newly allocated list of updated rectangles of the canvas * @return A newly allocated list of updated rectangles of the canvas
* (@c Eina_Rectangle structs). Free this list with * (@c Eina_Rectangle structs). Free this list with
* evas_render_updates_free(). * evas_render_updates_free().
* *
* This function forces an immediate renderization update of the given * This function forces an immediate renderization update of the given
* canvas @e. * canvas @p e.
* *
* @note This is a <b>very low level function</b>, which most of * @note This is a <b>very low level function</b>, which most of
* Evas' users wouldn't care about. One would use it, for example, to * Evas' users wouldn't care about. One would use it, for example, to
* grab an Evas' canvas update regions and paint them back, using the * grab an Evas' canvas update regions and paint them back, using the
* canvas' pixmap, on a displaying system working below Evas. * canvas' pixmap, on a displaying system working below Evas.
* *
* @note Evas is a stateful canvas. If no operations changing its * @note Evas is a stateful canvas. If no operations changing its
* state took place since the last rendering action, you won't see no * state took place since the last rendering action, you won't see no
* changes and this call will be a no-op. * changes and this call will be a no-op.
* *
skipping to change at line 1664 skipping to change at line 1669
* *
* @return A linked list whose data members are C strings of engine names * @return A linked list whose data members are C strings of engine names
* @ingroup Evas_Output_Method * @ingroup Evas_Output_Method
* *
* Calling this will return a handle (pointer) to an Evas linked * Calling this will return a handle (pointer) to an Evas linked
* list. Each node in the linked list will have the data pointer be a * list. Each node in the linked list will have the data pointer be a
* (char *) pointer to the name string of the rendering engine * (char *) pointer to the name string of the rendering engine
* available. The strings should never be modified, neither should the * available. The strings should never be modified, neither should the
* list be modified. This list should be cleaned up as soon as the * list be modified. This list should be cleaned up as soon as the
* program no longer needs it using evas_render_method_list_free(). If * program no longer needs it using evas_render_method_list_free(). If
* no engines are available from Evas, NULL will be returned. * no engines are available from Evas, @c NULL will be returned.
* *
* Example: * Example:
* @code * @code
* Eina_List *engine_list, *l; * Eina_List *engine_list, *l;
* char *engine_name; * char *engine_name;
* *
* engine_list = evas_render_method_list(); * engine_list = evas_render_method_list();
* if (!engine_list) * if (!engine_list)
* { * {
* fprintf(stderr, "ERROR: Evas supports no engines! Exit.\n"); * fprintf(stderr, "ERROR: Evas supports no engines! Exit.\n");
skipping to change at line 1739 skipping to change at line 1744
*/ */
EAPI void evas_output_method_set (Evas *e, int rend er_method) EINA_ARG_NONNULL(1); EAPI void evas_output_method_set (Evas *e, int rend er_method) EINA_ARG_NONNULL(1);
/** /**
* Retrieves the number of the output engine used for the given evas. * Retrieves the number of the output engine used for the given evas.
* @param e The given evas. * @param e The given evas.
* @return The ID number of the output engine being used. @c 0 is * @return The ID number of the output engine being used. @c 0 is
* returned if there is an error. * returned if there is an error.
* @ingroup Evas_Output_Method * @ingroup Evas_Output_Method
*/ */
EAPI int evas_output_method_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI int evas_output_method_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Retrieves the current render engine info struct from the given evas. * Retrieves the current render engine info struct from the given evas.
* *
* The returned structure is publicly modifiable. The contents are * The returned structure is publicly modifiable. The contents are
* valid until either @ref evas_engine_info_set or @ref evas_render * valid until either @ref evas_engine_info_set or @ref evas_render
* are called. * are called.
* *
* This structure does not need to be freed by the caller. * This structure does not need to be freed by the caller.
* *
* @param e The given evas. * @param e The given evas.
* @return A pointer to the Engine Info structure. @c NULL is returned if * @return A pointer to the Engine Info structure. @c NULL is returned if
* an engine has not yet been assigned. * an engine has not yet been assigned.
* @ingroup Evas_Output_Method * @ingroup Evas_Output_Method
*/ */
EAPI Evas_Engine_Info *evas_engine_info_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Engine_Info *evas_engine_info_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Applies the engine settings for the given evas from the given @c * Applies the engine settings for the given evas from the given @c
* Evas_Engine_Info structure. * Evas_Engine_Info structure.
* *
* To get the Evas_Engine_Info structure to use, call @ref * To get the Evas_Engine_Info structure to use, call @ref
* evas_engine_info_get . Do not try to obtain a pointer to an * evas_engine_info_get . Do not try to obtain a pointer to an
* @c Evas_Engine_Info structure in any other way. * @c Evas_Engine_Info structure in any other way.
* *
* You will need to call this function at least once before you can * You will need to call this function at least once before you can
* create objects on an evas or render that evas. Some engines allow * create objects on an evas or render that evas. Some engines allow
* their settings to be changed more than once. * their settings to be changed more than once.
* *
* Once called, the @p info pointer should be considered invalid. * Once called, the @p info pointer should be considered invalid.
* *
* @param e The pointer to the Evas Canvas * @param e The pointer to the Evas Canvas
* @param info The pointer to the Engine Info to use * @param info The pointer to the Engine Info to use
* @return 1 if no error occurred, 0 otherwise * @return @c EINA_TRUE if no error occurred, @c EINA_FALSE otherwise.
* @ingroup Evas_Output_Method * @ingroup Evas_Output_Method
*/ */
EAPI Eina_Bool evas_engine_info_set (Evas *e, Evas_Eng ine_Info *info) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_engine_info_set (Evas *e, Evas_Eng ine_Info *info) EINA_ARG_NONNULL(1);
/** /**
* @defgroup Evas_Output_Size Output and Viewport Resizing Functions * @defgroup Evas_Output_Size Output and Viewport Resizing Functions
* *
* Functions that set and retrieve the output and viewport size of an * Functions that set and retrieve the output and viewport size of an
* evas. * evas.
* *
skipping to change at line 1853 skipping to change at line 1858
* @param x The pointer to a x variable to be filled in * @param x The pointer to a x variable to be filled in
* @param y The pointer to a y variable to be filled in * @param y The pointer to a y variable to be filled in
* @param w The pointer to a width variable to be filled in * @param w The pointer to a width variable to be filled in
* @param h The pointer to a height variable to be filled in * @param h The pointer to a height variable to be filled in
* @ingroup Evas_Output_Size * @ingroup Evas_Output_Size
* *
* Calling this function writes the current canvas output viewport * Calling this function writes the current canvas output viewport
* size and location values into the variables pointed to by @p x, @p * size and location values into the variables pointed to by @p x, @p
* y, @p w and @p h. On success the variables have the output * y, @p w and @p h. On success the variables have the output
* location and size values written to them in canvas units. Any of @p * location and size values written to them in canvas units. Any of @p
* x, @p y, @p w or @p h that are NULL will not be written to. If @p e * x, @p y, @p w or @p h that are @c NULL will not be written to. If @p e
* is invalid, the results are undefined. * is invalid, the results are undefined.
* *
* Example: * Example:
* @code * @code
* extern Evas *evas; * extern Evas *evas;
* Evas_Coord x, y, width, height; * Evas_Coord x, y, width, height;
* *
* evas_output_viewport_get(evas, &x, &y, &w, &h); * evas_output_viewport_get(evas, &x, &y, &w, &h);
* @endcode * @endcode
*/ */
EAPI void evas_output_viewport_get (const Evas *e, Ev as_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL( 1); EAPI void evas_output_viewport_get (const Evas *e, Ev as_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL( 1);
/** /**
* Sets the output framespace size of the render engine of the given evas.
*
* The framespace size is used in the Wayland engines to denote space where
* the output is not drawn. This is mainly used in ecore_evas to draw borde
rs
*
* The units used for @p w and @p h depend on the engine used by the
* evas.
*
* @param e The given evas.
* @param x The left coordinate in output units, usually pixels.
* @param y The top coordinate in output units, usually pixels.
* @param w The width in output units, usually pixels.
* @param h The height in output units, usually pixels.
* @ingroup Evas_Output_Size
* @since 1.1.0
*/
EAPI void evas_output_framespace_set (Evas *e, Evas_Coo
rd x, Evas_Coord y, Evas_Coord w, Evas_Coord h);
/**
* Get the render engine's output framespace co-ordinates in canvas units.
*
* @param e The pointer to the Evas Canvas
* @param x The pointer to a x variable to be filled in
* @param y The pointer to a y variable to be filled in
* @param w The pointer to a width variable to be filled in
* @param h The pointer to a height variable to be filled in
* @ingroup Evas_Output_Size
* @since 1.1.0
*/
EAPI void evas_output_framespace_get (const Evas *e, Ev
as_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
/**
* @defgroup Evas_Coord_Mapping_Group Coordinate Mapping Functions * @defgroup Evas_Coord_Mapping_Group Coordinate Mapping Functions
* *
* Functions that are used to map coordinates from the canvas to the * Functions that are used to map coordinates from the canvas to the
* screen or the screen to the canvas. * screen or the screen to the canvas.
* *
* @ingroup Evas_Canvas * @ingroup Evas_Canvas
*/ */
/** /**
* Convert/scale an ouput screen co-ordinate into canvas co-ordinates * Convert/scale an ouput screen co-ordinate into canvas co-ordinates
skipping to change at line 2031 skipping to change at line 2068
* evas_pointer_output_xy_get(evas, &mouse_x, &mouse_y); * evas_pointer_output_xy_get(evas, &mouse_x, &mouse_y);
* printf("Mouse is at canvas position %f, %f\n", mouse_x, mouse_y); * printf("Mouse is at canvas position %f, %f\n", mouse_x, mouse_y);
* @endcode * @endcode
*/ */
EAPI void evas_pointer_canvas_xy_get (const Evas *e, Ev as_Coord *x, Evas_Coord *y) EINA_ARG_NONNULL(1); EAPI void evas_pointer_canvas_xy_get (const Evas *e, Ev as_Coord *x, Evas_Coord *y) EINA_ARG_NONNULL(1);
/** /**
* Returns a bitmask with the mouse buttons currently pressed, set to 1 * Returns a bitmask with the mouse buttons currently pressed, set to 1
* *
* @param e The pointer to the Evas Canvas * @param e The pointer to the Evas Canvas
* @return A bitmask of the currently depressed buttons on the cavas * @return A bitmask of the currently depressed buttons on the canvas
* @ingroup Evas_Pointer_Group * @ingroup Evas_Pointer_Group
* *
* Calling this function will return a 32-bit integer with the * Calling this function will return a 32-bit integer with the
* appropriate bits set to 1 that correspond to a mouse button being * appropriate bits set to 1 that correspond to a mouse button being
* depressed. This limits Evas to a mouse devices with a maximum of 32 * depressed. This limits Evas to a mouse devices with a maximum of 32
* buttons, but that is generally in excess of any host system's * buttons, but that is generally in excess of any host system's
* pointing device abilities. * pointing device abilities.
* *
* A canvas by default begins with no mouse buttons being pressed and * A canvas by default begins with no mouse buttons being pressed and
* only calls to evas_event_feed_mouse_down(), * only calls to evas_event_feed_mouse_down(),
skipping to change at line 2104 skipping to change at line 2141
EAPI Eina_Bool evas_pointer_inside_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_pointer_inside_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
EAPI void evas_sync(Evas *e) EINA_ARG_NONNULL(1); EAPI void evas_sync(Evas *e) EINA_ARG_NONNULL(1);
/** /**
* @defgroup Evas_Canvas_Events Canvas Events * @defgroup Evas_Canvas_Events Canvas Events
* *
* Functions relating to canvas events, which are mainly reports on * Functions relating to canvas events, which are mainly reports on
* its internal states changing (an object got focused, the rendering * its internal states changing (an object got focused, the rendering
* is updated, etc). * is updated, etc).
* *
* Some of the funcions in this group are exemplified @ref * Some of the functions in this group are exemplified @ref
* Example_Evas_Events "here". * Example_Evas_Events "here".
* *
* @ingroup Evas_Canvas * @ingroup Evas_Canvas
*/ */
/** /**
* @addtogroup Evas_Canvas_Events * @addtogroup Evas_Canvas_Events
* @{ * @{
*/ */
skipping to change at line 2209 skipping to change at line 2246
* @param e Canvas to remove a callback from * @param e Canvas to remove a callback from
* @param type The type of event that was triggering the callback * @param type The type of event that was triggering the callback
* @param func The function that was to be called when the event was trigge red * @param func The function that was to be called when the event was trigge red
* @return The data pointer that was to be passed to the callback * @return The data pointer that was to be passed to the callback
* *
* This function removes the most recently added callback from the * This function removes the most recently added callback from the
* canvas @p e which was triggered by the event type @p type and was * canvas @p e which was triggered by the event type @p type and was
* calling the function @p func when triggered. If the removal is * calling the function @p func when triggered. If the removal is
* successful it will also return the data pointer that was passed to * successful it will also return the data pointer that was passed to
* evas_event_callback_add() when the callback was added to the * evas_event_callback_add() when the callback was added to the
* canvas. If not successful NULL will be returned. * canvas. If not successful @c NULL will be returned.
* *
* Example: * Example:
* @code * @code
* extern Evas *e; * extern Evas *e;
* void *my_data; * void *my_data;
* void focus_in_callback(void *data, Evas *e, void *event_info); * void focus_in_callback(void *data, Evas *e, void *event_info);
* *
* my_data = evas_event_callback_del(ebject, EVAS_CALLBACK_CANVAS_FOCUS_IN, focus_in_callback); * my_data = evas_event_callback_del(ebject, EVAS_CALLBACK_CANVAS_FOCUS_IN, focus_in_callback);
* @endcode * @endcode
*/ */
skipping to change at line 2262 skipping to change at line 2299
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); 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);
/** /**
* Push a callback on the post-event callback stack * Push a callback on the post-event callback stack
* *
* @param e Canvas to push the callback on * @param e Canvas to push the callback on
* @param func The function that to be called when the stack is unwound * @param func The function that to be called when the stack is unwound
* @param data The data pointer to be passed to the callback * @param data The data pointer to be passed to the callback
* *
* Evas has a stack of callbacks that get called after all the callbacks fo r * Evas has a stack of callbacks that get called after all the callbacks fo r
* an event have triggered (all the objects it triggers on and al the callb acks * an event have triggered (all the objects it triggers on and all the call backs
* in each object triggered). When all these have been called, the stack is * in each object triggered). When all these have been called, the stack is
* unwond from most recently to least recently pushed item and removed from the * unwond from most recently to least recently pushed item and removed from the
* stack calling the callback set for it. * stack calling the callback set for it.
* *
* This is intended for doing reverse logic-like processing, example - when a * This is intended for doing reverse logic-like processing, example - when a
* child object that happens to get the event later is meant to be able to * child object that happens to get the event later is meant to be able to
* "steal" functions from a parent and thus on unwind of this stack hav its * "steal" functions from a parent and thus on unwind of this stack have it s
* function called first, thus being able to set flags, or return 0 from th e * function called first, thus being able to set flags, or return 0 from th e
* post-callback that stops all other post-callbacks in the current stack f rom * post-callback that stops all other post-callbacks in the current stack f rom
* being called (thus basically allowing a child to take control, if the ev ent * being called (thus basically allowing a child to take control, if the ev ent
* callback prepares information ready for taking action, but the post call back * callback prepares information ready for taking action, but the post call back
* actually does the action). * actually does the action).
* *
*/ */
EAPI void evas_post_event_callback_push (Evas *e, Evas_ Object_Event_Post_Cb func, const void *data); EAPI void evas_post_event_callback_push (Evas *e, Evas_ Object_Event_Post_Cb func, const void *data);
/** /**
skipping to change at line 2313 skipping to change at line 2350
*/ */
EAPI void evas_post_event_callback_remove_full (Evas *e, Evas_ Object_Event_Post_Cb func, const void *data); EAPI void evas_post_event_callback_remove_full (Evas *e, Evas_ Object_Event_Post_Cb func, const void *data);
/** /**
* @defgroup Evas_Event_Freezing_Group Input Events Freezing Functions * @defgroup Evas_Event_Freezing_Group Input Events Freezing Functions
* *
* Functions that deal with the freezing of input event processing of * Functions that deal with the freezing of input event processing of
* an Evas canvas. * an Evas canvas.
* *
* There might be scenarios during a graphical user interface * There might be scenarios during a graphical user interface
* program's use when the developer whishes the users wouldn't be able * program's use when the developer wishes the users wouldn't be able
* to deliver input events to this application. It may, for example, * to deliver input events to this application. It may, for example,
* be the time for it to populate a view or to change some * be the time for it to populate a view or to change some
* layout. Assuming proper behavior with user interaction during this * layout. Assuming proper behavior with user interaction during this
* exact time would be hard, as things are in a changing state. The * exact time would be hard, as things are in a changing state. The
* programmer can then tell the canvas to ignore input events, * programmer can then tell the canvas to ignore input events,
* bringing it back to normal behavior when he/she wants. * bringing it back to normal behavior when he/she wants.
* *
* Some of the funcions in this group are exemplified @ref * Most of the time use of freezing events is done like this:
* @code
* evas_event_freeze(my_evas_canvas);
* function_that_does_work_which_cant_be_interrupted_by_events();
* evas_event_thaw(my_evas_canvas);
* @endcode
*
* Some of the functions in this group are exemplified @ref
* Example_Evas_Events "here". * Example_Evas_Events "here".
* *
* @ingroup Evas_Canvas_Events * @ingroup Evas_Canvas_Events
*/ */
/** /**
* @addtogroup Evas_Event_Freezing_Group * @addtogroup Evas_Event_Freezing_Group
* @{ * @{
*/ */
/** /**
* Set the default set of flags an event begins with
*
* @param e The canvas to set the default event flags of
* @param flags The default flags to use
*
* Events in evas can have an event_flags member. This starts out with
* and initial value (no flags). this lets you set the default flags that
* an event begins with to be @p flags
*
* @since 1.2
*/
EAPI void evas_event_default_flags_set (Evas *e, Evas_Eve
nt_Flags flags) EINA_ARG_NONNULL(1);
/**
* Get the defaulty set of flags an event begins with
*
* @param e The canvas to get the default event flags from
* @return The default event flags for that canvas
*
* This gets the default event flags events are produced with when fed in.
*
* @see evas_event_default_flags_set()
* @since 1.2
*/
EAPI Evas_Event_Flags evas_event_default_flags_get (const Evas *e) EI
NA_ARG_NONNULL(1);
/**
* Freeze all input events processing. * Freeze all input events processing.
* *
* @param e The canvas to freeze input events processing on. * @param e The canvas to freeze input events processing on.
* *
* This function will indicate to Evas that the canvas @p e is to have * This function will indicate to Evas that the canvas @p e is to have
* all input event processing frozen until a matching * all input event processing frozen until a matching
* evas_event_thaw() function is called on the same canvas. All events * evas_event_thaw() function is called on the same canvas. All events
* of this kind during the freeze will get @b discarded. Every freeze * of this kind during the freeze will get @b discarded. Every freeze
* call must be matched by a thaw call in order to completely thaw out * call must be matched by a thaw call in order to completely thaw out
* a canvas (i.e. these calls may be nested). The most common use is * a canvas (i.e. these calls may be nested). The most common use is
* when you don't want the user to interect with your user interface * when you don't want the user to interact with your user interface
* when you're populating a view or changing the layout. * when you're populating a view or changing the layout.
* *
* Example: * Example:
* @dontinclude evas-events.c * @dontinclude evas-events.c
* @skip freeze input for 3 seconds * @skip freeze input for 3 seconds
* @until } * @until }
* @dontinclude evas-events.c * @dontinclude evas-events.c
* @skip let's have our events back * @skip let's have our events back
* @until } * @until }
* *
skipping to change at line 2398 skipping to change at line 2469
* where the count is high. * where the count is high.
* *
* Example: * Example:
* @code * @code
* extern Evas *evas; * extern Evas *evas;
* *
* while (evas_event_freeze_get(evas) > 0) evas_event_thaw(evas); * while (evas_event_freeze_get(evas) > 0) evas_event_thaw(evas);
* @endcode * @endcode
* *
*/ */
EAPI int evas_event_freeze_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI int evas_event_freeze_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* After thaw of a canvas, re-evaluate the state of objects and call callba cks * After thaw of a canvas, re-evaluate the state of objects and call callba cks
* *
* @param e The canvas to evaluate after a thaw * @param e The canvas to evaluate after a thaw
* *
* This is normally called after evas_event_thaw() to re-evaluate mouse * This is normally called after evas_event_thaw() to re-evaluate mouse
* containment and other states and thus also call callbacks for mouse in a nd * containment and other states and thus also call callbacks for mouse in a nd
* out on new objects if the state change demands it. * out on new objects if the state change demands it.
*/ */
skipping to change at line 2421 skipping to change at line 2492
/** /**
* @} * @}
*/ */
/** /**
* @defgroup Evas_Event_Feeding_Group Input Events Feeding Functions * @defgroup Evas_Event_Feeding_Group Input Events Feeding Functions
* *
* Functions to tell Evas that input events happened and should be * Functions to tell Evas that input events happened and should be
* processed. * processed.
* *
* @warning Most of the time these functions are @b not what you're looking
for.
* These functions should only be used if you're not working with ecore eva
s(or
* another input handling system). If you're not using ecore evas please
* consider using it, in most situation it will make life a lot easier.
*
* As explained in @ref intro_not_evas, Evas does not know how to poll * As explained in @ref intro_not_evas, Evas does not know how to poll
* for input events, so the developer should do it and then feed such * for input events, so the developer should do it and then feed such
* events to the canvas to be processed. This is only required if * events to the canvas to be processed. This is only required if
* operating Evas directly. Modules such as Ecore_Evas do that for * operating Evas directly. Modules such as Ecore_Evas do that for
* you. * you.
* *
* Some of the funcions in this group are exemplified @ref * Some of the functions in this group are exemplified @ref
* Example_Evas_Events "here". * Example_Evas_Events "here".
* *
* @ingroup Evas_Canvas_Events * @ingroup Evas_Canvas_Events
*/ */
/** /**
* @addtogroup Evas_Event_Feeding_Group * @addtogroup Evas_Event_Feeding_Group
* @{ * @{
*/ */
/** /**
* Get the number of mouse or multi presses currently active
*
* @p e The given canvas pointer.
* @return The numer of presses (0 if none active).
*
* @since 1.2
*/
EAPI int evas_event_down_count_get (const Evas *e) EI
NA_ARG_NONNULL(1);
/**
* Mouse down event feed. * Mouse down event feed.
* *
* @param e The given canvas pointer. * @param e The given canvas pointer.
* @param b The button number. * @param b The button number.
* @param flags The evas button flags. * @param flags The evas button flags.
* @param timestamp The timestamp of the mouse down event. * @param timestamp The timestamp of the mouse down event.
* @param data The data for canvas. * @param data The data for canvas.
* *
* This function will set some evas properties that is necessary when * This function will set some evas properties that is necessary when
* the mouse button is pressed. It prepares information to be treated * the mouse button is pressed. It prepares information to be treated
skipping to change at line 2669 skipping to change at line 2755
EAPI void evas_image_cache_set (Evas *e, int size ) EINA_ARG_NONNULL(1); EAPI void evas_image_cache_set (Evas *e, int size ) EINA_ARG_NONNULL(1);
/** /**
* Get the image cache * Get the image cache
* *
* @param e The given evas pointer. * @param e The given evas pointer.
* *
* This function returns the image cache size of canvas in bytes. * This function returns the image cache size of canvas in bytes.
* *
*/ */
EAPI int evas_image_cache_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI int evas_image_cache_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Get the maximum image size evas can possibly handle * Get the maximum image size evas can possibly handle
* *
* @param e The given evas pointer. * @param e The given evas pointer.
* @param maxw Pointer to hold the return value in pixels of the maxumum wi dth * @param maxw Pointer to hold the return value in pixels of the maxumum wi dth
* @param maxh Pointer to hold the return value in pixels of the maximum he ight * @param maxh Pointer to hold the return value in pixels of the maximum he ight
* *
* This function returns the larges image or surface size that evas can han dle * This function returns the larges image or surface size that evas can han dle
* in pixels, and if there is one, returns EINA_TRUE. It returns EINA_FALSE * in pixels, and if there is one, returns @c EINA_TRUE. It returns
* if no extra constraint on maximum image size exists. You still should * @c EINA_FALSE if no extra constraint on maximum image size exists. You s
* check the return values of @p maxw and @p maxh as there may still be a till
* limit, just a much higher one. * should check the return values of @p maxw and @p maxh as there may still
be
* a limit, just a much higher one.
* *
* @since 1.1 * @since 1.1
*/ */
EAPI Eina_Bool evas_image_max_size_get (const Evas *e, in t *maxw, int *maxh) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_image_max_size_get (const Evas *e, in t *maxw, int *maxh) EINA_ARG_NONNULL(1);
/** /**
* @} * @}
*/ */
/** /**
skipping to change at line 2718 skipping to change at line 2804
EAPI void evas_font_hinting_set (Evas *e, Evas_F ont_Hinting_Flags hinting) EINA_ARG_NONNULL(1); EAPI void evas_font_hinting_set (Evas *e, Evas_F ont_Hinting_Flags hinting) EINA_ARG_NONNULL(1);
/** /**
* Retrieves the font hinting used by the given evas. * Retrieves the font hinting used by the given evas.
* *
* @param e The given evas to query. * @param e The given evas to query.
* @return The hinting in use, one of #EVAS_FONT_HINTING_NONE, * @return The hinting in use, one of #EVAS_FONT_HINTING_NONE,
* #EVAS_FONT_HINTING_AUTO, #EVAS_FONT_HINTING_BYTECODE. * #EVAS_FONT_HINTING_AUTO, #EVAS_FONT_HINTING_BYTECODE.
* @ingroup Evas_Font_Group * @ingroup Evas_Font_Group
*/ */
EAPI Evas_Font_Hinting_Flags evas_font_hinting_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Font_Hinting_Flags evas_font_hinting_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Checks if the font hinting is supported by the given evas. * Checks if the font hinting is supported by the given evas.
* *
* @param e The given evas to query. * @param e The given evas to query.
* @param hinting The hinting to use, one of #EVAS_FONT_HINTING_NONE, * @param hinting The hinting to use, one of #EVAS_FONT_HINTING_NONE,
* #EVAS_FONT_HINTING_AUTO, #EVAS_FONT_HINTING_BYTECODE. * #EVAS_FONT_HINTING_AUTO, #EVAS_FONT_HINTING_BYTECODE.
* @return @c EINA_TRUE if it is supported, @c EINA_FALSE otherwise. * @return @c EINA_TRUE if it is supported, @c EINA_FALSE otherwise.
* @ingroup Evas_Font_Group * @ingroup Evas_Font_Group
*/ */
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; EAPI Eina_Bool evas_font_hinting_can_hint (const Evas *e, Evas_Font_Hinting_Flags hinting) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1 );
/** /**
* Force the given evas and associated engine to flush its font cache. * Force the given evas and associated engine to flush its font cache.
* *
* @param e The given evas to flush font cache. * @param e The given evas to flush font cache.
* @ingroup Evas_Font_Group * @ingroup Evas_Font_Group
*/ */
EAPI void evas_font_cache_flush (Evas *e) EINA_A RG_NONNULL(1); EAPI void evas_font_cache_flush (Evas *e) EINA_A RG_NONNULL(1);
/** /**
skipping to change at line 2757 skipping to change at line 2843
EAPI void evas_font_cache_set (Evas *e, int si ze) EINA_ARG_NONNULL(1); EAPI void evas_font_cache_set (Evas *e, int si ze) EINA_ARG_NONNULL(1);
/** /**
* Changes the size of font cache of the given evas. * Changes the size of font cache of the given evas.
* *
* @param e The given evas to flush font cache. * @param e The given evas to flush font cache.
* @return The size, in bytes. * @return The size, in bytes.
* *
* @ingroup Evas_Font_Group * @ingroup Evas_Font_Group
*/ */
EAPI int evas_font_cache_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI int evas_font_cache_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* List of available font descriptions known or found by this evas. * List of available font descriptions known or found by this evas.
* *
* The list depends on Evas compile time configuration, such as * The list depends on Evas compile time configuration, such as
* fontconfig support, and the paths provided at runtime as explained * fontconfig support, and the paths provided at runtime as explained
* in @ref Evas_Font_Path_Group. * in @ref Evas_Font_Path_Group.
* *
* @param e The evas instance to query. * @param e The evas instance to query.
* @return a newly allocated list of strings. Do not change the * @return a newly allocated list of strings. Do not change the
* strings. Be sure to call evas_font_available_list_free() * strings. Be sure to call evas_font_available_list_free()
* after you're done. * after you're done.
* *
* @ingroup Evas_Font_Group * @ingroup Evas_Font_Group
*/ */
EAPI Eina_List *evas_font_available_list (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Eina_List *evas_font_available_list (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Free list of font descriptions returned by evas_font_dir_available_list( ). * Free list of font descriptions returned by evas_font_dir_available_list( ).
* *
* @param e The evas instance that returned such list. * @param e The evas instance that returned such list.
* @param available the list returned by evas_font_dir_available_list(). * @param available the list returned by evas_font_dir_available_list().
* *
* @ingroup Evas_Font_Group * @ingroup Evas_Font_Group
*/ */
EAPI void evas_font_available_list_free(Evas *e, Eina_L ist *available) EINA_ARG_NONNULL(1); EAPI void evas_font_available_list_free(Evas *e, Eina_L ist *available) EINA_ARG_NONNULL(1);
skipping to change at line 2822 skipping to change at line 2908
* @ingroup Evas_Font_Path_Group * @ingroup Evas_Font_Path_Group
*/ */
EAPI void evas_font_path_prepend (Evas *e, const ch ar *path) EINA_ARG_NONNULL(1, 2); EAPI void evas_font_path_prepend (Evas *e, const ch ar *path) EINA_ARG_NONNULL(1, 2);
/** /**
* Retrieves the list of font paths used by the given evas. * Retrieves the list of font paths used by the given evas.
* @param e The given evas. * @param e The given evas.
* @return The list of font paths used. * @return The list of font paths used.
* @ingroup Evas_Font_Path_Group * @ingroup Evas_Font_Path_Group
*/ */
EAPI const Eina_List *evas_font_path_list (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI const Eina_List *evas_font_path_list (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* @defgroup Evas_Object_Group Generic Object Functions * @defgroup Evas_Object_Group Generic Object Functions
* *
* Functions that manipulate generic Evas objects. * Functions that manipulate generic Evas objects.
* *
* All Evas displaying units are Evas objects. One handles them all by * All Evas displaying units are Evas objects. One handles them all by
* means of the handle ::Evas_Object. Besides Evas treats their * means of the handle ::Evas_Object. Besides Evas treats their
* objects equally, they have @b types, which define their specific * objects equally, they have @b types, which define their specific
* behavior (and individual API). * behavior (and individual API).
* *
* Evas comes with a set of built-in object types: * Evas comes with a set of built-in object types:
* - rectangle, * - rectangle,
* - line, * - line,
* - polygon, * - polygon,
* - text, * - text,
* - textblock and * - textblock and
* - image. * - image.
* *
* These functions apply to @b any Evas object, whichever type thay * These functions apply to @b any Evas object, whichever type that
* may have. * may have.
* *
* @note The built-in types which are most used are rectangles, text * @note The built-in types which are most used are rectangles, text
* and images. In fact, with these ones one can create 2D interfaces * and images. In fact, with these ones one can create 2D interfaces
* of arbitrary complexity and EFL makes it easy. * of arbitrary complexity and EFL makes it easy.
*/ */
/** /**
* @defgroup Evas_Object_Group_Basic Basic Object Manipulation * @defgroup Evas_Object_Group_Basic Basic Object Manipulation
* *
* Methods that are broadly used, like those that change the color, * Almost every evas object created will have some generic function used to
* clippers and geometry of an Evas object. * manipulate it. That's because there are a number of basic actions to be
* done
* An example on the most used functions in this group can be seen @ref * to objects that are irrespective of the object's type, things like:
* Example_Evas_Object_Manipulation "here". * @li Showing/Hiding
* * @li Setting(and getting) geometry
* For function dealing with stacking, the examples are gathered @ref * @li Bring up or down a layer
* Example_Evas_Stacking "here". * @li Color management
* @li Handling focus
* @li Clipping
* @li Reference counting
*
* All of this issues are handled through the functions here grouped. Examp
les
* of these function can be seen in @ref Example_Evas_Object_Manipulation(w
hich
* deals with the most common ones) and in @ref Example_Evas_Stacking(which
* deals with stacking functions).
* *
* @ingroup Evas_Object_Group * @ingroup Evas_Object_Group
*/ */
/** /**
* @addtogroup Evas_Object_Group_Basic * @addtogroup Evas_Object_Group_Basic
* @{ * @{
*/ */
/** /**
skipping to change at line 2946 skipping to change at line 3039
* See also evas_object_clip_set(), evas_object_clip_unset() and * See also evas_object_clip_set(), evas_object_clip_unset() and
* evas_object_clipees_get(). * evas_object_clipees_get().
* *
* Example: * Example:
* @dontinclude evas-object-manipulation.c * @dontinclude evas-object-manipulation.c
* @skip if (evas_object_clip_get(d.img) == d.clipper) * @skip if (evas_object_clip_get(d.img) == d.clipper)
* @until return * @until return
* *
* See the full @ref Example_Evas_Object_Manipulation "example". * See the full @ref Example_Evas_Object_Manipulation "example".
*/ */
EAPI Evas_Object *evas_object_clip_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Object *evas_object_clip_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Disable/cease clipping on a clipped @p obj object. * Disable/cease clipping on a clipped @p obj object.
* *
* @param obj The object to cease clipping on * @param obj The object to cease clipping on
* *
* This function disables clipping for the object @p obj, if it was * This function disables clipping for the object @p obj, if it was
* already clipped, i.e., its visibility and color get detached from * already clipped, i.e., its visibility and color get detached from
* the previous clipper. If it wasn't, this has no effect. The object * the previous clipper. If it wasn't, this has no effect. The object
* @p obj must be a valid ::Evas_Object. * @p obj must be a valid ::Evas_Object.
skipping to change at line 3003 skipping to change at line 3096
* Eina_List *clippees, *l; * Eina_List *clippees, *l;
* Evas_Object *obj_tmp; * Evas_Object *obj_tmp;
* *
* clippees = evas_object_clipees_get(clipper); * clippees = evas_object_clipees_get(clipper);
* printf("Clipper clips %i objects\n", eina_list_count(clippees)); * printf("Clipper clips %i objects\n", eina_list_count(clippees));
* EINA_LIST_FOREACH(clippees, l, obj_tmp) * EINA_LIST_FOREACH(clippees, l, obj_tmp)
* evas_object_show(obj_tmp); * evas_object_show(obj_tmp);
* } * }
* @endcode * @endcode
*/ */
EAPI const Eina_List *evas_object_clipees_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI const Eina_List *evas_object_clipees_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Sets or unsets a given object as the currently focused one on its * Sets or unsets a given object as the currently focused one on its
* canvas. * canvas.
* *
* @param obj The object to be focused or unfocused. * @param obj The object to be focused or unfocused.
* @param focus @c EINA_TRUE, to set it as focused or @c EINA_FALSE, * @param focus @c EINA_TRUE, to set it as focused or @c EINA_FALSE,
* to take away the focus from it. * to take away the focus from it.
* *
* Changing focus only affects where (key) input events go. There can * Changing focus only affects where (key) input events go. There can
* be only one object focused at any time. If @p focus is @c * be only one object focused at any time. If @p focus is @c EINA_TRUE,
* EINA_TRUE, @p obj will be set as the currently focused object and * @p obj will be set as the currently focused object and it will
* it will receive all keyboard events that are not exclusive key * receive all keyboard events that are not exclusive key grabs on
* grabs on other objects. * other objects.
* *
* Example: * Example:
* @dontinclude evas-events.c * @dontinclude evas-events.c
* @skip evas_object_focus_set * @skip evas_object_focus_set
* @until evas_object_focus_set * @until evas_object_focus_set
* *
* See the full example @ref Example_Evas_Events "here". * See the full example @ref Example_Evas_Events "here".
* *
* @see evas_object_focus_get * @see evas_object_focus_get
* @see evas_focus_get * @see evas_focus_get
* @see evas_object_key_grab * @see evas_object_key_grab
* @see evas_object_key_ungrab * @see evas_object_key_ungrab
*/ */
EAPI void evas_object_focus_set (Evas_Object *obj, Eina_Bool focus) EINA_ARG_NONNULL(1); EAPI void evas_object_focus_set (Evas_Object *obj, Eina_Bool focus) EINA_ARG_NONNULL(1);
/** /**
* Retrieve whether an object has the focus. * Retrieve whether an object has the focus.
* *
* @param obj The object to retrieve focus information from. * @param obj The object to retrieve focus information from.
* @return @c EINA_TRUE if the object has the focus, @c EINA_FALSE * @return @c EINA_TRUE if the object has the focus, @c EINA_FALSE otherwis
* otherwise. e.
* *
* If the passed object is the currently focused one, @c EINA_TRUE is * If the passed object is the currently focused one, @c EINA_TRUE is
* returned. @c EINA_FALSE is returned, otherwise. * returned. @c EINA_FALSE is returned, otherwise.
* *
* Example: * Example:
* @dontinclude evas-events.c * @dontinclude evas-events.c
* @skip And again * @skip And again
* @until something is bad * @until something is bad
* *
* See the full example @ref Example_Evas_Events "here". * See the full example @ref Example_Evas_Events "here".
* *
* @see evas_object_focus_set * @see evas_object_focus_set
* @see evas_focus_get * @see evas_focus_get
* @see evas_object_key_grab * @see evas_object_key_grab
* @see evas_object_key_ungrab * @see evas_object_key_ungrab
*/ */
EAPI Eina_Bool evas_object_focus_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Eina_Bool evas_object_focus_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Sets the layer of the its canvas that the given object will be part * Sets the layer of the its canvas that the given object will be part
* of. * of.
* *
* @param obj The given Evas object. * @param obj The given Evas object.
* @param l The number of the layer to place the object on. * @param l The number of the layer to place the object on.
* Must be between #EVAS_LAYER_MIN and #EVAS_LAYER_MAX. * Must be between #EVAS_LAYER_MIN and #EVAS_LAYER_MAX.
* *
* If you don't use this function, you'll be dealing with an @b unique * If you don't use this function, you'll be dealing with an @b unique
skipping to change at line 3090 skipping to change at line 3182
EAPI void evas_object_layer_set (Evas_Object *obj, short l) EINA_ARG_NONNULL(1); EAPI void evas_object_layer_set (Evas_Object *obj, short l) EINA_ARG_NONNULL(1);
/** /**
* Retrieves the layer of its canvas that the given object is part of. * Retrieves the layer of its canvas that the given object is part of.
* *
* @param obj The given Evas object to query layer from * @param obj The given Evas object to query layer from
* @return Number of the its layer * @return Number of the its layer
* *
* @see evas_object_layer_set() * @see evas_object_layer_set()
*/ */
EAPI short evas_object_layer_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI short evas_object_layer_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Sets the name of the given Evas object to the given name. * Sets the name of the given Evas object to the given name.
* *
* @param obj The given object. * @param obj The given object.
* @param name The given name. * @param name The given name.
* *
* There might be occasions where one would like to name his/her * There might be occasions where one would like to name his/her
* objects. * objects.
* *
skipping to change at line 3124 skipping to change at line 3216
* @return The name of the object or @c NULL, if no name has been given * @return The name of the object or @c NULL, if no name has been given
* to it. * to it.
* *
* Example: * Example:
* @dontinclude evas-events.c * @dontinclude evas-events.c
* @skip fprintf(stdout, "An object got focused: %s\n", * @skip fprintf(stdout, "An object got focused: %s\n",
* @until evas_focus_get * @until evas_focus_get
* *
* See the full @ref Example_Evas_Events "example". * See the full @ref Example_Evas_Events "example".
*/ */
EAPI const char *evas_object_name_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI const char *evas_object_name_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Increments object reference count to defer its deletion. * Increments object reference count to defer its deletion.
* *
* @param obj The given Evas object to reference * @param obj The given Evas object to reference
* *
* This increments the reference count of an object, which if greater * This increments the reference count of an object, which if greater
* than 0 will defer deletion by evas_object_del() until all * than 0 will defer deletion by evas_object_del() until all
* references are released back (counter back to 0). References cannot * references are released back (counter back to 0). References cannot
* go below 0 and unreferencing past that will result in the reference * go below 0 and unreferencing past that will result in the reference
* count being limited to 0. References are limited to <c>2^32 - 1</c> * count being limited to 0. References are limited to <c>2^32 - 1</c>
* for an object. Referencing it more than this will result in it * for an object. Referencing it more than this will result in it
* being limited to this value. * being limited to this value.
* *
* @see evas_object_unref() * @see evas_object_unref()
* @see evas_object_del() * @see evas_object_del()
* *
* @note This is a <b>very simple<b> reference counting mechanism! For * @note This is a <b>very simple</b> reference counting mechanism! For
* instance, Evas is not ready to check for pending references on a * instance, Evas is not ready to check for pending references on a
* canvas deletion, or things like that. This is useful on scenarios * canvas deletion, or things like that. This is useful on scenarios
* where, inside a code block, callbacks exist which would possibly * where, inside a code block, callbacks exist which would possibly
* delete an object we are operating on afterwards. Then, one would * delete an object we are operating on afterwards. Then, one would
* evas_object_ref() it on the beginning of the block and * evas_object_ref() it on the beginning of the block and
* evas_object_unref() it on the end. It would then be deleted at this * evas_object_unref() it on the end. It would then be deleted at this
* point, if it should be. * point, if it should be.
* *
* Example: * Example:
* @code * @code
skipping to change at line 3185 skipping to change at line 3277
* *
* @see evas_object_ref() (for an example) * @see evas_object_ref() (for an example)
* @see evas_object_del() * @see evas_object_del()
* *
* @ingroup Evas_Object_Group_Basic * @ingroup Evas_Object_Group_Basic
* @since 1.1.0 * @since 1.1.0
*/ */
EAPI void evas_object_unref (Evas_Object *obj) ; EAPI void evas_object_unref (Evas_Object *obj) ;
/** /**
* Get the object reference count.
*
* @param obj The given Evas object to query
*
* This gets the reference count for an object (normally 0 until it is
* referenced). Values of 1 or greater mean that someone is holding a
* reference to this object that needs to be unreffed before it can be
* deleted.
*
* @see evas_object_ref()
* @see evas_object_unref()
* @see evas_object_del()
*
* @ingroup Evas_Object_Group_Basic
* @since 1.2.0
*/
EAPI int evas_object_ref_get (const Evas_Object
*obj);
/**
* Marks the given Evas object for deletion (when Evas will free its * Marks the given Evas object for deletion (when Evas will free its
* memory). * memory).
* *
* @param obj The given Evas object. * @param obj The given Evas object.
* *
* This call will mark @p obj for deletion, which will take place * This call will mark @p obj for deletion, which will take place
* whenever it has no more references to it (see evas_object_ref() and * whenever it has no more references to it (see evas_object_ref() and
* evas_object_unref()). * evas_object_unref()).
* *
* At actual deletion time, which may or may not be just after this * At actual deletion time, which may or may not be just after this
skipping to change at line 3352 skipping to change at line 3463
*/ */
EAPI void evas_object_hide (Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI void evas_object_hide (Evas_Object *obj) EINA_ARG_NONNULL(1);
/** /**
* Retrieves whether or not the given Evas object is visible. * Retrieves whether or not the given Evas object is visible.
* *
* @param obj The given Evas object. * @param obj The given Evas object.
* @return @c EINA_TRUE if the object is visible, @c EINA_FALSE * @return @c EINA_TRUE if the object is visible, @c EINA_FALSE
* otherwise. * otherwise.
* *
* This retrieves an object's visibily as the one enforced by * This retrieves an object's visibility as the one enforced by
* evas_object_show() and evas_object_hide(). * evas_object_show() and evas_object_hide().
* *
* @note The value returned isn't, by any means, influenced by * @note The value returned isn't, by any means, influenced by
* clippers covering @obj, it being out of its canvas' viewport or * clippers covering @p obj, it being out of its canvas' viewport or
* stacked below other object. * stacked below other object.
* *
* @see evas_object_show() * @see evas_object_show()
* @see evas_object_hide() (for an example) * @see evas_object_hide() (for an example)
* *
* @ingroup Evas_Object_Group_Basic * @ingroup Evas_Object_Group_Basic
*/ */
EAPI Eina_Bool evas_object_visible_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Eina_Bool evas_object_visible_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Sets the general/main color of the given Evas object to the given * Sets the general/main color of the given Evas object to the given
* one. * one.
* *
* @param obj The given Evas object. * @param obj The given Evas object.
* @param r The red component of the given color. * @param r The red component of the given color.
* @param g The green component of the given color. * @param g The green component of the given color.
* @param b The blue component of the given color. * @param b The blue component of the given color.
* @param a The alpha component of the given color. * @param a The alpha component of the given color.
skipping to change at line 3399 skipping to change at line 3510
* @param g Pointer to an integer in which to store the green * @param g Pointer to an integer in which to store the green
* component of the color. * component of the color.
* @param b Pointer to an integer in which to store the blue component * @param b Pointer to an integer in which to store the blue component
* of the color. * of the color.
* @param a Pointer to an integer in which to store the alpha * @param a Pointer to an integer in which to store the alpha
* component of the color. * component of the color.
* *
* Retrieves the “main” color's RGB component (and alpha channel) * Retrieves the “main” color's RGB component (and alpha channel)
* values, <b>which range from 0 to 255</b>. For the alpha channel, * values, <b>which range from 0 to 255</b>. For the alpha channel,
* which defines the object's transparency level, 0 means totally * which defines the object's transparency level, 0 means totally
* trasparent, while 255 means opaque. These color values are * transparent, while 255 means opaque. These color values are
* premultiplied by the alpha value. * premultiplied by the alpha value.
* *
* Usually you’ll use this attribute for text and rectangle objects, * Usually you’ll use this attribute for text and rectangle objects,
* where the “main” color is their unique one. If set for objects * where the “main” color is their unique one. If set for objects
* which themselves have colors, like the images one, those colors get * which themselves have colors, like the images one, those colors get
* modulated by this one. * modulated by this one.
* *
* @note All newly created Evas rectangles get the default color * @note All newly created Evas rectangles get the default color
* values of <code>255 255 255 255</code> (opaque white). * values of <code>255 255 255 255</code> (opaque white).
* *
skipping to change at line 3435 skipping to change at line 3546
* Retrieves the Evas canvas that the given object lives on. * Retrieves the Evas canvas that the given object lives on.
* *
* @param obj The given Evas object. * @param obj The given Evas object.
* @return A pointer to the canvas where the object is on. * @return A pointer to the canvas where the object is on.
* *
* This function is most useful at code contexts where you need to * This function is most useful at code contexts where you need to
* operate on the canvas but have only the object pointer. * operate on the canvas but have only the object pointer.
* *
* @ingroup Evas_Object_Group_Basic * @ingroup Evas_Object_Group_Basic
*/ */
EAPI Evas *evas_object_evas_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas *evas_object_evas_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Retrieves the type of the given Evas object. * Retrieves the type of the given Evas object.
* *
* @param obj The given object. * @param obj The given object.
* @return The type of the object. * @return The type of the object.
* *
* For Evas' builtin types, the return strings will be one of: * For Evas' builtin types, the return strings will be one of:
* - <c>"rectangle"</c>, * - <c>"rectangle"</c>,
* - <c>"line"</c>, * - <c>"line"</c>,
skipping to change at line 3465 skipping to change at line 3576
* - <c>"Evas_Object_Box"</c>, for the box object and * - <c>"Evas_Object_Box"</c>, for the box object and
* - <c>"Evas_Object_Table"</c>, for the table object. * - <c>"Evas_Object_Table"</c>, for the table object.
* *
* Example: * Example:
* @dontinclude evas-object-manipulation.c * @dontinclude evas-object-manipulation.c
* @skip d.img = evas_object_image_filled_add(d.canvas); * @skip d.img = evas_object_image_filled_add(d.canvas);
* @until border on the * @until border on the
* *
* See the full @ref Example_Evas_Object_Manipulation "example". * See the full @ref Example_Evas_Object_Manipulation "example".
*/ */
EAPI const char *evas_object_type_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI const char *evas_object_type_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Raise @p obj to the top of its layer. * Raise @p obj to the top of its layer.
* *
* @param obj the object to raise * @param obj the object to raise
* *
* @p obj will, then, be the highest one in the layer it belongs * @p obj will, then, be the highest one in the layer it belongs
* to. Object on other layers won't get touched. * to. Object on other layers won't get touched.
* *
* @see evas_object_stack_above() * @see evas_object_stack_above()
skipping to change at line 3566 skipping to change at line 3677
* if none * if none
* *
* This function will traverse layers in its search, if there are * This function will traverse layers in its search, if there are
* objects on layers above the one @p obj is placed at. * objects on layers above the one @p obj is placed at.
* *
* @see evas_object_layer_get() * @see evas_object_layer_get()
* @see evas_object_layer_set() * @see evas_object_layer_set()
* @see evas_object_below_get() * @see evas_object_below_get()
* *
*/ */
EAPI Evas_Object *evas_object_above_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Object *evas_object_above_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Get the Evas object stacked right below @p obj * Get the Evas object stacked right below @p obj
* *
* @param obj an #Evas_Object * @param obj an #Evas_Object
* @return the #Evas_Object directly below @p obj, if any, or @c NULL, * @return the #Evas_Object directly below @p obj, if any, or @c NULL,
* if none * if none
* *
* This function will traverse layers in its search, if there are * This function will traverse layers in its search, if there are
* objects on layers below the one @p obj is placed at. * objects on layers below the one @p obj is placed at.
* *
* @see evas_object_layer_get() * @see evas_object_layer_get()
* @see evas_object_layer_set() * @see evas_object_layer_set()
* @see evas_object_below_get() * @see evas_object_below_get()
*/ */
EAPI Evas_Object *evas_object_below_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Object *evas_object_below_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* @} * @}
*/ */
/** /**
* @defgroup Evas_Object_Group_Events Object Events * @defgroup Evas_Object_Group_Events Object Events
* *
* Objects generate events when they are moved, resized, when their * Objects generate events when they are moved, resized, when their
* visibility change, when they are deleted and so on. These methods * visibility change, when they are deleted and so on. These methods
skipping to change at line 3607 skipping to change at line 3718
* *
* For each of those events, Evas provides a way for one to register * For each of those events, Evas provides a way for one to register
* callback functions to be issued just after they happen. * callback functions to be issued just after they happen.
* *
* The following figure illustrates some Evas (event) callbacks: * The following figure illustrates some Evas (event) callbacks:
* *
* @image html evas-callbacks.png * @image html evas-callbacks.png
* @image rtf evas-callbacks.png * @image rtf evas-callbacks.png
* @image latex evas-callbacks.eps * @image latex evas-callbacks.eps
* *
* Thees events have their values in the #Evas_Callback_Type * These events have their values in the #Evas_Callback_Type
* enumeration, which has also ones happening on the canvas level (se * enumeration, which has also ones happening on the canvas level (see
* #Evas_Canvas_Events). * @ref Evas_Canvas_Events ).
* *
* Examples on this group of functions can be found @ref * Examples on this group of functions can be found @ref
* Example_Evas_Stacking "here" and @ref Example_Evas_Events "here". * Example_Evas_Stacking "here" and @ref Example_Evas_Events "here".
* *
* @ingroup Evas_Object_Group * @ingroup Evas_Object_Group
*/ */
/** /**
* @addtogroup Evas_Object_Group_Events * @addtogroup Evas_Object_Group_Events
* @{ * @{
skipping to change at line 3838 skipping to change at line 3949
* @param obj Object to remove a callback from * @param obj Object to remove a callback from
* @param type The type of event that was triggering the callback * @param type The type of event that was triggering the callback
* @param func The function that was to be called when the event was trigge red * @param func The function that was to be called when the event was trigge red
* @return The data pointer that was to be passed to the callback * @return The data pointer that was to be passed to the callback
* *
* This function removes the most recently added callback from the * This function removes the most recently added callback from the
* object @p obj which was triggered by the event type @p type and was * object @p obj which was triggered by the event type @p type and was
* calling the function @p func when triggered. If the removal is * calling the function @p func when triggered. If the removal is
* successful it will also return the data pointer that was passed to * successful it will also return the data pointer that was passed to
* evas_object_event_callback_add() when the callback was added to the * evas_object_event_callback_add() when the callback was added to the
* object. If not successful NULL will be returned. * object. If not successful @c NULL will be returned.
* *
* Example: * Example:
* @code * @code
* extern Evas_Object *object; * extern Evas_Object *object;
* void *my_data; * void *my_data;
* void up_callback(void *data, Evas *e, Evas_Object *obj, void *event_info ); * void up_callback(void *data, Evas *e, Evas_Object *obj, void *event_info );
* *
* my_data = evas_object_event_callback_del(object, EVAS_CALLBACK_MOUSE_UP, up_callback); * my_data = evas_object_event_callback_del(object, EVAS_CALLBACK_MOUSE_UP, up_callback);
* @endcode * @endcode
*/ */
skipping to change at line 3925 skipping to change at line 4036
* @skip if (strcmp(ev->keyname, "p") == 0) * @skip if (strcmp(ev->keyname, "p") == 0)
* @until } * @until }
* *
* See the full @ref Example_Evas_Stacking "example". * See the full @ref Example_Evas_Stacking "example".
* *
* @see evas_object_pass_events_set() * @see evas_object_pass_events_set()
* @see evas_object_repeat_events_get() * @see evas_object_repeat_events_get()
* @see evas_object_propagate_events_get() * @see evas_object_propagate_events_get()
* @see evas_object_freeze_events_get() * @see evas_object_freeze_events_get()
*/ */
EAPI Eina_Bool evas_object_pass_events_get (const Evas_Objec t *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Eina_Bool evas_object_pass_events_get (const Evas_Objec t *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Set whether an Evas object is to repeat events. * Set whether an Evas object is to repeat events.
* *
* @param obj the Evas object to operate on * @param obj the Evas object to operate on
* @param repeat whether @p obj is to repeat events (@c EINA_TRUE) or not * @param repeat whether @p obj is to repeat events (@c EINA_TRUE) or not
* (@c EINA_FALSE) * (@c EINA_FALSE)
* *
* If @p repeat is @c EINA_TRUE, it will make events on @p obj to also * If @p repeat is @c EINA_TRUE, it will make events on @p obj to also
* be repeated for the @b next lower object in the objects' stack (see * be repeated for the @b next lower object in the objects' stack (see
skipping to change at line 3959 skipping to change at line 4070
* @see evas_object_pass_events_set() * @see evas_object_pass_events_set()
* @see evas_object_propagate_events_set() * @see evas_object_propagate_events_set()
* @see evas_object_freeze_events_set() * @see evas_object_freeze_events_set()
*/ */
EAPI void evas_object_repeat_events_set (Evas_Object *obj , Eina_Bool repeat) EINA_ARG_NONNULL(1); EAPI void evas_object_repeat_events_set (Evas_Object *obj , Eina_Bool repeat) EINA_ARG_NONNULL(1);
/** /**
* Determine whether an object is set to repeat events. * Determine whether an object is set to repeat events.
* *
* @param obj the given Evas object pointer * @param obj the given Evas object pointer
* @retrieve whether @p obj is set to repeat events (@c EINA_TRUE) * @return whether @p obj is set to repeat events (@c EINA_TRUE)
* or not (@c EINA_FALSE) * or not (@c EINA_FALSE)
* *
* @see evas_object_repeat_events_set() for an example * @see evas_object_repeat_events_set() for an example
* @see evas_object_pass_events_get() * @see evas_object_pass_events_get()
* @see evas_object_propagate_events_get() * @see evas_object_propagate_events_get()
* @see evas_object_freeze_events_get() * @see evas_object_freeze_events_get()
*/ */
EAPI Eina_Bool evas_object_repeat_events_get (const Evas_Objec t *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Eina_Bool evas_object_repeat_events_get (const Evas_Objec t *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Set whether events on a smart object's member should get propagated * Set whether events on a smart object's member should get propagated
* up to its parent. * up to its parent.
* *
* @param obj the smart object's child to operate on * @param obj the smart object's child to operate on
* @param prop whether to propagate events (@c EINA_TRUE) or not (@c * @param prop whether to propagate events (@c EINA_TRUE) or not
* EINA_FALSE) * (@c EINA_FALSE)
* *
* This function has @b no effect if @p obj is not a member of a smart * This function has @b no effect if @p obj is not a member of a smart
* object. * object.
* *
* If @p prop is @c EINA_TRUE, events occurring on this object will be * If @p prop is @c EINA_TRUE, events occurring on this object will be
* propagated on to the smart object of which @p obj is a member. If * propagated on to the smart object of which @p obj is a member. If
* @p prop is @c EINA_FALSE, events occurring on this object will @b * @p prop is @c EINA_FALSE, events occurring on this object will @b
* not be propagated on to the smart object of which @p obj is a * not be propagated on to the smart object of which @p obj is a
* member. The default value is @c EINA_TRUE. * member. The default value is @c EINA_TRUE.
* *
skipping to change at line 4005 skipping to change at line 4116
* *
* @param obj the given Evas object pointer * @param obj the given Evas object pointer
* @return whether @p obj is set to propagate events (@c EINA_TRUE) * @return whether @p obj is set to propagate events (@c EINA_TRUE)
* or not (@c EINA_FALSE) * or not (@c EINA_FALSE)
* *
* @see evas_object_propagate_events_set() * @see evas_object_propagate_events_set()
* @see evas_object_repeat_events_get() * @see evas_object_repeat_events_get()
* @see evas_object_pass_events_get() * @see evas_object_pass_events_get()
* @see evas_object_freeze_events_get() * @see evas_object_freeze_events_get()
*/ */
EAPI Eina_Bool evas_object_propagate_events_get (const Evas_Objec t *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Eina_Bool evas_object_propagate_events_get (const Evas_Objec t *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Set whether an Evas object is to freeze (discard) events. * Set whether an Evas object is to freeze (discard) events.
* *
* @param obj the Evas object to operate on * @param obj the Evas object to operate on
* @param pass whether @p obj is to freeze events (@c EINA_TRUE) or not * @param freeze pass whether @p obj is to freeze events (@c EINA_TRUE) or not
* (@c EINA_FALSE) * (@c EINA_FALSE)
* *
* If @p freeze is @c EINA_TRUE, it will make events on @p obj to be @b * If @p freeze is @c EINA_TRUE, it will make events on @p obj to be @b
* discarded. Unlike evas_object_pass_events_set(), events will not be * discarded. Unlike evas_object_pass_events_set(), events will not be
* passed to @b next lower object. This API can be used for blocking * passed to @b next lower object. This API can be used for blocking
* events while @p obj is on transiting. * events while @p obj is on transiting.
* *
* If @p freeze is @c EINA_FALSE, events will be processed on that * If @p freeze is @c EINA_FALSE, events will be processed on that
* object as normal. * object as normal.
* *
skipping to change at line 4043 skipping to change at line 4154
* @param obj the Evas object to get information from. * @param obj the Evas object to get information from.
* @return freeze whether @p obj is set to freeze events (@c EINA_TRUE) or * @return freeze whether @p obj is set to freeze events (@c EINA_TRUE) or
* not (@c EINA_FALSE) * not (@c EINA_FALSE)
* *
* @see evas_object_freeze_events_set() * @see evas_object_freeze_events_set()
* @see evas_object_pass_events_get() * @see evas_object_pass_events_get()
* @see evas_object_repeat_events_get() * @see evas_object_repeat_events_get()
* @see evas_object_propagate_events_get() * @see evas_object_propagate_events_get()
* @since 1.1.0 * @since 1.1.0
*/ */
EAPI Eina_Bool evas_object_freeze_events_get(const Evas_Object *obj ) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Eina_Bool evas_object_freeze_events_get(const Evas_Object *obj ) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* @} * @}
*/ */
/** /**
* @defgroup Evas_Object_Group_Map UV Mapping (Rotation, Perspective, 3D... ) * @defgroup Evas_Object_Group_Map UV Mapping (Rotation, Perspective, 3D... )
* *
* Evas allows different transformations to be applied to all kinds of * Evas allows different transformations to be applied to all kinds of
* objects. These are applied by means of UV mapping. * objects. These are applied by means of UV mapping.
* *
* With UV mapping, one maps points in the source object to a 3D space * With UV mapping, one maps points in the source object to a 3D space
* positioning at target. This allows rotation, perspective, scale and * positioning at target. This allows rotation, perspective, scale and
* lots of other effects, depending on the map that is used. * lots of other effects, depending on the map that is used.
* *
* Each map point may carry a multiplier color. If properly * Each map point may carry a multiplier color. If properly
* calculated, these can do shading effects on the object, producing * calculated, these can do shading effects on the object, producing
* 3D effects. * 3D effects.
* *
* As usual, Evas provides both the raw and easy to use methods. The * As usual, Evas provides both the raw and easy to use methods. The
* raw methods allow developer to create its maps somewhere else, * raw methods allow developers to create their maps somewhere else,
* maybe load them from some file format. The easy to use methods, * possibly loading them from some file format. The easy to use methods
* calculate the points given some high-level parameters, such as * calculate the points given some high-level parameters such as
* rotation angle, ambient light and so on. * rotation angle, ambient light, and so on.
* *
* @note applying mapping will reduce performance, so use with * @note applying mapping will reduce performance, so use with
* care. The impact on performance depends on engine in * care. The impact on performance depends on engine in
* use. Software is quite optimized, but not as fast as OpenGL. * use. Software is quite optimized, but not as fast as OpenGL.
* *
* @section sec-map-points Map points * @section sec-map-points Map points
* @subsection subsec-rotation Rotation * @subsection subsec-rotation Rotation
* *
* A map consists of a set of points, currently only four are supported. Ea ch * A map consists of a set of points, currently only four are supported. Ea ch
* of these points contains a set of canvas coordinates @c x and @c y that * of these points contains a set of canvas coordinates @c x and @c y that
skipping to change at line 4311 skipping to change at line 4422
* @image rtf map-light2.png * @image rtf map-light2.png
* @image latex map-light2.eps * @image latex map-light2.eps
* @note Same object facing away from the user * @note Same object facing away from the user
* *
* @section Image mapping * @section Image mapping
* *
* @image html map-uv-mapping-1.png * @image html map-uv-mapping-1.png
* @image rtf map-uv-mapping-1.png * @image rtf map-uv-mapping-1.png
* @image latex map-uv-mapping-1.eps * @image latex map-uv-mapping-1.eps
* *
* Images need some special handlign when mapped. Evas can easily take care * Images need some special handling when mapped. Evas can easily take care
* of objects and do almost anything with them, but it's completely oblivio us * of objects and do almost anything with them, but it's completely oblivio us
* to the content of images, so each point in the map needs to be told to w hat * to the content of images, so each point in the map needs to be told to w hat
* pixel in the source image it belongs. Failing to do may sometimes result * pixel in the source image it belongs. Failing to do may sometimes result
* in the expected behavior, or it may look like a partial work. * in the expected behavior, or it may look like a partial work.
* *
* The next image illustrates one possibility of a map being set to an imag e * The next image illustrates one possibility of a map being set to an imag e
* object, without setting the right UV mapping for each point. The objects * object, without setting the right UV mapping for each point. The objects
* themselves are mapped properly to their new geometry, but the image cont ent * themselves are mapped properly to their new geometry, but the image cont ent
* may not be displayed correctly within the mapped object. * may not be displayed correctly within the mapped object.
* *
skipping to change at line 4477 skipping to change at line 4588
* @param map new map to use * @param map new map to use
* *
* @see evas_map_new() * @see evas_map_new()
*/ */
EAPI void evas_object_map_set (Evas_Object *obj, const Evas_Map *map); EAPI void evas_object_map_set (Evas_Object *obj, const Evas_Map *map);
/** /**
* Get current object transformation map. * Get current object transformation map.
* *
* This returns the current internal map set on the indicated object. It is * This returns the current internal map set on the indicated object. It is
* intended for read-only acces and is only valid as long as the object is * intended for read-only access and is only valid as long as the object is
* not deleted or the map on the object is not changed. If you wish to modi fy * not deleted or the map on the object is not changed. If you wish to modi fy
* the map and set it back do the following: * the map and set it back do the following:
* *
* @code * @code
* const Evas_Map *m = evas_object_map_get(obj); * const Evas_Map *m = evas_object_map_get(obj);
* Evas_Map *m2 = evas_map_dup(m); * Evas_Map *m2 = evas_map_dup(m);
* evas_map_util_rotate(m2, 30.0, 0, 0); * evas_map_util_rotate(m2, 30.0, 0, 0);
* evas_object_map_set(obj); * evas_object_map_set(obj);
* evas_map_free(m2); * evas_map_free(m2);
* @endcode * @endcode
skipping to change at line 4582 skipping to change at line 4693
* *
* @see evas_map_point_color_set() * @see evas_map_point_color_set()
*/ */
EAPI void evas_map_util_points_color_set (Evas_ Map *m, int r, int g, int b, int a); EAPI void evas_map_util_points_color_set (Evas_ Map *m, int r, int g, int b, int a);
/** /**
* Change the map to apply the given rotation. * Change the map to apply the given rotation.
* *
* This rotates the indicated map's coordinates around the center coordinat e * This rotates the indicated map's coordinates around the center coordinat e
* given by @p cx and @p cy as the rotation center. The points will have th eir * given by @p cx and @p cy as the rotation center. The points will have th eir
* X and Y coordinates rotated clockwise by @p degrees degress (360.0 is a * X and Y coordinates rotated clockwise by @p degrees degrees (360.0 is a
* full rotation). Negative values for degrees will rotate counter-clockwis e * full rotation). Negative values for degrees will rotate counter-clockwis e
* by that amount. All coordinates are canvas global coordinates. * by that amount. All coordinates are canvas global coordinates.
* *
* @param m map to change. * @param m map to change.
* @param degrees amount of degrees from 0.0 to 360.0 to rotate. * @param degrees amount of degrees from 0.0 to 360.0 to rotate.
* @param cx rotation's center horizontal position. * @param cx rotation's center horizontal position.
* @param cy rotation's center vertical position. * @param cy rotation's center vertical position.
* *
* @see evas_map_point_coord_set() * @see evas_map_point_coord_set()
* @see evas_map_util_zoom() * @see evas_map_util_zoom()
*/ */
EAPI void evas_map_util_rotate (Evas_ Map *m, double degrees, Evas_Coord cx, Evas_Coord cy); EAPI void evas_map_util_rotate (Evas_ Map *m, double degrees, Evas_Coord cx, Evas_Coord cy);
/** /**
* Change the map to apply the given zooming. * Change the map to apply the given zooming.
* *
* Like evas_map_util_rotate(), this zooms the points of the map from a cen ter * Like evas_map_util_rotate(), this zooms the points of the map from a cen ter
* point. That center is defined by @p cx and @p cy. The @p zoomx and @p zo omy * point. That center is defined by @p cx and @p cy. The @p zoomx and @p zo omy
* parameters specify how much to zoom in the X and Y direction respectivel y. * parameters specify how much to zoom in the X and Y direction respectivel y.
* A value of 1.0 means "don't zoom". 2.0 means "dobule the size". 0.5 is * A value of 1.0 means "don't zoom". 2.0 means "double the size". 0.5 is
* "half the size" etc. All coordinates are canvas global coordinates. * "half the size" etc. All coordinates are canvas global coordinates.
* *
* @param m map to change. * @param m map to change.
* @param zoomx horizontal zoom to use. * @param zoomx horizontal zoom to use.
* @param zoomy vertical zoom to use. * @param zoomy vertical zoom to use.
* @param cx zooming center horizontal position. * @param cx zooming center horizontal position.
* @param cy zooming center vertical position. * @param cy zooming center vertical position.
* *
* @see evas_map_point_coord_set() * @see evas_map_point_coord_set()
* @see evas_map_util_rotate() * @see evas_map_util_rotate()
skipping to change at line 4627 skipping to change at line 4738
* Rotate the map around 3 axes in 3D * Rotate the map around 3 axes in 3D
* *
* This will rotate not just around the "Z" axis as in evas_map_util_rotate () * This will rotate not just around the "Z" axis as in evas_map_util_rotate ()
* (which is a convenience call for those only wanting 2D). This will rotat e * (which is a convenience call for those only wanting 2D). This will rotat e
* around the X, Y and Z axes. The Z axis points "into" the screen with low * around the X, Y and Z axes. The Z axis points "into" the screen with low
* values at the screen and higher values further away. The X axis runs fro m * values at the screen and higher values further away. The X axis runs fro m
* left to right on the screen and the Y axis from top to bottom. Like with * left to right on the screen and the Y axis from top to bottom. Like with
* evas_map_util_rotate() you provide a center point to rotate around (in 3 D). * evas_map_util_rotate() you provide a center point to rotate around (in 3 D).
* *
* @param m map to change. * @param m map to change.
* @param dx amount of degrees from 0.0 to 360.0 to rotate arount X axis. * @param dx amount of degrees from 0.0 to 360.0 to rotate around X axis.
* @param dy amount of degrees from 0.0 to 360.0 to rotate arount Y axis. * @param dy amount of degrees from 0.0 to 360.0 to rotate around Y axis.
* @param dz amount of degrees from 0.0 to 360.0 to rotate arount Z axis. * @param dz amount of degrees from 0.0 to 360.0 to rotate around Z axis.
* @param cx rotation's center horizontal position. * @param cx rotation's center horizontal position.
* @param cy rotation's center vertical position. * @param cy rotation's center vertical position.
* @param cz rotation's center vertical position. * @param cz rotation's center vertical position.
*/ */
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); 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);
/** /**
* Perform lighting calculations on the given Map * Perform lighting calculations on the given Map
* *
* This is used to apply lighting calculations (from a single light source) * This is used to apply lighting calculations (from a single light source)
skipping to change at line 4698 skipping to change at line 4809
* @param ab ambient color blue value (0 - 255) * @param ab ambient color blue value (0 - 255)
*/ */
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); 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);
/** /**
* Apply a perspective transform to the map * Apply a perspective transform to the map
* *
* This applies a given perspective (3D) to the map coordinates. X, Y and Z * This applies a given perspective (3D) to the map coordinates. X, Y and Z
* values are used. The px and py points specify the "infinite distance" po int * values are used. The px and py points specify the "infinite distance" po int
* in the 3D conversion (where all lines converge to like when artists draw * in the 3D conversion (where all lines converge to like when artists draw
* 3D by hand). The @p z0 value specifis the z value at which there is a 1: * 3D by hand). The @p z0 value specifies the z value at which there is a 1
1 :1
* mapping between spatial coorinates and screen coordinates. Any points * mapping between spatial coordinates and screen coordinates. Any points
* on this z value will not have their X and Y values modified in the trans form. * on this z value will not have their X and Y values modified in the trans form.
* Those further away (Z value higher) will shrink into the distance, and * Those further away (Z value higher) will shrink into the distance, and
* those less than this value will expand and become bigger. The @p foc val ue * those less than this value will expand and become bigger. The @p foc val ue
* determines the "focal length" of the camera. This is in reality the dist ance * determines the "focal length" of the camera. This is in reality the dist ance
* between the camera lens plane itself (at or closer than this rendering * between the camera lens plane itself (at or closer than this rendering
* results are undefined) and the "z0" z value. This allows for some "depth " * results are undefined) and the "z0" z value. This allows for some "depth "
* control and @p foc must be greater than 0. * control and @p foc must be greater than 0.
* *
* @param m map to change. * @param m map to change.
* @param px The pespective distance X coordinate * @param px The perspective distance X coordinate
* @param py The pespective distance Y coordinate * @param py The perspective distance Y coordinate
* @param z0 The "0" z plane value * @param z0 The "0" z plane value
* @param foc The focal distance * @param foc The focal distance
*/ */
EAPI void evas_map_util_3d_perspective (Evas_ Map *m, Evas_Coord px, Evas_Coord py, Evas_Coord z0, Evas_Coord foc); EAPI void evas_map_util_3d_perspective (Evas_ Map *m, Evas_Coord px, Evas_Coord py, Evas_Coord z0, Evas_Coord foc);
/** /**
* Get the clockwise state of a map * Get the clockwise state of a map
* *
* This determines if the output points (X and Y. Z is not used) are * This determines if the output points (X and Y. Z is not used) are
* clockwise or anti-clockwise. This can be used for "back-face culling". T his * clockwise or anti-clockwise. This can be used for "back-face culling". T his
skipping to change at line 4788 skipping to change at line 4899
* useful if you know the object and/or all sub-objects is 100% solid. * useful if you know the object and/or all sub-objects is 100% solid.
* *
* @param m map to modify. Must not be NULL. * @param m map to modify. Must not be NULL.
* @param enabled enable or disable alpha map rendering * @param enabled enable or disable alpha map rendering
*/ */
EAPI void evas_map_alpha_set (Evas_Map *m, Eina _Bool enabled); EAPI void evas_map_alpha_set (Evas_Map *m, Eina _Bool enabled);
/** /**
* get the alpha flag for map rendering * get the alpha flag for map rendering
* *
* This gets the alph flag for map rendering. * This gets the alpha flag for map rendering.
* *
* @param m map to get the alpha from. Must not be NULL. * @param m map to get the alpha from. Must not be NULL.
*/ */
EAPI Eina_Bool evas_map_alpha_get (const Evas_Map *m ); EAPI Eina_Bool evas_map_alpha_get (const Evas_Map *m );
/** /**
* Copy a previously allocated map. * Copy a previously allocated map.
* *
* This makes a duplicate of the @p m object and returns it. * This makes a duplicate of the @p m object and returns it.
* *
skipping to change at line 4829 skipping to change at line 4940
* @param m map to get size. * @param m map to get size.
* @return -1 on error, points otherwise. * @return -1 on error, points otherwise.
*/ */
EAPI int evas_map_count_get (const Evas_Map *m) EINA_CONST; EAPI int evas_map_count_get (const Evas_Map *m) EINA_CONST;
/** /**
* Change the map point's coordinate. * Change the map point's coordinate.
* *
* This sets the fixed point's coordinate in the map. Note that points * This sets the fixed point's coordinate in the map. Note that points
* describe the outline of a quadrangle and are ordered either clockwise * describe the outline of a quadrangle and are ordered either clockwise
* or anit-clock-wise. It is suggested to keep your quadrangles concave and * or anti-clock-wise. It is suggested to keep your quadrangles concave and
* non-complex, though these polygon modes may work, they may not render * non-complex, though these polygon modes may work, they may not render
* a desired set of output. The quadrangle will use points 0 and 1 , 1 and 2, * a desired set of output. The quadrangle will use points 0 and 1 , 1 and 2,
* 2 and 3, and 3 and 0 to describe the edges of the quandrangle. * 2 and 3, and 3 and 0 to describe the edges of the quadrangle.
* *
* The X and Y and Z coordinates are in canvas units. Z is optional and may * The X and Y and Z coordinates are in canvas units. Z is optional and may
* or may not be honored in drawing. Z is a hint and does not affect the * or may not be honored in drawing. Z is a hint and does not affect the
* X and Y rendered coordinates. It may be used for calculating fills with * X and Y rendered coordinates. It may be used for calculating fills with
* perspective correct rendering. * perspective correct rendering.
* *
* Remember all coordinates are canvas global ones like with move and reize * Remember all coordinates are canvas global ones like with move and resiz e
* in evas. * in evas.
* *
* @param m map to change point. Must not be @c NULL. * @param m map to change point. Must not be @c NULL.
* @param idx index of point to change. Must be smaller than map size. * @param idx index of point to change. Must be smaller than map size.
* @param x Point X Coordinate * @param x Point X Coordinate
* @param y Point Y Coordinate * @param y Point Y Coordinate
* @param z Point Z Coordinate hint (pre-perspective transform) * @param z Point Z Coordinate hint (pre-perspective transform)
* *
* @see evas_map_util_rotate() * @see evas_map_util_rotate()
* @see evas_map_util_zoom() * @see evas_map_util_zoom()
skipping to change at line 5005 skipping to change at line 5116
* should be used whenever appropriate. * should be used whenever appropriate.
* *
* Values @c 0 will be treated as unset hint components, when queried * Values @c 0 will be treated as unset hint components, when queried
* by managers. * by managers.
* *
* Example: * Example:
* @dontinclude evas-hints.c * @dontinclude evas-hints.c
* @skip evas_object_size_hint_min_set * @skip evas_object_size_hint_min_set
* @until return * @until return
* *
* In this example the minimum size hints change de behavior of an * In this example the minimum size hints change the behavior of an
* Evas box when layouting its children. See the full @ref * Evas box when layouting its children. See the full @ref
* Example_Evas_Size_Hints "example". * Example_Evas_Size_Hints "example".
* *
* @see evas_object_size_hint_min_get() * @see evas_object_size_hint_min_get()
*/ */
EAPI void evas_object_size_hint_min_set (Evas_Object *obj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1); EAPI void evas_object_size_hint_min_set (Evas_Object *obj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
/** /**
* Retrieves the hints for an object's maximum size. * Retrieves the hints for an object's maximum size.
* *
skipping to change at line 5049 skipping to change at line 5160
* should be used whenever appropriate. * should be used whenever appropriate.
* *
* Values @c -1 will be treated as unset hint components, when queried * Values @c -1 will be treated as unset hint components, when queried
* by managers. * by managers.
* *
* Example: * Example:
* @dontinclude evas-hints.c * @dontinclude evas-hints.c
* @skip evas_object_size_hint_max_set * @skip evas_object_size_hint_max_set
* @until return * @until return
* *
* In this example the maximum size hints change de behavior of an * In this example the maximum size hints change the behavior of an
* Evas box when layouting its children. See the full @ref * Evas box when layouting its children. See the full @ref
* Example_Evas_Size_Hints "example". * Example_Evas_Size_Hints "example".
* *
* @see evas_object_size_hint_max_get() * @see evas_object_size_hint_max_get()
*/ */
EAPI void evas_object_size_hint_max_set (Evas_Object *obj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1); EAPI void evas_object_size_hint_max_set (Evas_Object *obj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
/** /**
* Retrieves the hints for an object's optimum size. * Retrieves the hints for an object's optimum size.
* *
skipping to change at line 5224 skipping to change at line 5335
* @image latex alignment-hints.eps * @image latex alignment-hints.eps
* *
* This is not a size enforcement in any way, it's just a hint that * This is not a size enforcement in any way, it's just a hint that
* should be used whenever appropriate. * should be used whenever appropriate.
* *
* Example: * Example:
* @dontinclude evas-hints.c * @dontinclude evas-hints.c
* @skip evas_object_size_hint_align_set * @skip evas_object_size_hint_align_set
* @until return * @until return
* *
* In this example the alignment hints change de behavior of an Evas * In this example the alignment hints change the behavior of an Evas
* box when layouting its children. See the full @ref * box when layouting its children. See the full @ref
* Example_Evas_Size_Hints "example". * Example_Evas_Size_Hints "example".
* *
* @see evas_object_size_hint_align_get() * @see evas_object_size_hint_align_get()
* @see evas_object_size_hint_max_set() * @see evas_object_size_hint_max_set()
* @see evas_object_size_hint_padding_set() * @see evas_object_size_hint_padding_set()
*/ */
EAPI void evas_object_size_hint_align_set (Evas_Object *obj, double x, double y) EINA_ARG_NONNULL(1); EAPI void evas_object_size_hint_align_set (Evas_Object *obj, double x, double y) EINA_ARG_NONNULL(1);
/** /**
skipping to change at line 5283 skipping to change at line 5394
* to, after @b normalizing the weights of its children (with weight * to, after @b normalizing the weights of its children (with weight
* hints), distribute the space it has to layout them by those factors * hints), distribute the space it has to layout them by those factors
* -- most weighted children get larger in this process than the least * -- most weighted children get larger in this process than the least
* ones. * ones.
* *
* Example: * Example:
* @dontinclude evas-hints.c * @dontinclude evas-hints.c
* @skip evas_object_size_hint_weight_set * @skip evas_object_size_hint_weight_set
* @until return * @until return
* *
* In this example the weight hints change de behavior of an Evas box * In this example the weight hints change the behavior of an Evas box
* when layouting its children. See the full @ref * when layouting its children. See the full @ref
* Example_Evas_Size_Hints "example". * Example_Evas_Size_Hints "example".
* *
* @see evas_object_size_hint_weight_get() for more information * @see evas_object_size_hint_weight_get() for more information
*/ */
EAPI void evas_object_size_hint_weight_set (Evas_Object *obj, double x, double y) EINA_ARG_NONNULL(1); EAPI void evas_object_size_hint_weight_set (Evas_Object *obj, double x, double y) EINA_ARG_NONNULL(1);
/** /**
* Retrieves the hints for an object's padding space. * Retrieves the hints for an object's padding space.
* *
skipping to change at line 5319 skipping to change at line 5430
* should be used whenever appropriate. * should be used whenever appropriate.
* *
* @note Use @c NULL pointers on the hint components you're not * @note Use @c NULL pointers on the hint components you're not
* interested in: they'll be ignored by the function. * interested in: they'll be ignored by the function.
* *
* Example: * Example:
* @dontinclude evas-hints.c * @dontinclude evas-hints.c
* @skip evas_object_size_hint_padding_set * @skip evas_object_size_hint_padding_set
* @until return * @until return
* *
* In this example the padding hints change de behavior of an Evas box * In this example the padding hints change the behavior of an Evas box
* when layouting its children. See the full @ref * when layouting its children. See the full @ref
* Example_Evas_Size_Hints "example". * Example_Evas_Size_Hints "example".
* *
* @see evas_object_size_hint_padding_set() * @see evas_object_size_hint_padding_set()
*/ */
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); 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);
/** /**
* Sets the hints for an object's padding space. * Sets the hints for an object's padding space.
* *
skipping to change at line 5369 skipping to change at line 5480
/** /**
* @addtogroup Evas_Object_Group_Extras * @addtogroup Evas_Object_Group_Extras
* @{ * @{
*/ */
/** /**
* Set an attached data pointer to an object with a given string key. * Set an attached data pointer to an object with a given string key.
* *
* @param obj The object to attach the data pointer to * @param obj The object to attach the data pointer to
* @param key The string key for the data to access it * @param key The string key for the data to access it
* @param data The ponter to the data to be attached * @param data The pointer to the data to be attached
* *
* This attaches the pointer @p data to the object @p obj, given the * This attaches the pointer @p data to the object @p obj, given the
* access string @p key. This pointer will stay "hooked" to the object * access string @p key. This pointer will stay "hooked" to the object
* until a new pointer with the same string key is attached with * until a new pointer with the same string key is attached with
* evas_object_data_set() or it is deleted with * evas_object_data_set() or it is deleted with
* evas_object_data_del(). On deletion of the object @p obj, the * evas_object_data_del(). On deletion of the object @p obj, the
* pointers will not be accessible from the object anymore. * pointers will not be accessible from the object anymore.
* *
* You can find the pointer attached under a string key using * You can find the pointer attached under a string key using
* evas_object_data_get(). It is the job of the calling application to * evas_object_data_get(). It is the job of the calling application to
skipping to change at line 5433 skipping to change at line 5544
* *
* @code * @code
* int *my_data; * int *my_data;
* extern Evas_Object *obj; * extern Evas_Object *obj;
* *
* my_data = evas_object_data_get(obj, "name_of_my_data"); * my_data = evas_object_data_get(obj, "name_of_my_data");
* if (my_data) printf("Data stored was %p\n", my_data); * if (my_data) printf("Data stored was %p\n", my_data);
* else printf("No data was stored on the object\n"); * else printf("No data was stored on the object\n");
* @endcode * @endcode
*/ */
EAPI void *evas_object_data_get (const Evas _Object *obj, const char *key) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; EAPI void *evas_object_data_get (const Evas _Object *obj, const char *key) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2);
/** /**
* Delete an attached data pointer from an object. * Delete an attached data pointer from an object.
* *
* @param obj The object to delete the data pointer from * @param obj The object to delete the data pointer from
* @param key The string key the data was stored under * @param key The string key the data was stored under
* @return The original data pointer stored at @p key on @p obj * @return The original data pointer stored at @p key on @p obj
* *
* This will remove the stored data pointer from @p obj stored under * This will remove the stored data pointer from @p obj stored under
* @p key and return this same pointer, if actually there was data * @p key and return this same pointer, if actually there was data
skipping to change at line 5486 skipping to change at line 5597
* @ingroup Evas_Object_Group_Extras * @ingroup Evas_Object_Group_Extras
*/ */
EAPI void evas_object_pointer_mode_set (Evas_Objec t *obj, Evas_Object_Pointer_Mode setting) EINA_ARG_NONNULL(1); EAPI void evas_object_pointer_mode_set (Evas_Objec t *obj, Evas_Object_Pointer_Mode setting) EINA_ARG_NONNULL(1);
/** /**
* Determine how pointer will behave. * Determine how pointer will behave.
* @param obj * @param obj
* @return pointer behavior. * @return pointer behavior.
* @ingroup Evas_Object_Group_Extras * @ingroup Evas_Object_Group_Extras
*/ */
EAPI Evas_Object_Pointer_Mode evas_object_pointer_mode_get (const Evas _Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Object_Pointer_Mode evas_object_pointer_mode_get (const Evas _Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Sets whether or not the given Evas object is to be drawn anti-aliased. * Sets whether or not the given Evas object is to be drawn anti-aliased.
* *
* @param obj The given Evas object. * @param obj The given Evas object.
* @param anti_alias 1 if the object is to be anti_aliased, 0 otherwise. * @param antialias 1 if the object is to be anti_aliased, 0 otherwise.
* @ingroup Evas_Object_Group_Extras * @ingroup Evas_Object_Group_Extras
*/ */
EAPI void evas_object_anti_alias_set (Evas_Objec t *obj, Eina_Bool antialias) EINA_ARG_NONNULL(1); EAPI void evas_object_anti_alias_set (Evas_Objec t *obj, Eina_Bool antialias) EINA_ARG_NONNULL(1);
/** /**
* Retrieves whether or not the given Evas object is to be drawn anti_alias ed. * Retrieves whether or not the given Evas object is to be drawn anti_alias ed.
* @param obj The given Evas object. * @param obj The given Evas object.
* @return @c 1 if the object is to be anti_aliased. @c 0 otherwise. * @return @c 1 if the object is to be anti_aliased. @c 0 otherwise.
* @ingroup Evas_Object_Group_Extras * @ingroup Evas_Object_Group_Extras
*/ */
EAPI Eina_Bool evas_object_anti_alias_get (const Evas _Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Eina_Bool evas_object_anti_alias_get (const Evas _Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Sets the scaling factor for an Evas object. Does not affect all * Sets the scaling factor for an Evas object. Does not affect all
* objects. * objects.
* *
* @param obj The given Evas object. * @param obj The given Evas object.
* @param scale The scaling factor. <c>1.0</c> means no scaling, * @param scale The scaling factor. <c>1.0</c> means no scaling,
* default size. * default size.
* *
* This will multiply the object's dimension by the given factor, thus * This will multiply the object's dimension by the given factor, thus
skipping to change at line 5536 skipping to change at line 5647
/** /**
* Retrieves the scaling factor for the given Evas object. * Retrieves the scaling factor for the given Evas object.
* *
* @param obj The given Evas object. * @param obj The given Evas object.
* @return The scaling factor. * @return The scaling factor.
* *
* @ingroup Evas_Object_Group_Extras * @ingroup Evas_Object_Group_Extras
* *
* @see evas_object_scale_set() * @see evas_object_scale_set()
*/ */
EAPI double evas_object_scale_get (const Evas _Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI double evas_object_scale_get (const Evas _Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Sets the render_op to be used for rendering the Evas object. * Sets the render_op to be used for rendering the Evas object.
* @param obj The given Evas object. * @param obj The given Evas object.
* @param render_op one of the Evas_Render_Op values. * @param op one of the Evas_Render_Op values.
* @ingroup Evas_Object_Group_Extras * @ingroup Evas_Object_Group_Extras
*/ */
EAPI void evas_object_render_op_set (Evas_Objec t *obj, Evas_Render_Op op) EINA_ARG_NONNULL(1); EAPI void evas_object_render_op_set (Evas_Objec t *obj, Evas_Render_Op op) EINA_ARG_NONNULL(1);
/** /**
* Retrieves the current value of the operation used for rendering the Evas object. * Retrieves the current value of the operation used for rendering the Evas object.
* @param obj The given Evas object. * @param obj The given Evas object.
* @return one of the enumerated values in Evas_Render_Op. * @return one of the enumerated values in Evas_Render_Op.
* @ingroup Evas_Object_Group_Extras * @ingroup Evas_Object_Group_Extras
*/ */
EAPI Evas_Render_Op evas_object_render_op_get (const Evas _Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Render_Op evas_object_render_op_get (const Evas _Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Set whether to use precise (usually expensive) point collision * Set whether to use precise (usually expensive) point collision
* detection for a given Evas object. * detection for a given Evas object.
* *
* @param obj The given object. * @param obj The given object.
* @param precise whether to use precise point collision detection or * @param precise Whether to use precise point collision detection or
* not The default value is false. * not. The default value is false.
* *
* Use this function to make Evas treat objects' transparent areas as * Use this function to make Evas treat objects' transparent areas as
* @b not belonging to it with regard to mouse pointer events. By * @b not belonging to it with regard to mouse pointer events. By
* default, all of the object's boundary rectangle will be taken in * default, all of the object's boundary rectangle will be taken in
* account for them. * account for them.
* *
* @warning By using precise point collision detection you'll be * @warning By using precise point collision detection you'll be
* making Evas more resource intensive. * making Evas more resource intensive.
* *
* Example code follows. * Example code follows.
skipping to change at line 5594 skipping to change at line 5705
* detection. * detection.
* *
* @param obj The given object. * @param obj The given object.
* @return whether @p obj is set to use precise point collision * @return whether @p obj is set to use precise point collision
* detection or not The default value is false. * detection or not The default value is false.
* *
* @see evas_object_precise_is_inside_set() for an example * @see evas_object_precise_is_inside_set() for an example
* *
* @ingroup Evas_Object_Group_Extras * @ingroup Evas_Object_Group_Extras
*/ */
EAPI Eina_Bool evas_object_precise_is_inside_get(const E vas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Eina_Bool evas_object_precise_is_inside_get(const E vas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Set a hint flag on the given Evas object that it's used as a "static * Set a hint flag on the given Evas object that it's used as a "static
* clipper". * clipper".
* *
* @param obj The given object. * @param obj The given object.
* @param is_static_clip @c EINA_TRUE if it's to be used as a static * @param is_static_clip @c EINA_TRUE if it's to be used as a static
* clipper, @c EINA_FALSE otherwise * clipper, @c EINA_FALSE otherwise.
* *
* This is a hint to Evas that this object is used as a big static * This is a hint to Evas that this object is used as a big static
* clipper and shouldn't be moved with children and otherwise * clipper and shouldn't be moved with children and otherwise
* considered specially. The default value for new objects is @c * considered specially. The default value for new objects is
* EINA_FALSE. * @c EINA_FALSE.
* *
* @see evas_object_static_clip_get() * @see evas_object_static_clip_get()
* *
* @ingroup Evas_Object_Group_Extras * @ingroup Evas_Object_Group_Extras
*/ */
EAPI void evas_object_static_clip_set (Evas_Ob ject *obj, Eina_Bool is_static_clip) EINA_ARG_NONNULL(1); EAPI void evas_object_static_clip_set (Evas_Ob ject *obj, Eina_Bool is_static_clip) EINA_ARG_NONNULL(1);
/** /**
* Get the "static clipper" hint flag for a given Evas object. * Get the "static clipper" hint flag for a given Evas object.
* *
* @param obj The given object. * @param obj The given object.
* @returrn @c EINA_TRUE if it's set as a static clipper, @c * @return @c EINA_TRUE if it's set as a static clipper,
* EINA_FALSE otherwise * @c EINA_FALSE otherwise.
* *
* @see evas_object_static_clip_set() for more details * @see evas_object_static_clip_set() for more details
* *
* @ingroup Evas_Object_Group_Extras * @ingroup Evas_Object_Group_Extras
*/ */
EAPI Eina_Bool evas_object_static_clip_get (const E vas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Eina_Bool evas_object_static_clip_get (const E vas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* @} * @}
*/ */
/** /**
* @defgroup Evas_Object_Group_Find Finding Objects * @defgroup Evas_Object_Group_Find Finding Objects
* *
* Functions that allows finding objects by their position, name or * Functions that allows finding objects by their position, name or
* other properties. * other properties.
skipping to change at line 5683 skipping to change at line 5794
* @until evas_object_focus_set(d.bg, EINA_TRUE); * @until evas_object_focus_set(d.bg, EINA_TRUE);
* @dontinclude evas-events.c * @dontinclude evas-events.c
* @skip called when our rectangle gets focus * @skip called when our rectangle gets focus
* @until } * @until }
* *
* In this example the @c event_info is exactly a pointer to that * In this example the @c event_info is exactly a pointer to that
* focused rectangle. See the full @ref Example_Evas_Events "example". * focused rectangle. See the full @ref Example_Evas_Events "example".
* *
* @ingroup Evas_Object_Group_Find * @ingroup Evas_Object_Group_Find
*/ */
EAPI Evas_Object *evas_focus_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Object *evas_focus_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Retrieves the object on the given evas with the given name. * Retrieves the object on the given evas with the given name.
* @param e The given evas. * @param e The given evas.
* @param name The given name. * @param name The given name.
* @return If successful, the Evas object with the given name. Otherwise, * @return If successful, the Evas object with the given name. Otherwise,
* @c NULL. * @c NULL.
*
* This looks for the evas object given a name by evas_object_name_set(). I
f
* the name is not unique canvas-wide, then which one of the many objects
* with that name is returned is undefined, so only use this if you can ens
ure
* the object name is unique.
*
* @ingroup Evas_Object_Group_Find * @ingroup Evas_Object_Group_Find
*/ */
EAPI Evas_Object *evas_object_name_find (const Evas *e, co EAPI Evas_Object *evas_object_name_find (const Evas *e, co
nst char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; nst char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/**
* Retrieves the object from children of the given object with the given na
me.
* @param obj The parent (smart) object whose children to search.
* @param name The given name.
* @param recurse Set to the number of child levels to recurse (0 == don'
t recurse, 1 == only look at the children of @p obj or their immediate chil
dren, but no further etc.).
* @return If successful, the Evas object with the given name. Otherwise,
* @c NULL.
*
* This looks for the evas object given a name by evas_object_name_set(), b
ut
* it ONLY looks at the children of the object *p obj, and will only recurs
e
* into those children if @p recurse is greater than 0. If the name is not
* unique within immediate children (or the whole child tree) then it is no
t
* defined which child object will be returned. If @p recurse is set to -1
then
* it will recurse without limit.
*
* @since 1.2
*
* @ingroup Evas_Object_Group_Find
*/
EAPI Evas_Object *evas_object_name_child_find (const Evas_Objec
t *obj, const char *name, int recurse) EINA_WARN_UNUSED_RESULT EINA_ARG_NON
NULL(1);
/** /**
* Retrieve the Evas object stacked at the top of a given position in * Retrieve the Evas object stacked at the top of a given position in
* a canvas * a canvas
* *
* @param e A handle to the canvas. * @param e A handle to the canvas.
* @param x The horizontal coordinate of the position * @param x The horizontal coordinate of the position
* @param y The vertical coordinate of the position * @param y The vertical coordinate of the position
* @param include_pass_events_objects Boolean flag to include or not * @param include_pass_events_objects Boolean flag to include or not
* objects which pass events in this calculation * objects which pass events in this calculation
skipping to change at line 5718 skipping to change at line 5856
* *
* This function will traverse all the layers of the given canvas, * This function will traverse all the layers of the given canvas,
* from top to bottom, querying for objects with areas covering the * from top to bottom, querying for objects with areas covering the
* given position. The user can remove from from the query * given position. The user can remove from from the query
* objects which are hidden and/or which are set to pass events. * objects which are hidden and/or which are set to pass events.
* *
* @warning This function will @b skip objects parented by smart * @warning This function will @b skip objects parented by smart
* objects, acting only on the ones at the "top level", with regard to * objects, acting only on the ones at the "top level", with regard to
* object parenting. * object parenting.
*/ */
EAPI Evas_Object *evas_object_top_at_xy_get (const Evas *e, Ev as_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_PU RE; EAPI Evas_Object *evas_object_top_at_xy_get (const Evas *e, Ev as_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Retrieve the Evas object stacked at the top at the position of the * Retrieve the Evas object stacked at the top at the position of the
* mouse cursor, over a given canvas * mouse cursor, over a given canvas
* *
* @param e A handle to the canvas. * @param e A handle to the canvas.
* @return The Evas object that is over all other objects at the mouse * @return The Evas object that is over all other objects at the mouse
* pointer's position * pointer's position
* *
* This function will traverse all the layers of the given canvas, * This function will traverse all the layers of the given canvas,
* from top to bottom, querying for objects with areas covering the * from top to bottom, querying for objects with areas covering the
* mouse pointer's position, over @p e. * mouse pointer's position, over @p e.
* *
* @warning This function will @b skip objects parented by smart * @warning This function will @b skip objects parented by smart
* objects, acting only on the ones at the "top level", with regard to * objects, acting only on the ones at the "top level", with regard to
* object parenting. * object parenting.
*/ */
EAPI Evas_Object *evas_object_top_at_pointer_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Object *evas_object_top_at_pointer_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Retrieve the Evas object stacked at the top of a given rectangular * Retrieve the Evas object stacked at the top of a given rectangular
* region in a canvas * region in a canvas
* *
* @param e A handle to the canvas. * @param e A handle to the canvas.
* @param x The top left corner's horizontal coordinate for the * @param x The top left corner's horizontal coordinate for the
* rectangular region * rectangular region
* @param y The top left corner's vertical coordinate for the * @param y The top left corner's vertical coordinate for the
* rectangular region * rectangular region
skipping to change at line 5766 skipping to change at line 5904
* This function will traverse all the layers of the given canvas, * This function will traverse all the layers of the given canvas,
* from top to bottom, querying for objects with areas overlapping * from top to bottom, querying for objects with areas overlapping
* with the given rectangular region inside @p e. The user can remove * with the given rectangular region inside @p e. The user can remove
* from the query objects which are hidden and/or which are set to * from the query objects which are hidden and/or which are set to
* pass events. * pass events.
* *
* @warning This function will @b skip objects parented by smart * @warning This function will @b skip objects parented by smart
* objects, acting only on the ones at the "top level", with regard to * objects, acting only on the ones at the "top level", with regard to
* object parenting. * object parenting.
*/ */
EAPI Evas_Object *evas_object_top_in_rectangle_get (const Evas *e, Ev as_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool include_pas s_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Object *evas_object_top_in_rectangle_get (const Evas *e, Ev as_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool include_pas s_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Retrieve a list of Evas objects lying over a given position in * Retrieve a list of Evas objects lying over a given position in
* a canvas * a canvas
* *
* @param e A handle to the canvas. * @param e A handle to the canvas.
* @param x The horizontal coordinate of the position * @param x The horizontal coordinate of the position
* @param y The vertical coordinate of the position * @param y The vertical coordinate of the position
* @param include_pass_events_objects Boolean flag to include or not * @param include_pass_events_objects Boolean flag to include or not
* objects which pass events in this calculation * objects which pass events in this calculation
skipping to change at line 5791 skipping to change at line 5929
* *
* This function will traverse all the layers of the given canvas, * This function will traverse all the layers of the given canvas,
* from top to bottom, querying for objects with areas covering the * from top to bottom, querying for objects with areas covering the
* given position. The user can remove from from the query * given position. The user can remove from from the query
* objects which are hidden and/or which are set to pass events. * objects which are hidden and/or which are set to pass events.
* *
* @warning This function will @b skip objects parented by smart * @warning This function will @b skip objects parented by smart
* objects, acting only on the ones at the "top level", with regard to * objects, acting only on the ones at the "top level", with regard to
* object parenting. * object parenting.
*/ */
EAPI Eina_List *evas_objects_at_xy_get (const Evas *e, Ev EAPI Eina_List *evas_objects_at_xy_get (const Evas *e, Ev
as_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool as_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_PU include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
RE; EAPI Eina_List *evas_objects_in_rectangle_get (const Evas *e,
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_
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_RES
pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RES ULT EINA_ARG_NONNULL(1);
ULT EINA_ARG_NONNULL(1) EINA_PURE;
/** /**
* Get the lowest (stacked) Evas object on the canvas @p * Get the lowest (stacked) Evas object on the canvas @p e.
* *
* @param e a valid canvas pointer * @param e a valid canvas pointer
* @return a pointer to the lowest object on it, if any, or @c NULL, * @return a pointer to the lowest object on it, if any, or @c NULL,
* otherwise * otherwise
* *
* This function will take all populated layers in the canvas into * This function will take all populated layers in the canvas into
* account, getting the lowest object for the lowest layer, naturally. * account, getting the lowest object for the lowest layer, naturally.
* *
* @see evas_object_layer_get() * @see evas_object_layer_get()
* @see evas_object_layer_set() * @see evas_object_layer_set()
* @see evas_object_below_get() * @see evas_object_below_get()
* @see evas_object_above_get() * @see evas_object_above_get()
* *
* @warning This function will @b skip objects parented by smart * @warning This function will @b skip objects parented by smart
* objects, acting only on the ones at the "top level", with regard to * objects, acting only on the ones at the "top level", with regard to
* object parenting. * object parenting.
*/ */
EAPI Evas_Object *evas_object_bottom_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Object *evas_object_bottom_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Get the highest (stacked) Evas object on the canvas @p * Get the highest (stacked) Evas object on the canvas @p e.
* *
* @param e a valid canvas pointer * @param e a valid canvas pointer
* @return a pointer to the highest object on it, if any, or @c NULL, * @return a pointer to the highest object on it, if any, or @c NULL,
* otherwise * otherwise
* *
* This function will take all populated layers in the canvas into * This function will take all populated layers in the canvas into
* account, getting the highest object for the highest layer, * account, getting the highest object for the highest layer,
* naturally. * naturally.
* *
* @see evas_object_layer_get() * @see evas_object_layer_get()
* @see evas_object_layer_set() * @see evas_object_layer_set()
* @see evas_object_below_get() * @see evas_object_below_get()
* @see evas_object_above_get() * @see evas_object_above_get()
* *
* @warning This function will @b skip objects parented by smart * @warning This function will @b skip objects parented by smart
* objects, acting only on the ones at the "top level", with regard to * objects, acting only on the ones at the "top level", with regard to
* object parenting. * object parenting.
*/ */
EAPI Evas_Object *evas_object_top_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Object *evas_object_top_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* @} * @}
*/ */
/** /**
* @defgroup Evas_Object_Group_Interceptors Object Method Interceptors * @defgroup Evas_Object_Group_Interceptors Object Method Interceptors
* *
* Evas provides a way to intercept method calls. The interceptor * Evas provides a way to intercept method calls. The interceptor
* callback may opt to completely deny the call, or may check and * callback may opt to completely deny the call, or may check and
skipping to change at line 5996 skipping to change at line 6134
* *
* Functions that work on specific objects. * Functions that work on specific objects.
* *
*/ */
/** /**
* @defgroup Evas_Object_Rectangle Rectangle Object Functions * @defgroup Evas_Object_Rectangle Rectangle Object Functions
* *
* @brief Function to create evas rectangle objects. * @brief Function to create evas rectangle objects.
* *
* This function may seem useless given there are no functions to manipulat * There is only one function to deal with rectangle objects, this may make
e this
* the created rectangle, however the rectangle is actually very useful and * function seem useless given there are no functions to manipulate the cre
can ated
* be manipulate using the generic @ref Evas_Object_Group * rectangle, however the rectangle is actually very useful and should be
* "evas object functions". * manipulated using the generic @ref Evas_Object_Group "evas object functi
ons".
*
* The evas rectangle server a number of key functions when working on evas
* programs:
* @li Background
* @li Debugging
* @li Clipper
*
* @section Background
*
* One extremely common requirement of evas programs is to have a solid col
or
* background, this can be accomplished with the following very simple code
:
* @code
* Evas_Object *bg = evas_object_rectangle_add(evas_canvas);
* //Here we set the rectangles red, green, blue and opacity levels
* evas_object_color_set(bg, 255, 255, 255, 255); // opaque white backgroun
d
* evas_object_resize(bg, WIDTH, HEIGHT); // covers full canvas
* evas_object_show(bg);
* @endcode
*
* This however will have issues if the @c evas_canvas is resized, however
most
* windows are created using ecore evas and that has a solution to using th
e
* rectangle as a background:
* @code
* Evas_Object *bg = evas_object_rectangle_add(ecore_evas_get(ee));
* //Here we set the rectangles red, green, blue and opacity levels
* evas_object_color_set(bg, 255, 255, 255, 255); // opaque white backgroun
d
* evas_object_resize(bg, WIDTH, HEIGHT); // covers full canvas
* evas_object_show(bg);
* ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE);
* @endcode
* So this gives us a white background to our window that will be resized
* together with it.
*
* @section Debugging
*
* Debugging is a major part of any programmers task and when debugging vis
ual
* issues with evas programs the rectangle is an extremely useful tool. The
* rectangle's simplicity means that it's easier to pinpoint issues with it
than
* with more complex objects. Therefore a common technique to use when writ
ing
* an evas program and not getting the desired visual result is to replace
the
* misbehaving object for a solid color rectangle and seeing how it interac
ts
* with the other elements, this often allows us to notice clipping, parent
ing
* or positioning issues. Once the issues have been identified and correcte
d the
* rectangle can be replaced for the original part and in all likelihood an
y
* remaining issues will be specific to that object's type.
*
* @section clipping Clipping
*
* Clipping serves two main functions:
* @li Limiting visibility(i.e. hiding portions of an object).
* @li Applying a layer of color to an object.
*
* @subsection hiding Limiting visibility
*
* It is often necessary to show only parts of an object, while it may be
* possible to create an object that corresponds only to the part that must
be
* shown(and it isn't always possible) it's usually easier to use a a clipp
er. A
* clipper is a rectangle that defines what's visible and what is not. The
way
* to do this is to create a solid white rectangle(which is the default, no
need
* to call evas_object_color_set()) and give it a position and size of what
* should be visible. The following code exemplifies showing the center hal
f of
* @c my_evas_object:
* @code
* Evas_Object *clipper = evas_object_rectangle_add(evas_canvas);
* evas_object_move(clipper, my_evas_object_x / 4, my_evas_object_y / 4);
* evas_object_resize(clipper, my_evas_object_width / 2, my_evas_object_hei
ght / 2);
* evas_object_clip_set(my_evas_object, clipper);
* evas_object_show(clipper);
* @endcode
*
* @subsection color Layer of color
*
* In the @ref clipping section we used a solid white clipper, which produc
ed no
* change in the color of the clipped object, it just hid what was outside
the
* clippers area. It is however sometimes desirable to change the of color
an
* object, this can be accomplished using a clipper that has a non-white co
lor.
* Clippers with color work by multiplying the colors of clipped object. Th
e
* following code will show how to remove all the red from an object:
* @code
* Evas_Object *clipper = evas_object_rectangle_add(evas);
* evas_object_move(clipper, my_evas_object_x, my_evas_object_y);
* evas_object_resize(clipper, my_evas_object_width, my_evas_object_height)
;
* evas_object_color_set(clipper, 0, 255, 255, 255);
* evas_object_clip_set(obj, clipper);
* evas_object_show(clipper);
* @endcode
* *
* For an example of use of an evas_object_rectangle see @ref * For an example that more fully exercise the use of an evas object rectan
* Example_Evas_Object_Manipulation "here". gle
* see @ref Example_Evas_Object_Manipulation.
* *
* @ingroup Evas_Object_Specific * @ingroup Evas_Object_Specific
*/ */
/** /**
* Adds a rectangle to the given evas. * Adds a rectangle to the given evas.
* @param e The given evas. * @param e The given evas.
* @return The new rectangle object. * @return The new rectangle object.
* *
* @ingroup Evas_Object_Rectangle * @ingroup Evas_Object_Rectangle
skipping to change at line 6044 skipping to change at line 6268
* img = evas_object_image_add(canvas); * img = evas_object_image_add(canvas);
* evas_object_image_file_set(img, "path/to/img", NULL); * evas_object_image_file_set(img, "path/to/img", NULL);
* evas_object_image_fill_set(img, 0, 0, w, h); * evas_object_image_fill_set(img, 0, 0, w, h);
* @endcode * @endcode
* The first function, naturally, is creating the image object. Then, * The first function, naturally, is creating the image object. Then,
* one must set an source file on it, so that it knows where to fetch * one must set an source file on it, so that it knows where to fetch
* image data from. Next, one must set <b>how to fill the image * image data from. Next, one must set <b>how to fill the image
* object's area</b> with that given pixel data. One could use just a * object's area</b> with that given pixel data. One could use just a
* sub-region of the original image or even have it tiled repeatedly * sub-region of the original image or even have it tiled repeatedly
* on the image object. For the common case of having the whole source * on the image object. For the common case of having the whole source
* image to be displayed on the image object, streched to the * image to be displayed on the image object, stretched to the
* destination's size, there's also a function helper, to be used * destination's size, there's also a function helper, to be used
* instead of evas_object_image_fill_set(): * instead of evas_object_image_fill_set():
* @code * @code
* evas_object_image_filled_set(img, EINA_TRUE); * evas_object_image_filled_set(img, EINA_TRUE);
* @endcode * @endcode
* See those functions' documentation for more details. * See those functions' documentation for more details.
* *
* @section Evas_Object_Image_Scale Scale and resizing * @section Evas_Object_Image_Scale Scale and resizing
* *
* Resizing of image objects will scale their respective source images * Resizing of image objects will scale their respective source images
skipping to change at line 6080 skipping to change at line 6304
* When dealing with image objects, there are some tricks to boost the * When dealing with image objects, there are some tricks to boost the
* performance of your application, if it does intense image loading * performance of your application, if it does intense image loading
* and/or manipulations, as in animations on a UI. * and/or manipulations, as in animations on a UI.
* *
* @subsection Evas_Object_Image_Load Load hints * @subsection Evas_Object_Image_Load Load hints
* *
* In image viewer applications, for example, the user will be looking * In image viewer applications, for example, the user will be looking
* at a given image, at full size, and will desire that the navigation * at a given image, at full size, and will desire that the navigation
* to the adjacent images on his/her album be fluid and fast. Thus, * to the adjacent images on his/her album be fluid and fast. Thus,
* while displaying a given image, the program can be on the * while displaying a given image, the program can be on the
* background loading the next and previous imagens already, so that * background loading the next and previous images already, so that
* displaying them on the sequence is just a matter of repainting the * displaying them on the sequence is just a matter of repainting the
* screen (and not decoding image data). * screen (and not decoding image data).
* *
* Evas addresses this issue with <b>image pre-loading</b>. The code * Evas addresses this issue with <b>image pre-loading</b>. The code
* for the situation above would be something like the following: * for the situation above would be something like the following:
* @code * @code
* prev = evas_object_image_filled_add(canvas); * prev = evas_object_image_filled_add(canvas);
* evas_object_image_file_set(prev, "/path/to/prev", NULL); * evas_object_image_file_set(prev, "/path/to/prev", NULL);
* evas_object_image_preload(prev, EINA_TRUE); * evas_object_image_preload(prev, EINA_TRUE);
* *
skipping to change at line 6119 skipping to change at line 6343
* Refer to Elementary's Photocam widget for a high level (smart) * Refer to Elementary's Photocam widget for a high level (smart)
* object which does lots of loading speed-ups for you. * object which does lots of loading speed-ups for you.
* *
* @subsection Evas_Object_Image_Animation Animation hints * @subsection Evas_Object_Image_Animation Animation hints
* *
* If you want to animate image objects on a UI (what you'd get by * If you want to animate image objects on a UI (what you'd get by
* concomitant usage of other libraries, like Ecore and Edje), there * concomitant usage of other libraries, like Ecore and Edje), there
* are also some tips on how to boost the performance of your * are also some tips on how to boost the performance of your
* application. If the animation involves resizing of an image (thus, * application. If the animation involves resizing of an image (thus,
* re-scaling), you'd better turn off smooth scaling on it @b during * re-scaling), you'd better turn off smooth scaling on it @b during
* the animation, turning it back on afterwrads, for less * the animation, turning it back on afterwards, for less
* computations. Also, in this case you'd better flag the image object * computations. Also, in this case you'd better flag the image object
* in question not to cache scaled versions of it: * in question not to cache scaled versions of it:
* @code * @code
* evas_object_image_scale_hint_set(wd->img, EVAS_IMAGE_SCALE_HINT_DYNAMIC) ; * evas_object_image_scale_hint_set(wd->img, EVAS_IMAGE_SCALE_HINT_DYNAMIC) ;
* *
* // resizing takes place in between * // resizing takes place in between
* *
* evas_object_image_scale_hint_set(wd->img, EVAS_IMAGE_SCALE_HINT_STATIC); * evas_object_image_scale_hint_set(wd->img, EVAS_IMAGE_SCALE_HINT_STATIC);
* @endcode * @endcode
* *
skipping to change at line 6162 skipping to change at line 6386
* @image latex border-effect.eps width=\textwidth * @image latex border-effect.eps width=\textwidth
* *
* @section Evas_Object_Image_Manipulation Manipulating pixels * @section Evas_Object_Image_Manipulation Manipulating pixels
* *
* Evas image objects can be used to manipulate raw pixels in many * Evas image objects can be used to manipulate raw pixels in many
* ways. The meaning of the data in the pixel arrays will depend on * ways. The meaning of the data in the pixel arrays will depend on
* the image's color space, be warned (see next section). You can set * the image's color space, be warned (see next section). You can set
* your own data as an image's pixel data, fetch an image's pixel data * your own data as an image's pixel data, fetch an image's pixel data
* for saving/altering, convert images between different color spaces * for saving/altering, convert images between different color spaces
* and even advanced operations like setting a native surface as image * and even advanced operations like setting a native surface as image
* objecs' data. * objects' data.
* *
* @section Evas_Object_Image_Color_Spaces Color spaces * @section Evas_Object_Image_Color_Spaces Color spaces
* *
* Image objects may return or accept "image data" in multiple * Image objects may return or accept "image data" in multiple
* formats. This is based on the color space of an object. Here is a * formats. This is based on the color space of an object. Here is a
* rundown on formats: * rundown on formats:
* *
* - #EVAS_COLORSPACE_ARGB8888: * - #EVAS_COLORSPACE_ARGB8888:
* .
* This pixel format is a linear block of pixels, starting at the * This pixel format is a linear block of pixels, starting at the
* top-left row by row until the bottom right of the image or pixel * top-left row by row until the bottom right of the image or pixel
* region. All pixels are 32-bit unsigned int's with the high-byte * region. All pixels are 32-bit unsigned int's with the high-byte
* being alpha and the low byte being blue in the format ARGB. Alpha * being alpha and the low byte being blue in the format ARGB. Alpha
* may or may not be used by evas depending on the alpha flag of the * may or may not be used by evas depending on the alpha flag of the
* image, but if not used, should be set to 0xff anyway. * image, but if not used, should be set to 0xff anyway.
* \n\n * \n\n
* This colorspace uses premultiplied alpha. That means that R, G * This colorspace uses premultiplied alpha. That means that R, G
* and B cannot exceed A in value. The conversion from * and B cannot exceed A in value. The conversion from
* non-premultiplied colorspace is: * non-premultiplied colorspace is:
* \n\n * \n\n
* R = (r * a) / 255; G = (g * a) / 255; B = (b * a) / 255; * R = (r * a) / 255; G = (g * a) / 255; B = (b * a) / 255;
* \n\n * \n\n
* So 50% transparent blue will be: 0x80000080. This will not be * So 50% transparent blue will be: 0x80000080. This will not be
* "dark" - just 50% transparent. Values are 0 == black, 255 == * "dark" - just 50% transparent. Values are 0 == black, 255 ==
* solid or full red, green or blue. * solid or full red, green or blue.
* * .
* - #EVAS_COLORSPACE_YCBCR422P601_PL: * - #EVAS_COLORSPACE_YCBCR422P601_PL:
* .
* This is a pointer-list indirected set of YUV (YCbCr) pixel * This is a pointer-list indirected set of YUV (YCbCr) pixel
* data. This means that the data returned or set is not actual * data. This means that the data returned or set is not actual
* pixel data, but pointers TO lines of pixel data. The list of * pixel data, but pointers TO lines of pixel data. The list of
* pointers will first be N rows of pointers to the Y plane - * pointers will first be N rows of pointers to the Y plane -
* pointing to the first pixel at the start of each row in the Y * pointing to the first pixel at the start of each row in the Y
* plane. N is the height of the image data in pixels. Each pixel in * plane. N is the height of the image data in pixels. Each pixel in
* the Y, U and V planes is 1 byte exactly, packed. The next N / 2 * the Y, U and V planes is 1 byte exactly, packed. The next N / 2
* pointers will point to rows in the U plane, and the next N / 2 * pointers will point to rows in the U plane, and the next N / 2
* pointers will point to the V plane rows. U and V planes are half * pointers will point to the V plane rows. U and V planes are half
* the horizontal and vertical resolution of the Y plane. * the horizontal and vertical resolution of the Y plane.
skipping to change at line 6214 skipping to change at line 6436
* \n\n * \n\n
* There is a limitation that these images MUST be a multiple of 2 * There is a limitation that these images MUST be a multiple of 2
* pixels in size horizontally or vertically. This is due to the U * pixels in size horizontally or vertically. This is due to the U
* and V planes being half resolution. Also note that this assumes * and V planes being half resolution. Also note that this assumes
* the itu601 YUV colorspace specification. This is defined for * the itu601 YUV colorspace specification. This is defined for
* standard television and mpeg streams. HDTV may use the itu709 * standard television and mpeg streams. HDTV may use the itu709
* specification. * specification.
* \n\n * \n\n
* Values are 0 to 255, indicating full or no signal in that plane * Values are 0 to 255, indicating full or no signal in that plane
* respectively. * respectively.
* * .
* - #EVAS_COLORSPACE_YCBCR422P709_PL: * - #EVAS_COLORSPACE_YCBCR422P709_PL:
* .
* Not implemented yet. * Not implemented yet.
* * .
* - #EVAS_COLORSPACE_RGB565_A5P: * - #EVAS_COLORSPACE_RGB565_A5P:
* .
* In the process of being implemented in 1 engine only. This may * In the process of being implemented in 1 engine only. This may
* change. * change.
* \n\n * \n\n
* This is a pointer to image data for 16-bit half-word pixel data * This is a pointer to image data for 16-bit half-word pixel data
* in 16bpp RGB 565 format (5 bits red, 6 bits green, 5 bits blue), * in 16bpp RGB 565 format (5 bits red, 6 bits green, 5 bits blue),
* with the high-byte containing red and the low byte containing * with the high-byte containing red and the low byte containing
* blue, per pixel. This data is packed row by row from the top-left * blue, per pixel. This data is packed row by row from the top-left
* to the bottom right. * to the bottom right.
* \n\n * \n\n
* If the image has an alpha channel enabled there will be an extra * If the image has an alpha channel enabled there will be an extra
skipping to change at line 6245 skipping to change at line 6465
* right of the image, row by row. Even though the values of the * right of the image, row by row. Even though the values of the
* alpha pixels can be 0 to 255, only values 0 through to 32 are * alpha pixels can be 0 to 255, only values 0 through to 32 are
* used, 32 being solid and 0 being transparent. * used, 32 being solid and 0 being transparent.
* \n\n * \n\n
* RGB values can be 0 to 31 for red and blue and 0 to 63 for green, * RGB values can be 0 to 31 for red and blue and 0 to 63 for green,
* with 0 being black and 31 or 63 being full red, green or blue * with 0 being black and 31 or 63 being full red, green or blue
* respectively. This colorspace is also pre-multiplied like * respectively. This colorspace is also pre-multiplied like
* EVAS_COLORSPACE_ARGB8888 so: * EVAS_COLORSPACE_ARGB8888 so:
* \n\n * \n\n
* R = (r * a) / 32; G = (g * a) / 32; B = (b * a) / 32; * R = (r * a) / 32; G = (g * a) / 32; B = (b * a) / 32;
* * .
* - #EVAS_COLORSPACE_GRY8: * - #EVAS_COLORSPACE_GRY8:
* .
* The image is just a alpha mask (8 bit's per pixel). This is used * The image is just a alpha mask (8 bit's per pixel). This is used
* for alpha masking. * for alpha masking.
* * .
* Some examples on this group of functions can be found @ref * Some examples on this group of functions can be found @ref
* Example_Evas_Images "here". * Example_Evas_Images "here".
* *
* @ingroup Evas_Object_Specific * @ingroup Evas_Object_Specific
*/ */
/** /**
* @addtogroup Evas_Object_Image * @addtogroup Evas_Object_Image
* @{ * @{
*/ */
skipping to change at line 6316 skipping to change at line 6535
EAPI Evas_Object *evas_object_image_filled_add (Eva s *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC; EAPI Evas_Object *evas_object_image_filled_add (Eva s *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
/** /**
* Sets the data for an image from memory to be loaded * Sets the data for an image from memory to be loaded
* *
* This is the same as evas_object_image_file_set() but the file to be load ed * This is the same as evas_object_image_file_set() but the file to be load ed
* may exist at an address in memory (the data for the file, not the filena me * may exist at an address in memory (the data for the file, not the filena me
* itself). The @p data at the address is copied and stored for future use, so * itself). The @p data at the address is copied and stored for future use, so
* no @p data needs to be kept after this call is made. It will be managed and * no @p data needs to be kept after this call is made. It will be managed and
* freed for you when no longer needed. The @p size is limited to 2 gigabyt es * freed for you when no longer needed. The @p size is limited to 2 gigabyt es
* in size, and must be greater than 0. A NULL @p data pointer is also inva * in size, and must be greater than 0. A @c NULL @p data pointer is also
lid. * invalid. Set the filename to @c NULL to reset to empty state and have th
* Set the filename to NULL to reset to empty state and have the image file e
* data freed from memory using evas_object_image_file_set(). * image file data freed from memory using evas_object_image_file_set().
* *
* The @p format is optional (pass NULL if you don't need/use it). It is us * The @p format is optional (pass @c NULL if you don't need/use it). It is
ed * used to help Evas guess better which loader to use for the data. It may
* to help Evas guess better which loader to use for the data. It may simpl * simply be the "extension" of the file as it would normally be on disk
y * such as "jpg" or "png" or "gif" etc.
* be the "extension" of the file as it would normally be on disk such as
* "jpg" or "png" or "gif" etc.
* *
* @param obj The given image object. * @param obj The given image object.
* @param data The image file data address * @param data The image file data address
* @param size The size of the image file data in bytes * @param size The size of the image file data in bytes
* @param format The format of the file (optional), or @c NULL if not neede d * @param format The format of the file (optional), or @c NULL if not neede d
* @param key The image key in file, or @c NULL. * @param key The image key in file, or @c NULL.
*/ */
EAPI void evas_object_image_memfile_set (Eva s_Object *obj, void *data, int size, char *format, char *key) EINA_ARG_NONN ULL(1, 2); EAPI void evas_object_image_memfile_set (Eva s_Object *obj, void *data, int size, char *format, char *key) EINA_ARG_NONN ULL(1, 2);
/** /**
skipping to change at line 6473 skipping to change at line 6692
/** /**
* Retrieves @b how the center part of the given image object (not the * Retrieves @b how the center part of the given image object (not the
* borders) is to be drawn when Evas is rendering it. * borders) is to be drawn when Evas is rendering it.
* *
* @param obj The given image object. * @param obj The given image object.
* @return fill Fill mode of the center region of @p obj (a value in * @return fill Fill mode of the center region of @p obj (a value in
* #Evas_Border_Fill_Mode). * #Evas_Border_Fill_Mode).
* *
* See @ref evas_object_image_fill_set() for more details. * See @ref evas_object_image_fill_set() for more details.
*/ */
EAPI Evas_Border_Fill_Mode evas_object_image_border_center_fill_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Border_Fill_Mode evas_object_image_border_center_fill_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Set whether the image object's fill property should track the * Set whether the image object's fill property should track the
* object's size. * object's size.
* *
* @param obj The given image object. * @param obj The given image object.
* @param setting @c EINA_TRUE, to make the fill property follow * @param setting @c EINA_TRUE, to make the fill property follow
* object size or @c EINA_FALSE, otherwise * object size or @c EINA_FALSE, otherwise.
* *
* If @p setting is @c EINA_TRUE, then every evas_object_resize() will * If @p setting is @c EINA_TRUE, then every evas_object_resize() will
* @b automatically trigger a call to evas_object_image_fill_set() * @b automatically trigger a call to evas_object_image_fill_set()
* with the that new size (and @c 0, @c 0 as source image's origin), * with the that new size (and @c 0, @c 0 as source image's origin),
* so the bound image will fill the whole object's area. * so the bound image will fill the whole object's area.
* *
* @see evas_object_image_filled_add() * @see evas_object_image_filled_add()
* @see evas_object_image_fill_get() * @see evas_object_image_fill_get()
*/ */
EAPI void evas_object_image_filled_set (Eva s_Object *obj, Eina_Bool setting) EINA_ARG_NONNULL(1); EAPI void evas_object_image_filled_set (Eva s_Object *obj, Eina_Bool setting) EINA_ARG_NONNULL(1);
skipping to change at line 6503 skipping to change at line 6722
/** /**
* Retrieve whether the image object's fill property should track the * Retrieve whether the image object's fill property should track the
* object's size. * object's size.
* *
* @param obj The given image object. * @param obj The given image object.
* @return @c EINA_TRUE if it is tracking, @c EINA_FALSE, if not (and * @return @c EINA_TRUE if it is tracking, @c EINA_FALSE, if not (and
* evas_object_fill_set() must be called manually). * evas_object_fill_set() must be called manually).
* *
* @see evas_object_image_filled_set() for more information * @see evas_object_image_filled_set() for more information
*/ */
EAPI Eina_Bool evas_object_image_filled_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Eina_Bool evas_object_image_filled_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Sets the scaling factor (multiplier) for the borders of an image * Sets the scaling factor (multiplier) for the borders of an image
* object. * object.
* *
* @param obj The given image object. * @param obj The given image object.
* @param scale The scale factor (default is @c 1.0 - i.e. no scaling) * @param scale The scale factor (default is @c 1.0 - i.e. no scaling)
* *
* @see evas_object_image_border_set() * @see evas_object_image_border_set()
* @see evas_object_image_border_scale_get() * @see evas_object_image_border_scale_get()
skipping to change at line 6549 skipping to change at line 6768
* @param h The height the bound image will be displayed at. * @param h The height the bound image will be displayed at.
* *
* Note that if @p w or @p h are smaller than the dimensions of * Note that if @p w or @p h are smaller than the dimensions of
* @p obj, the displayed image will be @b tiled around the object's * @p obj, the displayed image will be @b tiled around the object's
* area. To have only one copy of the bound image drawn, @p x and @p y * area. To have only one copy of the bound image drawn, @p x and @p y
* must be 0 and @p w and @p h need to be the exact width and height * must be 0 and @p w and @p h need to be the exact width and height
* of the image object itself, respectively. * of the image object itself, respectively.
* *
* See the following image to better understand the effects of this * See the following image to better understand the effects of this
* call. On this diagram, both image object and original image source * call. On this diagram, both image object and original image source
* have @c a x @c a dimentions and the image itself is a circle, with * have @c a x @c a dimensions and the image itself is a circle, with
* empty space around it: * empty space around it:
* *
* @image html image-fill.png * @image html image-fill.png
* @image rtf image-fill.png * @image rtf image-fill.png
* @image latex image-fill.eps * @image latex image-fill.eps
* *
* @warning The default values for the fill parameters are @p x = 0, * @warning The default values for the fill parameters are @p x = 0,
* @p y = 0, @p w = 0 and @p h = 0. Thus, if you're not using the * @p y = 0, @p w = 0 and @p h = 0. Thus, if you're not using the
* evas_object_image_filled_add() helper and want your image * evas_object_image_filled_add() helper and want your image
* displayed, you'll have to set valid values with this fuction on * displayed, you'll have to set valid values with this function on
* your object. * your object.
* *
* @note evas_object_image_filled_set() is a helper function which * @note evas_object_image_filled_set() is a helper function which
* will @b override the values set here automatically, for you, in a * will @b override the values set here automatically, for you, in a
* given way. * given way.
*/ */
EAPI void evas_object_image_fill_set (Eva s_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) EINA _ARG_NONNULL(1); EAPI void evas_object_image_fill_set (Eva s_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) EINA _ARG_NONNULL(1);
/** /**
* Retrieve how an image object is to fill its drawing rectangle, * Retrieve how an image object is to fill its drawing rectangle,
skipping to change at line 6604 skipping to change at line 6823
*/ */
EAPI void evas_object_image_fill_spread_set (Eva s_Object *obj, Evas_Fill_Spread spread) EINA_ARG_NONNULL(1); EAPI void evas_object_image_fill_spread_set (Eva s_Object *obj, Evas_Fill_Spread spread) EINA_ARG_NONNULL(1);
/** /**
* Retrieves the spread (tiling mode) for the given image object's * Retrieves the spread (tiling mode) for the given image object's
* fill. * fill.
* *
* @param obj The given evas image object. * @param obj The given evas image object.
* @return The current spread mode of the image object. * @return The current spread mode of the image object.
*/ */
EAPI Evas_Fill_Spread evas_object_image_fill_spread_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Fill_Spread evas_object_image_fill_spread_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Sets the size of the given image object. * Sets the size of the given image object.
* *
* @param obj The given image object. * @param obj The given image object.
* @param w The new width of the image. * @param w The new width of the image.
* @param h The new height of the image. * @param h The new height of the image.
* *
* This function will scale down or crop the image so that it is * This function will scale down or crop the image so that it is
* treated as if it were at the given size. If the size given is * treated as if it were at the given size. If the size given is
skipping to change at line 6641 skipping to change at line 6860
/** /**
* Retrieves the row stride of the given image object. * Retrieves the row stride of the given image object.
* *
* @param obj The given image object. * @param obj The given image object.
* @return The stride of the image (<b>in bytes</b>). * @return The stride of the image (<b>in bytes</b>).
* *
* The row stride is the number of bytes between the start of a row * The row stride is the number of bytes between the start of a row
* and the start of the next row for image data. * and the start of the next row for image data.
*/ */
EAPI int evas_object_image_stride_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI int evas_object_image_stride_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Retrieves a number representing any error that occurred during the * Retrieves a number representing any error that occurred during the
* last loading of the given image object's source image. * last loading of the given image object's source image.
* *
* @param obj The given image object. * @param obj The given image object.
* @return A value giving the last error that occurred. It should be * @return A value giving the last error that occurred. It should be
* one of the #Evas_Load_Error values. #EVAS_LOAD_ERROR_NONE * one of the #Evas_Load_Error values. #EVAS_LOAD_ERROR_NONE
* is returned if there was no error. * is returned if there was no error.
*/ */
EAPI Evas_Load_Error evas_object_image_load_error_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Load_Error evas_object_image_load_error_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Sets the raw image data of the given image object. * Sets the raw image data of the given image object.
* *
* @param obj The given image object. * @param obj The given image object.
* @param data The raw data, or @c NULL. * @param data The raw data, or @c NULL.
* *
* Note that the raw data must be of the same size (see * Note that the raw data must be of the same size (see
* evas_object_image_size_set(), which has to be called @b before this * evas_object_image_size_set(), which has to be called @b before this
* one) and colorspace (see evas_object_image_colorspace_set()) of the * one) and colorspace (see evas_object_image_colorspace_set()) of the
skipping to change at line 6693 skipping to change at line 6912
* *
* Each time you call this function on an image object, its data * Each time you call this function on an image object, its data
* buffer will have an internal reference counter * buffer will have an internal reference counter
* incremented. Decrement it back by using * incremented. Decrement it back by using
* evas_object_image_data_set(). This is specially important for the * evas_object_image_data_set(). This is specially important for the
* directfb Evas engine. * directfb Evas engine.
* *
* This is best suited for when you want to modify an existing image, * This is best suited for when you want to modify an existing image,
* without changing its dimensions. * without changing its dimensions.
* *
* @note The contents' formart returned by it depend on the color * @note The contents' format returned by it depend on the color
* space of the given image object. * space of the given image object.
* *
* @note You may want to use evas_object_image_data_update_add() to * @note You may want to use evas_object_image_data_update_add() to
* inform data changes, if you did any. * inform data changes, if you did any.
* *
* @see evas_object_image_data_set() * @see evas_object_image_data_set()
*/ */
EAPI void *evas_object_image_data_get (con st Evas_Object *obj, Eina_Bool for_writing) EINA_WARN_UNUSED_RESULT EINA_AR G_NONNULL(1) EINA_PURE; EAPI void *evas_object_image_data_get (con st Evas_Object *obj, Eina_Bool for_writing) EINA_WARN_UNUSED_RESULT EINA_AR G_NONNULL(1);
/** /**
* Converts the raw image data of the given image object to the * Converts the raw image data of the given image object to the
* specified colorspace. * specified colorspace.
* *
* Note that this function does not modify the raw image data. If the * Note that this function does not modify the raw image data. If the
* requested colorspace is the same as the image colorspace nothing is * requested colorspace is the same as the image colorspace nothing is
* done and NULL is returned. You should use * done and @c NULL is returned. You should use
* evas_object_image_colorspace_get() to check the current image * evas_object_image_colorspace_get() to check the current image
* colorspace. * colorspace.
* *
* See @ref evas_object_image_colorspace_get. * See @ref evas_object_image_colorspace_get.
* *
* @param obj The given image object. * @param obj The given image object.
* @param to_cspace The colorspace to which the image raw data will be conv erted. * @param to_cspace The colorspace to which the image raw data will be conv erted.
* @return data A newly allocated data in the format specified by to_cspace . * @return data A newly allocated data in the format specified by to_cspace .
*/ */
EAPI void *evas_object_image_data_convert (Eva s_Object *obj, Evas_Colorspace to_cspace) EINA_WARN_UNUSED_RESULT EINA_ARG_ NONNULL(1) EINA_PURE; EAPI void *evas_object_image_data_convert (Eva s_Object *obj, Evas_Colorspace to_cspace) EINA_WARN_UNUSED_RESULT EINA_ARG_ NONNULL(1);
/** /**
* Replaces the raw image data of the given image object. * Replaces the raw image data of the given image object.
* *
* @param obj The given image object. * @param obj The given image object.
* @param data The raw data to replace. * @param data The raw data to replace.
* *
* This function lets the application replace an image object's * This function lets the application replace an image object's
* internal pixel buffer with an user-allocated one. For best results, * internal pixel buffer with an user-allocated one. For best results,
* you should generally first call evas_object_image_size_set() with * you should generally first call evas_object_image_size_set() with
skipping to change at line 6790 skipping to change at line 7009
* *
* @param obj The given image object. * @param obj The given image object.
* @return Whether the alpha channel data is being used (@c EINA_TRUE) * @return Whether the alpha channel data is being used (@c EINA_TRUE)
* or not (@c EINA_FALSE). * or not (@c EINA_FALSE).
* *
* This function returns @c EINA_TRUE if the image object's alpha * This function returns @c EINA_TRUE if the image object's alpha
* channel is being used, or @c EINA_FALSE otherwise. * channel is being used, or @c EINA_FALSE otherwise.
* *
* See @ref evas_object_image_alpha_set() for more details. * See @ref evas_object_image_alpha_set() for more details.
*/ */
EAPI Eina_Bool evas_object_image_alpha_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Eina_Bool evas_object_image_alpha_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Sets whether to use high-quality image scaling algorithm on the * Sets whether to use high-quality image scaling algorithm on the
* given image object. * given image object.
* *
* @param obj The given image object. * @param obj The given image object.
* @param smooth_scale Whether to use smooth scale or not. * @param smooth_scale Whether to use smooth scale or not.
* *
* When enabled, a higher quality image scaling algorithm is used when * When enabled, a higher quality image scaling algorithm is used when
* scaling images to sizes other than the source image's original * scaling images to sizes other than the source image's original
skipping to change at line 6820 skipping to change at line 7039
/** /**
* Retrieves whether the given image object is using high-quality * Retrieves whether the given image object is using high-quality
* image scaling algorithm. * image scaling algorithm.
* *
* @param obj The given image object. * @param obj The given image object.
* @return Whether smooth scale is being used. * @return Whether smooth scale is being used.
* *
* See @ref evas_object_image_smooth_scale_set() for more details. * See @ref evas_object_image_smooth_scale_set() for more details.
*/ */
EAPI Eina_Bool evas_object_image_smooth_scale_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Eina_Bool evas_object_image_smooth_scale_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Preload an image object's image data in the background * Preload an image object's image data in the background
* *
* @param obj The given image object. * @param obj The given image object.
* @param cancel @c EINA_FALSE will add it the preloading work queue, * @param cancel @c EINA_FALSE will add it the preloading work queue,
* @c EINA_TRUE will remove it (if it was issued before). * @c EINA_TRUE will remove it (if it was issued before).
* *
* This function requests the preload of the data image in the * This function requests the preload of the data image in the
* background. The work is queued before being processed (because * background. The work is queued before being processed (because
skipping to change at line 6892 skipping to change at line 7111
* *
* @param obj The given canvas object. * @param obj The given canvas object.
* @param pixels The pixel's source to be imported. * @param pixels The pixel's source to be imported.
* *
* This function imports pixels from a given source to a given canvas image . * This function imports pixels from a given source to a given canvas image .
* *
*/ */
EAPI Eina_Bool evas_object_image_pixels_import (Eva s_Object *obj, Evas_Pixel_Import_Source *pixels) EINA_ARG_NONNULL(1, 2); EAPI Eina_Bool evas_object_image_pixels_import (Eva s_Object *obj, Evas_Pixel_Import_Source *pixels) EINA_ARG_NONNULL(1, 2);
/** /**
* Set the callback function to get pixels from a canva's image. * Set the callback function to get pixels from a canvas' image.
* *
* @param obj The given canvas pointer. * @param obj The given canvas pointer.
* @param func The callback function. * @param func The callback function.
* @param data The data pointer to be passed to @a func. * @param data The data pointer to be passed to @a func.
* *
* This functions sets a function to be the callback function that get * This functions sets a function to be the callback function that get
* pixes from a image of the canvas. * pixes from a image of the canvas.
* *
*/ */
EAPI void evas_object_image_pixels_get_callback_set(Eva s_Object *obj, Evas_Object_Image_Pixels_Get_Cb func, void *data) EINA_ARG_N ONNULL(1, 2); EAPI void evas_object_image_pixels_get_callback_set(Eva s_Object *obj, Evas_Object_Image_Pixels_Get_Cb func, void *data) EINA_ARG_N ONNULL(1, 2);
skipping to change at line 6918 skipping to change at line 7137
* @param dirty Whether the image is dirty. * @param dirty Whether the image is dirty.
*/ */
EAPI void evas_object_image_pixels_dirty_set (Eva s_Object *obj, Eina_Bool dirty) EINA_ARG_NONNULL(1); EAPI void evas_object_image_pixels_dirty_set (Eva s_Object *obj, Eina_Bool dirty) EINA_ARG_NONNULL(1);
/** /**
* Retrieves whether the given image object is dirty (needs to be redrawn). * Retrieves whether the given image object is dirty (needs to be redrawn).
* *
* @param obj The given image object. * @param obj The given image object.
* @return Whether the image is dirty. * @return Whether the image is dirty.
*/ */
EAPI Eina_Bool evas_object_image_pixels_dirty_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Eina_Bool evas_object_image_pixels_dirty_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Set the DPI resolution of an image object's source image. * Set the DPI resolution of an image object's source image.
* *
* @param obj The given canvas pointer. * @param obj The given canvas pointer.
* @param dpi The new DPI resolution. * @param dpi The new DPI resolution.
* *
* This function sets the DPI resolution of a given loaded canvas * This function sets the DPI resolution of a given loaded canvas
* image. Most useful for the SVG image loader. * image. Most useful for the SVG image loader.
* *
skipping to change at line 6943 skipping to change at line 7162
/** /**
* Get the DPI resolution of a loaded image object in the canvas. * Get the DPI resolution of a loaded image object in the canvas.
* *
* @param obj The given canvas pointer. * @param obj The given canvas pointer.
* @return The DPI resolution of the given canvas image. * @return The DPI resolution of the given canvas image.
* *
* This function returns the DPI resolution of the given canvas image. * This function returns the DPI resolution of the given canvas image.
* *
* @see evas_object_image_load_dpi_set() for more details * @see evas_object_image_load_dpi_set() for more details
*/ */
EAPI double evas_object_image_load_dpi_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI double evas_object_image_load_dpi_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Set the size of a given image object's source image, when loading * Set the size of a given image object's source image, when loading
* it. * it.
* *
* @param obj The given canvas object. * @param obj The given canvas object.
* @param w The new width of the image's load size. * @param w The new width of the image's load size.
* @param h The new height of the image's load size. * @param h The new height of the image's load size.
* *
* This function sets a new (loading) size for the given canvas * This function sets a new (loading) size for the given canvas
skipping to change at line 6997 skipping to change at line 7216
EAPI void evas_object_image_load_scale_down_set (Eva s_Object *obj, int scale_down) EINA_ARG_NONNULL(1); EAPI void evas_object_image_load_scale_down_set (Eva s_Object *obj, int scale_down) EINA_ARG_NONNULL(1);
/** /**
* get the scale down factor of a given image object's source image, * get the scale down factor of a given image object's source image,
* when loading it. * when loading it.
* *
* @param obj The given image object pointer. * @param obj The given image object pointer.
* *
* @see evas_object_image_load_scale_down_set() for more details * @see evas_object_image_load_scale_down_set() for more details
*/ */
EAPI int evas_object_image_load_scale_down_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI int evas_object_image_load_scale_down_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Inform a given image object to load a selective region of its * Inform a given image object to load a selective region of its
* source image. * source image.
* *
* @param obj The given image object pointer. * @param obj The given image object pointer.
* @param x X-offset of the region to be loaded. * @param x X-offset of the region to be loaded.
* @param y Y-offset of the region to be loaded. * @param y Y-offset of the region to be loaded.
* @param w Width of the region to be loaded. * @param w Width of the region to be loaded.
* @param h Height of the region to be loaded. * @param h Height of the region to be loaded.
skipping to change at line 7041 skipping to change at line 7260
* in: they'll be ignored by the function. * in: they'll be ignored by the function.
* *
* @see evas_object_image_load_region_get() * @see evas_object_image_load_region_get()
*/ */
EAPI void evas_object_image_load_region_get (con st Evas_Object *obj, int *x, int *y, int *w, int *h) EINA_ARG_NONNULL(1); EAPI void evas_object_image_load_region_get (con st Evas_Object *obj, int *x, int *y, int *w, int *h) EINA_ARG_NONNULL(1);
/** /**
* Define if the orientation information in the image file should be honore d. * Define if the orientation information in the image file should be honore d.
* *
* @param obj The given image object pointer. * @param obj The given image object pointer.
* @param enable @p EINA_TRUE means that it should honor the orientation in formation * @param enable @c EINA_TRUE means that it should honor the orientation in formation
* @since 1.1 * @since 1.1
*/ */
EAPI void evas_object_image_load_orientation_set (Evas_Object *obj, Eina_Bool enable) EINA_ARG_NONNULL(1); EAPI void evas_object_image_load_orientation_set (Evas_Object *obj, Eina_Bool enable) EINA_ARG_NONNULL(1);
/** /**
* Get if the orientation information in the image file should be honored. * Get if the orientation information in the image file should be honored.
* *
* @param obj The given image object pointer. * @param obj The given image object pointer.
* @since 1.1 * @since 1.1
*/ */
skipping to change at line 7074 skipping to change at line 7293
/** /**
* Get the colorspace of a given image of the canvas. * Get the colorspace of a given image of the canvas.
* *
* @param obj The given image object pointer. * @param obj The given image object pointer.
* @return The colorspace of the image. * @return The colorspace of the image.
* *
* This function returns the colorspace of given canvas image. * This function returns the colorspace of given canvas image.
* *
*/ */
EAPI Evas_Colorspace evas_object_image_colorspace_get (con EAPI Evas_Colorspace evas_object_image_colorspace_get (con
st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/**
* Get the support state of a given image
*
* @param obj The given image object pointer
* @return The region support state
* @since 1.2.0
*
* This function returns the state of the region support of given image
*/
EAPI Eina_Bool evas_object_image_region_support_get (const
Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Set the native surface of a given image of the canvas * Set the native surface of a given image of the canvas
* *
* @param obj The given canvas pointer. * @param obj The given canvas pointer.
* @param surf The new native surface. * @param surf The new native surface.
* *
* This function sets a native surface of a given canvas image. * This function sets a native surface of a given canvas image.
* *
*/ */
skipping to change at line 7096 skipping to change at line 7326
/** /**
* Get the native surface of a given image of the canvas * Get the native surface of a given image of the canvas
* *
* @param obj The given canvas pointer. * @param obj The given canvas pointer.
* @return The native surface of the given canvas image. * @return The native surface of the given canvas image.
* *
* This function returns the native surface of a given canvas image. * This function returns the native surface of a given canvas image.
* *
*/ */
EAPI Evas_Native_Surface *evas_object_image_native_surface_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Native_Surface *evas_object_image_native_surface_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Set the video surface linked to a given image of the canvas * Set the video surface linked to a given image of the canvas
* *
* @param obj The given canvas pointer. * @param obj The given canvas pointer.
* @param surf The new video surface. * @param surf The new video surface.
* @since 1.1.0 * @since 1.1.0
* *
* This function link a video surface to a given canvas image. * This function link a video surface to a given canvas image.
* *
skipping to change at line 7120 skipping to change at line 7350
/** /**
* Get the video surface linekd to a given image of the canvas * Get the video surface linekd to a given image of the canvas
* *
* @param obj The given canvas pointer. * @param obj The given canvas pointer.
* @return The video surface of the given canvas image. * @return The video surface of the given canvas image.
* @since 1.1.0 * @since 1.1.0
* *
* This function returns the video surface linked to a given canvas image. * This function returns the video surface linked to a given canvas image.
* *
*/ */
EAPI const Evas_Video_Surface *evas_object_image_video_surface_get (co nst Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE ; EAPI const Evas_Video_Surface *evas_object_image_video_surface_get (co nst Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Set the scale hint of a given image of the canvas. * Set the scale hint of a given image of the canvas.
* *
* @param obj The given image object pointer. * @param obj The given image object pointer.
* @param hint The scale hint, a value in * @param hint The scale hint, a value in
* #Evas_Image_Scale_Hint. * #Evas_Image_Scale_Hint.
* *
* This function sets the scale hint value of the given image object * This function sets the scale hint value of the given image object
* in the canvas, which will affect how Evas is to cache scaled * in the canvas, which will affect how Evas is to cache scaled
skipping to change at line 7149 skipping to change at line 7379
* *
* @param obj The given image object pointer. * @param obj The given image object pointer.
* @return The scale hint value set on @p obj, a value in * @return The scale hint value set on @p obj, a value in
* #Evas_Image_Scale_Hint. * #Evas_Image_Scale_Hint.
* *
* This function returns the scale hint value of the given image * This function returns the scale hint value of the given image
* object of the canvas. * object of the canvas.
* *
* @see evas_object_image_scale_hint_set() for more details. * @see evas_object_image_scale_hint_set() for more details.
*/ */
EAPI Evas_Image_Scale_Hint evas_object_image_scale_hint_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Image_Scale_Hint evas_object_image_scale_hint_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Set the content hint setting of a given image object of the canvas. * Set the content hint setting of a given image object of the canvas.
* *
* @param obj The given canvas pointer. * @param obj The given canvas pointer.
* @param hint The content hint value, one of the * @param hint The content hint value, one of the
* #Evas_Image_Content_Hint ones. * #Evas_Image_Content_Hint ones.
* *
* This function sets the content hint value of the given image of the * This function sets the content hint value of the given image of the
* canvas. For example, if you're on the GL engine and your driver * canvas. For example, if you're on the GL engine and your driver
skipping to change at line 7181 skipping to change at line 7411
* @param obj The given canvas pointer. * @param obj The given canvas pointer.
* @return hint The content hint value set on it, one of the * @return hint The content hint value set on it, one of the
* #Evas_Image_Content_Hint ones (#EVAS_IMAGE_CONTENT_HINT_NONE means * #Evas_Image_Content_Hint ones (#EVAS_IMAGE_CONTENT_HINT_NONE means
* an error). * an error).
* *
* This function returns the content hint value of the given image of * This function returns the content hint value of the given image of
* the canvas. * the canvas.
* *
* @see evas_object_image_content_hint_set() * @see evas_object_image_content_hint_set()
*/ */
EAPI Evas_Image_Content_Hint evas_object_image_content_hint_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Image_Content_Hint evas_object_image_content_hint_get (con st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Enable an image to be used as an alpha mask. * Enable an image to be used as an alpha mask.
* *
* This will set any flags, and discard any excess image data not used as a n * This will set any flags, and discard any excess image data not used as a n
* alpha mask. * alpha mask.
* *
* Note there is little point in using a image as alpha mask unless it has an * Note there is little point in using a image as alpha mask unless it has an
* alpha channel. * alpha channel.
* *
skipping to change at line 7231 skipping to change at line 7461
/** /**
* Get the current source object of an image object. * Get the current source object of an image object.
* *
* @param obj Image object * @param obj Image object
* @return Source object (if any), or @c NULL, if not in "proxy mode" * @return Source object (if any), or @c NULL, if not in "proxy mode"
* (or on errors). * (or on errors).
* *
* @see evas_object_image_source_set() for more details * @see evas_object_image_source_set() for more details
*/ */
EAPI Evas_Object *evas_object_image_source_get (Eva s_Object *obj) EINA_ARG_NONNULL(1); EAPI Evas_Object *evas_object_image_source_get (con st Evas_Object *obj) EINA_ARG_NONNULL(1);
/** /**
* Clear the source object on a proxy image object. * Clear the source object on a proxy image object.
* *
* @param obj Image object to clear source of. * @param obj Image object to clear source of.
* @return @c EINA_TRUE on success, @c EINA_FALSE on error. * @return @c EINA_TRUE on success, @c EINA_FALSE on error.
* *
* This is equivalent to calling evas_object_image_source_set() with a * This is equivalent to calling evas_object_image_source_set() with a
* @c NULL source. * @c NULL source.
*/ */
EAPI Eina_Bool evas_object_image_source_unset (Eva s_Object *obj) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_object_image_source_unset (Eva s_Object *obj) EINA_ARG_NONNULL(1);
/** /**
* Check if a file extension may be supported by @ref Evas_Object_Image. * Check if a file extension may be supported by @ref Evas_Object_Image.
* *
* @param file The file to check * @param file The file to check
* @return EINA_TRUE if we may be able to opeen it, EINA_FALSE if it's unli * @return @c EINA_TRUE if we may be able to open it, @c EINA_FALSE if it's
kely. * unlikely.
* @since 1.1.0 * @since 1.1.0
* *
* If file is a Eina_Stringshare, use directly @ref evas_object_image_exten sion_can_load_fast_get. * If file is a Eina_Stringshare, use directly @ref evas_object_image_exten sion_can_load_fast_get.
* *
* This functions is threadsafe. * This functions is threadsafe.
*/ */
EAPI Eina_Bool evas_object_image_extension_can_load_get(const char *file); EAPI Eina_Bool evas_object_image_extension_can_load_get(const char *file);
/** /**
* Check if a file extension may be supported by @ref Evas_Object_Image. * Check if a file extension may be supported by @ref Evas_Object_Image.
* *
* @param file The file to check, it should be an Eina_Stringshare. * @param file The file to check, it should be an Eina_Stringshare.
* @return EINA_TRUE if we may be able to opeen it, EINA_FALSE if it's unli * @return @c EINA_TRUE if we may be able to open it, @c EINA_FALSE if it's
kely. * unlikely.
* @since 1.1.0 * @since 1.1.0
* *
* This functions is threadsafe. * This functions is threadsafe.
*/ */
EAPI Eina_Bool evas_object_image_extension_can_load_fast_get(const char *fi le); EAPI Eina_Bool evas_object_image_extension_can_load_fast_get(const char *fi le);
/** /**
* Check if an image object can be animated (have multiple frames) * Check if an image object can be animated (have multiple frames)
* *
* @param obj Image object * @param obj Image object
skipping to change at line 7465 skipping to change at line 7697
* arguments, being 'x' your style variable. * arguments, being 'x' your style variable.
*/ */
#define EVAS_TEXT_STYLE_BASIC_SET(x, s) \ #define EVAS_TEXT_STYLE_BASIC_SET(x, s) \
do { x = ((x) & ~EVAS_TEXT_STYLE_MASK_BASIC) | (s); } while (0) do { x = ((x) & ~EVAS_TEXT_STYLE_MASK_BASIC) | (s); } while (0)
#define EVAS_TEXT_STYLE_MASK_SHADOW_DIRECTION (0x7 << 4) #define EVAS_TEXT_STYLE_MASK_SHADOW_DIRECTION (0x7 << 4)
/** /**
* Text style type creation macro. This one will impose shadow * Text style type creation macro. This one will impose shadow
* directions on the style type variable -- use the @c * directions on the style type variable -- use the @c
* EVAS_TEXT_STYLE_SHADOW_DIRECTION_* values on 's', incremmentally. * EVAS_TEXT_STYLE_SHADOW_DIRECTION_* values on 's', incrementally.
*/ */
#define EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET(x, s) \ #define EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET(x, s) \
do { x = ((x) & ~EVAS_TEXT_STYLE_MASK_SHADOW_DIRECTION) | (s); } while ( 0) do { x = ((x) & ~EVAS_TEXT_STYLE_MASK_SHADOW_DIRECTION) | (s); } while ( 0)
typedef enum _Evas_Text_Style_Type typedef enum _Evas_Text_Style_Type
{ {
EVAS_TEXT_STYLE_PLAIN, /**< plain, standard text */ EVAS_TEXT_STYLE_PLAIN, /**< plain, standard text */
EVAS_TEXT_STYLE_SHADOW, /**< text with shadow underneath */ EVAS_TEXT_STYLE_SHADOW, /**< text with shadow underneath */
EVAS_TEXT_STYLE_OUTLINE, /**< text with an outline */ EVAS_TEXT_STYLE_OUTLINE, /**< text with an outline */
EVAS_TEXT_STYLE_SOFT_OUTLINE, /**< text with a soft outline */ EVAS_TEXT_STYLE_SOFT_OUTLINE, /**< text with a soft outline */
skipping to change at line 7529 skipping to change at line 7761
* *
* @see evas_object_text_font_get() * @see evas_object_text_font_get()
*/ */
EAPI void evas_object_text_font_source_set (Evas_Object *obj, const char *font) EINA_ARG_NONNULL(1); EAPI void evas_object_text_font_source_set (Evas_Object *obj, const char *font) EINA_ARG_NONNULL(1);
/** /**
* Get the font file's path which is being used on a given text * Get the font file's path which is being used on a given text
* object. * object.
* *
* @param obj The text object to set font for. * @param obj The text object to set font for.
* @param font The font file's path. * @return The font file's path.
* *
* @see evas_object_text_font_get() for more details * @see evas_object_text_font_get() for more details
*/ */
EAPI const char *evas_object_text_font_source_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI const char *evas_object_text_font_source_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Set the font family and size on a given text object. * Set the font family and size on a given text object.
* *
* @param obj The text object to set font for. * @param obj The text object to set font for.
* @param font The font (family) name. * @param font The font (family) name.
* @param size The font size, in points. * @param size The font size, in points.
* *
* This function allows the font name and size of a text object to be * This function allows the font name and size of a text object to be
* set. The @p font string has to follow fontconfig's convention on * set. The @p font string has to follow fontconfig's convention on
* naming fonts, as it's the underlying lybrary used to query system * naming fonts, as it's the underlying library used to query system
* fonts by Evas (see the @c fc-list command's output, on your system, * fonts by Evas (see the @c fc-list command's output, on your system,
* to get an idea). * to get an idea).
* *
* @see evas_object_text_font_get() * @see evas_object_text_font_get()
* @see evas_object_text_font_source_set() * @see evas_object_text_font_source_set()
*/ */
EAPI void evas_object_text_font_set (Evas_Object *o bj, const char *font, Evas_Font_Size size) EINA_ARG_NONNULL(1); EAPI void evas_object_text_font_set (Evas_Object *o bj, const char *font, Evas_Font_Size size) EINA_ARG_NONNULL(1);
/** /**
* Retrieve the font family and size in use on a given text object. * Retrieve the font family and size in use on a given text object.
skipping to change at line 7590 skipping to change at line 7822
* Retrieves the text string currently being displayed by the given * Retrieves the text string currently being displayed by the given
* text object. * text object.
* *
* @param obj The given text object. * @param obj The given text object.
* @return The text string currently being displayed on it. * @return The text string currently being displayed on it.
* *
* @note Do not free() the return value. * @note Do not free() the return value.
* *
* @see evas_object_text_text_set() * @see evas_object_text_text_set()
*/ */
EAPI const char *evas_object_text_text_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI const char *evas_object_text_text_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* @brief Sets the BiDi delimiters used in the textblock. * @brief Sets the BiDi delimiters used in the textblock.
* *
* BiDi delimiters are use for in-paragraph separation of bidi segments. Th is * BiDi delimiters are use for in-paragraph separation of bidi segments. Th is
* is useful for example in recipients fields of e-mail clients where bidi * is useful for example in recipients fields of e-mail clients where bidi
* oddities can occur when mixing rtl and ltr. * oddities can occur when mixing RTL and LTR.
* *
* @param obj The given text object. * @param obj The given text object.
* @param delim A null terminated string of delimiters, e.g ",|". * @param delim A null terminated string of delimiters, e.g ",|".
* @since 1.1.0 * @since 1.1.0
*/ */
EAPI void evas_object_text_bidi_delimiters_set(Evas_Object *ob j, const char *delim); EAPI void evas_object_text_bidi_delimiters_set(Evas_Object *ob j, const char *delim);
/** /**
* @brief Gets the BiDi delimiters used in the textblock. * @brief Gets the BiDi delimiters used in the textblock.
* *
* BiDi delimiters are use for in-paragraph separation of bidi segments. Th is * BiDi delimiters are use for in-paragraph separation of bidi segments. Th is
* is useful for example in recipients fields of e-mail clients where bidi * is useful for example in recipients fields of e-mail clients where bidi
* oddities can occur when mixing rtl and ltr. * oddities can occur when mixing RTL and LTR.
* *
* @param obj The given text object. * @param obj The given text object.
* @return A null terminated string of delimiters, e.g ",|". If empty, retu rns NULL. * @return A null terminated string of delimiters, e.g ",|". If empty, retu rns NULL.
* @since 1.1.0 * @since 1.1.0
*/ */
EAPI const char *evas_object_text_bidi_delimiters_get(const Evas_Obje ct *obj); EAPI const char *evas_object_text_bidi_delimiters_get(const Evas_Obje ct *obj);
EAPI Evas_Coord evas_object_text_ascent_get (const Evas_Obj EAPI Evas_Coord evas_object_text_ascent_get (const Evas_Obj
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
EAPI Evas_Coord evas_object_text_descent_get (const Evas_Obj EAPI Evas_Coord evas_object_text_descent_get (const Evas_Obj
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
EAPI Evas_Coord evas_object_text_max_ascent_get (const Evas_Obj EAPI Evas_Coord evas_object_text_max_ascent_get (const Evas_Obj
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
EAPI Evas_Coord evas_object_text_max_descent_get (const Evas_Obj EAPI Evas_Coord evas_object_text_max_descent_get (const Evas_Obj
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
EAPI Evas_Coord evas_object_text_horiz_advance_get(const Evas_Obj EAPI Evas_Coord evas_object_text_horiz_advance_get(const Evas_Obj
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
EAPI Evas_Coord evas_object_text_vert_advance_get (const Evas_Obj EAPI Evas_Coord evas_object_text_vert_advance_get (const Evas_Obj
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
EAPI Evas_Coord evas_object_text_inset_get (const Evas_Obj EAPI Evas_Coord evas_object_text_inset_get (const Evas_Obj
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Retrieve position and dimension information of a character within a text @c Evas_Object. * Retrieve position and dimension information of a character within a text @c Evas_Object.
* *
* This function is used to obtain the X, Y, width and height of a the char acter * This function is used to obtain the X, Y, width and height of a the char acter
* located at @p pos within the @c Evas_Object @p obj. @p obj must be a tex t object * located at @p pos within the @c Evas_Object @p obj. @p obj must be a tex t object
* as created with evas_object_text_add(). Any of the @c Evas_Coord paramet ers (@p cx, * as created with evas_object_text_add(). Any of the @c Evas_Coord paramet ers (@p cx,
* @p cy, @p cw, @p ch) may be NULL in which case no value will be assigned to that * @p cy, @p cw, @p ch) may be @c NULL in which case no value will be assig ned to that
* parameter. * parameter.
* *
* @param obj The text object to retrieve position information for. * @param obj The text object to retrieve position information for.
* @param pos The character position to request co-ordinates for. * @param pos The character position to request co-ordinates for.
* @param cx A pointer to an @c Evas_Coord to store the X value in (can b e NULL). * @param cx A pointer to an @c Evas_Coord to store the X value in (can b e NULL).
* @param cy A pointer to an @c Evas_Coord to store the Y value in (can b e NULL). * @param cy A pointer to an @c Evas_Coord to store the Y value in (can b e NULL).
* @param cw A pointer to an @c Evas_Coord to store the Width value in (c an be NULL). * @param cw A pointer to an @c Evas_Coord to store the Width value in (c an be NULL).
* @param ch A pointer to an @c Evas_Coord to store the Height value in ( can be NULL). * @param ch A pointer to an @c Evas_Coord to store the Height value in ( can be NULL).
* *
* @returns EINA_FALSE on success, EINA_TRUE on error. * @return @c EINA_FALSE on success, @c EINA_TRUE on error.
*/ */
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); 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);
EAPI int evas_object_text_char_coords_get (const Evas_Obj ect *obj, Evas_Coord x, Evas_Coord y, Evas_Coord *cx, Evas_Coord *cy, Evas_ Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1); EAPI int evas_object_text_char_coords_get (const Evas_Obj ect *obj, Evas_Coord x, Evas_Coord y, Evas_Coord *cx, Evas_Coord *cy, Evas_ Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1);
/** /**
* Returns the logical position of the last char in the text * Returns the logical position of the last char in the text
* up to the pos given. this is NOT the position of the last char * up to the pos given. this is NOT the position of the last char
* because of the possibility of RTL in the text. * because of the possibility of RTL in the text.
*/ */
EAPI int evas_object_text_last_up_to_pos (const Evas_Object *obj, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1); EAPI int evas_object_text_last_up_to_pos (const Evas_Object *obj, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1);
/** /**
* Retrieves the style on use on the given text object. * Retrieves the style on use on the given text object.
* *
* @param obj the given text object to set style on. * @param obj the given text object to set style on.
* @return the style type in use. * @return the style type in use.
* *
* @see evas_object_text_style_set() for more details. * @see evas_object_text_style_set() for more details.
*/ */
EAPI Evas_Text_Style_Type evas_object_text_style_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Text_Style_Type evas_object_text_style_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Sets the style to apply on the given text object. * Sets the style to apply on the given text object.
* *
* @param obj the given text object to set style on. * @param obj the given text object to set style on.
* @param type a style type. * @param type a style type.
* *
* Text object styles are one of the values in * Text object styles are one of the values in
* #Evas_Text_Style_Type. Some of those values are combinations of * #Evas_Text_Style_Type. Some of those values are combinations of
* more than one style, and some account for the direction of the * more than one style, and some account for the direction of the
skipping to change at line 7712 skipping to change at line 7944
* underneath it, will just be shown if the object is set to one of * underneath it, will just be shown if the object is set to one of
* the following styles: * the following styles:
* *
* - #EVAS_TEXT_STYLE_SHADOW * - #EVAS_TEXT_STYLE_SHADOW
* - #EVAS_TEXT_STYLE_OUTLINE_SHADOW * - #EVAS_TEXT_STYLE_OUTLINE_SHADOW
* - #EVAS_TEXT_STYLE_FAR_SHADOW * - #EVAS_TEXT_STYLE_FAR_SHADOW
* - #EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW * - #EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW
* - #EVAS_TEXT_STYLE_SOFT_SHADOW * - #EVAS_TEXT_STYLE_SOFT_SHADOW
* - #EVAS_TEXT_STYLE_FAR_SOFT_SHADOW * - #EVAS_TEXT_STYLE_FAR_SOFT_SHADOW
* *
* One can also change de direction the shadow grows to, with * One can also change the direction where the shadow grows to, with
* evas_object_text_style_set(). * evas_object_text_style_set().
* *
* @see evas_object_text_shadow_color_get() * @see evas_object_text_shadow_color_get()
*/ */
EAPI void evas_object_text_shadow_color_set (Evas_Object *obj, int r, int g, int b, int a) EINA_ARG_NONNULL(1); EAPI void evas_object_text_shadow_color_set (Evas_Object *obj, int r, int g, int b, int a) EINA_ARG_NONNULL(1);
/** /**
* Retrieves the shadow color for the given text object. * Retrieves the shadow color for the given text object.
* *
* @param obj The given Evas text object. * @param obj The given Evas text object.
skipping to change at line 7894 skipping to change at line 8126
* @defgroup Evas_Object_Textblock Textblock Object Functions * @defgroup Evas_Object_Textblock Textblock Object Functions
* *
* Functions used to create and manipulate textblock objects. Unlike * Functions used to create and manipulate textblock objects. Unlike
* @ref Evas_Object_Text, these handle complex text, doing multiple * @ref Evas_Object_Text, these handle complex text, doing multiple
* styles and multiline text based on HTML-like tags. Of these extra * styles and multiline text based on HTML-like tags. Of these extra
* features will be heavier on memory and processing cost. * features will be heavier on memory and processing cost.
* *
* @section Evas_Object_Textblock_Tutorial Textblock Object Tutorial * @section Evas_Object_Textblock_Tutorial Textblock Object Tutorial
* *
* This part explains about the textblock object's API and proper usage. * This part explains about the textblock object's API and proper usage.
* If you want to develop textblock, you should also refer to @ref Evas_Obj ect_Textblock_Internal.
* The main user of the textblock object is the edje entry object in Edje, so * The main user of the textblock object is the edje entry object in Edje, so
* that's a good place to learn from, but I think this document is more tha n * that's a good place to learn from, but I think this document is more tha n
* enough, if it's not, please contact me and I'll update it. * enough, if it's not, please contact me and I'll update it.
* *
* @subsection textblock_intro Introduction * @subsection textblock_intro Introduction
* The textblock objects is, as implied, an object that can show big chunks of * The textblock objects is, as implied, an object that can show big chunks of
* text. Textblock supports many features including: Text formatting, autom atic * text. Textblock supports many features including: Text formatting, autom atic
* and manual text alignment, embedding items (for example icons) and more. * and manual text alignment, embedding items (for example icons) and more.
* Textblock has three important parts, the text paragraphs, the format nod es * Textblock has three important parts, the text paragraphs, the format nod es
* and the cursors. * and the cursors.
skipping to change at line 7916 skipping to change at line 8147
* You can use markup to format text, for example: "<font_size=50>Big!</fon t_size>". * You can use markup to format text, for example: "<font_size=50>Big!</fon t_size>".
* You can also put more than one style directive in one tag: * You can also put more than one style directive in one tag:
* "<font_size=50 color=#F00>Big and Red!</font_size>". * "<font_size=50 color=#F00>Big and Red!</font_size>".
* Please notice that we used "</font_size>" although the format also inclu ded * Please notice that we used "</font_size>" although the format also inclu ded
* color, this is because the first format determines the matching closing tag's * color, this is because the first format determines the matching closing tag's
* name. You can also use anonymous tags, like: "<font_size=30>Big</>" whic h * name. You can also use anonymous tags, like: "<font_size=30>Big</>" whic h
* just pop any type of format, but it's advised to use the named alternati ves * just pop any type of format, but it's advised to use the named alternati ves
* instead. * instead.
* *
* @subsection textblock_cursors Textblock Object Cursors * @subsection textblock_cursors Textblock Object Cursors
* A textblock Cursor @ref Evas_Textblock_Cursor is data type that represen ts * A textblock Cursor is data type that represents
* a position in a textblock. Each cursor contains information about the * a position in a textblock. Each cursor contains information about the
* paragraph it points to, the position in that paragraph and the object it self. * paragraph it points to, the position in that paragraph and the object it self.
* Cursors register to textblock objects upon creation, this means that onc e * Cursors register to textblock objects upon creation, this means that onc e
* you created a cursor, it belongs to a specific obj and you can't for exa mple * you created a cursor, it belongs to a specific obj and you can't for exa mple
* copy a cursor "into" a cursor of a different object. Registered cursors * copy a cursor "into" a cursor of a different object. Registered cursors
* also have the added benefit of updating automatically upon textblock cha nges, * also have the added benefit of updating automatically upon textblock cha nges,
* this means that if you have a cursor pointing to a specific character, i t'll * this means that if you have a cursor pointing to a specific character, i t'll
* still point to it even after you change the whole object completely (as long * still point to it even after you change the whole object completely (as long
* as the char was not deleted), this is not possible without updating, bec ause * as the char was not deleted), this is not possible without updating, bec ause
* as mentioned, each cursor holds a character position. There are many * as mentioned, each cursor holds a character position. There are many
skipping to change at line 7946 skipping to change at line 8177
* format nodes associated with it which are responsible for the formatting * format nodes associated with it which are responsible for the formatting
* of that paragraph. * of that paragraph.
* *
* @subsection textblock_format_nodes Textblock Object Format Nodes * @subsection textblock_format_nodes Textblock Object Format Nodes
* As explained in @ref textblock_paragraphs each one of the format nodes * As explained in @ref textblock_paragraphs each one of the format nodes
* is associated with a paragraph. * is associated with a paragraph.
* There are two types of format nodes, visible and invisible: * There are two types of format nodes, visible and invisible:
* Visible: formats that a cursor can point to, i.e formats that * Visible: formats that a cursor can point to, i.e formats that
* occupy space, for example: newlines, tabs, items and etc. Some visible i tems * occupy space, for example: newlines, tabs, items and etc. Some visible i tems
* are made of two parts, in this case, only the opening tag is visible. * are made of two parts, in this case, only the opening tag is visible.
* A closing tag (i.e a </tag> tag) should NEVER be visible. * A closing tag (i.e a \</tag\> tag) should NEVER be visible.
* Invisible: formats that don't occupy space, for example: bold and underl ine. * Invisible: formats that don't occupy space, for example: bold and underl ine.
* Being able to access format nodes is very important for some uses. For * Being able to access format nodes is very important for some uses. For
* example, edje uses the "<a>" format to create links in the text (and pop * example, edje uses the "<a>" format to create links in the text (and pop
* popups above them when clicked). For the textblock object a is just a * popups above them when clicked). For the textblock object a is just a
* formatting instruction (how to color the text), but edje utilizes the ac cess * formatting instruction (how to color the text), but edje utilizes the ac cess
* to the format nodes to make it do more. * to the format nodes to make it do more.
* For more information, take a look at all the evas_textblock_node_format_ * * For more information, take a look at all the evas_textblock_node_format_ *
* functions. * functions.
* The translation of "<tag>" tags to actual format is done according to th e * The translation of "<tag>" tags to actual format is done according to th e
* tags defined in the style, see @ref evas_textblock_style_set * tags defined in the style, see @ref evas_textblock_style_set
* *
* @subsection textblock_special_formats Special Formats * @subsection textblock_special_formats Special Formats
* Textblock supports various format directives that can be used either in * Textblock supports various format directives that can be used in markup.
* markup, or by calling @ref evas_object_textblock_format_append or In
* @ref evas_object_textblock_format_prepend. In addition to the mentioned * addition to the mentioned format directives, textblock allows creating
* format directives, textblock allows creating additional format directive * additional format directives using "tags" that can be set in the style s
s ee
* using "tags" that can be set in the style see @ref evas_textblock_style_ * @ref evas_textblock_style_set .
set .
* *
* Textblock supports the following formats: * Textblock supports the following formats:
* @li font - Font description in fontconfig like format, e.g: "Sans:style= Italic:lang=hi". or "Serif:style=Bold". * @li font - Font description in fontconfig like format, e.g: "Sans:style= Italic:lang=hi". or "Serif:style=Bold".
* @li font_weight - Overrides the weight defined in "font". E.g: "font_wei ght=Bold" is the same as "font=:style=Bold". Supported weights: "normal", " thin", "ultralight", "light", "book", "medium", "semibold", "bold", "ultrab old", "black", and "extrablack". * @li font_weight - Overrides the weight defined in "font". E.g: "font_wei ght=Bold" is the same as "font=:style=Bold". Supported weights: "normal", " thin", "ultralight", "light", "book", "medium", "semibold", "bold", "ultrab old", "black", and "extrablack".
* @li font_style - Overrides the style defined in "font". E.g: "font_style =Italic" is the same as "font=:style=Italic". Supported styles: "normal", " oblique", and "italic". * @li font_style - Overrides the style defined in "font". E.g: "font_style =Italic" is the same as "font=:style=Italic". Supported styles: "normal", " oblique", and "italic".
* @li font_width - Overrides the width defined in "font". E.g: "font_width =Condensed" is the same as "font=:style=Condensed". Supported widths: "norm al", "ultracondensed", "extracondensed", "condensed", "semicondensed", "sem iexpanded", "expanded", "extraexpanded", and "ultraexpanded". * @li font_width - Overrides the width defined in "font". E.g: "font_width =Condensed" is the same as "font=:style=Condensed". Supported widths: "norm al", "ultracondensed", "extracondensed", "condensed", "semicondensed", "sem iexpanded", "expanded", "extraexpanded", and "ultraexpanded".
* @li lang - Overrides the language defined in "font". E.g: "lang=he" is t he same as "font=:lang=he". * @li lang - Overrides the language defined in "font". E.g: "lang=he" is t he same as "font=:lang=he".
* @li font_fallbacks - A comma delimited list of fonts to try if finding t he main font fails. * @li font_fallbacks - A comma delimited list of fonts to try if finding t he main font fails.
* @li font_size - The font size in points. * @li font_size - The font size in points.
* @li font_source - The source of the font, e.g an eet file. * @li font_source - The source of the font, e.g an eet file.
skipping to change at line 8049 skipping to change at line 8279
* @param e The given evas. * @param e The given evas.
* @return The new textblock object. * @return The new textblock object.
*/ */
EAPI Evas_Object *evas_object_textblock_add(Evas *e) EINA_W ARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC; EAPI Evas_Object *evas_object_textblock_add(Evas *e) EINA_W ARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
/** /**
* Returns the unescaped version of escape. * Returns the unescaped version of escape.
* @param escape the string to be escaped * @param escape the string to be escaped
* @return the unescaped version of escape * @return the unescaped version of escape
*/ */
EAPI const char *evas_textblock_escape_string_get(const ch ar *escape) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI const char *evas_textblock_escape_string_get(const ch ar *escape) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Returns the escaped version of the string. * Returns the escaped version of the string.
* @param string to escape * @param string to escape
* @param len_ret the len of the part of the string that was used. * @param len_ret the len of the part of the string that was used.
* @return the escaped string. * @return the escaped string.
*/ */
EAPI const char *evas_textblock_string_escape_get(const ch ar *string, int *len_ret) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_ PURE; EAPI const char *evas_textblock_string_escape_get(const ch ar *string, int *len_ret) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Return the unescaped version of the string between start and end. * Return the unescaped version of the string between start and end.
* *
* @param escape_start the start of the string. * @param escape_start the start of the string.
* @param escape_end the end of the string. * @param escape_end the end of the string.
* @return the unescaped version of the range * @return the unescaped version of the range
*/ */
EAPI const char *evas_textblock_escape_string_range_get(co EAPI const char *evas_textblock_escape_string_range_get(co
nst char *escape_start, const char *escape_end) EINA_WARN_UNUSED_RESULT EIN nst char *escape_start, const char *escape_end) EINA_WARN_UNUSED_RESULT EIN
A_ARG_NONNULL(1, 2) EINA_PURE; A_ARG_NONNULL(1, 2);
/**
* Return the plain version of the markup.
*
* Works as if you set the markup to a textblock and then retrieve the plai
n
* version of the text. i.e: <br> and <\n> will be replaced with \n, &...;
with
* the actual char and etc.
*
* @param obj The textblock object to work with. (if @c NULL, tries the
* default).
* @param text The markup text (if @c NULL, return @c NULL).
* @return An allocated plain text version of the markup.
* @since 1.2.0
*/
EAPI char *evas_textblock_text_markup_to_utf8(const
Evas_Object *obj, const char *text) EINA_WARN_UNUSED_RESULT EINA_MALLOC;
/**
* Return the markup version of the plain text.
*
* Replaces \\n -\> \<br/\> \\t -\> \<tab/\> and etc. Generally needed befo
re you pass
* plain text to be set in a textblock.
*
* @param obj the textblock object to work with (if @c NULL, it just does t
he
* default behaviour, i.e with no extra object information).
* @param text The markup text (if @c NULL, return @c NULL).
* @return An allocated plain text version of the markup.
* @since 1.2.0
*/
EAPI char *evas_textblock_text_utf8_to_markup(const
Evas_Object *obj, const char *text) EINA_WARN_UNUSED_RESULT EINA_MALLOC;
/** /**
* Creates a new textblock style. * Creates a new textblock style.
* @return The new textblock style. * @return The new textblock style.
*/ */
EAPI Evas_Textblock_Style *evas_textblock_style_new(void) EINA_WARN_ UNUSED_RESULT EINA_MALLOC; EAPI Evas_Textblock_Style *evas_textblock_style_new(void) EINA_WARN_ UNUSED_RESULT EINA_MALLOC;
/** /**
* Destroys a textblock style. * Destroys a textblock style.
* @param ts The textblock style to free. * @param ts The textblock style to free.
skipping to change at line 8095 skipping to change at line 8354
* @param text the text to parse - NOT NULL. * @param text the text to parse - NOT NULL.
* @return Returns no value. * @return Returns no value.
*/ */
EAPI void evas_textblock_style_set(Evas_Textblock_S tyle *ts, const char *text) EINA_ARG_NONNULL(1); EAPI void evas_textblock_style_set(Evas_Textblock_S tyle *ts, const char *text) EINA_ARG_NONNULL(1);
/** /**
* Return the text of the style ts. * Return the text of the style ts.
* @param ts the style to get it's text. * @param ts the style to get it's text.
* @return the text of the style or null on error. * @return the text of the style or null on error.
*/ */
EAPI const char *evas_textblock_style_get(const Evas_Textb lock_Style *ts) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI const char *evas_textblock_style_get(const Evas_Textb lock_Style *ts) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Set the objects style to ts. * Set the objects style to ts.
* @param obj the Evas object to set the style to. * @param obj the Evas object to set the style to.
* @param ts the style to set. * @param ts the style to set.
* @return Returns no value. * @return Returns no value.
*/ */
EAPI void evas_object_textblock_style_set(Evas_Obje ct *obj, Evas_Textblock_Style *ts) EINA_ARG_NONNULL(1); EAPI void evas_object_textblock_style_set(Evas_Obje ct *obj, Evas_Textblock_Style *ts) EINA_ARG_NONNULL(1);
/** /**
* Return the style of an object. * Return the style of an object.
* @param obj the object to get the style from. * @param obj the object to get the style from.
* @return the style of the object. * @return the style of the object.
*/ */
EAPI const Evas_Textblock_Style *evas_object_textblock_style_get(const Eva EAPI const Evas_Textblock_Style *evas_object_textblock_style_get(const Eva
s_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; s_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/**
* Push ts to the top of the user style stack.
*
* FIXME: API is solid but currently only supports 1 style in the stack.
*
* The user style overrides the corresponding elements of the regular style
.
* This is the proper way to do theme overrides in code.
* @param obj the Evas object to set the style to.
* @param ts the style to set.
* @return Returns no value.
* @see evas_object_textblock_style_set
* @since 1.2.0
*/
EAPI void evas_object_textblock_style_user_push(Eva
s_Object *obj, Evas_Textblock_Style *ts) EINA_ARG_NONNULL(1);
/**
* Del the from the top of the user style stack.
*
* @param obj the object to get the style from.
* @see evas_object_textblock_style_get
* @since 1.2.0
*/
EAPI void evas_object_textblock_style_user_pop(Evas_
Object *obj) EINA_ARG_NONNULL(1);
/**
* Get (don't remove) the style at the top of the user style stack.
*
* @param obj the object to get the style from.
* @return the style of the object.
* @see evas_object_textblock_style_get
* @since 1.2.0
*/
EAPI const Evas_Textblock_Style *evas_object_textblock_style_user_peek(con
st Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* @brief Set the "replacement character" to use for the given textblock ob ject. * @brief Set the "replacement character" to use for the given textblock ob ject.
* *
* @param obj The given textblock object. * @param obj The given textblock object.
* @param ch The charset name. * @param ch The charset name.
*/ */
EAPI void evas_object_textblock_replace_char_set(Ev as_Object *obj, const char *ch) EINA_ARG_NONNULL(1); EAPI void evas_object_textblock_replace_char_set(Ev as_Object *obj, const char *ch) EINA_ARG_NONNULL(1);
/** /**
* @brief Get the "replacement character" for given textblock object. Retur ns * @brief Get the "replacement character" for given textblock object. Retur ns
* NULL if no replacement character is in use. * @c NULL if no replacement character is in use.
* *
* @param obj The given textblock object * @param obj The given textblock object
* @return replacement character or @c NULL * @return Replacement character or @c NULL.
*/ */
EAPI const char *evas_object_textblock_replace_char_get(Ev as_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI const char *evas_object_textblock_replace_char_get(Ev as_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* @brief Sets the vertical alignment of text within the textblock object * @brief Sets the vertical alignment of text within the textblock object
* as a whole. * as a whole.
* *
* Normally alignment is 0.0 (top of object). Values given should be * Normally alignment is 0.0 (top of object). Values given should be
* between 0.0 and 1.0 (1.0 bottom of object, 0.5 being vertically centered * between 0.0 and 1.0 (1.0 bottom of object, 0.5 being vertically centered
* etc.). * etc.).
* *
* @param obj The given textblock object. * @param obj The given textblock object.
* @param align A value between 0.0 and 1.0 * @param align A value between @c 0.0 and @c 1.0.
* @since 1.1.0 * @since 1.1.0
*/ */
EAPI void evas_object_textblock_valign_set(Evas_Obj ect *obj, double align); EAPI void evas_object_textblock_valign_set(Evas_Obj ect *obj, double align);
/** /**
* @brief Gets the vertical alignment of a textblock * @brief Gets the vertical alignment of a textblock
* *
* @param obj The given textblock object. * @param obj The given textblock object.
* @return The elignment set for the object * @return The alignment set for the object.
* @since 1.1.0 * @since 1.1.0
*/ */
EAPI double evas_object_textblock_valign_get(const Ev as_Object *obj); EAPI double evas_object_textblock_valign_get(const Ev as_Object *obj);
/** /**
* @brief Sets the BiDi delimiters used in the textblock. * @brief Sets the BiDi delimiters used in the textblock.
* *
* BiDi delimiters are use for in-paragraph separation of bidi segments. Th is * BiDi delimiters are use for in-paragraph separation of bidi segments. Th is
* is useful for example in recipients fields of e-mail clients where bidi * is useful for example in recipients fields of e-mail clients where bidi
* oddities can occur when mixing rtl and ltr. * oddities can occur when mixing RTL and LTR.
* *
* @param obj The given textblock object. * @param obj The given textblock object.
* @param delim A null terminated string of delimiters, e.g ",|". * @param delim A null terminated string of delimiters, e.g ",|".
* @since 1.1.0 * @since 1.1.0
*/ */
EAPI void evas_object_textblock_bidi_delimiters_set (Evas_Object *obj, const char *delim); EAPI void evas_object_textblock_bidi_delimiters_set (Evas_Object *obj, const char *delim);
/** /**
* @brief Gets the BiDi delimiters used in the textblock. * @brief Gets the BiDi delimiters used in the textblock.
* *
* BiDi delimiters are use for in-paragraph separation of bidi segments. Th is * BiDi delimiters are use for in-paragraph separation of bidi segments. Th is
* is useful for example in recipients fields of e-mail clients where bidi * is useful for example in recipients fields of e-mail clients where bidi
* oddities can occur when mixing rtl and ltr. * oddities can occur when mixing RTL and LTR.
* *
* @param obj The given textblock object. * @param obj The given textblock object.
* @return A null terminated string of delimiters, e.g ",|". If empty, retu * @return A null terminated string of delimiters, e.g ",|". If empty, retu
rns NULL. rns
* @c NULL.
* @since 1.1.0 * @since 1.1.0
*/ */
EAPI const char *evas_object_textblock_bidi_delimiters_get (const Evas_Object *obj); EAPI const char *evas_object_textblock_bidi_delimiters_get (const Evas_Object *obj);
/** /**
* @brief Sets newline mode. When true, newline character will behave * @brief Sets newline mode. When true, newline character will behave
* as a paragraph separator. * as a paragraph separator.
* *
* @param obj The given textblock object. * @param obj The given textblock object.
* @param mode EINA_TRUE for legacy mode, EINA_FALSE otherwise. * @param mode @c EINA_TRUE for legacy mode, @c EINA_FALSE otherwise.
* @since 1.1.0 * @since 1.1.0
*/ */
EAPI void evas_object_textblock_legacy_newline_set( Evas_Object *obj, Eina_Bool mode) EINA_ARG_NONNULL(1); EAPI void evas_object_textblock_legacy_newline_set( Evas_Object *obj, Eina_Bool mode) EINA_ARG_NONNULL(1);
/** /**
* @brief Gets newline mode. When true, newline character behaves * @brief Gets newline mode. When true, newline character behaves
* as a paragraph separator. * as a paragraph separator.
* *
* @param obj The given textblock object. * @param obj The given textblock object.
* @return EINA_TRUE if in legacy mode, EINA_FALSE otherwise. * @return @c EINA_TRUE if in legacy mode, @c EINA_FALSE otherwise.
* @since 1.1.0 * @since 1.1.0
*/ */
EAPI Eina_Bool evas_object_textblock_legacy_newline_get( const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PU RE; EAPI Eina_Bool evas_object_textblock_legacy_newline_get( const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Sets the tetxblock's text to the markup text. * Sets the tetxblock's text to the markup text.
* *
* @note assumes text does not include the unicode object replacement char (0xFFFC) * @note assumes text does not include the unicode object replacement char (0xFFFC)
* *
* @param obj the textblock object. * @param obj the textblock object.
* @param text the markup text to use. * @param text the markup text to use.
* @return Return no value. * @return Return no value.
*/ */
skipping to change at line 8232 skipping to change at line 8526
* *
* @param obj the Evas object. * @param obj the Evas object.
* @return the markup text of the object. * @return the markup text of the object.
*/ */
EAPI const char *evas_object_textblock_text_markup_get(con st Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI const char *evas_object_textblock_text_markup_get(con st Evas_Object *obj) EINA_ARG_NONNULL(1);
/** /**
* Return the object's main cursor. * Return the object's main cursor.
* *
* @param obj the object. * @param obj the object.
* @return the obj's main cursor. * @return The @p obj's main cursor.
*/ */
EAPI Evas_Textblock_Cursor *evas_object_textblock_cursor_get(const Evas_Obj ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Textblock_Cursor *evas_object_textblock_cursor_get(const Evas_Obj ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Create a new cursor, associate it to the obj and init it to point * Create a new cursor, associate it to the obj and init it to point
* to the start of the textblock. Association to the object means the curso r * to the start of the textblock. Association to the object means the curso r
* will be updated when the object will change. * will be updated when the object will change.
* *
* @note if you need speed and you know what you are doing, it's slightly f aster to just allocate the cursor yourself and not associate it. (only peop le developing the actual object, and not users of the object). * @note if you need speed and you know what you are doing, it's slightly f aster to just allocate the cursor yourself and not associate it. (only peop le developing the actual object, and not users of the object).
* *
* @param obj the object to associate to. * @param obj the object to associate to.
* @return the new cursor. * @return the new cursor.
skipping to change at line 8277 skipping to change at line 8571
* *
* @param cur the cursor to set. * @param cur the cursor to set.
* @return Returns no value. * @return Returns no value.
*/ */
EAPI void evas_textblock_cursor_paragraph_last(Evas _Textblock_Cursor *cur) EINA_ARG_NONNULL(1); EAPI void evas_textblock_cursor_paragraph_last(Evas _Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
/** /**
* Advances to the start of the next text node * Advances to the start of the next text node
* *
* @param cur the cursor to update * @param cur the cursor to update
* @return #EINA_TRUE if it managed to advance a paragraph, #EINA_FALSE oth * @return @c EINA_TRUE if it managed to advance a paragraph, @c EINA_FALSE
erwise. * otherwise.
*/ */
EAPI Eina_Bool evas_textblock_cursor_paragraph_next(Evas _Textblock_Cursor *cur) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_textblock_cursor_paragraph_next(Evas _Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
/** /**
* Advances to the end of the previous text node * Advances to the end of the previous text node
* *
* @param cur the cursor to update * @param cur the cursor to update
* @return #EINA_TRUE if it managed to advance a paragraph, #EINA_FALSE oth * @return @c EINA_TRUE if it managed to advance a paragraph, @c EINA_FALSE
erwise. * otherwise.
*/ */
EAPI Eina_Bool evas_textblock_cursor_paragraph_prev(Evas _Textblock_Cursor *cur) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_textblock_cursor_paragraph_prev(Evas _Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
/** /**
* Returns the * Returns the
* *
* @param obj The evas, must not be NULL. * @param obj The evas, must not be @c NULL.
* @param anchor the anchor name to get * @param anchor the anchor name to get
* @return Returns the list format node corresponding to the anchor, may be null if there are none. * @return Returns the list format node corresponding to the anchor, may be null if there are none.
*/ */
EAPI const Eina_List *evas_textblock_node_format_list_get(const Evas_Object *obj, const char *anchor) EINA_ARG_NONNULL(1, 2); EAPI const Eina_List *evas_textblock_node_format_list_get(const Evas_Object *obj, const char *anchor) EINA_ARG_NONNULL(1, 2);
/** /**
* Returns the first format node. * Returns the first format node.
* *
* @param obj The evas, must not be NULL. * @param obj The evas, must not be @c NULL.
* @return Returns the first format node, may be null if there are none. * @return Returns the first format node, may be null if there are none.
*/ */
EAPI const Evas_Object_Textblock_Node_Format *evas_textblock_node_format_fi rst_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI const Evas_Object_Textblock_Node_Format *evas_textblock_node_format_fi rst_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/** /**
* Returns the last format node. * Returns the last format node.
* *
* @param obj The evas textblock, must not be NULL. * @param obj The evas textblock, must not be NULL.
* @return Returns the first format node, may be null if there are none. * @return Returns the first format node, may be null if there are none.
*/ */
skipping to change at line 8331 skipping to change at line 8627
/** /**
* Returns the prev format node (after n) * Returns the prev format node (after n)
* *
* @param n the current format node - not null. * @param n the current format node - not null.
* @return Returns the prev format node, may be null. * @return Returns the prev format node, may be null.
*/ */
EAPI const Evas_Object_Textblock_Node_Format *evas_textblock_node_format_pr ev_get(const Evas_Object_Textblock_Node_Format *n) EINA_ARG_NONNULL(1); EAPI const Evas_Object_Textblock_Node_Format *evas_textblock_node_format_pr ev_get(const Evas_Object_Textblock_Node_Format *n) EINA_ARG_NONNULL(1);
/** /**
* Remove a format node and it's match. i.e, removes a <tag> </tag> pair. * Remove a format node and it's match. i.e, removes a \<tag\> \</tag\> pai
* Assumes the node is the first part of <tag> i.e, this won't work if r.
* Assumes the node is the first part of \<tag\> i.e, this won't work if
* n is a closing tag. * n is a closing tag.
* *
* @param obj the Evas object of the textblock - not null. * @param obj the Evas object of the textblock - not null.
* @param n the current format node - not null. * @param n the current format node - not null.
*/ */
EAPI void evas_textblock_node_format_remove_pair(Ev as_Object *obj, Evas_Object_Textblock_Node_Format *n) EINA_ARG_NONNULL(1, 2 ); EAPI void evas_textblock_node_format_remove_pair(Ev as_Object *obj, Evas_Object_Textblock_Node_Format *n) EINA_ARG_NONNULL(1, 2 );
/** /**
* Sets the cursor to point to the place where format points to. * Sets the cursor to point to the place where format points to.
* *
* @param cur the cursor to update. * @param cur the cursor to update.
* @param n the format node to update according. * @param n the format node to update according.
* @deprecated duplicate of evas_textblock_cursor_at_format_set * @deprecated duplicate of evas_textblock_cursor_at_format_set
*/ */
EINA_DEPRECATED EAPI void evas_textblock_cursor_set _at_format(Evas_Textblock_Cursor *cur, const Evas_Object_Textblock_Node_For mat *n) EINA_ARG_NONNULL(1, 2); EAPI void evas_textblock_cursor_set_at_format(Evas_ Textblock_Cursor *cur, const Evas_Object_Textblock_Node_Format *n) EINA_ARG _NONNULL(1, 2);
/** /**
* Return the format node at the position pointed by cur. * Return the format node at the position pointed by cur.
* *
* @param cur the position to look at. * @param cur the position to look at.
* @return the format node if found, NULL otherwise. * @return the format node if found, @c NULL otherwise.
* @see evas_textblock_cursor_format_is_visible_get() * @see evas_textblock_cursor_format_is_visible_get()
*/ */
EAPI const Evas_Object_Textblock_Node_Format *evas_textblock_cursor_format_ get(const Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); EAPI const Evas_Object_Textblock_Node_Format *evas_textblock_cursor_format_ get(const Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
/** /**
* Get the text format representation of the format node. * Get the text format representation of the format node.
* *
* @param fmt the format node. * @param fnode the format node.
* @return the textual format of the format node. * @return the textual format of the format node.
*/ */
EAPI const char *evas_textblock_node_format_text_get(const Evas_Object_Textblock_Node_Format *fnode) EINA_WARN_UNUSED_RESULT EINA_ARG _NONNULL(1); EAPI const char *evas_textblock_node_format_text_get(const Evas_Object_Textblock_Node_Format *fnode) EINA_WARN_UNUSED_RESULT EINA_ARG _NONNULL(1);
/** /**
* Set the cursor to point to the position of fmt. * Set the cursor to point to the position of fmt.
* *
* @param cur the cursor to update * @param cur the cursor to update
* @param fmt the format to update according to. * @param fmt the format to update according to.
*/ */
EAPI void evas_textblock_cursor_at_format_set(Evas_ Textblock_Cursor *cur, const Evas_Object_Textblock_Node_Format *fmt) EINA_A RG_NONNULL(1, 2); EAPI void evas_textblock_cursor_at_format_set(Evas_ Textblock_Cursor *cur, const Evas_Object_Textblock_Node_Format *fmt) EINA_A RG_NONNULL(1, 2);
/** /**
* Check if the current cursor position is a visible format. This way is mo re * Check if the current cursor position is a visible format. This way is mo re
* efficient than evas_textblock_cursor_format_get() to check for the exist ence * efficient than evas_textblock_cursor_format_get() to check for the exist ence
* of a visible format. * of a visible format.
* *
* @param cur the cursor to look at. * @param cur the cursor to look at.
* @return #EINA_TRUE if the cursor points to a visible format, #EINA_FALSE * @return @c EINA_TRUE if the cursor points to a visible format, @c EINA_F
otherwise. ALSE
* otherwise.
* @see evas_textblock_cursor_format_get() * @see evas_textblock_cursor_format_get()
*/ */
EAPI Eina_Bool evas_textblock_cursor_format_is_visible_g et(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNU LL(1) EINA_PURE; EAPI Eina_Bool evas_textblock_cursor_format_is_visible_g et(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNU LL(1);
/** /**
* Advances to the next format node * Advances to the next format node
* *
* @param cur the cursor to be updated. * @param cur the cursor to be updated.
* @return #EINA_TRUE on success #EINA_FALSE otherwise. * @return @c EINA_TRUE on success @c EINA_FALSE otherwise.
*/ */
EAPI Eina_Bool evas_textblock_cursor_format_next(Evas_Te xtblock_Cursor *cur) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_textblock_cursor_format_next(Evas_Te xtblock_Cursor *cur) EINA_ARG_NONNULL(1);
/** /**
* Advances to the previous format node. * Advances to the previous format node.
* *
* @param cur the cursor to update. * @param cur the cursor to update.
* @return #EINA_TRUE on success #EINA_FALSE otherwise. * @return @c EINA_TRUE on success @c EINA_FALSE otherwise.
*/ */
EAPI Eina_Bool evas_textblock_cursor_format_prev(Evas_Te xtblock_Cursor *cur) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_textblock_cursor_format_prev(Evas_Te xtblock_Cursor *cur) EINA_ARG_NONNULL(1);
/** /**
* Returns true if the cursor points to a format. * Returns true if the cursor points to a format.
* *
* @param cur the cursor to check. * @param cur the cursor to check.
* @return Returns #EINA_TRUE if a cursor points to a format #EINA_FALSE ot * @return @c EINA_TRUE if a cursor points to a format @c EINA_FALSE
herwise. * otherwise.
*/ */
EAPI Eina_Bool evas_textblock_cursor_is_format(const Eva s_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_textblock_cursor_is_format(const Eva s_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
/** /**
* Advances 1 char forward. * Advances 1 char forward.
* *
* @param cur the cursor to advance. * @param cur the cursor to advance.
* @return #EINA_TRUE on success #EINA_FALSE otherwise. * @return @c EINA_TRUE on success @c EINA_FALSE otherwise.
*/ */
EAPI Eina_Bool evas_textblock_cursor_char_next(Evas_Text block_Cursor *cur) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_textblock_cursor_char_next(Evas_Text block_Cursor *cur) EINA_ARG_NONNULL(1);
/** /**
* Advances 1 char backward. * Advances 1 char backward.
* *
* @param cur the cursor to advance. * @param cur the cursor to advance.
* @return #EINA_TRUE on success #EINA_FALSE otherwise. * @return @c EINA_TRUE on success @c EINA_FALSE otherwise.
*/ */
EAPI Eina_Bool evas_textblock_cursor_char_prev(Evas_Text block_Cursor *cur) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_textblock_cursor_char_prev(Evas_Text block_Cursor *cur) EINA_ARG_NONNULL(1);
/** /**
* Moves the cursor to the start of the word under the cursor.
*
* @param cur the cursor to move.
* @return @c EINA_TRUE on success @c EINA_FALSE otherwise.
* @since 1.2.0
*/
EAPI Eina_Bool evas_textblock_cursor_word_start(Evas_Tex
tblock_Cursor *cur) EINA_ARG_NONNULL(1);
/**
* Moves the cursor to the end of the word under the cursor.
*
* @param cur the cursor to move.
* @return @c EINA_TRUE on success @c EINA_FALSE otherwise.
* @since 1.2.0
*/
EAPI Eina_Bool evas_textblock_cursor_word_end(Evas_Textb
lock_Cursor *cur) EINA_ARG_NONNULL(1);
/**
* Go to the first char in the node the cursor is pointing on. * Go to the first char in the node the cursor is pointing on.
* *
* @param cur the cursor to update. * @param cur the cursor to update.
* @return Returns no value. * @return Returns no value.
*/ */
EAPI void evas_textblock_cursor_paragraph_char_firs t(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); EAPI void evas_textblock_cursor_paragraph_char_firs t(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
/** /**
* Go to the last char in a text node. * Go to the last char in a text node.
* *
skipping to change at line 8463 skipping to change at line 8779
* @return Returns no value. * @return Returns no value.
*/ */
EAPI void evas_textblock_cursor_line_char_last(Evas _Textblock_Cursor *cur) EINA_ARG_NONNULL(1); EAPI void evas_textblock_cursor_line_char_last(Evas _Textblock_Cursor *cur) EINA_ARG_NONNULL(1);
/** /**
* Return the current cursor pos. * Return the current cursor pos.
* *
* @param cur the cursor to take the position from. * @param cur the cursor to take the position from.
* @return the position or -1 on error * @return the position or -1 on error
*/ */
EAPI int evas_textblock_cursor_pos_get(const Evas_ Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PUR E; EAPI int evas_textblock_cursor_pos_get(const Evas_ Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Set the cursor pos. * Set the cursor pos.
* *
* @param cur the cursor to be set. * @param cur the cursor to be set.
* @param pos the pos to set. * @param pos the pos to set.
*/ */
EAPI void evas_textblock_cursor_pos_set(Evas_Textbl ock_Cursor *cur, int pos) EINA_ARG_NONNULL(1); EAPI void evas_textblock_cursor_pos_set(Evas_Textbl ock_Cursor *cur, int pos) EINA_ARG_NONNULL(1);
/** /**
* Go to the start of the line passed * Go to the start of the line passed
* *
* @param cur cursor to update. * @param cur cursor to update.
* @param line numer to set. * @param line numer to set.
* @return #EINA_TRUE on success, #EINA_FALSE on error. * @return @c EINA_TRUE on success, @c EINA_FALSE on error.
*/ */
EAPI Eina_Bool evas_textblock_cursor_line_set(Evas_Textb lock_Cursor *cur, int line) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_textblock_cursor_line_set(Evas_Textb lock_Cursor *cur, int line) EINA_ARG_NONNULL(1);
/** /**
* Compare two cursors. * Compare two cursors.
* *
* @param cur1 the first cursor. * @param cur1 the first cursor.
* @param cur2 the second cursor. * @param cur2 the second cursor.
* @return -1 if cur1 < cur2, 0 if cur1 == cur2 and 1 otherwise. * @return -1 if cur1 < cur2, 0 if cur1 == cur2 and 1 otherwise.
*/ */
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; 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);
/** /**
* Make cur_dest point to the same place as cur. Does not work if they don' t * Make cur_dest point to the same place as cur. Does not work if they don' t
* point to the same object. * point to the same object.
* *
* @param cur the source cursor. * @param cur the source cursor.
* @param cur_dest destination cursor. * @param cur_dest destination cursor.
* @return Returns no value. * @return Returns no value.
*/ */
EAPI void evas_textblock_cursor_copy(const Evas_Tex tblock_Cursor *cur, Evas_Textblock_Cursor *cur_dest) EINA_ARG_NONNULL(1, 2) ; EAPI void evas_textblock_cursor_copy(const Evas_Tex tblock_Cursor *cur, Evas_Textblock_Cursor *cur_dest) EINA_ARG_NONNULL(1, 2) ;
/** /**
* Adds text to the current cursor position and set the cursor to *before* * Adds text to the current cursor position and set the cursor to *before*
* the start of the text just added. * the start of the text just added.
* *
* @param cur the cursor to where to add text at. * @param cur the cursor to where to add text at.
* @param _text the text to add. * @param text the text to add.
* @return Returns the len of the text added. * @return Returns the len of the text added.
* @see evas_textblock_cursor_text_prepend() * @see evas_textblock_cursor_text_prepend()
*/ */
EAPI int evas_textblock_cursor_text_append(Evas_Te xtblock_Cursor *cur, const char *text) EINA_ARG_NONNULL(1, 2); EAPI int evas_textblock_cursor_text_append(Evas_Te xtblock_Cursor *cur, const char *text) EINA_ARG_NONNULL(1, 2);
/** /**
* Adds text to the current cursor position and set the cursor to *after* * Adds text to the current cursor position and set the cursor to *after*
* the start of the text just added. * the start of the text just added.
* *
* @param cur the cursor to where to add text at. * @param cur the cursor to where to add text at.
* @param _text the text to add. * @param text the text to add.
* @return Returns the len of the text added. * @return Returns the len of the text added.
* @see evas_textblock_cursor_text_append() * @see evas_textblock_cursor_text_append()
*/ */
EAPI int evas_textblock_cursor_text_prepend(Evas_T extblock_Cursor *cur, const char *text) EINA_ARG_NONNULL(1, 2); EAPI int evas_textblock_cursor_text_prepend(Evas_T extblock_Cursor *cur, const char *text) EINA_ARG_NONNULL(1, 2);
/** /**
* Adds format to the current cursor position. If the format being added is a * Adds format to the current cursor position. If the format being added is a
* visible format, add it *before* the cursor position, otherwise, add it a fter. * visible format, add it *before* the cursor position, otherwise, add it a fter.
* This behavior is because visible formats are like characters and invisib le * This behavior is because visible formats are like characters and invisib le
* should be stacked in a way that the last one is added last. * should be stacked in a way that the last one is added last.
skipping to change at line 8544 skipping to change at line 8860
* @return Returns true if a visible format was added, false otherwise. * @return Returns true if a visible format was added, false otherwise.
* @see evas_textblock_cursor_format_prepend() * @see evas_textblock_cursor_format_prepend()
*/ */
/** /**
* Check if the current cursor position points to the terminating null of t he * Check if the current cursor position points to the terminating null of t he
* last paragraph. (shouldn't be allowed to point to the terminating null o f * last paragraph. (shouldn't be allowed to point to the terminating null o f
* any previous paragraph anyway. * any previous paragraph anyway.
* *
* @param cur the cursor to look at. * @param cur the cursor to look at.
* @return #EINA_TRUE if the cursor points to the terminating null, #EINA_F ALSE otherwise. * @return @c EINA_TRUE if the cursor points to the terminating null, @c EI NA_FALSE otherwise.
*/ */
EAPI Eina_Bool evas_textblock_cursor_format_append(Evas_ Textblock_Cursor *cur, const char *format) EINA_ARG_NONNULL(1, 2); EAPI Eina_Bool evas_textblock_cursor_format_append(Evas_ Textblock_Cursor *cur, const char *format) EINA_ARG_NONNULL(1, 2);
/** /**
* Adds format to the current cursor position. If the format being added is a * Adds format to the current cursor position. If the format being added is a
* visible format, add it *before* the cursor position, otherwise, add it a fter. * visible format, add it *before* the cursor position, otherwise, add it a fter.
* This behavior is because visible formats are like characters and invisib le * This behavior is because visible formats are like characters and invisib le
* should be stacked in a way that the last one is added last. * should be stacked in a way that the last one is added last.
* If the format is visible the cursor is advanced after it. * If the format is visible the cursor is advanced after it.
* *
skipping to change at line 8584 skipping to change at line 8900
/** /**
* Delete the range between cur1 and cur2. * Delete the range between cur1 and cur2.
* *
* @param cur1 one side of the range. * @param cur1 one side of the range.
* @param cur2 the second side of the range * @param cur2 the second side of the range
* @return Returns no value. * @return Returns no value.
*/ */
EAPI void evas_textblock_cursor_range_delete(Evas_T extblock_Cursor *cur1, Evas_Textblock_Cursor *cur2) EINA_ARG_NONNULL(1, 2); EAPI void evas_textblock_cursor_range_delete(Evas_T extblock_Cursor *cur1, Evas_Textblock_Cursor *cur2) EINA_ARG_NONNULL(1, 2);
/** /**
* Return the text of the paragraph cur points to - returns the text in mar kup.. * Return the text of the paragraph cur points to - returns the text in mar kup.
* *
* @param cur the cursor pointing to the paragraph. * @param cur the cursor pointing to the paragraph.
* @return the text on success, NULL otherwise. * @return the text on success, @c NULL otherwise.
*/ */
EAPI const char *evas_textblock_cursor_paragraph_text_get( const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL( 1) EINA_PURE; EAPI const char *evas_textblock_cursor_paragraph_text_get( const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL( 1);
/** /**
* Return the length of the paragraph, cheaper the eina_unicode_strlen() * Return the length of the paragraph, cheaper the eina_unicode_strlen()
* *
* @param cur the position of the paragraph. * @param cur the position of the paragraph.
* @return the length of the paragraph on success, -1 otehrwise. * @return the length of the paragraph on success, -1 otehrwise.
*/ */
EAPI int evas_textblock_cursor_paragraph_text_leng th_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_N ONNULL(1) EINA_PURE; EAPI int evas_textblock_cursor_paragraph_text_leng th_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_N ONNULL(1);
/** /**
* Return the currently visible range. * Return the currently visible range.
* *
* @param start the start of the range. * @param start the start of the range.
* @param end the end of the range. * @param end the end of the range.
* @return EINA_TRUE on success. EINA_FALSE otherwise. * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
* @since 1.1.0 * @since 1.1.0
*/ */
Eina_Bool evas_textblock_cursor_visible_range_get(E vas_Textblock_Cursor *start, Evas_Textblock_Cursor *end) EINA_ARG_NONNULL(1 , 2); EAPI Eina_Bool evas_textblock_cursor_visible_range_ get(Evas_Textblock_Cursor *start, Evas_Textblock_Cursor *end) EINA_ARG_NONN ULL(1, 2);
/** /**
* Return the format nodes in the range between cur1 and cur2. * Return the format nodes in the range between cur1 and cur2.
* *
* @param cur1 one side of the range. * @param cur1 one side of the range.
* @param cur2 the other side of the range * @param cur2 the other side of the range
* @return the foramt nodes in the range. You have to free it. * @return the foramt nodes in the range. You have to free it.
* @since 1.1.0 * @since 1.1.0
*/ */
EAPI Eina_List * evas_textblock_cursor_range_formats_get(co nst Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WA RN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; EAPI Eina_List * evas_textblock_cursor_range_formats_get(co nst Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WA RN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2);
/** /**
* Return the text in the range between cur1 and cur2 * Return the text in the range between cur1 and cur2
* *
* @param cur1 one side of the range. * @param cur1 one side of the range.
* @param cur2 the other side of the range * @param cur2 the other side of the range
* @param format The form on which to return the text. Markup - in textbloc k markup. Plain - UTF8. * @param format The form on which to return the text. Markup - in textbloc k markup. Plain - UTF8.
* @return the text in the range * @return the text in the range
* @see elm_entry_markup_to_utf8() * @see elm_entry_markup_to_utf8()
*/ */
EAPI char *evas_textblock_cursor_range_text_get(cons t Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2, Evas_Text block_Text_Type format) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA _PURE; EAPI char *evas_textblock_cursor_range_text_get(cons t Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2, Evas_Text block_Text_Type format) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2);
/** /**
* Return the content of the cursor. * Return the content of the cursor.
* *
* Free the returned string pointer when done (if it is not NULL).
*
* @param cur the cursor * @param cur the cursor
* @return the text in the range * @return the text in the range, terminated by a nul byte (may be utf8).
*/ */
EAPI char *evas_textblock_cursor_content_get(const E vas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA _MALLOC; EAPI char *evas_textblock_cursor_content_get(const E vas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA _MALLOC;
/** /**
* Returns the geometry of the cursor. Depends on the type of cursor reques ted. * Returns the geometry of the cursor. Depends on the type of cursor reques ted.
* This should be used instead of char_geometry_get because there are weird * This should be used instead of char_geometry_get because there are weird
* special cases with BiDi text. * special cases with BiDi text.
* in '_' cursor mode (i.e a line below the char) it's the same as char_geo metry * in '_' cursor mode (i.e a line below the char) it's the same as char_geo metry
* get, except for the case of the last char of a line which depends on the * get, except for the case of the last char of a line which depends on the
* paragraph direction. * paragraph direction.
* *
* in '|' cursor mode (i.e a line between two chars) it is very varyable. * in '|' cursor mode (i.e a line between two chars) it is very variable.
* For example consider the following visual string: * For example consider the following visual string:
* "abcCBA" (ABC are rtl chars), a cursor pointing on A should actually dra w * "abcCBA" (ABC are rtl chars), a cursor pointing on A should actually dra w
* a '|' between the c and the C. * a '|' between the c and the C.
* *
* @param cur the cursor. * @param cur the cursor.
* @param cx the x of the cursor * @param cx the x of the cursor
* @param cy the y of the cursor * @param cy the y of the cursor
* @param cw the width of the cursor * @param cw the width of the cursor
* @param ch the height of the cursor * @param ch the height of the cursor
* @param dir the direction of the cursor, can be NULL. * @param dir the direction of the cursor, can be NULL.
skipping to change at line 8704 skipping to change at line 9022
* @return line number of the line on success, -1 on error. * @return line number of the line on success, -1 on error.
*/ */
EAPI int evas_textblock_cursor_line_geometry_get(c onst Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1); EAPI int evas_textblock_cursor_line_geometry_get(c onst Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1);
/** /**
* Set the position of the cursor according to the X and Y coordinates. * Set the position of the cursor according to the X and Y coordinates.
* *
* @param cur the cursor to set. * @param cur the cursor to set.
* @param x coord to set by. * @param x coord to set by.
* @param y coord to set by. * @param y coord to set by.
* @return #EINA_TRUE on success, #EINA_FALSE otherwise. * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
*/ */
EAPI Eina_Bool evas_textblock_cursor_char_coord_set(Evas _Textblock_Cursor *cur, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_textblock_cursor_char_coord_set(Evas _Textblock_Cursor *cur, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1);
/** /**
* Set the cursor position according to the y coord. * Set the cursor position according to the y coord.
* *
* @param cur the cur to be set. * @param cur the cur to be set.
* @param y the coord to set by. * @param y the coord to set by.
* @return the line number found, -1 on error. * @return the line number found, -1 on error.
*/ */
EAPI int evas_textblock_cursor_line_coord_set(Evas _Textblock_Cursor *cur, Evas_Coord y) EINA_ARG_NONNULL(1); EAPI int evas_textblock_cursor_line_coord_set(Evas _Textblock_Cursor *cur, Evas_Coord y) EINA_ARG_NONNULL(1);
/** /**
* Get the geometry of a range. * Get the geometry of a range.
* *
* @param cur1 one side of the range. * @param cur1 one side of the range.
* @param cur2 other side of the range. * @param cur2 other side of the range.
* @return a list of Rectangles representing the geometry of the range. * @return a list of Rectangles representing the geometry of the range.
*/ */
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; 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);
EAPI Eina_Bool evas_textblock_cursor_format_item_geom etry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_textblock_cursor_format_item_geom etry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1);
/** /**
* Checks if the cursor points to the end of the line. * Checks if the cursor points to the end of the line.
* *
* @param cur the cursor to check. * @param cur the cursor to check.
* @return #EINA_TRUE if true, #EINA_FALSE otherwise. * @return @c EINA_TRUE if true, @c EINA_FALSE otherwise.
*/ */
EAPI Eina_Bool evas_textblock_cursor_eol_get(const Evas_ Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PUR E; EAPI Eina_Bool evas_textblock_cursor_eol_get(const Evas_ Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Get the geometry of a line number. * Get the geometry of a line number.
* *
* @param obj the object. * @param obj the object.
* @param line the line number. * @param line the line number.
* @param cx x coord of the line. * @param cx x coord of the line.
* @param cy y coord of the line. * @param cy y coord of the line.
* @param cw w coord of the line. * @param cw w coord of the line.
* @param ch h coord of the line. * @param ch h coord of the line.
* @return #EINA_TRUE on success, #EINA_FALSE otherwise. * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
*/ */
EAPI Eina_Bool evas_object_textblock_line_number_geometr y_get(const Evas_Object *obj, int line, Evas_Coord *cx, Evas_Coord *cy, Eva s_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_object_textblock_line_number_geometr y_get(const Evas_Object *obj, int line, Evas_Coord *cx, Evas_Coord *cy, Eva s_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1);
/** /**
* Clear the textblock object. * Clear the textblock object.
* @note Does *NOT* free the Evas object itself. * @note Does *NOT* free the Evas object itself.
* *
* @param obj the object to clear. * @param obj the object to clear.
* @return nothing. * @return nothing.
*/ */
skipping to change at line 8773 skipping to change at line 9091
* infinite canvas, while this function gives the size after wrapping * infinite canvas, while this function gives the size after wrapping
* according to the size restrictions of the object. * according to the size restrictions of the object.
* *
* For example for a textblock containing the text: "You shall not pass!" * For example for a textblock containing the text: "You shall not pass!"
* with no margins or padding and assuming a monospace font and a size of * with no margins or padding and assuming a monospace font and a size of
* 7x10 char widths (for simplicity) has a native size of 19x1 * 7x10 char widths (for simplicity) has a native size of 19x1
* and a formatted size of 5x4. * and a formatted size of 5x4.
* *
* *
* @param obj the Evas object. * @param obj the Evas object.
* @param w[out] the width of the object. * @param w the width of the object.
* @param h[out] the height of the object * @param h the height of the object
* @return Returns no value. * @return Returns no value.
* @see evas_object_textblock_size_native_get * @see evas_object_textblock_size_native_get
*/ */
EAPI void evas_object_textblock_size_formatted_get( const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1); EAPI void evas_object_textblock_size_formatted_get( const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
/** /**
* Get the native width and height. This calculates the actual size without taking account * Get the native width and height. This calculates the actual size without taking account
* the current size of the object. * the current size of the object.
* The main difference between this and @ref evas_object_textblock_size_for matted_get * The main difference between this and @ref evas_object_textblock_size_for matted_get
* is that the "native" function does not take wrapping into account * is that the "native" function does not take wrapping into account
* it just calculates the real width of the object if it was placed on an * it just calculates the real width of the object if it was placed on an
* infinite canvas, while the "formatted" function gives the size after * infinite canvas, while the "formatted" function gives the size after
* wrapping text according to the size restrictions of the object. * wrapping text according to the size restrictions of the object.
* *
* For example for a textblock containing the text: "You shall not pass!" * For example for a textblock containing the text: "You shall not pass!"
* with no margins or padding and assuming a monospace font and a size of * with no margins or padding and assuming a monospace font and a size of
* 7x10 char widths (for simplicity) has a native size of 19x1 * 7x10 char widths (for simplicity) has a native size of 19x1
* and a formatted size of 5x4. * and a formatted size of 5x4.
* *
* @param obj the Evas object of the textblock * @param obj the Evas object of the textblock
* @param w[out] the width returned * @param w the width returned
* @param h[out] the height returned * @param h the height returned
* @return Returns no value. * @return Returns no value.
*/ */
EAPI void evas_object_textblock_size_native_get(con st Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1); EAPI void evas_object_textblock_size_native_get(con st Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
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); 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);
/** /**
* @} * @}
*/ */
/** /**
* @defgroup Evas_Line_Group Line Object Functions * @defgroup Evas_Line_Group Line Object Functions
skipping to change at line 8887 skipping to change at line 9205
/** /**
* Removes all of the points from the given evas polygon object. * Removes all of the points from the given evas polygon object.
* @param obj The given polygon object. * @param obj The given polygon object.
*/ */
EAPI void evas_object_polygon_points_clear (Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI void evas_object_polygon_points_clear (Evas_Object *obj) EINA_ARG_NONNULL(1);
/** /**
* @} * @}
*/ */
/* @since 1.2.0 */
EAPI void evas_object_is_frame_object_set(Evas_Object *obj, Ei
na_Bool is_frame);
/* @since 1.2.0 */
EAPI Eina_Bool evas_object_is_frame_object_get(Evas_Object *obj);
/** /**
* @defgroup Evas_Smart_Group Smart Functions * @defgroup Evas_Smart_Group Smart Functions
* *
* Functions that deal with #Evas_Smart structs, creating definition * Functions that deal with #Evas_Smart structs, creating definition
* (classes) of objects that will have customized behavior for methods * (classes) of objects that will have customized behavior for methods
* like evas_object_move(), evas_object_resize(), * like evas_object_move(), evas_object_resize(),
* evas_object_clip_set() and others. * evas_object_clip_set() and others.
* *
* These objects will accept the generic methods defined in @ref * These objects will accept the generic methods defined in @ref
* Evas_Object_Group and the extensions defined in @ref * Evas_Object_Group and the extensions defined in @ref
skipping to change at line 9108 skipping to change at line 9432
* @param cb_desc Array of callback descriptions for this smart class. * @param cb_desc Array of callback descriptions for this smart class.
* *
* This macro saves some typing when writing a smart class derived * This macro saves some typing when writing a smart class derived
* from another one. In order to work, the user @b must provide some * from another one. In order to work, the user @b must provide some
* functions adhering to the following guidelines: * functions adhering to the following guidelines:
* - @<prefix@>_smart_set_user(): the @b internal @c _smart_set * - @<prefix@>_smart_set_user(): the @b internal @c _smart_set
* function (defined by this macro) will call this one, provided by * function (defined by this macro) will call this one, provided by
* the user, after inheriting everything from the parent, which * the user, after inheriting everything from the parent, which
* should <b>take care of setting the right member functions for * should <b>take care of setting the right member functions for
* the class</b>, both overrides and extensions, if any. * the class</b>, both overrides and extensions, if any.
* - If this new class should be subclassable as well, a @b public @c * - If this new class should be subclassable as well, a @b public
* _smart_set() function is desirable to fill in the class used as * @c _smart_set() function is desirable to fill in the class used as
* parent by the children. It's up to the user to provide this * parent by the children. It's up to the user to provide this
* interface, which will most likely call @<prefix@>_smart_set() to * interface, which will most likely call @<prefix@>_smart_set() to
* get the job done. * get the job done.
* *
* After the macro's usage, the following will be defined for use: * After the macro's usage, the following will be defined for use:
* - @<prefix@>_parent_sc: A pointer to the @b parent smart * - @<prefix@>_parent_sc: A pointer to the @b parent smart
* class. When calling parent functions from overloaded ones, use * class. When calling parent functions from overloaded ones, use
* this global variable. * this global variable.
* - @<prefix@>_smart_class_new(): this function returns the * - @<prefix@>_smart_class_new(): this function returns the
* #Evas_Smart needed to create smart objects with this class, * #Evas_Smart needed to create smart objects with this class,
skipping to change at line 9139 skipping to change at line 9463
#define EVAS_SMART_SUBCLASS_NEW(smart_name, prefix, api_type, parent_type, parent_func, cb_desc) \ #define EVAS_SMART_SUBCLASS_NEW(smart_name, prefix, api_type, parent_type, parent_func, cb_desc) \
static const parent_type * prefix##_parent_sc = NULL; \ static const parent_type * prefix##_parent_sc = NULL; \
static void prefix##_smart_set_user(api_type *api); \ static void prefix##_smart_set_user(api_type *api); \
static void prefix##_smart_set(api_type *api) \ static void prefix##_smart_set(api_type *api) \
{ \ { \
Evas_Smart_Class *sc; \ Evas_Smart_Class *sc; \
if (!(sc = (Evas_Smart_Class *)api)) \ if (!(sc = (Evas_Smart_Class *)api)) \
return; \ return; \
if (!prefix##_parent_sc) \ if (!prefix##_parent_sc) \
prefix##_parent_sc = parent_func(); \ prefix##_parent_sc = parent_func(); \
evas_smart_class_inherit(sc, (const Evas_Smart_Class *)prefix##_parent _sc); \ evas_smart_class_inherit(sc, prefix##_parent_sc); \
prefix##_smart_set_user(api); \ prefix##_smart_set_user(api); \
} \ } \
static Evas_Smart * prefix##_smart_class_new(void) \ static Evas_Smart * prefix##_smart_class_new(void) \
{ \ { \
static Evas_Smart *smart = NULL; \ static Evas_Smart *smart = NULL; \
static api_type api; \ static api_type api; \
if (!smart) \ if (!smart) \
{ \ { \
Evas_Smart_Class *sc = (Evas_Smart_Class *)&api; \ Evas_Smart_Class *sc = (Evas_Smart_Class *)&api; \
memset(&api, 0, sizeof(api_type)); \ memset(&api, 0, sizeof(api_type)); \
skipping to change at line 9168 skipping to change at line 9492
/** /**
* @def EVAS_SMART_DATA_ALLOC * @def EVAS_SMART_DATA_ALLOC
* *
* Convenience macro to allocate smart data only if needed. * Convenience macro to allocate smart data only if needed.
* *
* When writing a subclassable smart object, the @c .add() function * When writing a subclassable smart object, the @c .add() function
* will need to check if the smart private data was already allocated * will need to check if the smart private data was already allocated
* by some child object or not. This macro makes it easier to do it. * by some child object or not. This macro makes it easier to do it.
* *
* @note This is an idiom used when one calls the parent's @c. add() * @note This is an idiom used when one calls the parent's @c .add()
* after the specialized code. Naturally, the parent's base smart data * after the specialized code. Naturally, the parent's base smart data
* has to be contemplated as the specialized one's first member, for * has to be contemplated as the specialized one's first member, for
* things to work. * things to work.
* *
* @param o Evas object passed to the @c .add() function * @param o Evas object passed to the @c .add() function
* @param priv_type The type of the data to allocate * @param priv_type The type of the data to allocate
* *
* @ingroup Evas_Smart_Group * @ingroup Evas_Smart_Group
*/ */
#define EVAS_SMART_DATA_ALLOC(o, priv_type) \ #define EVAS_SMART_DATA_ALLOC(o, priv_type) \
skipping to change at line 9228 skipping to change at line 9552
* which will make use of this function automatically for you. * which will make use of this function automatically for you.
*/ */
EAPI Evas_Smart *evas_smart_class_new ( const Evas_Smart_Class *sc) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EIN A_MALLOC; EAPI Evas_Smart *evas_smart_class_new ( const Evas_Smart_Class *sc) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EIN A_MALLOC;
/** /**
* Get the #Evas_Smart_Class handle of an #Evas_Smart struct * Get the #Evas_Smart_Class handle of an #Evas_Smart struct
* *
* @param s a valid #Evas_Smart pointer * @param s a valid #Evas_Smart pointer
* @return the #Evas_Smart_Class in it * @return the #Evas_Smart_Class in it
*/ */
EAPI const Evas_Smart_Class *evas_smart_class_get ( const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI const Evas_Smart_Class *evas_smart_class_get ( const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* @brief Get the data pointer set on an #Evas_Smart struct * @brief Get the data pointer set on an #Evas_Smart struct
* *
* @param s a valid #Evas_Smart handle * @param s a valid #Evas_Smart handle
* *
* This data pointer is set as the data field in the #Evas_Smart_Class * This data pointer is set as the data field in the #Evas_Smart_Class
* passed in to evas_smart_class_new(). * passed in to evas_smart_class_new().
*/ */
EAPI void *evas_smart_data_get ( const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI void *evas_smart_data_get ( const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Get the smart callbacks known by this #Evas_Smart handle's smart * Get the smart callbacks known by this #Evas_Smart handle's smart
* class hierarchy. * class hierarchy.
* *
* @param s A valid #Evas_Smart handle. * @param s A valid #Evas_Smart handle.
* @param[out] count Returns the number of elements in the returned * @param[out] count Returns the number of elements in the returned
* array. * array.
* @return The array with callback descriptions known by this smart * @return The array with callback descriptions known by this smart
* class, with its size returned in @a count parameter. It * class, with its size returned in @a count parameter. It
* should not be modified in any way. If no callbacks are * should not be modified in any way. If no callbacks are
* known, @c NULL is returned. The array is sorted by event * known, @c NULL is returned. The array is sorted by event
* names and elements refer to the original values given to * names and elements refer to the original values given to
* evas_smart_class_new()'s #Evas_Smart_Class::callbacks * evas_smart_class_new()'s Evas_Smart_Class::callbacks
* (pointer to them). * (pointer to them).
* *
* This is likely different from * This is likely different from
* evas_object_smart_callbacks_descriptions_get() as it will contain * evas_object_smart_callbacks_descriptions_get() as it will contain
* the callbacks of @b all this class hierarchy sorted, while the * the callbacks of @b all this class hierarchy sorted, while the
* direct smart class member refers only to that specific class and * direct smart class member refers only to that specific class and
* should not include parent's. * should not include parent's.
* *
* If no callbacks are known, this function returns @c NULL. * If no callbacks are known, this function returns @c NULL.
* *
skipping to change at line 9291 skipping to change at line 9615
* @param s The #Evas_Smart where to search for class registered smart * @param s The #Evas_Smart where to search for class registered smart
* event callbacks. * event callbacks.
* @param name Name of the desired callback, which must @b not be @c * @param name Name of the desired callback, which must @b not be @c
* NULL. The search has a special case for @a name being the * NULL. The search has a special case for @a name being the
* same pointer as registered with #Evas_Smart_Cb_Description. * same pointer as registered with #Evas_Smart_Cb_Description.
* One can use it to avoid excessive use of strcmp(). * One can use it to avoid excessive use of strcmp().
* @return A reference to the description if found, or @c NULL, otherwise * @return A reference to the description if found, or @c NULL, otherwise
* *
* @see evas_smart_callbacks_descriptions_get() * @see evas_smart_callbacks_descriptions_get()
*/ */
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; EAPI const Evas_Smart_Cb_Description *evas_smart_callback_description_find( const Evas_Smart *s, const char *name) EINA_ARG_NONNULL(1, 2);
/** /**
* Sets one class to inherit from the other. * Sets one class to inherit from the other.
* *
* Copy all function pointers, set @c parent to @a parent_sc and copy * Copy all function pointers, set @c parent to @a parent_sc and copy
* everything after sizeof(Evas_Smart_Class) present in @a parent_sc, * everything after sizeof(Evas_Smart_Class) present in @a parent_sc,
* using @a parent_sc_size as reference. * using @a parent_sc_size as reference.
* *
* This is recommended instead of a single memcpy() since it will take * This is recommended instead of a single memcpy() since it will take
* care to not modify @a sc name, version, callbacks and possible * care to not modify @a sc name, version, callbacks and possible
skipping to change at line 9344 skipping to change at line 9668
* @def evas_smart_class_inherit * @def evas_smart_class_inherit
* Easy to use version of evas_smart_class_inherit_full(). * Easy to use version of evas_smart_class_inherit_full().
* *
* This version will use sizeof(parent_sc), copying everything. * This version will use sizeof(parent_sc), copying everything.
* *
* @param sc child class, will have methods copied from @a parent_sc * @param sc child class, will have methods copied from @a parent_sc
* @param parent_sc parent class, will provide contents to be copied. * @param parent_sc parent class, will provide contents to be copied.
* @return 1 on success, 0 on failure. * @return 1 on success, 0 on failure.
* @ingroup Evas_Smart_Group * @ingroup Evas_Smart_Group
*/ */
#define evas_smart_class_inherit(sc, parent_sc) evas_smart_class_inherit_fu ll(sc, parent_sc, sizeof(*parent_sc)) #define evas_smart_class_inherit(sc, parent_sc) evas_smart_class_inherit_fu ll(sc, (Evas_Smart_Class *)parent_sc, sizeof(*parent_sc))
/** /**
* @} * @}
*/ */
/** /**
* @defgroup Evas_Smart_Object_Group Smart Object Functions * @defgroup Evas_Smart_Object_Group Smart Object Functions
* *
* Functions dealing with Evas smart objects (instances). * Functions dealing with Evas smart objects (instances).
* *
* Smart objects are groupings of primitive Evas objects that behave * Smart objects are groupings of primitive Evas objects that behave
* as a cohesive group. For instance, a file manager icon may be a * as a cohesive group. For instance, a file manager icon may be a
* smart object composed of an image object, a text label and two * smart object composed of an image object, a text label and two
* rectangles that appear behind the image and text when the icon is * rectangles that appear behind the image and text when the icon is
* selected. As a smart object, the normal Evas object API could be * selected. As a smart object, the normal Evas object API could be
* used on the icon object. * used on the icon object.
* *
* Besides that, generally smart objects implement a <b>specific * Besides that, generally smart objects implement a <b>specific
* API</b>, so that users interect with its own custom features. The * API</b>, so that users interact with its own custom features. The
* API takes form of explicit exported functions one may call and * API takes form of explicit exported functions one may call and
* <b>smart callbacks</b>. * <b>smart callbacks</b>.
* *
* @section Evas_Smart_Object_Group_Callbacks Smart events and callbacks * @section Evas_Smart_Object_Group_Callbacks Smart events and callbacks
* *
* Smart objects can elect events (smart events, from now on) ocurring * Smart objects can elect events (smart events, from now on) occurring
* inside of them to be reported back to their users via callback * inside of them to be reported back to their users via callback
* functions (smart callbacks). This way, you can extend Evas' own * functions (smart callbacks). This way, you can extend Evas' own
* object events. They are defined by an <b>event string</b>, which * object events. They are defined by an <b>event string</b>, which
* identifies them uniquely. There's also a function prototype * identifies them uniquely. There's also a function prototype
* definition for the callback functions: #Evas_Smart_Cb. * definition for the callback functions: #Evas_Smart_Cb.
* *
* When defining an #Evas_Smart_Class, smart object implementors are * When defining an #Evas_Smart_Class, smart object implementors are
* strongly encorauged to properly set the Evas_Smart_Class::callbacks * strongly encouraged to properly set the Evas_Smart_Class::callbacks
* callbacks description array, so that the users of the smart object * callbacks description array, so that the users of the smart object
* can have introspection on its events API <b>at run time</b>. * can have introspection on its events API <b>at run time</b>.
* *
* See some @ref Example_Evas_Smart_Objects "examples" of this group * See some @ref Example_Evas_Smart_Objects "examples" of this group
* of functions. * of functions.
* *
* @see @ref Evas_Smart_Group for class definitions. * @see @ref Evas_Smart_Group for class definitions.
*/ */
/** /**
skipping to change at line 9459 skipping to change at line 9783
* *
* @param obj the smart object to get members from * @param obj the smart object to get members from
* @return Returns the list of the member objects of @p obj. * @return Returns the list of the member objects of @p obj.
* *
* The returned list should be freed with @c eina_list_free() when you * The returned list should be freed with @c eina_list_free() when you
* no longer need it. * no longer need it.
* *
* @see evas_object_smart_member_add() * @see evas_object_smart_member_add()
* @see evas_object_smart_member_del() * @see evas_object_smart_member_del()
*/ */
EAPI Eina_List *evas_object_smart_members_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Eina_List *evas_object_smart_members_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Gets the parent smart object of a given Evas object, if it has one. * Gets the parent smart object of a given Evas object, if it has one.
* *
* @param obj the Evas object you want to get the parent smart object * @param obj the Evas object you want to get the parent smart object
* from * from
* @return Returns the parent smart object of @a obj or @c NULL, if @a * @return Returns the parent smart object of @a obj or @c NULL, if @a
* obj is not a smart member of any * obj is not a smart member of any
* *
* @ingroup Evas_Smart_Object_Group * @ingroup Evas_Smart_Object_Group
*/ */
EAPI Evas_Object *evas_object_smart_parent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Object *evas_object_smart_parent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Checks whether a given smart object or any of its smart object * Checks whether a given smart object or any of its smart object
* parents is of a given smart class. * parents is of a given smart class.
* *
* @param obj An Evas smart object to check the type of * @param obj An Evas smart object to check the type of
* @param type The @b name (type) of the smart class to check for * @param type The @b name (type) of the smart class to check for
* @return @c EINA_TRUE, if @a obj or any of its parents is of type @a * @return @c EINA_TRUE, if @a obj or any of its parents is of type @a
* type, @c EINA_FALSE otherwise * type, @c EINA_FALSE otherwise
* *
skipping to change at line 9498 skipping to change at line 9822
* The checks use smart classes names and <b>string * The checks use smart classes names and <b>string
* comparison</b>. There is a version of this same check using * comparison</b>. There is a version of this same check using
* <b>pointer comparison</b>, since a smart class' name is a single * <b>pointer comparison</b>, since a smart class' name is a single
* string in Evas. * string in Evas.
* *
* @see evas_object_smart_type_check_ptr() * @see evas_object_smart_type_check_ptr()
* @see #EVAS_SMART_SUBCLASS_NEW * @see #EVAS_SMART_SUBCLASS_NEW
* *
* @ingroup Evas_Smart_Object_Group * @ingroup Evas_Smart_Object_Group
*/ */
EAPI Eina_Bool evas_object_smart_type_check (const Evas_Object *obj, const char *type) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EIN A_PURE; EAPI Eina_Bool evas_object_smart_type_check (const Evas_Object *obj, const char *type) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2);
/** /**
* Checks whether a given smart object or any of its smart object * Checks whether a given smart object or any of its smart object
* parents is of a given smart class, <b>using pointer comparison</b>. * parents is of a given smart class, <b>using pointer comparison</b>.
* *
* @param obj An Evas smart object to check the type of * @param obj An Evas smart object to check the type of
* @param type The type (name string) to check for. Must be the name * @param type The type (name string) to check for. Must be the name
* @return @c EINA_TRUE, if @a obj or any of its parents is of type @a * @return @c EINA_TRUE, if @a obj or any of its parents is of type @a
* type, @c EINA_FALSE otherwise * type, @c EINA_FALSE otherwise
* *
* @see evas_object_smart_type_check() for more details * @see evas_object_smart_type_check() for more details
* *
* @ingroup Evas_Smart_Object_Group * @ingroup Evas_Smart_Object_Group
*/ */
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) EIN A_PURE; 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);
/** /**
* Get the #Evas_Smart from which @p obj smart object was created. * Get the #Evas_Smart from which @p obj smart object was created.
* *
* @param obj a smart object * @param obj a smart object
* @return the #Evas_Smart handle or @c NULL, on errors * @return the #Evas_Smart handle or @c NULL, on errors
* *
* @ingroup Evas_Smart_Object_Group * @ingroup Evas_Smart_Object_Group
*/ */
EAPI Evas_Smart *evas_object_smart_smart_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Smart *evas_object_smart_smart_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Retrieve user data stored on a given smart object. * Retrieve user data stored on a given smart object.
* *
* @param obj The smart object's handle * @param obj The smart object's handle
* @return A pointer to data stored using * @return A pointer to data stored using
* evas_object_smart_data_set(), or @c NULL, if none has been * evas_object_smart_data_set(), or @c NULL, if none has been
* set. * set.
* *
* @see evas_object_smart_data_set() * @see evas_object_smart_data_set()
* *
* @ingroup Evas_Smart_Object_Group * @ingroup Evas_Smart_Object_Group
*/ */
EAPI void *evas_object_smart_data_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI void *evas_object_smart_data_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Store a pointer to user data for a given smart object. * Store a pointer to user data for a given smart object.
* *
* @param obj The smart object's handle * @param obj The smart object's handle
* @param data A pointer to user data * @param data A pointer to user data
* *
* This data is stored @b independently of the one set by * This data is stored @b independently of the one set by
* evas_object_data_set(), naturally. * evas_object_data_set(), naturally.
* *
skipping to change at line 9635 skipping to change at line 9959
* parameter) when the callback(s) was(were) added to the canvas. If * parameter) when the callback(s) was(were) added to the canvas. If
* not successful @c NULL will be returned. * not successful @c NULL will be returned.
* *
* @see evas_object_smart_callback_add() for more details. * @see evas_object_smart_callback_add() for more details.
* *
* @ingroup Evas_Smart_Object_Group * @ingroup Evas_Smart_Object_Group
*/ */
EAPI void *evas_object_smart_callback_del (Evas_Object *obj, const char *event, Evas_Smart_Cb func) EINA_ARG_NONNULL(1, 2, 3); EAPI void *evas_object_smart_callback_del (Evas_Object *obj, const char *event, Evas_Smart_Cb func) EINA_ARG_NONNULL(1, 2, 3);
/** /**
* Delete (unregister) a callback function from the smart event
* specified by @p event on the smart object @p obj.
*
* @param obj a smart object
* @param event the event's name string
* @param func the callback function
* @param data the data pointer that was passed to the callback
* @return the data pointer
*
* This function removes <b>the first</b> added smart callback on the
* object @p obj matching the event name @p event, the registered
* function pointer @p func and the callback data pointer @p data. If
* the removal is successful it will also return the data pointer that
* was passed to evas_object_smart_callback_add() (that will be the same
* as the parameter) when the callback(s) was(were) added to the canvas.
* If not successful @c NULL will be returned. A common use would be to
* remove an exact match of a callback
*
* @see evas_object_smart_callback_add() for more details.
* @since 1.2.0
* @ingroup Evas_Smart_Object_Group
*
* @note To delete all smart event callbacks which match @p type and @p fun
c,
* use evas_object_smart_callback_del().
*/
EAPI void *evas_object_smart_callback_del_full(Evas_Object *obj
, const char *event, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL
(1, 2, 3);
/**
* Call a given smart callback on the smart object @p obj. * Call a given smart callback on the smart object @p obj.
* *
* @param obj the smart object * @param obj the smart object
* @param event the event's name string * @param event the event's name string
* @param event_info pointer to an event specific struct or information to * @param event_info pointer to an event specific struct or information to
* pass to the callback functions registered on this smart event * pass to the callback functions registered on this smart event
* *
* This should be called @b internally, from the smart object's own * This should be called @b internally, from the smart object's own
* code, when some specific event has occurred and the implementor * code, when some specific event has occurred and the implementor
* wants is to pertain to the object's events API (see @ref * wants is to pertain to the object's events API (see @ref
* Evas_Smart_Object_Group_Callbacks). The documentation for the smart * Evas_Smart_Object_Group_Callbacks). The documentation for the smart
* object should include a list of possible events and what type of @p * object should include a list of possible events and what type of @p
* event_info to expect for each of them. Also, when defining an * event_info to expect for each of them. Also, when defining an
* #Evas_Smart_Class, smart object implementors are strongly * #Evas_Smart_Class, smart object implementors are strongly
* encorauged to properly set the Evas_Smart_Class::callbacks * encouraged to properly set the Evas_Smart_Class::callbacks
* callbacks description array, so that the users of the smart object * callbacks description array, so that the users of the smart object
* can have introspection on its events API <b>at run time</b>. * can have introspection on its events API <b>at run time</b>.
* *
* @ingroup Evas_Smart_Object_Group * @ingroup Evas_Smart_Object_Group
*/ */
EAPI void evas_object_smart_callback_call (Evas_Object *obj, const char *event, void *event_info) EINA_ARG_NONNULL(1, 2); EAPI void evas_object_smart_callback_call (Evas_Object *obj, const char *event, void *event_info) EINA_ARG_NONNULL(1, 2);
/** /**
* Set an smart object @b instance's smart callbacks descriptions. * Set an smart object @b instance's smart callbacks descriptions.
* *
skipping to change at line 9707 skipping to change at line 10059
* descriptions array, if any is known. If no descriptions are * descriptions array, if any is known. If no descriptions are
* known, @c NULL is returned * known, @c NULL is returned
* @param class_count Returns how many class callbacks descriptions * @param class_count Returns how many class callbacks descriptions
* are known. * are known.
* @param instance_descriptions Where to store instance callbacks * @param instance_descriptions Where to store instance callbacks
* descriptions array, if any is known. If no descriptions are * descriptions array, if any is known. If no descriptions are
* known, @c NULL is returned. * known, @c NULL is returned.
* @param instance_count Returns how many instance callbacks * @param instance_count Returns how many instance callbacks
* descriptions are known. * descriptions are known.
* *
* This call searchs for registered callback descriptions for both * This call searches for registered callback descriptions for both
* instance and class of the given smart object. These arrays will be * instance and class of the given smart object. These arrays will be
* sorted by Evas_Smart_Cb_Description::name and also @c NULL * sorted by Evas_Smart_Cb_Description::name and also @c NULL
* terminated, so both @a class_count and @a instance_count can be * terminated, so both @a class_count and @a instance_count can be
* ignored, if the caller wishes so. The terminator @c NULL is not * ignored, if the caller wishes so. The terminator @c NULL is not
* counted in these values. * counted in these values.
* *
* @note If just class descriptions are of interest, try * @note If just class descriptions are of interest, try
* evas_smart_callbacks_descriptions_get() instead. * evas_smart_callbacks_descriptions_get() instead.
* *
* @note Use @c NULL pointers on the descriptions/counters you're not * @note Use @c NULL pointers on the descriptions/counters you're not
skipping to change at line 9734 skipping to change at line 10086
EAPI void evas_object_smart_callbacks_descriptions_get(const E vas_Object *obj, const Evas_Smart_Cb_Description ***class_descriptions, uns igned int *class_count, const Evas_Smart_Cb_Description ***instance_descrip tions, unsigned int *instance_count) EINA_ARG_NONNULL(1); EAPI void evas_object_smart_callbacks_descriptions_get(const E vas_Object *obj, const Evas_Smart_Cb_Description ***class_descriptions, uns igned int *class_count, const Evas_Smart_Cb_Description ***instance_descrip tions, unsigned int *instance_count) EINA_ARG_NONNULL(1);
/** /**
* Find callback description for callback called @a name. * Find callback description for callback called @a name.
* *
* @param obj the smart object. * @param obj the smart object.
* @param name name of desired callback, must @b not be @c NULL. The * @param name name of desired callback, must @b not be @c NULL. The
* search have a special case for @a name being the same * search have a special case for @a name being the same
* pointer as registered with Evas_Smart_Cb_Description, one * pointer as registered with Evas_Smart_Cb_Description, one
* can use it to avoid excessive use of strcmp(). * can use it to avoid excessive use of strcmp().
* @param class_description pointer to return class description or @c * @param class_description pointer to return class description or
* NULL if not found. If parameter is @c NULL, no search will * @c NULL if not found. If parameter is @c NULL, no search will
* be done on class descriptions. * be done on class descriptions.
* @param instance_description pointer to return instance description * @param instance_description pointer to return instance description
* or @c NULL if not found. If parameter is @c NULL, no search * or @c NULL if not found. If parameter is @c NULL, no search
* will be done on instance descriptions. * will be done on instance descriptions.
* @return reference to description if found, @c NULL if not found. * @return reference to description if found, @c NULL if not found.
*/ */
EAPI void evas_object_smart_callback_description_find(const Ev as_Object *obj, const char *name, const Evas_Smart_Cb_Description **class_d escription, const Evas_Smart_Cb_Description **instance_description) EINA_AR G_NONNULL(1, 2); EAPI void evas_object_smart_callback_description_find(const Ev as_Object *obj, const char *name, const Evas_Smart_Cb_Description **class_d escription, const Evas_Smart_Cb_Description **instance_description) EINA_AR G_NONNULL(1, 2);
/** /**
* Mark smart object as changed, dirty. * Mark smart object as changed, dirty.
skipping to change at line 9779 skipping to change at line 10131
* obj will be called, if one is provided, during rendering phase of * obj will be called, if one is provided, during rendering phase of
* Evas (see evas_render()), after which this flag will be * Evas (see evas_render()), after which this flag will be
* automatically unset. * automatically unset.
* *
* If that smart function is not provided for the given object, this * If that smart function is not provided for the given object, this
* flag will be left unchanged. * flag will be left unchanged.
* *
* @note just setting this flag will not make the canvas' whole scene * @note just setting this flag will not make the canvas' whole scene
* dirty, by itself, and evas_render() will have no effect. To * dirty, by itself, and evas_render() will have no effect. To
* force that, use evas_object_smart_changed(), that will also * force that, use evas_object_smart_changed(), that will also
* automatically call this function automatically, with @c * automatically call this function automatically, with
* EINA_TRUE as parameter. * @c EINA_TRUE as parameter.
* *
* @see evas_object_smart_need_recalculate_get() * @see evas_object_smart_need_recalculate_get()
* @see evas_object_smart_calculate() * @see evas_object_smart_calculate()
* @see evas_smart_objects_calculate() * @see evas_smart_objects_calculate()
* *
* @ingroup Evas_Smart_Object_Group * @ingroup Evas_Smart_Object_Group
*/ */
EAPI void evas_object_smart_need_recalculate_set(Evas_Object * obj, Eina_Bool value) EINA_ARG_NONNULL(1); EAPI void evas_object_smart_need_recalculate_set(Evas_Object * obj, Eina_Bool value) EINA_ARG_NONNULL(1);
/** /**
skipping to change at line 9806 skipping to change at line 10158
* *
* @note this flag will be unset during the rendering phase, when the * @note this flag will be unset during the rendering phase, when the
* @c calculate() smart function is called, if one is provided. * @c calculate() smart function is called, if one is provided.
* If it's not provided, then the flag will be left unchanged * If it's not provided, then the flag will be left unchanged
* after the rendering phase. * after the rendering phase.
* *
* @see evas_object_smart_need_recalculate_set(), for more details * @see evas_object_smart_need_recalculate_set(), for more details
* *
* @ingroup Evas_Smart_Object_Group * @ingroup Evas_Smart_Object_Group
*/ */
EAPI Eina_Bool evas_object_smart_need_recalculate_get(const Evas_Ob ject *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Eina_Bool evas_object_smart_need_recalculate_get(const Evas_Ob ject *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Call the @b calculate() smart function immediataly on a given smart * Call the @b calculate() smart function immediately on a given smart
* object. * object.
* *
* @param obj the smart object's handle * @param obj the smart object's handle
* *
* This will force immediate calculations (see #Evas_Smart_Class) * This will force immediate calculations (see #Evas_Smart_Class)
* needed for renderization of this object and, besides, unset the * needed for renderization of this object and, besides, unset the
* flag on it telling it needs recalculation for the next rendering * flag on it telling it needs recalculation for the next rendering
* phase. * phase.
* *
* @see evas_object_smart_need_recalculate_set() * @see evas_object_smart_need_recalculate_set()
skipping to change at line 9848 skipping to change at line 10200
/** /**
* This gets the internal counter that counts the number of smart calculati ons * This gets the internal counter that counts the number of smart calculati ons
* *
* @param e The canvas to get the calculate counter from * @param e The canvas to get the calculate counter from
* *
* Whenever evas performs smart object calculations on the whole canvas * Whenever evas performs smart object calculations on the whole canvas
* it increments a counter by 1. This is the smart object calculate counter * it increments a counter by 1. This is the smart object calculate counter
* that this function returns the value of. It starts at the value of 0 and * that this function returns the value of. It starts at the value of 0 and
* will increase (and eventually wrap around to negative values and so on) by * will increase (and eventually wrap around to negative values and so on) by
* 1 every time objects are calculated. You can use this counter to ensure * 1 every time objects are calculated. You can use this counter to ensure
* you dont re-do calculations withint the same calculation generation/run * you don't re-do calculations withint the same calculation generation/run
* if the calculations maybe cause self-feeding effects. * if the calculations maybe cause self-feeding effects.
* *
* @ingroup Evas_Smart_Object_Group * @ingroup Evas_Smart_Object_Group
* @since 1.1 * @since 1.1
*/ */
EAPI int evas_smart_objects_calculate_count_get (const Evas * e); EAPI int evas_smart_objects_calculate_count_get (const Evas * e);
/** /**
* Moves all children objects of a given smart object relative to a * Moves all children objects of a given smart object relative to a
* given offset. * given offset.
skipping to change at line 9926 skipping to change at line 10278
* *
* @param obj the clipped smart object to retrieve associated clipper * @param obj the clipped smart object to retrieve associated clipper
* from. * from.
* @return the clipper object. * @return the clipper object.
* *
* Use this function if you want to change any of this clipper's * Use this function if you want to change any of this clipper's
* properties, like colors. * properties, like colors.
* *
* @see evas_object_smart_clipped_smart_add() * @see evas_object_smart_clipped_smart_add()
*/ */
EAPI Evas_Object *evas_object_smart_clipped_clipper_get (Evas_ Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Object *evas_object_smart_clipped_clipper_get (Evas_ Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Set a given smart class' callbacks so it implements the <b>clipped smart * Set a given smart class' callbacks so it implements the <b>clipped smart
* object"</b>'s interface. * object"</b>'s interface.
* *
* @param sc The smart class handle to operate on * @param sc The smart class handle to operate on
* *
* This call will assign all the required methods of the @p sc * This call will assign all the required methods of the @p sc
* #Evas_Smart_Class instance to the implementations set for clipped * #Evas_Smart_Class instance to the implementations set for clipped
* smart objects. If one wants to "subclass" it, call this function * smart objects. If one wants to "subclass" it, call this function
skipping to change at line 10104 skipping to change at line 10456
* @ingroup Evas_Object_Box * @ingroup Evas_Object_Box
*/ */
struct _Evas_Object_Box_Api struct _Evas_Object_Box_Api
{ {
Evas_Smart_Class base; /**< Base smart class struct, need fo r all smart objects */ Evas_Smart_Class base; /**< Base smart class struct, need fo r all smart objects */
int version; /**< Version of this smart class d efinition */ int version; /**< Version of this smart class d efinition */
Evas_Object_Box_Option *(*append) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, Evas_Object *child); /**< Smart function to append chil d elements in boxes */ Evas_Object_Box_Option *(*append) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, Evas_Object *child); /**< Smart function to append chil d elements in boxes */
Evas_Object_Box_Option *(*prepend) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, Evas_Object *child); /**< Smart function to prepend chi ld elements in boxes */ Evas_Object_Box_Option *(*prepend) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, Evas_Object *child); /**< Smart function to prepend chi ld elements in boxes */
Evas_Object_Box_Option *(*insert_before) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, Evas_Object *child, const Evas_Object *reference); /**< Smart function to insert a child element before another in boxes */ Evas_Object_Box_Option *(*insert_before) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, Evas_Object *child, const Evas_Object *reference); /**< Smart function to insert a child element before another in boxes */
Evas_Object_Box_Option *(*insert_after) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, Evas_Object *child, const Evas_Object *reference); /**< Smart function to insert a child element after another in boxes */ Evas_Object_Box_Option *(*insert_after) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, Evas_Object *child, const Evas_Object *reference); /**< Smart function to insert a child element after another in boxes */
Evas_Object_Box_Option *(*insert_at) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, Evas_Object *child, unsigned int pos); /**< Smart funct ion to insert a child element at a given positon on boxes */ Evas_Object_Box_Option *(*insert_at) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, Evas_Object *child, unsigned int pos); /**< Smart funct ion to insert a child element at a given position on boxes */
Evas_Object *(*remove) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, Evas_Object *child); /**< Smart function to remove a ch ild element from boxes */ Evas_Object *(*remove) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, Evas_Object *child); /**< Smart function to remove a ch ild element from boxes */
Evas_Object *(*remove_at) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, unsigned int pos); /**< Smart function to remove a chil d element from boxes, by its position */ Evas_Object *(*remove_at) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, unsigned int pos); /**< Smart function to remove a chil d element from boxes, by its position */
Eina_Bool (*property_set) (Evas_Object *o, Evas_Obj ect_Box_Option *opt, int property, va_list args); /**< Smart function to se t a custom property on a box child */ Eina_Bool (*property_set) (Evas_Object *o, Evas_Obj ect_Box_Option *opt, int property, va_list args); /**< Smart function to se t a custom property on a box child */
Eina_Bool (*property_get) (Evas_Object *o, Evas_Obj ect_Box_Option *opt, int property, va_list args); /**< Smart function to re trieve a custom property from a box child */ Eina_Bool (*property_get) (Evas_Object *o, Evas_Obj ect_Box_Option *opt, int property, va_list args); /**< Smart function to re trieve a custom property from a box child */
const char *(*property_name_get)(Evas_Object *o, int prop erty); /**< Smart function to get the name of a custom property of box chil dren */ const char *(*property_name_get)(Evas_Object *o, int prop erty); /**< Smart function to get the name of a custom property of box chil dren */
int (*property_id_get) (Evas_Object *o, const ch ar *name); /**< Smart function to get the numerical ID of a custom property of box children */ int (*property_id_get) (Evas_Object *o, const ch ar *name); /**< Smart function to get the numerical ID of a custom property of box children */
Evas_Object_Box_Option *(*option_new) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, Evas_Object *child); /**< Smart function to create a ne w box option struct */ Evas_Object_Box_Option *(*option_new) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, Evas_Object *child); /**< Smart function to create a ne w box option struct */
void (*option_free) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, Evas_Object_Box_Option *opt); /**< Smart function to de lete a box option struct */ void (*option_free) (Evas_Object *o, Evas_Obj ect_Box_Data *priv, Evas_Object_Box_Option *opt); /**< Smart function to de lete a box option struct */
}; };
skipping to change at line 10228 skipping to change at line 10580
Eina_Bool max_reached:1; Eina_Bool max_reached:1;
Eina_Bool min_reached:1; Eina_Bool min_reached:1;
Evas_Coord alloc_size; Evas_Coord alloc_size;
}; /**< #Evas_Object_Box_Option struct fields */ }; /**< #Evas_Object_Box_Option struct fields */
/** /**
* Set the default box @a api struct (Evas_Object_Box_Api) * Set the default box @a api struct (Evas_Object_Box_Api)
* with the default values. May be used to extend that API. * with the default values. May be used to extend that API.
* *
* @param api The box API struct to set back, most probably with * @param api The box API struct to set back, most probably with
* overriden fields (on class extensions scenarios) * overridden fields (on class extensions scenarios)
*/ */
EAPI void evas_object_box_smart_set (Evas_Object_Box_Api *api) EINA_ARG_NONNULL(1); EAPI void evas_object_box_smart_set (Evas_Object_Box_Api *api) EINA_ARG_NONNULL(1);
/** /**
* Get the Evas box smart class, for inheritance purposes. * Get the Evas box smart class, for inheritance purposes.
* *
* @return the (canonical) Evas box smart class. * @return the (canonical) Evas box smart class.
* *
* The returned value is @b not to be modified, just use it as your * The returned value is @b not to be modified, just use it as your
* parent class. * parent class.
skipping to change at line 10401 skipping to change at line 10753
* \par Box's properties: * \par Box's properties:
* @c align_h has no influence on the box for this layout. * @c align_h has no influence on the box for this layout.
* @c padding_h tells the box to draw empty spaces of that size, in * @c padding_h tells the box to draw empty spaces of that size, in
* pixels, between the (equal) child objects's cells. The @c align_v * pixels, between the (equal) child objects's cells. The @c align_v
* and @c padding_v properties of the box don't contribute to its * and @c padding_v properties of the box don't contribute to its
* behaviour when this layout is chosen. * behaviour when this layout is chosen.
* *
* \par Child element's properties: * \par Child element's properties:
* @c padding_l and @c padding_r sum up to the required width of the * @c padding_l and @c padding_r sum up to the required width of the
* child element. The @c align_x property tells the relative position * child element. The @c align_x property tells the relative position
* of this overall child width in its allocated cell (@r 0.0 to * of this overall child width in its allocated cell (@c 0.0 to
* extreme left, @c 1.0 to extreme right). A value of @c -1.0 to * extreme left, @c 1.0 to extreme right). A value of @c -1.0 to
* @c align_x makes the box try to resize this child element to the exact * @c align_x makes the box try to resize this child element to the exact
* width of its cell (respecting the minimum and maximum size hints on * width of its cell (respecting the minimum and maximum size hints on
* the child's width and accounting for its horizontal padding * the child's width and accounting for its horizontal padding
* hints). The child's @c padding_t, @c padding_b and @c align_y * hints). The child's @c padding_t, @c padding_b and @c align_y
* properties apply for padding/alignment relative to the overall * properties apply for padding/alignment relative to the overall
* height of the box. A value of @c -1.0 to @c align_y makes the box * height of the box. A value of @c -1.0 to @c align_y makes the box
* try to resize this child element to the exact height of its parent * try to resize this child element to the exact height of its parent
* (respecting the maximum size hint on the child's height). * (respecting the maximum size hint on the child's height).
*/ */
skipping to change at line 10453 skipping to change at line 10805
* touches the right border (even if they must overlap). The * touches the right border (even if they must overlap). The
* @c align_v and @c padding_v properties of the box don't contribute to * @c align_v and @c padding_v properties of the box don't contribute to
* its behaviour when this layout is chosen. * its behaviour when this layout is chosen.
* *
* \par Child element's properties: * \par Child element's properties:
* @c padding_l and @c padding_r sum up to the required width of the * @c padding_l and @c padding_r sum up to the required width of the
* child element. The @c align_x property tells the relative position * child element. The @c align_x property tells the relative position
* of this overall child width in its allocated cell (@c 0.0 to * of this overall child width in its allocated cell (@c 0.0 to
* extreme left, @c 1.0 to extreme right). A value of @c -1.0 to * extreme left, @c 1.0 to extreme right). A value of @c -1.0 to
* @c align_x makes the box try to resize this child element to the exact * @c align_x makes the box try to resize this child element to the exact
* width of its cell (respecting the minimun and maximum size hints on * width of its cell (respecting the minimum and maximum size hints on
* the child's width and accounting for its horizontal padding * the child's width and accounting for its horizontal padding
* hints). The child's @c padding_t, @c padding_b and @c align_y * hints). The child's @c padding_t, @c padding_b and @c align_y
* properties apply for padding/alignment relative to the overall * properties apply for padding/alignment relative to the overall
* height of the box. A value of @c -1.0 to @c align_y makes the box * height of the box. A value of @c -1.0 to @c align_y makes the box
* try to resize this child element to the exact height of its parent * try to resize this child element to the exact height of its parent
* (respecting the max hint on the child's height). * (respecting the max hint on the child's height).
*/ */
EAPI void evas_object_box_layout_homogeneous_max_size _horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_AR G_NONNULL(1, 2); EAPI void evas_object_box_layout_homogeneous_max_size _horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA_AR G_NONNULL(1, 2);
/** /**
skipping to change at line 10698 skipping to change at line 11050
* *
* @note This function will fail if @p reference is not a member of @p * @note This function will fail if @p reference is not a member of @p
* o. * o.
* *
* @note The actual placing of the item relative to @p o's area will * @note The actual placing of the item relative to @p o's area will
* depend on the layout set to it. * depend on the layout set to it.
* *
* @note This call will trigger the box's * @note This call will trigger the box's
* _Evas_Object_Box_Api::insert_after smart function. * _Evas_Object_Box_Api::insert_after smart function.
*/ */
EAPI Evas_Object_Box_Option *evas_object_box_insert_after (Evas_Object *o, Evas_Object *child, const Evas_Object *referent e) EINA_ARG_NONNULL(1, 2, 3); EAPI Evas_Object_Box_Option *evas_object_box_insert_after (Evas_Object *o, Evas_Object *child, const Evas_Object *referenc e) EINA_ARG_NONNULL(1, 2, 3);
/** /**
* Insert a new @a child object <b>at a given position</b>, in a given * Insert a new @a child object <b>at a given position</b>, in a given
* box object @a o. * box object @a o.
* *
* @param o The given box object * @param o The given box object
* @param child A child Evas object to be made a member of @p o * @param child A child Evas object to be made a member of @p o
* @param pos The numeric position (starting from @c 0) to place the * @param pos The numeric position (starting from @c 0) to place the
* new child object at * new child object at
* @return A box option bound to the recently added box item or @c * @return A box option bound to the recently added box item or @c
skipping to change at line 10734 skipping to change at line 11086
/** /**
* Remove a given object from a box object, unparenting it again. * Remove a given object from a box object, unparenting it again.
* *
* @param o The box object to remove a child object from * @param o The box object to remove a child object from
* @param child The handle to the child object to be removed * @param child The handle to the child object to be removed
* @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
* *
* On removal, you'll get an unparented object again, just as it was * On removal, you'll get an unparented object again, just as it was
* before you inserted it in the box. The * before you inserted it in the box. The
* _Evas_Object_Box_Api::option_free box smart callback will be called * _Evas_Object_Box_Api::option_free box smart callback will be called
* automatilly for you and, also, the @c "child,removed" smart event * automatically for you and, also, the @c "child,removed" smart event
* will take place. * will take place.
* *
* @note This call will trigger the box's _Evas_Object_Box_Api::remove * @note This call will trigger the box's _Evas_Object_Box_Api::remove
* smart function. * smart function.
*/ */
EAPI Eina_Bool evas_object_box_remove (Evas_Object *o, Evas_Object *child) EINA_ARG_NONNULL(1, 2); EAPI Eina_Bool evas_object_box_remove (Evas_Object *o, Evas_Object *child) EINA_ARG_NONNULL(1, 2);
/** /**
* Remove an object, <b>bound to a given position</b> in a box object, * Remove an object, <b>bound to a given position</b> in a box object,
* unparenting it again. * unparenting it again.
* *
* @param o The box object to remove a child object from * @param o The box object to remove a child object from
* @param in The numeric position (starting from @c 0) of the child * @param pos The numeric position (starting from @c 0) of the child
* object to be removed * object to be removed
* @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
* *
* On removal, you'll get an unparented object again, just as it was * On removal, you'll get an unparented object again, just as it was
* before you inserted it in the box. The @c option_free() box smart * before you inserted it in the box. The @c option_free() box smart
* callback will be called automatilly for you and, also, the * callback will be called automatically for you and, also, the
* @c "child,removed" smart event will take place. * @c "child,removed" smart event will take place.
* *
* @note This function will fail if the given position is invalid, * @note This function will fail if the given position is invalid,
* given @p o's internal list of elements. * given @p o's internal list of elements.
* *
* @note This call will trigger the box's * @note This call will trigger the box's
* _Evas_Object_Box_Api::remove_at smart function. * _Evas_Object_Box_Api::remove_at smart function.
*/ */
EAPI Eina_Bool evas_object_box_remove_at (Evas_Object *o, unsigned int pos) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_object_box_remove_at (Evas_Object *o, unsigned int pos) EINA_ARG_NONNULL(1);
/** /**
* Remove @b all child objects from a box object, unparenting them * Remove @b all child objects from a box object, unparenting them
* again. * again.
* *
* @param o The box object to remove a child object from * @param o The box object to remove a child object from
* @param child The handle to the child object to be removed * @param clear if true, it will delete just removed children.
* @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
* *
* This has the same effect of calling evas_object_box_remove() on * This has the same effect of calling evas_object_box_remove() on
* each of @p o's child objects, in sequence. If, and only if, all * each of @p o's child objects, in sequence. If, and only if, all
* those calls succeed, so does this one. * those calls succeed, so does this one.
*/ */
EAPI Eina_Bool evas_object_box_remove_all (Evas_Object *o, Eina_Bool clear) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_object_box_remove_all (Evas_Object *o, Eina_Bool clear) EINA_ARG_NONNULL(1);
/** /**
* Get an iterator to walk the list of children of a given box object. * Get an iterator to walk the list of children of a given box object.
skipping to change at line 10823 skipping to change at line 11175
* It's possible to remove objects from the box when walking * It's possible to remove objects from the box when walking
* this list, but these removals won't be reflected on it. * this list, but these removals won't be reflected on it.
*/ */
EAPI Eina_List *evas_object_box_children_get (const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL( 1) EINA_MALLOC; EAPI Eina_List *evas_object_box_children_get (const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL( 1) EINA_MALLOC;
/** /**
* Get the name of the property of the child elements of the box @a o * Get the name of the property of the child elements of the box @a o
* which have @a id as identifier * which have @a id as identifier
* *
* @param o The box to search child options from * @param o The box to search child options from
* @param id The numerical identifier of the option being searched, for * @param property The numerical identifier of the option being searched,
* its name * for its name
* @return The name of the given property or @c NULL, on errors. * @return The name of the given property or @c NULL, on errors.
* *
* @note This call won't do anything for a canonical Evas box. Only * @note This call won't do anything for a canonical Evas box. Only
* users which have @b subclassed it, setting custom box items options * users which have @b subclassed it, setting custom box items options
* (see #Evas_Object_Box_Option) on it, would benefit from this * (see #Evas_Object_Box_Option) on it, would benefit from this
* function. They'd have to implement it and set it to be the * function. They'd have to implement it and set it to be the
* _Evas_Object_Box_Api::property_name_get smart class function of the * _Evas_Object_Box_Api::property_name_get smart class function of the
* box, which is originally set to @c NULL. * box, which is originally set to @c NULL.
*/ */
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; EAPI const char *evas_object_box_option_property_name_get (Evas_Object *o, int property) EINA_WARN_UNUSED_RESULT EINA_ARG_ NONNULL(1);
/** /**
* Get the numerical identifier of the property of the child elements * Get the numerical identifier of the property of the child elements
* of the box @a o which have @a name as name string * of the box @a o which have @a name as name string
* *
* @param o The box to search child options from * @param o The box to search child options from
* @param name The name string of the option being searched, for * @param name The name string of the option being searched, for
* its ID * its ID
* @return The numerical ID of the given property or @c -1, on * @return The numerical ID of the given property or @c -1, on
* errors. * errors.
* *
* @note This call won't do anything for a canonical Evas box. Only * @note This call won't do anything for a canonical Evas box. Only
* users which have @b subclassed it, setting custom box items options * users which have @b subclassed it, setting custom box items options
* (see #Evas_Object_Box_Option) on it, would benefit from this * (see #Evas_Object_Box_Option) on it, would benefit from this
* function. They'd have to implement it and set it to be the * function. They'd have to implement it and set it to be the
* _Evas_Object_Box_Api::property_id_get smart class function of the * _Evas_Object_Box_Api::property_id_get smart class function of the
* box, which is originally set to @c NULL. * box, which is originally set to @c NULL.
*/ */
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; EAPI int evas_object_box_option_property_id_get (Evas_Object *o, const char *name) EINA_WARN_UNUSED_RESULT EINA_ ARG_NONNULL(1, 2);
/** /**
* Set a property value (by its given numerical identifier), on a * Set a property value (by its given numerical identifier), on a
* given box child element * given box child element
* *
* @param o The box parenting the child element * @param o The box parenting the child element
* @param opt The box option structure bound to the child box element * @param opt The box option structure bound to the child box element
* to set a property on * to set a property on
* @param id The numerical ID of the given property * @param property The numerical ID of the given property
* @param ... (List of) actual value(s) to be set for this * @param ... (List of) actual value(s) to be set for this
* property. It (they) @b must be of the same type the user has * property. It (they) @b must be of the same type the user has
* defined for it (them). * defined for it (them).
* @return @c EINA_TRUE on success, @c EINA_FALSE on failure. * @return @c EINA_TRUE on success, @c EINA_FALSE on failure.
* *
* @note This call won't do anything for a canonical Evas box. Only * @note This call won't do anything for a canonical Evas box. Only
* users which have @b subclassed it, setting custom box items options * users which have @b subclassed it, setting custom box items options
* (see #Evas_Object_Box_Option) on it, would benefit from this * (see #Evas_Object_Box_Option) on it, would benefit from this
* function. They'd have to implement it and set it to be the * function. They'd have to implement it and set it to be the
* _Evas_Object_Box_Api::property_set smart class function of the box, * _Evas_Object_Box_Api::property_set smart class function of the box,
skipping to change at line 10889 skipping to change at line 11241
*/ */
EAPI Eina_Bool evas_object_box_option_property_set (Evas_Object *o, Evas_Object_Box_Option *opt, int property, ...) EINA_ARG_NONNULL(1, 2); EAPI Eina_Bool evas_object_box_option_property_set (Evas_Object *o, Evas_Object_Box_Option *opt, int property, ...) EINA_ARG_NONNULL(1, 2);
/** /**
* Set a property value (by its given numerical identifier), on a * Set a property value (by its given numerical identifier), on a
* given box child element -- by a variable argument list * given box child element -- by a variable argument list
* *
* @param o The box parenting the child element * @param o The box parenting the child element
* @param opt The box option structure bound to the child box element * @param opt The box option structure bound to the child box element
* to set a property on * to set a property on
* @param id The numerical ID of the given property * @param property The numerical ID of the given property
* @param va_list The variable argument list implementing the value to * @param args The variable argument list implementing the value to
* be set for this property. It @b must be of the same type the user has * be set for this property. It @b must be of the same type the user has
* defined for it. * defined for it.
* @return @c EINA_TRUE on success, @c EINA_FALSE on failure. * @return @c EINA_TRUE on success, @c EINA_FALSE on failure.
* *
* This is a variable argument list variant of the * This is a variable argument list variant of the
* evas_object_box_option_property_set(). See its documentation for * evas_object_box_option_property_set(). See its documentation for
* more details. * more details.
*/ */
EAPI Eina_Bool evas_object_box_option_property_vset (Evas_Object *o, Evas_Object_Box_Option *opt, int property, va_l ist args) EINA_ARG_NONNULL(1, 2); EAPI Eina_Bool evas_object_box_option_property_vset (Evas_Object *o, Evas_Object_Box_Option *opt, int property, va_l ist args) EINA_ARG_NONNULL(1, 2);
/** /**
* Get a property's value (by its given numerical identifier), on a * Get a property's value (by its given numerical identifier), on a
* given box child element * given box child element
* *
* @param o The box parenting the child element * @param o The box parenting the child element
* @param opt The box option structure bound to the child box element * @param opt The box option structure bound to the child box element
* to get a property from * to get a property from
* @param id The numerical ID of the given property * @param property The numerical ID of the given property
* @param ... (List of) pointer(s) where to store the value(s) set for * @param ... (List of) pointer(s) where to store the value(s) set for
* this property. It (they) @b must point to variable(s) of the same * this property. It (they) @b must point to variable(s) of the same
* type the user has defined for it (them). * type the user has defined for it (them).
* @return @c EINA_TRUE on success, @c EINA_FALSE on failure. * @return @c EINA_TRUE on success, @c EINA_FALSE on failure.
* *
* @note This call won't do anything for a canonical Evas box. Only * @note This call won't do anything for a canonical Evas box. Only
* users which have @b subclassed it, getting custom box items options * users which have @b subclassed it, getting custom box items options
* (see #Evas_Object_Box_Option) on it, would benefit from this * (see #Evas_Object_Box_Option) on it, would benefit from this
* function. They'd have to implement it and get it to be the * function. They'd have to implement it and get it to be the
* _Evas_Object_Box_Api::property_get smart class function of the * _Evas_Object_Box_Api::property_get smart class function of the
skipping to change at line 10935 skipping to change at line 11287
*/ */
EAPI Eina_Bool evas_object_box_option_property_get (Evas_Object *o, Evas_Object_Box_Option *opt, int property, ...) EINA_ARG_NONNULL(1, 2); EAPI Eina_Bool evas_object_box_option_property_get (Evas_Object *o, Evas_Object_Box_Option *opt, int property, ...) EINA_ARG_NONNULL(1, 2);
/** /**
* Get a property's value (by its given numerical identifier), on a * Get a property's value (by its given numerical identifier), on a
* given box child element -- by a variable argument list * given box child element -- by a variable argument list
* *
* @param o The box parenting the child element * @param o The box parenting the child element
* @param opt The box option structure bound to the child box element * @param opt The box option structure bound to the child box element
* to get a property from * to get a property from
* @param id The numerical ID of the given property * @param property The numerical ID of the given property
* @param va_list The variable argument list with pointers to where to * @param args The variable argument list with pointers to where to
* store the values of this property. They @b must point to variables * store the values of this property. They @b must point to variables
* of the same type the user has defined for them. * of the same type the user has defined for them.
* @return @c EINA_TRUE on success, @c EINA_FALSE on failure. * @return @c EINA_TRUE on success, @c EINA_FALSE on failure.
* *
* This is a variable argument list variant of the * This is a variable argument list variant of the
* evas_object_box_option_property_get(). See its documentation for * evas_object_box_option_property_get(). See its documentation for
* more details. * more details.
*/ */
EAPI Eina_Bool evas_object_box_option_property_vget (Evas_Object *o, Evas_Object_Box_Option *opt, int property, va_l ist args) EINA_ARG_NONNULL(1, 2); EAPI Eina_Bool evas_object_box_option_property_vget (Evas_Object *o, Evas_Object_Box_Option *opt, int property, va_l ist args) EINA_ARG_NONNULL(1, 2);
skipping to change at line 11030 skipping to change at line 11382
* no minimum size is provided at all then the table will fallback to * no minimum size is provided at all then the table will fallback to
* expand mode as well. * expand mode as well.
*/ */
EAPI void evas_object_table_homogeneous_set (Evas_Object *o, Evas_Object_Table_Homogeneous_Mode homogeneous) EINA_ARG_N ONNULL(1); EAPI void evas_object_table_homogeneous_set (Evas_Object *o, Evas_Object_Table_Homogeneous_Mode homogeneous) EINA_ARG_N ONNULL(1);
/** /**
* Get the current layout homogeneous mode. * Get the current layout homogeneous mode.
* *
* @see evas_object_table_homogeneous_set() * @see evas_object_table_homogeneous_set()
*/ */
EAPI Evas_Object_Table_Homogeneous_Mode evas_object_table_homogeneous_get (const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PUR E; EAPI Evas_Object_Table_Homogeneous_Mode evas_object_table_homogeneous_get (const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Set padding between cells. * Set padding between cells.
*/ */
EAPI void evas_object_table_padding_set (Evas_Object *o, Evas_Coord horizontal, Evas_Coord vertical) EINA_ARG_NONNU LL(1); EAPI void evas_object_table_padding_set (Evas_Object *o, Evas_Coord horizontal, Evas_Coord vertical) EINA_ARG_NONNU LL(1);
/** /**
* Get padding between cells. * Get padding between cells.
*/ */
EAPI void evas_object_table_padding_get (const Evas_Object *o, Evas_Coord *horizontal, Evas_Coord *vertical) EINA_A RG_NONNULL(1); EAPI void evas_object_table_padding_get (const Evas_Object *o, Evas_Coord *horizontal, Evas_Coord *vertical) EINA_A RG_NONNULL(1);
skipping to change at line 11057 skipping to change at line 11409
/** /**
* Get alignment of the whole bounding box of contents. * Get alignment of the whole bounding box of contents.
*/ */
EAPI void evas_object_table_align_get (const Evas_Object *o, double *horizontal, double *vertical) EINA_ARG_NONNU LL(1); EAPI void evas_object_table_align_get (const Evas_Object *o, double *horizontal, double *vertical) EINA_ARG_NONNU LL(1);
/** /**
* Sets the mirrored mode of the table. In mirrored mode the table items go * Sets the mirrored mode of the table. In mirrored mode the table items go
* from right to left instead of left to right. That is, 1,1 is top right, not * from right to left instead of left to right. That is, 1,1 is top right, not
* top left. * top left.
* *
* @param obj The table object. * @param o The table object.
* @param mirrored the mirrored mode to set * @param mirrored the mirrored mode to set
* @since 1.1.0 * @since 1.1.0
*/ */
EAPI void evas_object_table_mirrored_set (Evas_Object *o, Eina_Bool mirrored) EINA_ARG_NONNULL(1); EAPI void evas_object_table_mirrored_set (Evas_Object *o, Eina_Bool mirrored) EINA_ARG_NONNULL(1);
/** /**
* Gets the mirrored mode of the table. * Gets the mirrored mode of the table.
* *
* @param obj The table object. * @param o The table object.
* @return EINA_TRUE if it's a mirrored table, EINA_FALSE otherwise. * @return @c EINA_TRUE if it's a mirrored table, @c EINA_FALSE otherwise.
* @since 1.1.0 * @since 1.1.0
* @see evas_object_table_mirrored_set() * @see evas_object_table_mirrored_set()
*/ */
EAPI Eina_Bool evas_object_table_mirrored_get (const Evas_Object *o) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_object_table_mirrored_get (const Evas_Object *o) EINA_ARG_NONNULL(1);
/** /**
* Get packing location of a child of table * Get packing location of a child of table
* *
* @param o The given table object. * @param o The given table object.
* @param child The child object to add. * @param child The child object to add.
skipping to change at line 11224 skipping to change at line 11576
* @see evas_object_grid_size_set() * @see evas_object_grid_size_set()
* @since 1.1.0 * @since 1.1.0
*/ */
EAPI void evas_object_grid_size_get ( const Evas_Object *o, int *w, int *h) EINA_ARG_NONNULL(1); EAPI void evas_object_grid_size_get ( const Evas_Object *o, int *w, int *h) EINA_ARG_NONNULL(1);
/** /**
* Sets the mirrored mode of the grid. In mirrored mode the grid items go * Sets the mirrored mode of the grid. In mirrored mode the grid items go
* from right to left instead of left to right. That is, 0,0 is top right, not * from right to left instead of left to right. That is, 0,0 is top right, not
* to left. * to left.
* *
* @param obj The grid object. * @param o The grid object.
* @param mirrored the mirrored mode to set * @param mirrored the mirrored mode to set
* @since 1.1.0 * @since 1.1.0
*/ */
EAPI void evas_object_grid_mirrored_set ( Evas_Object *o, Eina_Bool mirrored) EINA_ARG_NONNULL(1); EAPI void evas_object_grid_mirrored_set ( Evas_Object *o, Eina_Bool mirrored) EINA_ARG_NONNULL(1);
/** /**
* Gets the mirrored mode of the grid. * Gets the mirrored mode of the grid.
* *
* @param obj The grid object. * @param o The grid object.
* @return EINA_TRUE if it's a mirrored grid, EINA_FALSE otherwise. * @return @c EINA_TRUE if it's a mirrored grid, @c EINA_FALSE otherwise.
* @see evas_object_grid_mirrored_set() * @see evas_object_grid_mirrored_set()
* @since 1.1.0 * @since 1.1.0
*/ */
EAPI Eina_Bool evas_object_grid_mirrored_get ( const Evas_Object *o) EINA_ARG_NONNULL(1); EAPI Eina_Bool evas_object_grid_mirrored_get ( const Evas_Object *o) EINA_ARG_NONNULL(1);
/** /**
* Add a new child to a grid object. * Add a new child to a grid object.
* *
* @param o The given grid object. * @param o The given grid object.
* @param child The child object to add. * @param child The child object to add.
skipping to change at line 11345 skipping to change at line 11697
typedef struct _Evas_Cserve_Config Evas_Cserve_Config; typedef struct _Evas_Cserve_Config Evas_Cserve_Config;
/** /**
* Statistics about the server that shares cached bitmaps. * Statistics about the server that shares cached bitmaps.
* @ingroup Evas_Cserve * @ingroup Evas_Cserve
*/ */
struct _Evas_Cserve_Stats struct _Evas_Cserve_Stats
{ {
int saved_memory; /**< current amount of saved memory, in bytes */ int saved_memory; /**< current amount of saved memory, in bytes */
int wasted_memory; /**< current amount of wasted memory, in byte s */ int wasted_memory; /**< current amount of wasted memory, in byte s */
int saved_memory_peak; /**< peak ammount of saved memory, in byt int saved_memory_peak; /**< peak amount of saved memory, in byte
es */ s */
int wasted_memory_peak; /**< peak ammount of wasted memory, in b int wasted_memory_peak; /**< peak amount of wasted memory, in by
ytes */ tes */
double saved_time_image_header_load; /**< time, in seconds, saved i n header loads by sharing cached loads instead */ double saved_time_image_header_load; /**< time, in seconds, saved i n header loads by sharing cached loads instead */
double saved_time_image_data_load; /**< time, in seconds, saved in data loads by sharing cached loads instead */ double saved_time_image_data_load; /**< time, in seconds, saved in data loads by sharing cached loads instead */
}; };
/** /**
* A handle of a cache of images shared by a server. * A handle of a cache of images shared by a server.
* @ingroup Evas_Cserve * @ingroup Evas_Cserve
*/ */
struct _Evas_Cserve_Image_Cache struct _Evas_Cserve_Image_Cache
{ {
skipping to change at line 11403 skipping to change at line 11755
int cache_max_usage; int cache_max_usage;
int cache_item_timeout; int cache_item_timeout;
int cache_item_timeout_check; int cache_item_timeout_check;
}; };
/** /**
* Retrieves if the system wants to share bitmaps using the server. * Retrieves if the system wants to share bitmaps using the server.
* @return @c EINA_TRUE if it wants, @c EINA_FALSE otherwise. * @return @c EINA_TRUE if it wants, @c EINA_FALSE otherwise.
* @ingroup Evas_Cserve * @ingroup Evas_Cserve
*/ */
EAPI Eina_Bool evas_cserve_want_get (void) EINA_W ARN_UNUSED_RESULT EINA_PURE; EAPI Eina_Bool evas_cserve_want_get (void) EINA_W ARN_UNUSED_RESULT;
/** /**
* Retrieves if the system is connected to the server used to share * Retrieves if the system is connected to the server used to share
* bitmaps. * bitmaps.
* *
* @return @c EINA_TRUE if it's connected, @c EINA_FALSE otherwise. * @return @c EINA_TRUE if it's connected, @c EINA_FALSE otherwise.
* @ingroup Evas_Cserve * @ingroup Evas_Cserve
*/ */
EAPI Eina_Bool evas_cserve_connected_get (void) EINA_W ARN_UNUSED_RESULT; EAPI Eina_Bool evas_cserve_connected_get (void) EINA_W ARN_UNUSED_RESULT;
skipping to change at line 11430 skipping to change at line 11782
* @c EINA_FALSE otherwise (when @p stats is untouched) * @c EINA_FALSE otherwise (when @p stats is untouched)
* @ingroup Evas_Cserve * @ingroup Evas_Cserve
*/ */
EAPI Eina_Bool evas_cserve_stats_get (Evas_Cserve_ Stats *stats) EINA_WARN_UNUSED_RESULT; EAPI Eina_Bool evas_cserve_stats_get (Evas_Cserve_ Stats *stats) EINA_WARN_UNUSED_RESULT;
/** /**
* Completely discard/clean a given images cache, thus re-setting it. * Completely discard/clean a given images cache, thus re-setting it.
* *
* @param cache A handle to the given images cache. * @param cache A handle to the given images cache.
*/ */
EAPI void evas_cserve_image_cache_contents_clean (Evas_Cserve_ Image_Cache *cache) EINA_PURE; EAPI void evas_cserve_image_cache_contents_clean (Evas_Cserve_ Image_Cache *cache);
/** /**
* Retrieves the current configuration of the Evas image caching * Retrieves the current configuration of the Evas image caching
* server. * server.
* *
* @param config where to store current image caching server's * @param config where to store current image caching server's
* configuration. * configuration.
* *
* @return @c EINA_TRUE if @p config was filled with data, * @return @c EINA_TRUE if @p config was filled with data,
* @c EINA_FALSE otherwise (when @p config is untouched) * @c EINA_FALSE otherwise (when @p config is untouched)
* *
* The fields of @p config will be altered to reflect the current * The fields of @p config will be altered to reflect the current
* configuration's values. * configuration's values.
* *
* @see evas_cserve_config_set() * @see evas_cserve_config_set()
* *
* @ingroup Evas_Cserve * @ingroup Evas_Cserve
*/ */
EAPI Eina_Bool evas_cserve_config_get (Evas_Cserve_ Config *config) EINA_WARN_UNUSED_RESULT EINA_PURE; EAPI Eina_Bool evas_cserve_config_get (Evas_Cserve_ Config *config) EINA_WARN_UNUSED_RESULT;
/** /**
* Changes the configurations of the Evas image caching server. * Changes the configurations of the Evas image caching server.
* *
* @param config A bitmap cache configuration handle with fields set * @param config A bitmap cache configuration handle with fields set
* to desired configuration values. * to desired configuration values.
* @return @c EINA_TRUE if @p config was successfully applied, * @return @c EINA_TRUE if @p config was successfully applied,
* @c EINA_FALSE otherwise. * @c EINA_FALSE otherwise.
* *
* @see evas_cserve_config_get() * @see evas_cserve_config_get()
* *
* @ingroup Evas_Cserve * @ingroup Evas_Cserve
*/ */
EAPI Eina_Bool evas_cserve_config_set (const Evas_C serve_Config *config) EINA_WARN_UNUSED_RESULT EINA_PURE; EAPI Eina_Bool evas_cserve_config_set (const Evas_C serve_Config *config) EINA_WARN_UNUSED_RESULT;
/** /**
* Force the system to disconnect from the bitmap caching server. * Force the system to disconnect from the bitmap caching server.
* *
* @ingroup Evas_Cserve * @ingroup Evas_Cserve
*/ */
EAPI void evas_cserve_disconnect (void); EAPI void evas_cserve_disconnect (void);
/** /**
* @defgroup Evas_Utils General Utilities * @defgroup Evas_Utils General Utilities
skipping to change at line 11495 skipping to change at line 11847
* supported, <code>"Unknown error"</code> is returned. * supported, <code>"Unknown error"</code> is returned.
* *
* Mostly evas_object_image_file_set() would be the function setting * Mostly evas_object_image_file_set() would be the function setting
* that error value afterwards, but also evas_object_image_load(), * that error value afterwards, but also evas_object_image_load(),
* evas_object_image_save(), evas_object_image_data_get(), * evas_object_image_save(), evas_object_image_data_get(),
* evas_object_image_data_convert(), evas_object_image_pixels_import() * evas_object_image_data_convert(), evas_object_image_pixels_import()
* and evas_object_image_is_inside(). This function is meant to be * and evas_object_image_is_inside(). This function is meant to be
* used in conjunction with evas_object_image_load_error_get(), as in: * used in conjunction with evas_object_image_load_error_get(), as in:
* *
* Example code: * Example code:
* @dontinclude evas-load-error-str.c * @dontinclude evas-images.c
* @skip img1 = * @skip img1 =
* @until ecore_main_loop_begin( * @until ecore_main_loop_begin(
* *
* Here, being @c valid_path the path to a valid image and @c * Here, being @c valid_path the path to a valid image and @c
* bogus_path a path to a file which does not exist, the two outputs * bogus_path a path to a file which does not exist, the two outputs
* of evas_load_error_str() would be (if no other errors occur): * of evas_load_error_str() would be (if no other errors occur):
* <code>"No error on load"</code> and <code>"File (or file path) does * <code>"No error on load"</code> and <code>"File (or file path) does
* not exist"</code>, respectively. See the full @ref * not exist"</code>, respectively. See the full @ref
* Example_Evas_Images "example". * Example_Evas_Images "example".
* *
skipping to change at line 11558 skipping to change at line 11910
/* argb color space has a,r,g,b in the range 0 to 255 */ /* argb color space has a,r,g,b in the range 0 to 255 */
/** /**
* Pre-multiplies a rgb triplet by an alpha factor. * Pre-multiplies a rgb triplet by an alpha factor.
* *
* @param a The alpha factor. * @param a The alpha factor.
* @param r The Red component of the color. * @param r The Red component of the color.
* @param g The Green component of the color. * @param g The Green component of the color.
* @param b The Blue component of the color. * @param b The Blue component of the color.
* *
* This function pre-multiplies a given rbg triplet by an alpha * This function pre-multiplies a given rgb triplet by an alpha
* factor. Alpha factor is used to define transparency. * factor. Alpha factor is used to define transparency.
* *
* @ingroup Evas_Utils * @ingroup Evas_Utils
**/ **/
EAPI void evas_color_argb_premul (int a, int *r, in t *g, int *b); EAPI void evas_color_argb_premul (int a, int *r, in t *g, int *b);
/** /**
* Undo pre-multiplication of a rgb triplet by an alpha factor. * Undo pre-multiplication of a rgb triplet by an alpha factor.
* *
* @param a The alpha factor. * @param a The alpha factor.
skipping to change at line 11658 skipping to change at line 12010
* @ingroup Evas_Utils * @ingroup Evas_Utils
*/ */
EAPI int evas_string_char_prev_get (const char *str, int pos, int *decoded) EINA_ARG_NONNULL(1); EAPI int evas_string_char_prev_get (const char *str, int pos, int *decoded) EINA_ARG_NONNULL(1);
/** /**
* Get the length in characters of the string. * Get the length in characters of the string.
* @param str The string to get the length of. * @param str The string to get the length of.
* @return The length in characters (not bytes) * @return The length in characters (not bytes)
* @ingroup Evas_Utils * @ingroup Evas_Utils
*/ */
EAPI int evas_string_char_len_get (const char *str) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI int evas_string_char_len_get (const char *str) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* @defgroup Evas_Keys Key Input Functions * @defgroup Evas_Keys Key Input Functions
* *
* Functions which feed key events to the canvas. * Functions which feed key events to the canvas.
* *
* As explained in @ref intro_not_evas, Evas is @b not aware of input * As explained in @ref intro_not_evas, Evas is @b not aware of input
* systems at all. Then, the user, if using it crudely (evas_new()), * systems at all. Then, the user, if using it crudely (evas_new()),
* will have to feed it with input events, so that it can react * will have to feed it with input events, so that it can react
* somehow. If, however, the user creates a canvas by means of the * somehow. If, however, the user creates a canvas by means of the
skipping to change at line 11716 skipping to change at line 12068
* *
* @see evas_key_modifier_add * @see evas_key_modifier_add
* @see evas_key_modifier_del * @see evas_key_modifier_del
* @see evas_key_modifier_on * @see evas_key_modifier_on
* @see evas_key_modifier_off * @see evas_key_modifier_off
* @see evas_key_modifier_is_set * @see evas_key_modifier_is_set
* *
* @return An ::Evas_Modifier handle to query Evas' keys subsystem * @return An ::Evas_Modifier handle to query Evas' keys subsystem
* with evas_key_modifier_is_set(), or @c NULL on error. * with evas_key_modifier_is_set(), or @c NULL on error.
*/ */
EAPI const Evas_Modifier *evas_key_modifier_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI const Evas_Modifier *evas_key_modifier_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Returns a handle to the list of lock keys registered in the canvas * Returns a handle to the list of lock keys registered in the canvas
* @p e. This is required to check for which locks are set at a given * @p e. This is required to check for which locks are set at a given
* time with the evas_key_lock_is_set() function. * time with the evas_key_lock_is_set() function.
* *
* @param e The pointer to the Evas canvas * @param e The pointer to the Evas canvas
* *
* @see evas_key_lock_add * @see evas_key_lock_add
* @see evas_key_lock_del * @see evas_key_lock_del
* @see evas_key_lock_on * @see evas_key_lock_on
* @see evas_key_lock_off * @see evas_key_lock_off
* @see evas_key_lock_is_set * @see evas_key_lock_is_set
* *
* @return An ::Evas_Lock handle to query Evas' keys subsystem with * @return An ::Evas_Lock handle to query Evas' keys subsystem with
* evas_key_lock_is_set(), or @c NULL on error. * evas_key_lock_is_set(), or @c NULL on error.
*/ */
EAPI const Evas_Lock *evas_key_lock_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; EAPI const Evas_Lock *evas_key_lock_get (const Evas *e) EI NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
/** /**
* Checks the state of a given modifier key, at the time of the * Checks the state of a given modifier key, at the time of the
* call. If the modifier is set, such as shift being pressed, this * call. If the modifier is set, such as shift being pressed, this
* function returns @c Eina_True. * function returns @c Eina_True.
* *
* @param m The current modifiers set, as returned by * @param m The current modifiers set, as returned by
* evas_key_modifier_get(). * evas_key_modifier_get().
* @param keyname The name of the modifier key to check status for. * @param keyname The name of the modifier key to check status for.
* *
* @return @c Eina_True if the modifier key named @p keyname is on, @c * @return @c Eina_True if the modifier key named @p keyname is on, @c
* Eina_False otherwise. * Eina_False otherwise.
* *
* @see evas_key_modifier_add * @see evas_key_modifier_add
* @see evas_key_modifier_del * @see evas_key_modifier_del
* @see evas_key_modifier_get * @see evas_key_modifier_get
* @see evas_key_modifier_on * @see evas_key_modifier_on
* @see evas_key_modifier_off * @see evas_key_modifier_off
*/ */
EAPI Eina_Bool evas_key_modifier_is_set (const Evas_Modifi er *m, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; EAPI Eina_Bool evas_key_modifier_is_set (const Evas_Modifi er *m, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2);
/** /**
* Checks the state of a given lock key, at the time of the call. If * Checks the state of a given lock key, at the time of the call. If
* the lock is set, such as caps lock, this function returns @c * the lock is set, such as caps lock, this function returns @c
* Eina_True. * Eina_True.
* *
* @param l The current locks set, as returned by evas_key_lock_get(). * @param l The current locks set, as returned by evas_key_lock_get().
* @param keyname The name of the lock key to check status for. * @param keyname The name of the lock key to check status for.
* *
* @return @c Eina_True if the @p keyname lock key is set, @c * @return @c Eina_True if the @p keyname lock key is set, @c
* Eina_False otherwise. * Eina_False otherwise.
* *
* @see evas_key_lock_get * @see evas_key_lock_get
* @see evas_key_lock_add * @see evas_key_lock_add
* @see evas_key_lock_del * @see evas_key_lock_del
* @see evas_key_lock_on * @see evas_key_lock_on
* @see evas_key_lock_off * @see evas_key_lock_off
*/ */
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; EAPI Eina_Bool evas_key_lock_is_set (const Evas_Lock * l, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2);
/** /**
* Adds the @p keyname key to the current list of modifier keys. * Adds the @p keyname key to the current list of modifier keys.
* *
* @param e The pointer to the Evas canvas * @param e The pointer to the Evas canvas
* @param keyname The name of the modifier key to add to the list of * @param keyname The name of the modifier key to add to the list of
* Evas modifiers. * Evas modifiers.
* *
* Modifiers are keys like shift, alt and ctrl, i.e., keys which are * Modifiers are keys like shift, alt and ctrl, i.e., keys which are
* meant to be pressed together with others, altering the behavior of * meant to be pressed together with others, altering the behavior of
skipping to change at line 11808 skipping to change at line 12160
* *
* @note If the programmer instantiates the canvas by means of the * @note If the programmer instantiates the canvas by means of the
* ecore_evas_new() family of helper functions, Ecore will take * ecore_evas_new() family of helper functions, Ecore will take
* care of registering on it all standard modifiers: "Shift", * care of registering on it all standard modifiers: "Shift",
* "Control", "Alt", "Meta", "Hyper", "Super". * "Control", "Alt", "Meta", "Hyper", "Super".
*/ */
EAPI void evas_key_modifier_add (Evas *e, const ch ar *keyname) EINA_ARG_NONNULL(1, 2); EAPI void evas_key_modifier_add (Evas *e, const ch ar *keyname) EINA_ARG_NONNULL(1, 2);
/** /**
* Removes the @p keyname key from the current list of modifier keys * Removes the @p keyname key from the current list of modifier keys
* on canvas @e. * on canvas @p e.
* *
* @param e The pointer to the Evas canvas * @param e The pointer to the Evas canvas
* @param keyname The name of the key to remove from the modifiers list. * @param keyname The name of the key to remove from the modifiers list.
* *
* @see evas_key_modifier_add * @see evas_key_modifier_add
* @see evas_key_modifier_get * @see evas_key_modifier_get
* @see evas_key_modifier_on * @see evas_key_modifier_on
* @see evas_key_modifier_off * @see evas_key_modifier_off
* @see evas_key_modifier_is_set * @see evas_key_modifier_is_set
*/ */
skipping to change at line 11854 skipping to change at line 12206
* *
* @note If the programmer instantiates the canvas by means of the * @note If the programmer instantiates the canvas by means of the
* ecore_evas_new() family of helper functions, Ecore will take * ecore_evas_new() family of helper functions, Ecore will take
* care of registering on it all standard lock keys: "Caps_Lock", * care of registering on it all standard lock keys: "Caps_Lock",
* "Num_Lock", "Scroll_Lock". * "Num_Lock", "Scroll_Lock".
*/ */
EAPI void evas_key_lock_add (Evas *e, const ch ar *keyname) EINA_ARG_NONNULL(1, 2); EAPI void evas_key_lock_add (Evas *e, const ch ar *keyname) EINA_ARG_NONNULL(1, 2);
/** /**
* Removes the @p keyname key from the current list of lock keys on * Removes the @p keyname key from the current list of lock keys on
* canvas @e. * canvas @p e.
* *
* @param e The pointer to the Evas canvas * @param e The pointer to the Evas canvas
* @param keyname The name of the key to remove from the locks list. * @param keyname The name of the key to remove from the locks list.
* *
* @see evas_key_lock_get * @see evas_key_lock_get
* @see evas_key_lock_add * @see evas_key_lock_add
* @see evas_key_lock_on * @see evas_key_lock_on
* @see evas_key_lock_off * @see evas_key_lock_off
*/ */
EAPI void evas_key_lock_del (Evas *e, const ch ar *keyname) EINA_ARG_NONNULL(1, 2); EAPI void evas_key_lock_del (Evas *e, const ch ar *keyname) EINA_ARG_NONNULL(1, 2);
skipping to change at line 11954 skipping to change at line 12306
* documentation for more information. * documentation for more information.
* *
* @see evas_key_modifier_add * @see evas_key_modifier_add
* @see evas_key_modifier_get * @see evas_key_modifier_get
* @see evas_key_modifier_on * @see evas_key_modifier_on
* @see evas_key_modifier_off * @see evas_key_modifier_off
* @see evas_key_modifier_is_set * @see evas_key_modifier_is_set
* @see evas_object_key_grab * @see evas_object_key_grab
* @see evas_object_key_ungrab * @see evas_object_key_ungrab
*/ */
EAPI Evas_Modifier_Mask evas_key_modifier_mask_get (const Evas *e, co nst char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE ; EAPI Evas_Modifier_Mask evas_key_modifier_mask_get (const Evas *e, co nst char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2);
/** /**
* Requests @p keyname key events be directed to @p obj. * Requests @p keyname key events be directed to @p obj.
* *
* @param obj the object to direct @p keyname events to. * @param obj the object to direct @p keyname events to.
* @param keyname the key to request events for. * @param keyname the key to request events for.
* @param modifiers a mask of modifiers that must be present to * @param modifiers a mask of modifiers that must be present to
* trigger the event. * trigger the event.
* @param not_modifiers a mask of modifiers that must @b not be present * @param not_modifiers a mask of modifiers that must @b not be present
* to trigger the event. * to trigger the event.
skipping to change at line 11981 skipping to change at line 12333
* key is grabbed, only the objects grabbing it will get the events * key is grabbed, only the objects grabbing it will get the events
* for the given keys. * for the given keys.
* *
* @p keyname is a platform dependent symbolic name for the key * @p keyname is a platform dependent symbolic name for the key
* pressed (see @ref Evas_Keys for more information). * pressed (see @ref Evas_Keys for more information).
* *
* @p modifiers and @p not_modifiers are bit masks of all the * @p modifiers and @p not_modifiers are bit masks of all the
* modifiers that must and mustn't, respectively, be pressed along * modifiers that must and mustn't, respectively, be pressed along
* with @p keyname key in order to trigger this new key * with @p keyname key in order to trigger this new key
* grab. Modifiers can be things such as Shift and Ctrl as well as * grab. Modifiers can be things such as Shift and Ctrl as well as
* user defigned types via evas_key_modifier_add(). Retrieve them with * user defined types via evas_key_modifier_add(). Retrieve them with
* evas_key_modifier_mask_get() or use @c 0 for empty masks. * evas_key_modifier_mask_get() or use @c 0 for empty masks.
* *
* @p exclusive will make the given object the only one permitted to * @p exclusive will make the given object the only one permitted to
* grab the given key. If given @c EINA_TRUE, subsequent calls on this * grab the given key. If given @c EINA_TRUE, subsequent calls on this
* function with different @p obj arguments will fail, unless the key * function with different @p obj arguments will fail, unless the key
* is ungrabbed again. * is ungrabbed again.
* *
* Example code follows. * Example code follows.
* @dontinclude evas-events.c * @dontinclude evas-events.c
* @skip if (d.focus) * @skip if (d.focus)
 End of changes. 300 change blocks. 
389 lines changed or deleted 809 lines changed or added


 Evas_Engine_Buffer.h   Evas_Engine_Buffer.h 
skipping to change at line 32 skipping to change at line 32
int dest_buffer_row_bytes; int dest_buffer_row_bytes;
char use_color_key : 1; char use_color_key : 1;
int alpha_threshold; int alpha_threshold;
int color_key_r; int color_key_r;
int color_key_g; int color_key_g;
int color_key_b; int color_key_b;
struct { struct {
void * (*new_update_region) (int x, int y, int w, int h, int *row_b ytes); void * (*new_update_region) (int x, int y, int w, int h, int *row_b ytes);
void (*free_update_region) (int x, int y, int w, int h, void *dat a); void (*free_update_region) (int x, int y, int w, int h, void *dat a);
void * (*switch_buffer) (void *data, void *dest_buffer);
} func; } func;
void *switch_data;
} info; } info;
/* non-blocking or blocking mode */ /* non-blocking or blocking mode */
Evas_Engine_Render_Mode render_mode; Evas_Engine_Render_Mode render_mode;
}; };
#endif #endif
 End of changes. 2 change blocks. 
0 lines changed or deleted 3 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/