Evas.h | Evas.h | |||
---|---|---|---|---|
#ifndef _EVAS_H | #ifndef _EVAS_H | |||
#define _EVAS_H 1 | #define _EVAS_H | |||
#include <X11/Xlib.h> | #include <time.h> | |||
#include <Imlib2.h> | ||||
/* types */ | #include <Eina.h> | |||
#ifndef _EVAS_PRIVATE_H | ||||
typedef void * Evas; | #ifdef EAPI | |||
typedef void * Evas_Gradient; | # undef EAPI | |||
typedef void * Evas_Object; | #endif | |||
#ifdef _WIN32 | ||||
# ifdef EFL_EVAS_BUILD | ||||
# ifdef DLL_EXPORT | ||||
# define EAPI __declspec(dllexport) | ||||
# else | ||||
# define EAPI | ||||
# endif /* ! DLL_EXPORT */ | ||||
# else | ||||
# define EAPI __declspec(dllimport) | ||||
# endif /* ! EFL_EVAS_BUILD */ | ||||
#else | ||||
# ifdef __GNUC__ | ||||
# if __GNUC__ >= 4 | ||||
# define EAPI __attribute__ ((visibility("default"))) | ||||
# else | ||||
# define EAPI | ||||
# endif | ||||
# else | ||||
# define EAPI | ||||
# endif | ||||
#endif /* ! _WIN32 */ | ||||
#ifdef __cplusplus | ||||
extern "C" { | ||||
#endif | #endif | |||
typedef struct _Evas_List * Evas_List; | ||||
/* public structs */ | #define EVAS_VERSION_MAJOR 1 | |||
struct _Evas_List | #define EVAS_VERSION_MINOR 0 | |||
typedef struct _Evas_Version | ||||
{ | ||||
int major; | ||||
int minor; | ||||
int micro; | ||||
int revision; | ||||
} Evas_Version; | ||||
EAPI extern Evas_Version *evas_version; | ||||
/** | ||||
* @file | ||||
* @brief These routines are used for Evas library interaction. | ||||
* | ||||
* @todo check boolean return values and convert to Eina_Bool | ||||
* @todo change all api to use EINA_SAFETY_* | ||||
* @todo finish api documentation | ||||
*/ | ||||
/* BiDi exposed stuff */ | ||||
/*FIXME: document */ | ||||
typedef enum _Evas_BiDi_Direction | ||||
{ | { | |||
Evas_List prev, next; | EVAS_BIDI_DIRECTION_NATURAL, | |||
void *data; | EVAS_BIDI_DIRECTION_LTR, | |||
/* private members - DONT TOUCH */ | EVAS_BIDI_DIRECTION_RTL | |||
Evas_List last; | } Evas_BiDi_Direction; | |||
/** | ||||
* Identifier of callbacks to be used with object or canvas. | ||||
* | ||||
* @see evas_object_event_callback_add() | ||||
* @see evas_event_callback_add() | ||||
*/ | ||||
typedef enum _Evas_Callback_Type | ||||
{ | ||||
/* | ||||
* The following events are only for use with objects | ||||
* evas_object_event_callback_add(): | ||||
*/ | ||||
EVAS_CALLBACK_MOUSE_IN, /**< Mouse In Event */ | ||||
EVAS_CALLBACK_MOUSE_OUT, /**< Mouse Out Event */ | ||||
EVAS_CALLBACK_MOUSE_DOWN, /**< Mouse Button Down Event */ | ||||
EVAS_CALLBACK_MOUSE_UP, /**< Mouse Button Up Event */ | ||||
EVAS_CALLBACK_MOUSE_MOVE, /**< Mouse Move Event */ | ||||
EVAS_CALLBACK_MOUSE_WHEEL, /**< Mouse Wheel Event */ | ||||
EVAS_CALLBACK_MULTI_DOWN, /**< Multi-touch Down Event */ | ||||
EVAS_CALLBACK_MULTI_UP, /**< Multi-touch Up Event */ | ||||
EVAS_CALLBACK_MULTI_MOVE, /**< Multi-touch Move Event */ | ||||
EVAS_CALLBACK_FREE, /**< Object Being Freed (Called after Del) */ | ||||
EVAS_CALLBACK_KEY_DOWN, /**< Key Press Event */ | ||||
EVAS_CALLBACK_KEY_UP, /**< Key Release Event */ | ||||
EVAS_CALLBACK_FOCUS_IN, /**< Focus In Event */ | ||||
EVAS_CALLBACK_FOCUS_OUT, /**< Focus Out Event */ | ||||
EVAS_CALLBACK_SHOW, /**< Show Event */ | ||||
EVAS_CALLBACK_HIDE, /**< Hide Event */ | ||||
EVAS_CALLBACK_MOVE, /**< Move Event */ | ||||
EVAS_CALLBACK_RESIZE, /**< Resize Event */ | ||||
EVAS_CALLBACK_RESTACK, /**< Restack Event */ | ||||
EVAS_CALLBACK_DEL, /**< Object Being Deleted (called before Free) */ | ||||
EVAS_CALLBACK_HOLD, /**< Events go on/off hold */ | ||||
EVAS_CALLBACK_CHANGED_SIZE_HINTS, /**< Size hints changed event */ | ||||
EVAS_CALLBACK_IMAGE_PRELOADED, /**< Image as been preloaded */ | ||||
/* | ||||
* The following events are only for use with canvas | ||||
* evas_event_callback_add(): | ||||
*/ | ||||
EVAS_CALLBACK_CANVAS_FOCUS_IN, /**< Canvas got 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_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_OUT, /**< Canvas object lost focus */ | ||||
/* | ||||
* More object event types - see evas_object_event_callback_add(): | ||||
*/ | ||||
EVAS_CALLBACK_IMAGE_UNLOADED, /**< Image data has been unloaded (by some | ||||
mechanims in evas that throws out original image data) */ | ||||
/* the following id no event number, but a sentinel: */ | ||||
EVAS_CALLBACK_LAST /**< keep as last element/sentinel -- not really an e | ||||
vent */ | ||||
} Evas_Callback_Type; /**< The type of event to trigger the callback */ | ||||
/** | ||||
* Flags for Mouse Button events | ||||
*/ | ||||
typedef enum _Evas_Button_Flags | ||||
{ | ||||
EVAS_BUTTON_NONE = 0, /**< No extra mouse button data */ | ||||
EVAS_BUTTON_DOUBLE_CLICK = (1 << 0), /**< This mouse button press was th | ||||
e 2nd press of a double 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 */ | ||||
/** | ||||
* Flags for Events | ||||
*/ | ||||
typedef enum _Evas_Event_Flags | ||||
{ | ||||
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_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_Flags; /**< Flags for Events */ | ||||
/** | ||||
* Flags for Font Hinting | ||||
* @ingroup Evas_Font_Group | ||||
*/ | ||||
typedef enum _Evas_Font_Hinting_Flags | ||||
{ | ||||
EVAS_FONT_HINTING_NONE, /**< No font hinting */ | ||||
EVAS_FONT_HINTING_AUTO, /**< Automatic font hinting */ | ||||
EVAS_FONT_HINTING_BYTECODE /**< Bytecode font hinting */ | ||||
} Evas_Font_Hinting_Flags; /**< Flags for Font Hinting */ | ||||
/** | ||||
* Colorspaces for pixel data supported by Evas | ||||
* @ingroup Evas_Object_Image | ||||
*/ | ||||
typedef enum _Evas_Colorspace | ||||
{ | ||||
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 */ | ||||
EVAS_COLORSPACE_YCBCR422P601_PL, /**< YCbCr 4:2:2 Planar, ITU.BT-601 spe | ||||
cifications. The data poitned 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 poitned 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_GRY8 /**< 8bit grayscale */ | ||||
} Evas_Colorspace; /**< Colorspaces for pixel data supported by Evas */ | ||||
/** | ||||
* How to pack items into cells in a table. | ||||
* @ingroup Evas_Object_Table | ||||
*/ | ||||
typedef enum _Evas_Object_Table_Homogeneous_Mode | ||||
{ | ||||
EVAS_OBJECT_TABLE_HOMOGENEOUS_NONE = 0, | ||||
EVAS_OBJECT_TABLE_HOMOGENEOUS_TABLE = 1, | ||||
EVAS_OBJECT_TABLE_HOMOGENEOUS_ITEM = 2 | ||||
} Evas_Object_Table_Homogeneous_Mode; /**< Table cell pack mode. */ | ||||
typedef struct _Evas_Coord_Rectangle Evas_Coord_Rectangle; /**< A generic | ||||
rectangle handle */ | ||||
typedef struct _Evas_Point Evas_Point; /**< integer point | ||||
*/ | ||||
typedef struct _Evas_Coord_Point Evas_Coord_Point; /**< Evas_C | ||||
oord point */ | ||||
typedef struct _Evas_Coord_Precision_Point Evas_Coord_Precision_Point; /* | ||||
*< Evas_Coord point with sub-pixel precision */ | ||||
typedef struct _Evas_Position Evas_Position; /**< associates | ||||
given point in Canvas and Output */ | ||||
typedef struct _Evas_Precision_Position Evas_Precision_Position; /**< | ||||
associates given point in Canvas and Output, with sub-pixel precision */ | ||||
/** | ||||
* @typedef Evas_Smart_Class | ||||
* A smart object base class | ||||
* @ingroup Evas_Smart_Group | ||||
*/ | ||||
typedef struct _Evas_Smart_Class Evas_Smart_Class; | ||||
/** | ||||
* @typedef Evas_Smart_Cb_Description | ||||
* A smart object callback description, used to provide introspection | ||||
* @ingroup Evas_Smart_Group | ||||
*/ | ||||
typedef struct _Evas_Smart_Cb_Description Evas_Smart_Cb_Description; | ||||
/** | ||||
* @typedef Evas_Map | ||||
* An opaque handle to map points | ||||
* @see evas_map_new() | ||||
* @see evas_map_free() | ||||
* @see evas_map_dup() | ||||
* @ingroup Evas_Object_Group_Map | ||||
*/ | ||||
typedef struct _Evas_Map Evas_Map; | ||||
/** | ||||
* @typedef Evas | ||||
* An Evas canvas handle. | ||||
* @see evas_new() | ||||
* @see evas_free() | ||||
* @ingroup Evas_Canvas | ||||
*/ | ||||
typedef struct _Evas Evas; | ||||
/** | ||||
* @typedef Evas_Object | ||||
* An Evas Object handle. | ||||
* @ingroup Evas_Object_Group | ||||
*/ | ||||
typedef struct _Evas_Object Evas_Object; | ||||
typedef void Evas_Performance; /**< An Evas Performa | ||||
nce handle */ | ||||
typedef struct _Evas_Modifier Evas_Modifier; /**< An Evas Modifier */ | ||||
typedef struct _Evas_Lock Evas_Lock; /**< An Evas Lock */ | ||||
typedef struct _Evas_Smart Evas_Smart; /**< An Evas Smart Object h | ||||
andle */ | ||||
typedef struct _Evas_Native_Surface Evas_Native_Surface; /**< A generic dat | ||||
atype for engine specific native surface information */ | ||||
typedef unsigned long long Evas_Modifier_Mask; /**< An Evas modifi | ||||
er mask type */ | ||||
typedef int Evas_Coord; | ||||
typedef int Evas_Font_Size; | ||||
typedef int Evas_Angle; | ||||
struct _Evas_Coord_Rectangle /**< A rectangle in Evas_Coord */ | ||||
{ | ||||
Evas_Coord x; /**< top-left x co-ordinate of rectangle */ | ||||
Evas_Coord y; /**< top-left y co-ordinate of rectangle */ | ||||
Evas_Coord w; /**< width of rectangle */ | ||||
Evas_Coord h; /**< height of rectangle */ | ||||
}; | }; | |||
/* enums */ | struct _Evas_Point | |||
#define RENDER_METHOD_COUNT 5 | ||||
enum _Evas_Render_Method | ||||
{ | { | |||
RENDER_METHOD_ALPHA_SOFTWARE, /* imlib2 rendering to any drawable */ | int x, y; | |||
RENDER_METHOD_BASIC_HARDWARE, /* X11 pixmap rendering to any drawable */ | ||||
RENDER_METHOD_3D_HARDWARE, /* oepngl rendering to windows only */ | ||||
RENDER_METHOD_ALPHA_HARDWARE, /* unimplimented */ | ||||
RENDER_METHOD_IMAGE /* imlib2 rendering to imlib image target | ||||
*/ | ||||
}; | }; | |||
enum _Evas_Callback_Type | struct _Evas_Coord_Point | |||
{ | { | |||
CALLBACK_MOUSE_IN, | Evas_Coord x, y; | |||
CALLBACK_MOUSE_OUT, | ||||
CALLBACK_MOUSE_DOWN, | ||||
CALLBACK_MOUSE_UP, | ||||
CALLBACK_MOUSE_MOVE, | ||||
CALLBACK_FREE | ||||
}; | }; | |||
enum _Evas_Image_Format | struct _Evas_Coord_Precision_Point | |||
{ | { | |||
IMAGE_FORMAT_BGRA, | Evas_Coord x, y; | |||
IMAGE_FORMAT_ARGB, | double xsub, ysub; | |||
IMAGE_FORMAT_RGB, | ||||
IMAGE_FORMAT_GRAY | ||||
}; | }; | |||
/* enum types */ | struct _Evas_Position | |||
typedef enum _Evas_Callback_Type Evas_Callback_Type; | { | |||
typedef enum _Evas_Image_Format Evas_Image_Format; | Evas_Point output; | |||
typedef enum _Evas_Render_Method Evas_Render_Method; | Evas_Coord_Point canvas; | |||
}; | ||||
/* functions */ | struct _Evas_Precision_Position | |||
#ifdef __cplusplus | { | |||
extern "C" { | Evas_Point output; | |||
#endif | Evas_Coord_Precision_Point canvas; | |||
}; | ||||
typedef enum _Evas_Aspect_Control | ||||
{ | ||||
EVAS_ASPECT_CONTROL_NONE = 0, | ||||
EVAS_ASPECT_CONTROL_NEITHER = 1, | ||||
EVAS_ASPECT_CONTROL_HORIZONTAL = 2, | ||||
EVAS_ASPECT_CONTROL_VERTICAL = 3, | ||||
EVAS_ASPECT_CONTROL_BOTH = 4 | ||||
} Evas_Aspect_Control; | ||||
typedef struct _Evas_Pixel_Import_Source Evas_Pixel_Import_Source; /**< A s | ||||
ource description of pixels for importing pixels */ | ||||
typedef struct _Evas_Engine_Info Evas_Engine_Info; /**< A generic Evas | ||||
Engine information structure */ | ||||
typedef struct _Evas_Device Evas_Device; /**< A source device han | ||||
dle - where the event came from */ | ||||
typedef struct _Evas_Event_Mouse_Down Evas_Event_Mouse_Down; /**< Event str | ||||
ucture for #EVAS_CALLBACK_MOUSE_DOWN event callbacks */ | ||||
typedef struct _Evas_Event_Mouse_Up Evas_Event_Mouse_Up; /**< Event struc | ||||
ture for #EVAS_CALLBACK_MOUSE_UP event callbacks */ | ||||
typedef struct _Evas_Event_Mouse_In Evas_Event_Mouse_In; /**< Event struc | ||||
ture for #EVAS_CALLBACK_MOUSE_IN event callbacks */ | ||||
typedef struct _Evas_Event_Mouse_Out Evas_Event_Mouse_Out; /**< Event stru | ||||
cture for #EVAS_CALLBACK_MOUSE_OUT event callbacks */ | ||||
typedef struct _Evas_Event_Mouse_Move Evas_Event_Mouse_Move; /**< Event str | ||||
ucture for #EVAS_CALLBACK_MOUSE_MOVE event callbacks */ | ||||
typedef struct _Evas_Event_Mouse_Wheel Evas_Event_Mouse_Wheel; /**< Event s | ||||
tructure for #EVAS_CALLBACK_MOUSE_WHEEL event callbacks */ | ||||
typedef struct _Evas_Event_Multi_Down Evas_Event_Multi_Down; /**< Event str | ||||
ucture for #EVAS_CALLBACK_MULTI_DOWN event callbacks */ | ||||
typedef struct _Evas_Event_Multi_Up Evas_Event_Multi_Up; /**< Event struc | ||||
ture for #EVAS_CALLBACK_MULTI_UP 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_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 enum _Evas_Load_Error | ||||
{ | ||||
EVAS_LOAD_ERROR_NONE = 0, /**< No error on load */ | ||||
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_PERMISSION_DENIED = 3, /**< Permission deinied to an exi | ||||
sting file (or path) */ | ||||
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_UNKNOWN_FORMAT = 6 /**< File is not a known format */ | ||||
} Evas_Load_Error; /**< Load error you can get from loading of files - see | ||||
evas_load_error_str() too */ | ||||
typedef enum _Evas_Alloc_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_RECOVERED = 2 /**< Allocation succeeded, but extra memo | ||||
ry had to be found by freeing up speculative resources */ | ||||
} Evas_Alloc_Error; /**< Possible allocation errors returned by evas_alloc_ | ||||
error() */ | ||||
typedef enum _Evas_Fill_Spread | ||||
{ | ||||
EVAS_TEXTURE_REFLECT = 0, /**< image fill tiling mode - tiling reflects | ||||
*/ | ||||
EVAS_TEXTURE_REPEAT = 1, /**< tiling repeats */ | ||||
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_REPEAT = 4, /**< tiling clamps and any range offse | ||||
t repeats */ | ||||
EVAS_TEXTURE_PAD = 5 /**< tiling extends with end values */ | ||||
} Evas_Fill_Spread; /**< Fill types used for evas_object_image_fill_spread_ | ||||
set() */ | ||||
typedef enum _Evas_Pixel_Import_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_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_Import_Pixel_Format; /**< Pixel format for import call. See ev | ||||
as_object_image_pixels_import() */ | ||||
struct _Evas_Pixel_Import_Source | ||||
{ | ||||
Evas_Pixel_Import_Pixel_Format format; /**< pixel format type ie ARGB32, | ||||
YUV420P_601 etc. */ | ||||
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 */ | ||||
}; | ||||
/* magic version number to know what the native surf struct looks like */ | ||||
#define EVAS_NATIVE_SURFACE_VERSION 2 | ||||
typedef enum _Evas_Native_Surface_Type | ||||
{ | ||||
EVAS_NATIVE_SURFACE_NONE, | ||||
EVAS_NATIVE_SURFACE_X11, | ||||
EVAS_NATIVE_SURFACE_OPENGL | ||||
} Evas_Native_Surface_Type; | ||||
struct _Evas_Native_Surface | ||||
{ | ||||
int version; | ||||
Evas_Native_Surface_Type type; | ||||
union { | ||||
struct { | ||||
void *visual; /**< visual of the pixmap to use (Visual) */ | ||||
unsigned long pixmap; /**< pixmap id to use (Pixmap) */ | ||||
} x11; | ||||
struct { | ||||
unsigned int texture_id; /**< opengl texture id to use from glGenT | ||||
extures() */ | ||||
unsigned int framebuffer_id; /**< 0 if not a FBO, FBO id otherwise | ||||
from glGenFramebuffers() */ | ||||
unsigned int internal_format; /**< same as 'internalFormat' for gl | ||||
TexImage2D() */ | ||||
unsigned int format; /**< same as 'format' for glTexImage2D() */ | ||||
unsigned int x, y, w, h; /**< region inside the texture to use (im | ||||
age size is assumed as texture size, with 0, 0 being the top-left and co-or | ||||
dinates working down to the right and bottom being positive) */ | ||||
} opengl; | ||||
} data; | ||||
}; | ||||
#define EVAS_LAYER_MIN -32768 /**< bottom-most layer number */ | ||||
#define EVAS_LAYER_MAX 32767 /**< top-most layer number */ | ||||
#define EVAS_COLOR_SPACE_ARGB 0 /**< Not used for anything */ | ||||
#define EVAS_COLOR_SPACE_AHSV 1 /**< Not used for anything */ | ||||
#define EVAS_TEXT_INVALID -1 /**< Not used for anything */ | ||||
#define EVAS_TEXT_SPECIAL -2 /**< Not used for anything */ | ||||
#define EVAS_HINT_EXPAND 1.0 /**< Use with evas_object_size_hint_weight_se | ||||
t(), evas_object_size_hint_weight_get(), evas_object_size_hint_expand_set() | ||||
, evas_object_size_hint_expand_get() */ | ||||
#define EVAS_HINT_FILL -1.0 /**< Use with evas_object_size_hint_align_set | ||||
(), evas_object_size_hint_align_get(), evas_object_size_hint_fill_set(), ev | ||||
as_object_size_hint_fill_get() */ | ||||
#define evas_object_size_hint_fill_set evas_object_size_hint_align_set /**< | ||||
Convenience macro to make it easier to understand that align is also used | ||||
for fill properties (as fill is mutually exclusive to align) */ | ||||
#define evas_object_size_hint_fill_get evas_object_size_hint_align_get /**< | ||||
Convenience macro to make it easier to understand that align is also used | ||||
for fill properties (as fill is mutually exclusive to align) */ | ||||
#define evas_object_size_hint_expand_set evas_object_size_hint_weight_set / | ||||
**< Convenience macro to make it easier to understand that weight is also u | ||||
sed for expand properties */ | ||||
#define evas_object_size_hint_expand_get evas_object_size_hint_weight_get / | ||||
**< Convenience macro to make it easier to understand that weight is also u | ||||
sed for expand properties */ | ||||
/** | ||||
* How the object should be rendered to output. | ||||
* @ingroup Evas_Object_Group_Extras | ||||
*/ | ||||
typedef enum _Evas_Render_Op | ||||
{ | ||||
EVAS_RENDER_BLEND = 0, /**< default op: d = d*(1-sa) + s */ | ||||
EVAS_RENDER_BLEND_REL = 1, /**< d = d*(1 - sa) + s*da */ | ||||
EVAS_RENDER_COPY = 2, /**< d = s */ | ||||
EVAS_RENDER_COPY_REL = 3, /**< d = s*da */ | ||||
EVAS_RENDER_ADD = 4, /**< d = d + s */ | ||||
EVAS_RENDER_ADD_REL = 5, /**< d = d + s*da */ | ||||
EVAS_RENDER_SUB = 6, /**< d = d - s */ | ||||
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_REL = 9, /**< d = d*(1 - sa + s) */ | ||||
EVAS_RENDER_MASK = 10, /**< d = d*sa */ | ||||
EVAS_RENDER_MUL = 11 /**< d = d*s */ | ||||
} Evas_Render_Op; /**< How the object should be rendered to output. */ | ||||
typedef enum _Evas_Border_Fill_Mode | ||||
{ | ||||
EVAS_BORDER_FILL_NONE = 0, | ||||
EVAS_BORDER_FILL_DEFAULT = 1, | ||||
EVAS_BORDER_FILL_SOLID = 2 | ||||
} Evas_Border_Fill_Mode; | ||||
typedef enum _Evas_Image_Scale_Hint | ||||
{ | ||||
EVAS_IMAGE_SCALE_HINT_NONE = 0, | ||||
EVAS_IMAGE_SCALE_HINT_DYNAMIC = 1, | ||||
EVAS_IMAGE_SCALE_HINT_STATIC = 2 | ||||
} Evas_Image_Scale_Hint; | ||||
typedef enum _Evas_Engine_Render_Mode | ||||
{ | ||||
EVAS_RENDER_MODE_BLOCKING = 0, | ||||
EVAS_RENDER_MODE_NONBLOCKING = 1, | ||||
} Evas_Engine_Render_Mode; | ||||
typedef enum _Evas_Image_Content_Hint | ||||
{ | ||||
EVAS_IMAGE_CONTENT_HINT_NONE = 0, | ||||
EVAS_IMAGE_CONTENT_HINT_DYNAMIC = 1, | ||||
EVAS_IMAGE_CONTENT_HINT_STATIC = 2 | ||||
} Evas_Image_Content_Hint; | ||||
struct _Evas_Engine_Info /** Generic engine information. Generic info is us | ||||
eless */ | ||||
{ | ||||
int magic; /**< Magic number */ | ||||
}; | ||||
struct _Evas_Event_Mouse_Down /** Mouse button press event */ | ||||
{ | ||||
int button; /**< Mouse button number that went down (1 - 32) */ | ||||
Evas_Point output; | ||||
Evas_Coord_Point canvas; | ||||
void *data; | ||||
Evas_Modifier *modifiers; | ||||
Evas_Lock *locks; | ||||
Evas_Button_Flags flags; | ||||
unsigned int timestamp; | ||||
Evas_Event_Flags event_flags; | ||||
Evas_Device *dev; | ||||
}; | ||||
struct _Evas_Event_Mouse_Up /** Mouse button release event */ | ||||
{ | ||||
int button; /**< Mouse button number that was raised (1 - 32) */ | ||||
Evas_Point output; | ||||
Evas_Coord_Point canvas; | ||||
void *data; | ||||
Evas_Modifier *modifiers; | ||||
Evas_Lock *locks; | ||||
Evas_Button_Flags flags; | ||||
unsigned int timestamp; | ||||
Evas_Event_Flags event_flags; | ||||
Evas_Device *dev; | ||||
}; | ||||
struct _Evas_Event_Mouse_In /** Mouse enter event */ | ||||
{ | ||||
int buttons; /**< Button pressed mask, Bits set to 1 are buttons current | ||||
ly pressed (bit 0 = mouse button 1, bit 1 = mouse button 2 etc.) */ | ||||
Evas_Point output; | ||||
Evas_Coord_Point canvas; | ||||
void *data; | ||||
Evas_Modifier *modifiers; | ||||
Evas_Lock *locks; | ||||
unsigned int timestamp; | ||||
Evas_Event_Flags event_flags; | ||||
Evas_Device *dev; | ||||
}; | ||||
struct _Evas_Event_Mouse_Out /** Mouse leave event */ | ||||
{ | ||||
int buttons; /**< Button pressed mask, Bits set to 1 are buttons current | ||||
ly pressed (bit 0 = mouse button 1, bit 1 = mouse button 2 etc.) */ | ||||
Evas_Point output; | ||||
Evas_Coord_Point canvas; | ||||
void *data; | ||||
Evas_Modifier *modifiers; | ||||
Evas_Lock *locks; | ||||
unsigned int timestamp; | ||||
Evas_Event_Flags event_flags; | ||||
Evas_Device *dev; | ||||
}; | ||||
struct _Evas_Event_Mouse_Move /** Mouse button down event */ | ||||
{ | ||||
int buttons; /**< Button pressed mask, Bits set to 1 are buttons current | ||||
ly pressed (bit 0 = mouse button 1, bit 1 = mouse button 2 etc.) */ | ||||
Evas_Position cur, prev; | ||||
void *data; | ||||
Evas_Modifier *modifiers; | ||||
Evas_Lock *locks; | ||||
unsigned int timestamp; | ||||
Evas_Event_Flags event_flags; | ||||
Evas_Device *dev; | ||||
}; | ||||
struct _Evas_Event_Mouse_Wheel /** Wheel event */ | ||||
{ | ||||
int direction; /* 0 = default up/down wheel FIXME: more wheel types */ | ||||
int z; /* ...,-2,-1 = down, 1,2,... = up */ | ||||
Evas_Point output; | ||||
Evas_Coord_Point canvas; | ||||
void *data; | ||||
Evas_Modifier *modifiers; | ||||
Evas_Lock *locks; | ||||
unsigned int timestamp; | ||||
Evas_Event_Flags event_flags; | ||||
Evas_Device *dev; | ||||
}; | ||||
struct _Evas_Event_Multi_Down /** Multi button press event */ | ||||
{ | ||||
int device; /**< Multi device number that went down (1 or more for extra | ||||
touches) */ | ||||
double radius, radius_x, radius_y; | ||||
double pressure, angle; | ||||
Evas_Point output; | ||||
Evas_Coord_Precision_Point canvas; | ||||
void *data; | ||||
Evas_Modifier *modifiers; | ||||
Evas_Lock *locks; | ||||
Evas_Button_Flags flags; | ||||
unsigned int timestamp; | ||||
Evas_Event_Flags event_flags; | ||||
Evas_Device *dev; | ||||
}; | ||||
struct _Evas_Event_Multi_Up /** Multi button release event */ | ||||
{ | ||||
int device; /**< Multi device number that went up (1 or more for extra t | ||||
ouches) */ | ||||
double radius, radius_x, radius_y; | ||||
double pressure, angle; | ||||
Evas_Point output; | ||||
Evas_Coord_Precision_Point canvas; | ||||
void *data; | ||||
Evas_Modifier *modifiers; | ||||
Evas_Lock *locks; | ||||
Evas_Button_Flags flags; | ||||
unsigned int timestamp; | ||||
Evas_Event_Flags event_flags; | ||||
Evas_Device *dev; | ||||
}; | ||||
struct _Evas_Event_Multi_Move /** Multi button down event */ | ||||
{ | ||||
int device; /**< Multi device number that moved (1 or more for extra tou | ||||
ches) */ | ||||
double radius, radius_x, radius_y; | ||||
double pressure, angle; | ||||
Evas_Precision_Position cur; | ||||
void *data; | ||||
Evas_Modifier *modifiers; | ||||
Evas_Lock *locks; | ||||
unsigned int timestamp; | ||||
Evas_Event_Flags event_flags; | ||||
Evas_Device *dev; | ||||
}; | ||||
struct _Evas_Event_Key_Down /** Key press event */ | ||||
{ | ||||
char *keyname; /**< The string name of the key pressed */ | ||||
void *data; | ||||
Evas_Modifier *modifiers; | ||||
Evas_Lock *locks; | ||||
const char *key; /**< The logical key : (eg shift+1 == exclamation) * | ||||
/ | ||||
const char *string; /**< A UTF8 string if this keystroke has produced | ||||
a visible string to be ADDED */ | ||||
const char *compose; /**< A UTF8 string if this keystroke has modifie | ||||
d a string in the middle of being composed - this string replaces the previ | ||||
ous one */ | ||||
unsigned int timestamp; | ||||
Evas_Event_Flags event_flags; | ||||
Evas_Device *dev; | ||||
}; | ||||
struct _Evas_Event_Key_Up /** Key release event */ | ||||
{ | ||||
char *keyname; /**< The string name of the key released */ | ||||
void *data; | ||||
Evas_Modifier *modifiers; | ||||
Evas_Lock *locks; | ||||
const char *key; /**< The logical key : (eg shift+1 == exclamation) * | ||||
/ | ||||
const char *string; /**< A UTF8 string if this keystroke has produced | ||||
a visible string to be ADDED */ | ||||
const char *compose; /**< A UTF8 string if this keystroke has modifie | ||||
d a string in the middle of being composed - this string replaces the previ | ||||
ous one */ | ||||
unsigned int timestamp; | ||||
Evas_Event_Flags event_flags; | ||||
Evas_Device *dev; | ||||
}; | ||||
struct _Evas_Event_Hold /** Hold change event */ | ||||
{ | ||||
int hold; /**< The hold flag */ | ||||
void *data; | ||||
unsigned int timestamp; | ||||
Evas_Event_Flags event_flags; | ||||
Evas_Device *dev; | ||||
}; | ||||
/** | ||||
* How mouse pointer should be handled by Evas. | ||||
* | ||||
* If #EVAS_OBJECT_POINTER_MODE_AUTOGRAB, then when mouse is down an | ||||
* object, then moves outside of it, the pointer still behaves as | ||||
* being bound to the object, albeit out of its drawing region. On | ||||
* mouse up, the event will be feed to the object, that may check if | ||||
* the final position is over or not and do something about it. | ||||
* | ||||
* @ingroup Evas_Object_Group_Extras | ||||
*/ | ||||
typedef enum _Evas_Object_Pointer_Mode | ||||
{ | ||||
EVAS_OBJECT_POINTER_MODE_AUTOGRAB, /**< default, X11-like */ | ||||
EVAS_OBJECT_POINTER_MODE_NOGRAB | ||||
} Evas_Object_Pointer_Mode; /**< How mouse pointer should be handled by Eva | ||||
s. */ | ||||
typedef void (*Evas_Smart_Cb) (void *data, Evas_Object *obj, void *eve | ||||
nt_info); | ||||
typedef void (*Evas_Event_Cb) (void *data, Evas *e, void *event_info); | ||||
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); | ||||
typedef void (*Evas_Async_Events_Put_Cb)(void *target, Evas_Callback_T | ||||
ype type, void *event_info); | ||||
/** | ||||
* @defgroup Evas_Group Top Level Functions | ||||
* | ||||
* Functions that affect Evas as a whole. | ||||
*/ | ||||
EAPI int evas_init (void); | ||||
EAPI int evas_shutdown (void); | ||||
EAPI Evas_Alloc_Error evas_alloc_error (void); | ||||
EAPI int evas_async_events_fd_get (void) EINA_WAR | ||||
N_UNUSED_RESULT EINA_PURE; | ||||
EAPI int evas_async_events_process (void); | ||||
EAPI Eina_Bool evas_async_events_put (const void *ta | ||||
rget, Evas_Callback_Type type, void *event_info, Evas_Async_Events_Put_Cb f | ||||
unc) EINA_ARG_NONNULL(1, 4); | ||||
/** | ||||
* @defgroup Evas_Canvas Canvas Functions | ||||
* | ||||
* Functions that deal with the basic evas object. They are the | ||||
* functions you need to use at a minimum to get a working evas, and | ||||
* to destroy it. | ||||
* | ||||
*/ | ||||
EAPI Evas *evas_new (void) EINA_WAR | ||||
N_UNUSED_RESULT EINA_MALLOC; | ||||
EAPI void evas_free (Evas *e) EINA | ||||
_ARG_NONNULL(1); | ||||
EAPI void evas_focus_in (Evas *e); | ||||
EAPI void evas_focus_out (Evas *e); | ||||
EAPI Eina_Bool evas_focus_state_get (const Evas *e) | ||||
EINA_PURE; | ||||
EAPI void evas_nochange_push (Evas *e); | ||||
EAPI void evas_nochange_pop (Evas *e); | ||||
EAPI void evas_data_attach_set (Evas *e, void | ||||
*data) EINA_ARG_NONNULL(1); | ||||
EAPI void *evas_data_attach_get (const Evas *e) | ||||
EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_damage_rectangle_add (Evas *e, int x | ||||
, int y, int w, int h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_obscured_rectangle_add (Evas *e, int x | ||||
, int y, int w, int h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_obscured_clear (Evas *e) EINA_ | ||||
ARG_NONNULL(1); | ||||
EAPI Eina_List *evas_render_updates (Evas *e) EINA_ | ||||
WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); | ||||
EAPI void evas_render_updates_free (Eina_List *upd | ||||
ates); | ||||
EAPI void evas_render (Evas *e) EINA_ | ||||
ARG_NONNULL(1); | ||||
EAPI void evas_norender (Evas *e) EINA_ | ||||
ARG_NONNULL(1); | ||||
EAPI void evas_render_idle_flush (Evas *e) EINA_ | ||||
ARG_NONNULL(1); | ||||
EAPI void evas_render_dump (Evas *e) EINA_ | ||||
ARG_NONNULL(1); | ||||
/** | ||||
* @defgroup Evas_Output_Method Render Engine Functions | ||||
* | ||||
* Functions that are used to set the render engine for a given | ||||
* function, and then get that engine working. | ||||
* | ||||
* The following code snippet shows how they can be used to | ||||
* initialise an evas that uses the X11 software engine: | ||||
* @code | ||||
* Evas *evas; | ||||
* Evas_Engine_Info_Software_X11 *einfo; | ||||
* extern Display *display; | ||||
* extern Window win; | ||||
* | ||||
* evas_init(); | ||||
* | ||||
* evas = evas_new(); | ||||
* evas_output_method_set(evas, evas_render_method_lookup("software_x11")); | ||||
* evas_output_size_set(evas, 640, 480); | ||||
* evas_output_viewport_set(evas, 0, 0, 640, 480); | ||||
* einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(evas); | ||||
* einfo->info.display = display; | ||||
* einfo->info.visual = DefaultVisual(display, DefaultScreen(display)); | ||||
* einfo->info.colormap = DefaultColormap(display, DefaultScreen(display)); | ||||
* einfo->info.drawable = win; | ||||
* einfo->info.depth = DefaultDepth(display, DefaultScreen(display)); | ||||
* evas_engine_info_set(evas, (Evas_Engine_Info *)einfo); | ||||
* @endcode | ||||
* | ||||
* @ingroup Evas_Canvas | ||||
*/ | ||||
EAPI int evas_render_method_lookup (const char *na | ||||
me) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); | ||||
EAPI Eina_List *evas_render_method_list (void) EINA_WAR | ||||
N_UNUSED_RESULT; | ||||
EAPI void evas_render_method_list_free (Eina_List *lis | ||||
t); | ||||
EAPI void evas_output_method_set (Evas *e, int r | ||||
ender_method) EINA_ARG_NONNULL(1); | ||||
EAPI int evas_output_method_get (const Evas *e) | ||||
EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Evas_Engine_Info *evas_engine_info_get (const Evas *e) | ||||
EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Eina_Bool evas_engine_info_set (Evas *e, Evas_ | ||||
Engine_Info *info) EINA_ARG_NONNULL(1); | ||||
/** | ||||
* @defgroup Evas_Output_Size Output and Viewport Resizing Functions | ||||
* | ||||
* Functions that set and retrieve the output and viewport size of an | ||||
* evas. | ||||
* | ||||
* @ingroup Evas_Canvas | ||||
*/ | ||||
EAPI void evas_output_size_set (Evas *e, int w | ||||
, int h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_output_size_get (const Evas *e, | ||||
int *w, int *h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_output_viewport_set (Evas *e, Evas_ | ||||
Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_output_viewport_get (const Evas *e, | ||||
Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNU | ||||
LL(1); | ||||
/** | ||||
* @defgroup Evas_Coord_Mapping_Group Coordinate Mapping Functions | ||||
* | ||||
* Functions that are used to map coordinates from the canvas to the | ||||
* screen or the screen to the canvas. | ||||
* | ||||
* @ingroup Evas_Canvas | ||||
*/ | ||||
EAPI Evas_Coord evas_coord_screen_x_to_world (const Evas *e, | ||||
int x) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); | ||||
EAPI Evas_Coord evas_coord_screen_y_to_world (const Evas *e, | ||||
int y) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); | ||||
EAPI int evas_coord_world_x_to_screen (const Evas *e, | ||||
Evas_Coord x) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); | ||||
EAPI int evas_coord_world_y_to_screen (const Evas *e, | ||||
Evas_Coord y) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); | ||||
/** | ||||
* @defgroup Evas_Pointer_Group Pointer (Mouse) Functions | ||||
* | ||||
* Functions that deal with the status of the pointer (mouse cursor). | ||||
* | ||||
* @ingroup Evas_Canvas | ||||
*/ | ||||
EAPI void evas_pointer_output_xy_get (const Evas *e, | ||||
int *x, int *y) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_pointer_canvas_xy_get (const Evas *e, | ||||
Evas_Coord *x, Evas_Coord *y) EINA_ARG_NONNULL(1); | ||||
EAPI int evas_pointer_button_down_mask_get (const Evas *e) | ||||
EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_pointer_inside_get (const Evas *e) | ||||
EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); | ||||
EAPI void evas_sync(Evas *e) EINA_ARG_NONNULL(1); | ||||
/** | ||||
* @defgroup Evas_Event_Freezing_Group Event Freezing Functions | ||||
* | ||||
* Functions that deal with the freezing of event processing of an | ||||
* evas. | ||||
* | ||||
* @ingroup Evas_Canvas | ||||
*/ | ||||
EAPI void evas_event_freeze (Evas *e) EINA_ | ||||
ARG_NONNULL(1); | ||||
EAPI void evas_event_thaw (Evas *e) EINA_ | ||||
ARG_NONNULL(1); | ||||
EAPI int evas_event_freeze_get (const Evas *e) | ||||
EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
/** | ||||
* @defgroup Evas_Event_Feeding_Group Event Feeding Functions | ||||
* | ||||
* Functions to tell Evas that events happened and should be | ||||
* processed. | ||||
* | ||||
* As explained in @ref intro_not_evas, Evas does not know how to poll | ||||
* for events, so the developer should do it and then feed such events | ||||
* to the canvas to be processed. This is only required if operating | ||||
* Evas directly as modules such as Ecore_Evas does that for you. | ||||
* | ||||
* @ingroup Evas_Canvas | ||||
*/ | ||||
EAPI void evas_event_feed_mouse_down (Evas *e, int b | ||||
, Evas_Button_Flags flags, unsigned int timestamp, const void *data) EINA_A | ||||
RG_NONNULL(1); | ||||
EAPI void evas_event_feed_mouse_up (Evas *e, int b | ||||
, Evas_Button_Flags flags, unsigned int timestamp, const void *data) EINA_A | ||||
RG_NONNULL(1); | ||||
EAPI void evas_event_feed_mouse_move (Evas *e, int x | ||||
, int y, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_event_feed_mouse_in (Evas *e, unsig | ||||
ned int timestamp, const void *data) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_event_feed_mouse_out (Evas *e, unsig | ||||
ned int timestamp, const void *data) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_event_feed_multi_down (Evas *e, int d | ||||
, int x, int y, double rad, double radx, double rady, double pres, double a | ||||
ng, double fx, double fy, Evas_Button_Flags flags, unsigned int timestamp, | ||||
const void *data); | ||||
EAPI void evas_event_feed_multi_up (Evas *e, int d | ||||
, int x, int y, double rad, double radx, double rady, double pres, double a | ||||
ng, double fx, double fy, Evas_Button_Flags flags, unsigned int timestamp, | ||||
const void *data); | ||||
EAPI void evas_event_feed_multi_move (Evas *e, int d | ||||
, int x, int y, double rad, double radx, double rady, double pres, double a | ||||
ng, double fx, double fy, unsigned int timestamp, const void *data); | ||||
EAPI void evas_event_feed_mouse_cancel (Evas *e, unsig | ||||
ned int timestamp, const void *data) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_event_feed_mouse_wheel (Evas *e, int d | ||||
irection, int z, unsigned int timestamp, const void *data) EINA_ARG_NONNULL | ||||
(1); | ||||
EAPI void evas_event_feed_key_down (Evas *e, const | ||||
char *keyname, const char *key, const char *string, const char *compose, u | ||||
nsigned int timestamp, const void *data) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_event_feed_key_up (Evas *e, const | ||||
char *keyname, const char *key, const char *string, const char *compose, u | ||||
nsigned int timestamp, const void *data) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_event_feed_hold (Evas *e, int h | ||||
old, unsigned int timestamp, const void *data) EINA_ARG_NONNULL(1); | ||||
/** | ||||
* @defgroup Evas_Canvas_Events Canvas Events | ||||
* | ||||
* Canvas generates some events | ||||
* | ||||
* @ingroup Evas_Canvas | ||||
*/ | ||||
EAPI void evas_event_callback_add (Evas *e, Ev | ||||
as_Callback_Type type, Evas_Event_Cb func, const void *data) EINA_ARG_NONNU | ||||
LL(1, 3); | ||||
EAPI void *evas_event_callback_del (Evas *e, Ev | ||||
as_Callback_Type type, Evas_Event_Cb func) EINA_ARG_NONNULL(1, 3); | ||||
EAPI void *evas_event_callback_del_full (Evas *e, Ev | ||||
as_Callback_Type type, Evas_Event_Cb func, const void *data) EINA_ARG_NONNU | ||||
LL(1, 3); | ||||
EAPI void evas_post_event_callback_push (Evas *e, Ev | ||||
as_Object_Event_Post_Cb func, const void *data); | ||||
EAPI void evas_post_event_callback_remove (Evas *e, Ev | ||||
as_Object_Event_Post_Cb func); | ||||
EAPI void evas_post_event_callback_remove_full (Evas *e, Ev | ||||
as_Object_Event_Post_Cb func, const void *data); | ||||
/** | ||||
* @defgroup Evas_Image_Group Image Functions | ||||
* | ||||
* Functions that deals with images at canvas level. | ||||
* | ||||
* @ingroup Evas_Canvas | ||||
*/ | ||||
EAPI void evas_image_cache_flush (Evas *e) EINA_ | ||||
ARG_NONNULL(1); | ||||
EAPI void evas_image_cache_reload (Evas *e) EINA_ | ||||
ARG_NONNULL(1); | ||||
EAPI void evas_image_cache_set (Evas *e, int s | ||||
ize) EINA_ARG_NONNULL(1); | ||||
EAPI int evas_image_cache_get (const Evas *e) | ||||
EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
/** | ||||
* @defgroup Evas_Font_Group Font Functions | ||||
* | ||||
* Functions that deals with fonts. | ||||
* | ||||
* @ingroup Evas_Canvas | ||||
*/ | ||||
EAPI void evas_font_hinting_set (Evas *e, Eva | ||||
s_Font_Hinting_Flags hinting) EINA_ARG_NONNULL(1); | ||||
EAPI Evas_Font_Hinting_Flags evas_font_hinting_get (const Evas * | ||||
e) 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_NONNUL | ||||
L(1) EINA_PURE; | ||||
EAPI void evas_font_cache_flush (Evas *e) EIN | ||||
A_ARG_NONNULL(1); | ||||
EAPI void evas_font_cache_set (Evas *e, int | ||||
size) EINA_ARG_NONNULL(1); | ||||
EAPI int evas_font_cache_get (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) EINA_PURE; | ||||
EAPI void evas_font_available_list_free(Evas *e, Ein | ||||
a_List *available) EINA_ARG_NONNULL(1); | ||||
/** | ||||
* @defgroup Evas_Font_Path_Group Font Path Functions | ||||
* | ||||
* Functions that edit the paths being used to load fonts. | ||||
* | ||||
* @ingroup Evas_Font_Group | ||||
*/ | ||||
EAPI void evas_font_path_clear (Evas *e) EINA_ | ||||
ARG_NONNULL(1); | ||||
EAPI void evas_font_path_append (Evas *e, const | ||||
char *path) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void evas_font_path_prepend (Evas *e, const | ||||
char *path) EINA_ARG_NONNULL(1, 2); | ||||
EAPI const Eina_List *evas_font_path_list (const Evas *e) | ||||
EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
/** | ||||
* @defgroup Evas_Object_Group Generic Object Functions | ||||
* | ||||
* Functions that manipulate generic evas objects. | ||||
*/ | ||||
/** | ||||
* @defgroup Evas_Object_Group_Basic Basic Object Manipulation | ||||
* | ||||
* Methods that are often used, like those that change the color, | ||||
* clippers and geometry of the object. | ||||
* | ||||
* @ingroup Evas_Object_Group | ||||
*/ | ||||
EAPI void evas_object_clip_set (Evas_Object *o | ||||
bj, Evas_Object *clip) EINA_ARG_NONNULL(1, 2); | ||||
EAPI Evas_Object *evas_object_clip_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_clip_unset (Evas_Object *o | ||||
bj); | ||||
EAPI const Eina_List *evas_object_clipees_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_focus_set (Evas_Object *o | ||||
bj, Eina_Bool focus) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_object_focus_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_layer_set (Evas_Object *o | ||||
bj, short l) EINA_ARG_NONNULL(1); | ||||
EAPI short evas_object_layer_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_name_set (Evas_Object *o | ||||
bj, const char *name) EINA_ARG_NONNULL(1); | ||||
EAPI const char *evas_object_name_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_del (Evas_Object *o | ||||
bj) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_move (Evas_Object *o | ||||
bj, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_resize (Evas_Object *o | ||||
bj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_geometry_get (const Evas_Obj | ||||
ect *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) EINA_ | ||||
ARG_NONNULL(1); | ||||
EAPI void evas_object_show (Evas_Object *o | ||||
bj) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_hide (Evas_Object *o | ||||
bj) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_object_visible_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_color_set (Evas_Object *o | ||||
bj, int r, int g, int b, int a) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_color_get (const Evas_Obj | ||||
ect *obj, int *r, int *g, int *b, int *a) EINA_ARG_NONNULL(1); | ||||
EAPI Evas *evas_object_evas_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI const char *evas_object_type_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_raise (Evas_Object *o | ||||
bj) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_lower (Evas_Object *o | ||||
bj) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_stack_above (Evas_Object *o | ||||
bj, Evas_Object *above) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void evas_object_stack_below (Evas_Object *o | ||||
bj, Evas_Object *below) EINA_ARG_NONNULL(1, 2); | ||||
EAPI Evas_Object *evas_object_above_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Evas_Object *evas_object_below_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
/** | ||||
* @defgroup Evas_Object_Group_Events Object Events | ||||
* | ||||
* Objects generates events when they are moved, resized, when their | ||||
* visibility change, when they are deleted and so on. These methods | ||||
* will allow one to handle such events. | ||||
* | ||||
* The events can be those from keyboard and mouse, if the object | ||||
* accepts these events. | ||||
* | ||||
* @ingroup Evas_Object_Group | ||||
*/ | ||||
EAPI void evas_object_event_callback_add (Evas_Object * | ||||
obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data) | ||||
EINA_ARG_NONNULL(1, 3); | ||||
EAPI void *evas_object_event_callback_del (Evas_Object * | ||||
obj, Evas_Callback_Type type, Evas_Object_Event_Cb func) EINA_ARG_NONNULL(1 | ||||
, 3); | ||||
EAPI void *evas_object_event_callback_del_full(Evas_Object * | ||||
obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data) | ||||
EINA_ARG_NONNULL(1, 3); | ||||
EAPI void evas_object_pass_events_set (Evas_Object * | ||||
obj, Eina_Bool pass) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_object_pass_events_get (const Evas_Ob | ||||
ject *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_repeat_events_set (Evas_Object * | ||||
obj, Eina_Bool repeat) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_object_repeat_events_get (const Evas_Ob | ||||
ject *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_propagate_events_set (Evas_Object * | ||||
obj, Eina_Bool prop) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_object_propagate_events_get (const Evas_Ob | ||||
ject *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
/** | ||||
* @defgroup Evas_Object_Group_Map UV Mapping (Rotation, Perspecitve, 3D... | ||||
) | ||||
* | ||||
* Evas allows different transformations to be applied to all kinds of | ||||
* objects. These are applied by means of UV mapping. | ||||
* | ||||
* With UV mapping, one maps points in the source object to a 3D space | ||||
* positioning at target. This allows rotation, perspective, scale and | ||||
* lots of other effects, depending on the map that is used. | ||||
* | ||||
* Each map point may carry a multiplier color. If properly | ||||
* calculated, these can do shading effects on the object, producing | ||||
* 3D effects. | ||||
* | ||||
* As usual, Evas provides both the raw and easy to use methods. The | ||||
* raw methods allow developer to create its maps somewhere else, | ||||
* maybe load them from some file format. The easy to use methods, | ||||
* calculate the points given some high-level parameters, such as | ||||
* rotation angle, ambient light and so on. | ||||
* | ||||
* @note applying mapping will reduce performance, so use with | ||||
* care. The impact on performance depends on engine in | ||||
* use. Software is quite optimized, but not as fast as OpenGL. | ||||
* | ||||
* @ingroup Evas_Object_Group | ||||
*/ | ||||
EAPI void evas_object_map_enable_set (Evas_Object *o | ||||
bj, Eina_Bool enabled); | ||||
EAPI Eina_Bool evas_object_map_enable_get (const Evas_Obj | ||||
ect *obj); | ||||
EAPI void evas_object_map_source_set (Evas_Object *o | ||||
bj, Evas_Object *src); | ||||
EAPI Evas_Object *evas_object_map_source_get (const Evas_Obj | ||||
ect *obj); | ||||
EAPI void evas_object_map_set (Evas_Object *o | ||||
bj, const Evas_Map *map); | ||||
EAPI const Evas_Map *evas_object_map_get (const Evas_Obj | ||||
ect *obj); | ||||
EAPI void evas_map_util_points_populate_from_object_full(Ev | ||||
as_Map *m, const Evas_Object *obj, Evas_Coord z); | ||||
EAPI void evas_map_util_points_populate_from_object (Ev | ||||
as_Map *m, const Evas_Object *obj); | ||||
EAPI void evas_map_util_points_populate_from_geometry (Ev | ||||
as_Map *m, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Evas_Coo | ||||
rd z); | ||||
EAPI void evas_map_util_points_color_set (Ev | ||||
as_Map *m, int r, int g, int b, int a); | ||||
EAPI void evas_map_util_rotate (Ev | ||||
as_Map *m, double degrees, Evas_Coord cx, Evas_Coord cy); | ||||
EAPI void evas_map_util_zoom (Ev | ||||
as_Map *m, double zoomx, double zoomy, Evas_Coord cx, Evas_Coord cy); | ||||
EAPI void evas_map_util_3d_rotate (Ev | ||||
as_Map *m, double dx, double dy, double dz, Evas_Coord cx, Evas_Coord cy, E | ||||
vas_Coord cz); | ||||
EAPI void evas_map_util_3d_lighting (Ev | ||||
as_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_perspective (Ev | ||||
as_Map *m, Evas_Coord px, Evas_Coord py, Evas_Coord z0, Evas_Coord foc); | ||||
EAPI Eina_Bool evas_map_util_clockwise_get (Ev | ||||
as_Map *m); | ||||
EAPI Evas_Map *evas_map_new (int count); | ||||
EAPI void evas_map_smooth_set (Evas_Map *m, E | ||||
ina_Bool enabled); | ||||
EAPI Eina_Bool evas_map_smooth_get (const Evas_Map | ||||
*m); | ||||
EAPI void evas_map_alpha_set (Evas_Map *m, E | ||||
ina_Bool enabled); | ||||
EAPI Eina_Bool evas_map_alpha_get (const Evas_Map | ||||
*m); | ||||
EAPI Evas_Map *evas_map_dup (const Evas_Map | ||||
*m); | ||||
EAPI void evas_map_free (Evas_Map *m); | ||||
EAPI void evas_map_point_coord_set (Evas_Map *m, i | ||||
nt idx, Evas_Coord x, Evas_Coord y, Evas_Coord z); | ||||
EAPI void evas_map_point_coord_get (const Evas_Map | ||||
*m, int idx, Evas_Coord *x, Evas_Coord *y, Evas_Coord *z); | ||||
EAPI void evas_map_point_image_uv_set (Evas_Map *m, i | ||||
nt idx, double u, double v); | ||||
EAPI void evas_map_point_image_uv_get (const Evas_Map | ||||
*m, int idx, double *u, double *v); | ||||
EAPI void evas_map_point_color_set (Evas_Map *m, i | ||||
nt idx, int r, int g, int b, int a); | ||||
EAPI void evas_map_point_color_get (const Evas_Map | ||||
*m, int idx, int *r, int *g, int *b, int *a); | ||||
/** | ||||
* @defgroup Evas_Object_Group_Size_Hints Size Hints | ||||
* | ||||
* Objects may carry hints so another object that acts as a manager | ||||
* (see @ref Evas_Smart_Object_Group) may know how to properly position | ||||
* and resize the object. The Size Hints provide a common interface | ||||
* that is recommended as the protocol for such information. | ||||
* | ||||
* @ingroup Evas_Object_Group | ||||
*/ | ||||
EAPI void evas_object_size_hint_min_get (const Evas_Obj | ||||
ect *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_size_hint_min_set (Evas_Object *o | ||||
bj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_size_hint_max_get (const Evas_Obj | ||||
ect *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_size_hint_max_set (Evas_Object *o | ||||
bj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_size_hint_request_get (const Evas_Obj | ||||
ect *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_size_hint_request_set (Evas_Object *o | ||||
bj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_size_hint_aspect_get (const Evas_Obj | ||||
ect *obj, Evas_Aspect_Control *aspect, Evas_Coord *w, Evas_Coord *h) EINA_A | ||||
RG_NONNULL(1); | ||||
EAPI void evas_object_size_hint_aspect_set (Evas_Object *o | ||||
bj, Evas_Aspect_Control aspect, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNUL | ||||
L(1); | ||||
EAPI void evas_object_size_hint_align_get (const Evas_Obj | ||||
ect *obj, double *x, double *y) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_size_hint_align_set (Evas_Object *o | ||||
bj, double x, double y) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_size_hint_weight_get (const Evas_Obj | ||||
ect *obj, double *x, double *y) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_size_hint_weight_set (Evas_Object *o | ||||
bj, double x, double y) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_size_hint_padding_get (const Evas_Obj | ||||
ect *obj, Evas_Coord *l, Evas_Coord *r, Evas_Coord *t, Evas_Coord *b) EINA_ | ||||
ARG_NONNULL(1); | ||||
EAPI void evas_object_size_hint_padding_set (Evas_Object *o | ||||
bj, Evas_Coord l, Evas_Coord r, Evas_Coord t, Evas_Coord b) EINA_ARG_NONNUL | ||||
L(1); | ||||
/** | ||||
* @defgroup Evas_Object_Group_Extras Extra Object Manipulation | ||||
* | ||||
* Miscellaneous functions that also apply to any object, but are less | ||||
* used or not implemented by all objects. | ||||
* | ||||
* @ingroup Evas_Object_Group | ||||
*/ | ||||
EAPI void evas_object_data_set (Evas_Ob | ||||
ject *obj, const char *key, const void *data) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void *evas_object_data_get (const E | ||||
vas_Object *obj, const char *key) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL( | ||||
1, 2) EINA_PURE; | ||||
EAPI void *evas_object_data_del (Evas_Ob | ||||
ject *obj, const char *key) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void evas_object_pointer_mode_set (Evas_Ob | ||||
ject *obj, Evas_Object_Pointer_Mode setting) EINA_ARG_NONNULL(1); | ||||
EAPI Evas_Object_Pointer_Mode evas_object_pointer_mode_get (const E | ||||
vas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_anti_alias_set (Evas_Ob | ||||
ject *obj, Eina_Bool antialias) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_object_anti_alias_get (const E | ||||
vas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_scale_set (Evas_Ob | ||||
ject *obj, double scale) EINA_ARG_NONNULL(1); | ||||
EAPI double evas_object_scale_get (const E | ||||
vas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_render_op_set (Evas_Ob | ||||
ject *obj, Evas_Render_Op op) EINA_ARG_NONNULL(1); | ||||
EAPI Evas_Render_Op evas_object_render_op_get (const E | ||||
vas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_precise_is_inside_set(Evas_Ob | ||||
ject *obj, Eina_Bool precise) EINA_ARG_NONNULL(1); | ||||
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 void evas_object_static_clip_set (Evas_Ob | ||||
ject *obj, Eina_Bool is_static_clip) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_object_static_clip_get (const E | ||||
vas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
/** | ||||
* @defgroup Evas_Object_Group_Find Finding Objects | ||||
* | ||||
* Functions that allows finding objects by their position, name or | ||||
* other properties. | ||||
* | ||||
* @ingroup Evas_Object_Group | ||||
*/ | ||||
EAPI Evas_Object *evas_focus_get (const Evas *e) | ||||
EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Evas_Object *evas_object_name_find (const Evas *e, | ||||
const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Evas_Object *evas_object_top_at_xy_get (const Evas *e, | ||||
Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bo | ||||
ol include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA | ||||
_PURE; | ||||
EAPI Evas_Object *evas_object_top_at_pointer_get (const Evas *e) | ||||
EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Evas_Object *evas_object_top_in_rectangle_get (const Evas *e, | ||||
Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool include_ | ||||
pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RES | ||||
ULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Eina_List *evas_objects_at_xy_get (const Evas *e, | ||||
Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bo | ||||
ol include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA | ||||
_PURE; | ||||
EAPI Eina_List *evas_objects_in_rectangle_get (const Evas *e, | ||||
Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool include_ | ||||
pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RES | ||||
ULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Evas_Object *evas_object_bottom_get (const Evas *e) | ||||
EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Evas_Object *evas_object_top_get (const Evas *e) | ||||
EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
/** | ||||
* @defgroup Evas_Object_Group_Interceptors Object Method Interceptors | ||||
* | ||||
* Evas provides a way to intercept method calls. The interceptor | ||||
* callback may opt to completely deny the call, or may check and | ||||
* change the parameters before continuing. The continuation of an | ||||
* intercepted call is done by calling the intercepted call again, | ||||
* from inside the interceptor callback. | ||||
* | ||||
* @ingroup Evas_Object_Group | ||||
*/ | ||||
typedef void (*Evas_Object_Intercept_Show_Cb) (void *data, Evas_Object *obj | ||||
); | ||||
typedef void (*Evas_Object_Intercept_Hide_Cb) (void *data, Evas_Object *obj | ||||
); | ||||
typedef void (*Evas_Object_Intercept_Move_Cb) (void *data, Evas_Object *obj | ||||
, Evas_Coord x, Evas_Coord y); | ||||
typedef void (*Evas_Object_Intercept_Resize_Cb) (void *data, Evas_Object *o | ||||
bj, Evas_Coord w, Evas_Coord h); | ||||
typedef void (*Evas_Object_Intercept_Raise_Cb) (void *data, Evas_Object *ob | ||||
j); | ||||
typedef void (*Evas_Object_Intercept_Lower_Cb) (void *data, Evas_Object *ob | ||||
j); | ||||
typedef void (*Evas_Object_Intercept_Stack_Above_Cb) (void *data, Evas_Obje | ||||
ct *obj, Evas_Object *above); | ||||
typedef void (*Evas_Object_Intercept_Stack_Below_Cb) (void *data, Evas_Obje | ||||
ct *obj, Evas_Object *above); | ||||
typedef void (*Evas_Object_Intercept_Layer_Set_Cb) (void *data, Evas_Object | ||||
*obj, int l); | ||||
typedef void (*Evas_Object_Intercept_Color_Set_Cb) (void *data, Evas_Object | ||||
*obj, int r, int g, int b, int a); | ||||
typedef void (*Evas_Object_Intercept_Clip_Set_Cb) (void *data, Evas_Object | ||||
*obj, Evas_Object *clip); | ||||
typedef void (*Evas_Object_Intercept_Clip_Unset_Cb) (void *data, Evas_Objec | ||||
t *obj); | ||||
EAPI void evas_object_intercept_show_callback_add (E | ||||
vas_Object *obj, Evas_Object_Intercept_Show_Cb func, const void *data) EINA | ||||
_ARG_NONNULL(1, 2); | ||||
EAPI void *evas_object_intercept_show_callback_del (E | ||||
vas_Object *obj, Evas_Object_Intercept_Show_Cb func) EINA_ARG_NONNULL(1, 2) | ||||
; | ||||
EAPI void evas_object_intercept_hide_callback_add (E | ||||
vas_Object *obj, Evas_Object_Intercept_Hide_Cb func, const void *data) EINA | ||||
_ARG_NONNULL(1, 2); | ||||
EAPI void *evas_object_intercept_hide_callback_del (E | ||||
vas_Object *obj, Evas_Object_Intercept_Hide_Cb func) EINA_ARG_NONNULL(1, 2) | ||||
; | ||||
EAPI void evas_object_intercept_move_callback_add (E | ||||
vas_Object *obj, Evas_Object_Intercept_Move_Cb func, const void *data) EINA | ||||
_ARG_NONNULL(1, 2); | ||||
EAPI void *evas_object_intercept_move_callback_del (E | ||||
vas_Object *obj, Evas_Object_Intercept_Move_Cb func) EINA_ARG_NONNULL(1, 2) | ||||
; | ||||
EAPI void evas_object_intercept_resize_callback_add (E | ||||
vas_Object *obj, Evas_Object_Intercept_Resize_Cb func, const void *data) EI | ||||
NA_ARG_NONNULL(1, 2); | ||||
EAPI void *evas_object_intercept_resize_callback_del (E | ||||
vas_Object *obj, Evas_Object_Intercept_Resize_Cb func) EINA_ARG_NONNULL(1, | ||||
2); | ||||
EAPI void evas_object_intercept_raise_callback_add (E | ||||
vas_Object *obj, Evas_Object_Intercept_Raise_Cb func, const void *data) EIN | ||||
A_ARG_NONNULL(1, 2); | ||||
EAPI void *evas_object_intercept_raise_callback_del (E | ||||
vas_Object *obj, Evas_Object_Intercept_Raise_Cb func) EINA_ARG_NONNULL(1, 2 | ||||
); | ||||
EAPI void evas_object_intercept_lower_callback_add (E | ||||
vas_Object *obj, Evas_Object_Intercept_Lower_Cb func, const void *data) EIN | ||||
A_ARG_NONNULL(1, 2); | ||||
EAPI void *evas_object_intercept_lower_callback_del (E | ||||
vas_Object *obj, Evas_Object_Intercept_Lower_Cb func) EINA_ARG_NONNULL(1, 2 | ||||
); | ||||
EAPI void evas_object_intercept_stack_above_callback_add (E | ||||
vas_Object *obj, Evas_Object_Intercept_Stack_Above_Cb func, const void *dat | ||||
a) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void *evas_object_intercept_stack_above_callback_del (E | ||||
vas_Object *obj, Evas_Object_Intercept_Stack_Above_Cb func) EINA_ARG_NONNUL | ||||
L(1, 2); | ||||
EAPI void evas_object_intercept_stack_below_callback_add (E | ||||
vas_Object *obj, Evas_Object_Intercept_Stack_Below_Cb func, const void *dat | ||||
a) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void *evas_object_intercept_stack_below_callback_del (E | ||||
vas_Object *obj, Evas_Object_Intercept_Stack_Below_Cb func) EINA_ARG_NONNUL | ||||
L(1, 2); | ||||
EAPI void evas_object_intercept_layer_set_callback_add (E | ||||
vas_Object *obj, Evas_Object_Intercept_Layer_Set_Cb func, const void *data) | ||||
EINA_ARG_NONNULL(1, 2); | ||||
EAPI void *evas_object_intercept_layer_set_callback_del (E | ||||
vas_Object *obj, Evas_Object_Intercept_Layer_Set_Cb func) EINA_ARG_NONNULL( | ||||
1, 2); | ||||
EAPI void evas_object_intercept_color_set_callback_add (E | ||||
vas_Object *obj, Evas_Object_Intercept_Color_Set_Cb func, const void *data) | ||||
EINA_ARG_NONNULL(1, 2); | ||||
EAPI void *evas_object_intercept_color_set_callback_del (E | ||||
vas_Object *obj, Evas_Object_Intercept_Color_Set_Cb func) EINA_ARG_NONNULL( | ||||
1, 2); | ||||
EAPI void evas_object_intercept_clip_set_callback_add (E | ||||
vas_Object *obj, Evas_Object_Intercept_Clip_Set_Cb func, const void *data) | ||||
EINA_ARG_NONNULL(1, 2); | ||||
EAPI void *evas_object_intercept_clip_set_callback_del (E | ||||
vas_Object *obj, Evas_Object_Intercept_Clip_Set_Cb func) EINA_ARG_NONNULL(1 | ||||
, 2); | ||||
EAPI void evas_object_intercept_clip_unset_callback_add (E | ||||
vas_Object *obj, Evas_Object_Intercept_Clip_Unset_Cb func, const void *data | ||||
) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void *evas_object_intercept_clip_unset_callback_del (E | ||||
vas_Object *obj, Evas_Object_Intercept_Clip_Unset_Cb func) EINA_ARG_NONNULL | ||||
(1, 2); | ||||
/** | ||||
* @defgroup Evas_Object_Specific Specific Object Functions | ||||
* | ||||
* Functions that work on specific objects. | ||||
* | ||||
*/ | ||||
/** | ||||
* @defgroup Evas_Object_Rectangle Rectangle Object Functions | ||||
* | ||||
* Functions that operate on evas rectangle objects. | ||||
* | ||||
* @ingroup Evas_Object_Specific | ||||
*/ | ||||
EAPI Evas_Object *evas_object_rectangle_add (Evas *e) EINA_ | ||||
WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC; | ||||
/** | ||||
* @defgroup Evas_Object_Image Image Object Functions | ||||
* | ||||
* Functions used to create and manipulate image objects. | ||||
* | ||||
* Note - Image objects may return or accept "image data" in multiple | ||||
* formats. This is based on the colorspace of an object. Here is a | ||||
* rundown on formats: | ||||
* | ||||
* EVAS_COLORSPACE_ARGB8888: | ||||
* | ||||
* 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 | ||||
* 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 | ||||
* 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. | ||||
* | ||||
* This colorspace uses premultiplied alpha. That means that R, G and | ||||
* B cannot exceed A in value. The conversion from non-premultiplied | ||||
* colorspace is: | ||||
* | ||||
* R = (r * a) / 255; G = (g * a) / 255; B = (b * a) / 255; | ||||
* | ||||
* So 50% transparent blue will be: 0x80000080. This will not be | ||||
* "dark" - just 50% transparent. Values are 0 == black, 255 == solid | ||||
* or full red, green or blue. | ||||
* | ||||
* EVAS_COLORSPACE_YCBCR422P601_PL: | ||||
* | ||||
* This is a pointer-list indirected set of YUV (YCbCr) pixel | ||||
* data. This means that the data returned or set is not actual pixel | ||||
* data, but pointers TO lines of pixel data. The list of 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 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 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 the horizontal | ||||
* and vertical resolution of the Y plane. | ||||
* | ||||
* Row order is top to bottom and row pixels are stored left to right. | ||||
* | ||||
* 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 and | ||||
* V planes being half resolution. Also note that this assumes the | ||||
* itu601 YUV colorspace specification. This is defined for standard | ||||
* television and mpeg streams. HDTV may use the itu709 | ||||
* specification. | ||||
* | ||||
* Values are 0 to 255, indicating full or no signal in that plane | ||||
* respectively. | ||||
* | ||||
* EVAS_COLORSPACE_YCBCR422P709_PL: | ||||
* | ||||
* Not implemented yet. | ||||
* | ||||
* EVAS_COLORSPACE_RGB565_A5P: | ||||
* | ||||
* In the process of being implemented in 1 engine only. This may change. | ||||
* | ||||
* 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), 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 to the | ||||
* bottom right. | ||||
* | ||||
* If the image has an alpha channel enabled there will be an extra | ||||
* alpha plane after the color pixel plane. If not, then this data | ||||
* will not exist and should not be accessed in any way. This plane is | ||||
* a set of pixels with 1 byte per pixel defining the alpha values of | ||||
* all pixels in the image from the top-left to the bottom 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 used, 32 being | ||||
* solid and 0 being transparent. | ||||
* | ||||
* 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 | ||||
* respectively. This colorspace is also pre-multiplied like | ||||
* EVAS_COLORSPACE_ARGB8888 so: | ||||
* | ||||
* R = (r * a) / 32; G = (g * a) / 32; B = (b * a) / 32; | ||||
* | ||||
* @ingroup Evas_Object_Specific | ||||
*/ | ||||
typedef void (*Evas_Object_Image_Pixels_Get_Cb) (void *data, Evas_Object *o | ||||
); | ||||
EAPI Evas_Object *evas_object_image_add ( | ||||
Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC; | ||||
EAPI Evas_Object *evas_object_image_filled_add ( | ||||
Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC; | ||||
EAPI void evas_object_image_file_set ( | ||||
Evas_Object *obj, const char *file, const char *key) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_image_file_get ( | ||||
const Evas_Object *obj, const char **file, const char **key) EINA_ARG_NONNU | ||||
LL(1, 2); | ||||
EAPI void evas_object_image_border_set ( | ||||
Evas_Object *obj, int l, int r, int t, int b) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_image_border_get ( | ||||
const Evas_Object *obj, int *l, int *r, int *t, int *b) EINA_ARG_NONNULL(1) | ||||
; | ||||
EAPI void evas_object_image_border_center_fill_set ( | ||||
Evas_Object *obj, Evas_Border_Fill_Mode fill) EINA_ARG_NONNULL(1); | ||||
EAPI Evas_Border_Fill_Mode evas_object_image_border_center_fill_get ( | ||||
const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PU | ||||
RE; | ||||
EAPI void evas_object_image_filled_set ( | ||||
Evas_Object *obj, Eina_Bool setting) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_object_image_filled_get ( | ||||
const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PU | ||||
RE; | ||||
EAPI void evas_object_image_border_scale_set ( | ||||
Evas_Object *obj, double scale); | ||||
EAPI double evas_object_image_border_scale_get ( | ||||
const Evas_Object *obj); | ||||
EAPI void evas_object_image_fill_set ( | ||||
Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) E | ||||
INA_ARG_NONNULL(1); | ||||
EAPI void evas_object_image_fill_get ( | ||||
const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_C | ||||
oord *h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_image_fill_spread_set ( | ||||
Evas_Object *obj, Evas_Fill_Spread spread) EINA_ARG_NONNULL(1); | ||||
EAPI Evas_Fill_Spread evas_object_image_fill_spread_get ( | ||||
const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PU | ||||
RE; | ||||
EAPI void evas_object_image_size_set ( | ||||
Evas_Object *obj, int w, int h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_image_size_get ( | ||||
const Evas_Object *obj, int *w, int *h) EINA_ARG_NONNULL(1); | ||||
EAPI int evas_object_image_stride_get ( | ||||
const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PU | ||||
RE; | ||||
EAPI Evas_Load_Error evas_object_image_load_error_get ( | ||||
const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PU | ||||
RE; | ||||
EAPI void evas_object_image_data_set ( | ||||
Evas_Object *obj, void *data) EINA_ARG_NONNULL(1); | ||||
EAPI void *evas_object_image_data_convert ( | ||||
Evas_Object *obj, Evas_Colorspace to_cspace) EINA_WARN_UNUSED_RESULT EINA_A | ||||
RG_NONNULL(1) EINA_PURE; | ||||
EAPI void *evas_object_image_data_get ( | ||||
const Evas_Object *obj, Eina_Bool for_writing) EINA_WARN_UNUSED_RESULT EINA | ||||
_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_image_data_copy_set ( | ||||
Evas_Object *obj, void *data) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_image_data_update_add ( | ||||
Evas_Object *obj, int x, int y, int w, int h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_image_alpha_set ( | ||||
Evas_Object *obj, Eina_Bool has_alpha) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_object_image_alpha_get ( | ||||
const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PU | ||||
RE; | ||||
EAPI void evas_object_image_smooth_scale_set ( | ||||
Evas_Object *obj, Eina_Bool smooth_scale) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_object_image_smooth_scale_get ( | ||||
const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PU | ||||
RE; | ||||
EAPI void evas_object_image_preload ( | ||||
Evas_Object *obj, Eina_Bool cancel) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_image_reload ( | ||||
Evas_Object *obj) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_object_image_save ( | ||||
const Evas_Object *obj, const char *file, const char *key, const char *flag | ||||
s) EINA_ARG_NONNULL(1, 2); | ||||
EAPI Eina_Bool evas_object_image_pixels_import ( | ||||
Evas_Object *obj, Evas_Pixel_Import_Source *pixels) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void evas_object_image_pixels_get_callback_set( | ||||
Evas_Object *obj, Evas_Object_Image_Pixels_Get_Cb func, void *data) EINA_AR | ||||
G_NONNULL(1, 2); | ||||
EAPI void evas_object_image_pixels_dirty_set ( | ||||
Evas_Object *obj, Eina_Bool dirty) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_object_image_pixels_dirty_get ( | ||||
const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PU | ||||
RE; | ||||
EAPI void evas_object_image_load_dpi_set ( | ||||
Evas_Object *obj, double dpi) EINA_ARG_NONNULL(1); | ||||
EAPI double evas_object_image_load_dpi_get ( | ||||
const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PU | ||||
RE; | ||||
EAPI void evas_object_image_load_size_set ( | ||||
Evas_Object *obj, int w, int h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_image_load_size_get ( | ||||
const Evas_Object *obj, int *w, int *h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_image_load_scale_down_set ( | ||||
Evas_Object *obj, int scale_down) EINA_ARG_NONNULL(1); | ||||
EAPI int evas_object_image_load_scale_down_get ( | ||||
const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PU | ||||
RE; | ||||
EAPI void evas_object_image_load_region_set ( | ||||
Evas_Object *obj, int x, int y, int w, int h) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_image_load_region_get ( | ||||
const Evas_Object *obj, int *x, int *y, int *w, int *h) EINA_ARG_NONNULL(1) | ||||
; | ||||
EAPI void evas_object_image_colorspace_set ( | ||||
Evas_Object *obj, Evas_Colorspace cspace) EINA_ARG_NONNULL(1); | ||||
EAPI Evas_Colorspace evas_object_image_colorspace_get ( | ||||
const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PU | ||||
RE; | ||||
EAPI void evas_object_image_native_surface_set ( | ||||
Evas_Object *obj, Evas_Native_Surface *surf) EINA_ARG_NONNULL(1, 2); | ||||
EAPI Evas_Native_Surface *evas_object_image_native_surface_get ( | ||||
const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PU | ||||
RE; | ||||
EAPI void evas_object_image_scale_hint_set ( | ||||
Evas_Object *obj, Evas_Image_Scale_Hint hint) EINA_ARG_NONNULL(1); | ||||
EAPI Evas_Image_Scale_Hint evas_object_image_scale_hint_get ( | ||||
const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PU | ||||
RE; | ||||
EAPI void evas_object_image_content_hint_set ( | ||||
Evas_Object *obj, Evas_Image_Content_Hint hint) EINA_ARG_NONNULL(1); | ||||
EAPI Evas_Image_Content_Hint evas_object_image_content_hint_get ( | ||||
const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PU | ||||
RE; | ||||
/** | ||||
* @defgroup Evas_Object_Text Text Object Functions | ||||
* | ||||
* Functions that operate on single line, single style text objects. | ||||
* | ||||
* For multiline and multiple style text, see @ref Evas_Object_Textblock. | ||||
* | ||||
* @ingroup Evas_Object_Specific | ||||
*/ | ||||
typedef enum _Evas_Text_Style_Type | ||||
{ | ||||
EVAS_TEXT_STYLE_PLAIN, | ||||
EVAS_TEXT_STYLE_SHADOW, | ||||
EVAS_TEXT_STYLE_OUTLINE, | ||||
EVAS_TEXT_STYLE_SOFT_OUTLINE, | ||||
EVAS_TEXT_STYLE_GLOW, | ||||
EVAS_TEXT_STYLE_OUTLINE_SHADOW, | ||||
EVAS_TEXT_STYLE_FAR_SHADOW, | ||||
EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW, | ||||
EVAS_TEXT_STYLE_SOFT_SHADOW, | ||||
EVAS_TEXT_STYLE_FAR_SOFT_SHADOW | ||||
} Evas_Text_Style_Type; | ||||
EAPI Evas_Object *evas_object_text_add (Evas *e) EINA_ | ||||
WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC; | ||||
EAPI void evas_object_text_font_source_set (Evas_Object *o | ||||
bj, const char *font) EINA_ARG_NONNULL(1); | ||||
EAPI const char *evas_object_text_font_source_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
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_get (const Evas_Obj | ||||
ect *obj, const char **font, Evas_Font_Size *size) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void evas_object_text_text_set (Evas_Object *o | ||||
bj, const char *text) EINA_ARG_NONNULL(1); | ||||
EAPI const char *evas_object_text_text_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Evas_Coord evas_object_text_ascent_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Evas_Coord evas_object_text_descent_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Evas_Coord evas_object_text_max_ascent_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Evas_Coord evas_object_text_max_descent_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Evas_Coord evas_object_text_horiz_advance_get(const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Evas_Coord evas_object_text_vert_advance_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Evas_Coord evas_object_text_inset_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Eina_Bool evas_object_text_char_pos_get (const Evas_Obj | ||||
ect *obj, int pos, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coo | ||||
rd *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_last_up_to_pos (const Evas_Obj | ||||
ect *obj, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1); | ||||
EAPI Evas_Text_Style_Type evas_object_text_style_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_text_style_set (Evas_Object *o | ||||
bj, Evas_Text_Style_Type type) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_text_shadow_color_set (Evas_Object *o | ||||
bj, int r, int g, int b, int a) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_text_shadow_color_get (const Evas_Obj | ||||
ect *obj, int *r, int *g, int *b, int *a) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_text_glow_color_set (Evas_Object *o | ||||
bj, int r, int g, int b, int a) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_text_glow_color_get (const Evas_Obj | ||||
ect *obj, int *r, int *g, int *b, int *a) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_text_glow2_color_set (Evas_Object *o | ||||
bj, int r, int g, int b, int a) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_text_glow2_color_get (const Evas_Obj | ||||
ect *obj, int *r, int *g, int *b, int *a) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_text_outline_color_set(Evas_Object *o | ||||
bj, int r, int g, int b, int a) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_text_outline_color_get(const Evas_Obj | ||||
ect *obj, int *r, int *g, int *b, int *a) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_text_style_pad_get (const Evas_Obj | ||||
ect *obj, int *l, int *r, int *t, int *b) EINA_ARG_NONNULL(1); | ||||
/** | ||||
* @defgroup Evas_Object_Textblock Textblock Object Functions | ||||
* | ||||
* Functions used to create and manipulate textblock objects. Unlike | ||||
* @ref Evas_Object_Text, these handle complex text, doing multiple | ||||
* styles and multiline text based on HTML-like tags. Of these extra | ||||
* features will be heavier on memory and processing cost. | ||||
* | ||||
* @todo put here some usage examples | ||||
* | ||||
* @ingroup Evas_Object_Specific | ||||
*/ | ||||
typedef struct _Evas_Textblock_Style Evas_Textblock_Styl | ||||
e; | ||||
typedef struct _Evas_Textblock_Cursor Evas_Textblock_Curs | ||||
or; | ||||
/** | ||||
* @typedef Evas_Object_Textblock_Node_Format | ||||
* A format node. | ||||
*/ | ||||
typedef struct _Evas_Object_Textblock_Node_Format Evas_Object_Textblo | ||||
ck_Node_Format; | ||||
typedef struct _Evas_Textblock_Rectangle Evas_Textblock_Rect | ||||
angle; | ||||
struct _Evas_Textblock_Rectangle | ||||
{ | ||||
Evas_Coord x, y, w, h; | ||||
}; | ||||
typedef enum _Evas_Textblock_Text_Type | ||||
{ | ||||
EVAS_TEXTBLOCK_TEXT_RAW, | ||||
EVAS_TEXTBLOCK_TEXT_PLAIN, | ||||
EVAS_TEXTBLOCK_TEXT_MARKUP | ||||
} Evas_Textblock_Text_Type; | ||||
typedef enum _Evas_Textblock_Cursor_Type | ||||
{ | ||||
EVAS_TEXTBLOCK_CURSOR_UNDER, | ||||
EVAS_TEXTBLOCK_CURSOR_BEFORE | ||||
} Evas_Textblock_Cursor_Type; | ||||
EAPI Evas_Object *evas_object_textblock_add(Evas *e) EIN | ||||
A_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC; | ||||
EAPI const char *evas_textblock_escape_string_get(const | ||||
char *escape) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI const char *evas_textblock_string_escape_get(const | ||||
char *string, int *len_ret) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EI | ||||
NA_PURE; | ||||
EAPI const char *evas_textblock_escape_string_range_get | ||||
(const char *escape_start, const char *escape_end) EINA_WARN_UNUSED_RESULT | ||||
EINA_ARG_NONNULL(1, 2) EINA_PURE; | ||||
EAPI Evas_Textblock_Style *evas_textblock_style_new(void) EINA_WA | ||||
RN_UNUSED_RESULT EINA_MALLOC; | ||||
EAPI void evas_textblock_style_free(Evas_Textblo | ||||
ck_Style *ts) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_textblock_style_set(Evas_Textbloc | ||||
k_Style *ts, const char *text) EINA_ARG_NONNULL(1); | ||||
EAPI const char *evas_textblock_style_get(const Evas_Te | ||||
xtblock_Style *ts) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_textblock_style_set(Evas_O | ||||
bject *obj, Evas_Textblock_Style *ts) EINA_ARG_NONNULL(1); | ||||
EAPI const Evas_Textblock_Style *evas_object_textblock_style_get(const | ||||
Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_textblock_replace_char_set | ||||
(Evas_Object *obj, const char *ch) EINA_ARG_NONNULL(1); | ||||
EAPI const char *evas_object_textblock_replace_char_get | ||||
(Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_textblock_text_markup_set( | ||||
Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_textblock_text_markup_prep | ||||
end(Evas_Textblock_Cursor *cur, const char *text) EINA_ARG_NONNULL(1, 2); | ||||
EAPI const char *evas_object_textblock_text_markup_get( | ||||
const Evas_Object *obj) EINA_ARG_NONNULL(1); | ||||
EAPI const Evas_Textblock_Cursor *evas_object_textblock_cursor_get(const | ||||
Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Evas_Textblock_Cursor *evas_object_textblock_cursor_new(Evas_ | ||||
Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC; | ||||
EAPI void evas_textblock_cursor_free(Evas_Textbl | ||||
ock_Cursor *cur) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_textblock_cursor_paragraph_first( | ||||
Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_textblock_cursor_paragraph_last(E | ||||
vas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_textblock_cursor_paragraph_next(E | ||||
vas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_textblock_cursor_paragraph_prev(E | ||||
vas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||||
EAPI const Evas_Object_Textblock_Node_Format *evas_textblock_node_format | ||||
_first_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); | ||||
EAPI const Evas_Object_Textblock_Node_Format *evas_textblock_node_format | ||||
_last_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); | ||||
EAPI const Evas_Object_Textblock_Node_Format *evas_textblock_node_format | ||||
_next_get(const Evas_Object_Textblock_Node_Format *n) EINA_ARG_NONNULL(1); | ||||
EAPI const Evas_Object_Textblock_Node_Format *evas_textblock_node_format | ||||
_prev_get(const Evas_Object_Textblock_Node_Format *n) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_textblock_node_format_remove_pair | ||||
(Evas_Object *obj, Evas_Object_Textblock_Node_Format *n) EINA_ARG_NONNULL(1 | ||||
, 2); | ||||
EAPI void evas_textblock_cursor_set_at_format(Ev | ||||
as_Textblock_Cursor *cur, const Evas_Object_Textblock_Node_Format *n) EINA_ | ||||
ARG_NONNULL(1, 2); | ||||
EAPI const Evas_Object_Textblock_Node_Format *evas_textblock_cursor_form | ||||
at_get(const Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||||
EAPI const char *evas_textblock_node_format_text_get(co | ||||
nst Evas_Object_Textblock_Node_Format *cur) EINA_WARN_UNUSED_RESULT EINA_AR | ||||
G_NONNULL(1); | ||||
EAPI void evas_textblock_cursor_at_format_set(Ev | ||||
as_Textblock_Cursor *cur, const Evas_Object_Textblock_Node_Format *fmt) EIN | ||||
A_ARG_NONNULL(1, 2); | ||||
EAPI Eina_Bool evas_textblock_cursor_format_is_visibl | ||||
e_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NO | ||||
NNULL(1) EINA_PURE; | ||||
EAPI Eina_Bool evas_textblock_cursor_format_next(Evas | ||||
_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_textblock_cursor_format_prev(Evas | ||||
_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_textblock_cursor_is_format(const | ||||
Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_textblock_cursor_char_next(Evas_T | ||||
extblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_textblock_cursor_char_prev(Evas_T | ||||
extblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_textblock_cursor_paragraph_char_f | ||||
irst(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_textblock_cursor_paragraph_char_l | ||||
ast(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_textblock_cursor_line_char_first( | ||||
Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_textblock_cursor_line_char_last(E | ||||
vas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||||
EAPI int evas_textblock_cursor_pos_get(const Ev | ||||
as_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_ | ||||
PURE; | ||||
EAPI void evas_textblock_cursor_pos_set(Evas_Tex | ||||
tblock_Cursor *cur, int pos) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_textblock_cursor_line_set(Evas_Te | ||||
xtblock_Cursor *cur, int line) EINA_ARG_NONNULL(1); | ||||
EAPI int evas_textblock_cursor_compare(const Ev | ||||
as_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WARN_UNU | ||||
SED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | ||||
EAPI void evas_textblock_cursor_copy(const Evas_ | ||||
Textblock_Cursor *cur, Evas_Textblock_Cursor *cur_dest) EINA_ARG_NONNULL(1, | ||||
2); | ||||
EAPI int evas_textblock_cursor_text_append(Evas | ||||
_Textblock_Cursor *cur, const char *text) EINA_ARG_NONNULL(1, 2); | ||||
EAPI int evas_textblock_cursor_text_prepend(Eva | ||||
s_Textblock_Cursor *cur, const char *text) EINA_ARG_NONNULL(1, 2); | ||||
EAPI Eina_Bool evas_textblock_cursor_format_append(Ev | ||||
as_Textblock_Cursor *cur, const char *format) EINA_ARG_NONNULL(1, 2); | ||||
EAPI Eina_Bool evas_textblock_cursor_format_prepend(E | ||||
vas_Textblock_Cursor *cur, const char *format) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void evas_textblock_cursor_node_delete(Evas | ||||
_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_textblock_cursor_char_delete(Evas | ||||
_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_textblock_cursor_range_delete(Eva | ||||
s_Textblock_Cursor *cur1, Evas_Textblock_Cursor *cur2) EINA_ARG_NONNULL(1, | ||||
2); | ||||
EAPI const char *evas_textblock_cursor_paragraph_text_g | ||||
et(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNU | ||||
LL(1) EINA_PURE; | ||||
EAPI int evas_textblock_cursor_paragraph_text_l | ||||
ength_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_AR | ||||
G_NONNULL(1) EINA_PURE; | ||||
EAPI char *evas_textblock_cursor_range_text_get(c | ||||
onst Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2, Evas_T | ||||
extblock_Text_Type format) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) E | ||||
INA_PURE; | ||||
EAPI char *evas_textblock_cursor_content_get(cons | ||||
t Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) E | ||||
INA_MALLOC; | ||||
EAPI int evas_textblock_cursor_geometry_get(con | ||||
st Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord * | ||||
cw, Evas_Coord *ch, Evas_BiDi_Direction *dir, Evas_Textblock_Cursor_Type ct | ||||
ype) EINA_ARG_NONNULL(1); | ||||
EAPI int evas_textblock_cursor_char_geometry_ge | ||||
t(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Co | ||||
ord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1); | ||||
EAPI int evas_textblock_cursor_line_geometry_ge | ||||
t(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Co | ||||
ord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_textblock_cursor_char_coord_set(E | ||||
vas_Textblock_Cursor *cur, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1); | ||||
EAPI int evas_textblock_cursor_line_coord_set(E | ||||
vas_Textblock_Cursor *cur, Evas_Coord y) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_List *evas_textblock_cursor_range_geometry_g | ||||
et(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EI | ||||
NA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | ||||
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_eol_get(const Ev | ||||
as_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_ | ||||
PURE; | ||||
EAPI Eina_Bool evas_object_textblock_line_number_geom | ||||
etry_get(const Evas_Object *obj, int line, Evas_Coord *cx, Evas_Coord *cy, | ||||
Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_textblock_clear(Evas_Objec | ||||
t *obj) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_textblock_size_formatted_g | ||||
et(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1 | ||||
); | ||||
EAPI void evas_object_textblock_size_native_get( | ||||
const 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); | ||||
/** | ||||
* @defgroup Evas_Line_Group Line Object Functions | ||||
* | ||||
* Functions used to deal with evas line objects. | ||||
* | ||||
* @ingroup Evas_Object_Specific | ||||
*/ | ||||
EAPI Evas_Object *evas_object_line_add (Evas *e) EINA_ | ||||
WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC; | ||||
EAPI void evas_object_line_xy_set (Evas_Object *o | ||||
bj, Evas_Coord x1, Evas_Coord y1, Evas_Coord x2, Evas_Coord y2); | ||||
EAPI void evas_object_line_xy_get (const Evas_Obj | ||||
ect *obj, Evas_Coord *x1, Evas_Coord *y1, Evas_Coord *x2, Evas_Coord *y2); | ||||
/** | ||||
* @defgroup Evas_Object_Polygon Polygon Object Functions | ||||
* | ||||
* Functions that operate on evas polygon objects. | ||||
* | ||||
* Hint: as evas does not provide ellipse, smooth paths or circle, one | ||||
* can calculate points and convert these to a polygon. | ||||
* | ||||
* @ingroup Evas_Object_Specific | ||||
*/ | ||||
EAPI Evas_Object *evas_object_polygon_add (Evas *e) EINA_ | ||||
WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC; | ||||
EAPI void evas_object_polygon_point_add (Evas_Object *o | ||||
bj, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_polygon_points_clear (Evas_Object *o | ||||
bj) EINA_ARG_NONNULL(1); | ||||
/** | ||||
* @defgroup Evas_Smart_Group Smart Functions | ||||
* | ||||
* Functions that deal with Evas_Smart's, creating definition | ||||
* (classes) of objects that will have customized behavior for methods | ||||
* like evas_object_move(), evas_object_resize(), | ||||
* evas_object_clip_set() and others. | ||||
* | ||||
* These objects will accept the generic methods defined in @ref | ||||
* Evas_Object_Group and the extensions defined in @ref | ||||
* Evas_Smart_Object_Group. There are couple of existent smart objects | ||||
* in Evas itself, see @ref Evas_Object_Box, @ref Evas_Object_Table | ||||
* and @ref Evas_Smart_Object_Clipped. | ||||
*/ | ||||
/** | ||||
* @def EVAS_SMART_CLASS_VERSION | ||||
* The version you have to put into the version field in the smart | ||||
* class struct | ||||
* @ingroup Evas_Smart_Group | ||||
*/ | ||||
#define EVAS_SMART_CLASS_VERSION 4 | ||||
/** | ||||
* @struct _Evas_Smart_Class | ||||
* a smart object class | ||||
* @ingroup Evas_Smart_Group | ||||
*/ | ||||
struct _Evas_Smart_Class | ||||
{ | ||||
const char *name; /**< the string name of the class */ | ||||
int version; | ||||
void (*add) (Evas_Object *o); | ||||
void (*del) (Evas_Object *o); | ||||
void (*move) (Evas_Object *o, Evas_Coord x, Evas_Coord y); | ||||
void (*resize) (Evas_Object *o, Evas_Coord w, Evas_Coord h); | ||||
void (*show) (Evas_Object *o); | ||||
void (*hide) (Evas_Object *o); | ||||
void (*color_set) (Evas_Object *o, int r, int g, int b, int a); | ||||
void (*clip_set) (Evas_Object *o, Evas_Object *clip); | ||||
void (*clip_unset) (Evas_Object *o); | ||||
void (*calculate) (Evas_Object *o); | ||||
void (*member_add) (Evas_Object *o, Evas_Object *child); | ||||
void (*member_del) (Evas_Object *o, Evas_Object *child); | ||||
const Evas_Smart_Class *parent; /**< this class inherits from t | ||||
his parent */ | ||||
const Evas_Smart_Cb_Description *callbacks; /**< callbacks at this level | ||||
, NULL terminated */ | ||||
void *interfaces; /**< to be used in a future | ||||
near you */ | ||||
const void *data; | ||||
}; | ||||
/** | ||||
* @struct _Evas_Smart_Cb_Description | ||||
* | ||||
* Describes a callback used by a smart class | ||||
* evas_object_smart_callback_call(), particularly useful to explain | ||||
* to user and its code (ie: introspection) what the parameter @c | ||||
* event_info will contain. | ||||
* | ||||
* @ingroup Evas_Smart_Group | ||||
*/ | ||||
struct _Evas_Smart_Cb_Description | ||||
{ | ||||
const char *name; /**< callback name, ie: "changed" */ | ||||
/** | ||||
* @brief Hint type of @c event_info parameter of Evas_Smart_Cb. | ||||
* | ||||
* The type string uses the pattern similar to | ||||
* | ||||
* http://dbus.freedesktop.org/doc/dbus-specification.html#message-proto | ||||
col-signatures | ||||
* | ||||
* but extended to optionally include variable names within | ||||
* brackets preceding types. Example: | ||||
* | ||||
* @li Structure with two integers: | ||||
* @c "(ii)" | ||||
* | ||||
* @li Structure called 'x' with two integers named 'a' and 'b': | ||||
* @c "[x]([a]i[b]i)" | ||||
* | ||||
* @li Array of integers: | ||||
* @c "ai" | ||||
* | ||||
* @li Array called 'x' of struct with two integers: | ||||
* @c "[x]a(ii)" | ||||
* | ||||
* @note This type string is used as a hint and is @b not validated | ||||
* or enforced anyhow. Implementors should make the best use | ||||
* of it to help bindings, documentation and other users of | ||||
* introspection features. | ||||
*/ | ||||
const char *type; | ||||
}; | ||||
/** | ||||
* @def EVAS_SMART_CLASS_INIT_NULL | ||||
* Initializer to zero a whole Evas_Smart_Class structure. | ||||
* | ||||
* @see EVAS_SMART_CLASS_INIT_VERSION | ||||
* @see EVAS_SMART_CLASS_INIT_NAME_VERSION | ||||
* @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT | ||||
* @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT_CALLBACKS | ||||
* @ingroup Evas_Smart_Group | ||||
*/ | ||||
#define EVAS_SMART_CLASS_INIT_NULL {NULL, 0, NULL, NULL, NULL, NULL, NULL, | ||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} | ||||
/** | ||||
* @def EVAS_SMART_CLASS_INIT_VERSION | ||||
* Initializer to zero a whole Evas_Smart_Class structure and set version. | ||||
* | ||||
* Similar to EVAS_SMART_CLASS_INIT_NULL, but will set version field to | ||||
* latest EVAS_SMART_CLASS_VERSION. | ||||
* | ||||
* @see EVAS_SMART_CLASS_INIT_NULL | ||||
* @see EVAS_SMART_CLASS_INIT_NAME_VERSION | ||||
* @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT | ||||
* @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT_CALLBACKS | ||||
* @ingroup Evas_Smart_Group | ||||
*/ | ||||
#define EVAS_SMART_CLASS_INIT_VERSION {NULL, EVAS_SMART_CLASS_VERSION, NULL | ||||
, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, N | ||||
ULL, NULL, NULL} | ||||
/** | ||||
* @def EVAS_SMART_CLASS_INIT_NAME_VERSION | ||||
* Initializer to zero a whole Evas_Smart_Class structure and set name | ||||
* and version. | ||||
* | ||||
* Similar to EVAS_SMART_CLASS_INIT_NULL, but will set version field to | ||||
* latest EVAS_SMART_CLASS_VERSION and name to the specified value. | ||||
* | ||||
* It will keep a reference to name field as a "const char *", that is, | ||||
* name must be available while the structure is used (hint: static or glob | ||||
al!) | ||||
* and will not be modified. | ||||
* | ||||
* @see EVAS_SMART_CLASS_INIT_NULL | ||||
* @see EVAS_SMART_CLASS_INIT_VERSION | ||||
* @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT | ||||
* @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT_CALLBACKS | ||||
* @ingroup Evas_Smart_Group | ||||
*/ | ||||
#define EVAS_SMART_CLASS_INIT_NAME_VERSION(name) {name, EVAS_SMART_CLASS_VE | ||||
RSION, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NU | ||||
LL, NULL, NULL, NULL, NULL} | ||||
/** | ||||
* @def EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT | ||||
* Initializer to zero a whole Evas_Smart_Class structure and set name, | ||||
* version and parent class. | ||||
* | ||||
* Similar to EVAS_SMART_CLASS_INIT_NULL, but will set version field to | ||||
* latest EVAS_SMART_CLASS_VERSION, name to the specified value and | ||||
* parent class. | ||||
* | ||||
* It will keep a reference to name field as a "const char *", that is, | ||||
* name must be available while the structure is used (hint: static or glob | ||||
al!) | ||||
* and will not be modified. Similarly, parent reference will be kept. | ||||
* | ||||
* @see EVAS_SMART_CLASS_INIT_NULL | ||||
* @see EVAS_SMART_CLASS_INIT_VERSION | ||||
* @see EVAS_SMART_CLASS_INIT_NAME_VERSION | ||||
* @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT_CALLBACKS | ||||
* @ingroup Evas_Smart_Group | ||||
*/ | ||||
#define EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT(name, parent) {name, EVAS | ||||
_SMART_CLASS_VERSION, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||||
NULL, NULL, NULL, NULL, parent, NULL, NULL} | ||||
/** | ||||
* @def EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT_CALLBACKS | ||||
* Initializer to zero a whole Evas_Smart_Class structure and set name, | ||||
* version, parent class and callbacks definition. | ||||
* | ||||
* Similar to EVAS_SMART_CLASS_INIT_NULL, but will set version field to | ||||
* latest EVAS_SMART_CLASS_VERSION, name to the specified value, parent | ||||
* class and callbacks at this level. | ||||
* | ||||
* It will keep a reference to name field as a "const char *", that is, | ||||
* name must be available while the structure is used (hint: static or glob | ||||
al!) | ||||
* and will not be modified. Similarly, parent and callbacks reference | ||||
* will be kept. | ||||
* | ||||
* @see EVAS_SMART_CLASS_INIT_NULL | ||||
* @see EVAS_SMART_CLASS_INIT_VERSION | ||||
* @see EVAS_SMART_CLASS_INIT_NAME_VERSION | ||||
* @see EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT | ||||
* @ingroup Evas_Smart_Group | ||||
*/ | ||||
#define EVAS_SMART_CLASS_INIT_NAME_VERSION_PARENT_CALLBACKS(name, parent, c | ||||
allbacks) {name, EVAS_SMART_CLASS_VERSION, NULL, NULL, NULL, NULL, NULL, NU | ||||
LL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, parent, callbacks, NULL} | ||||
/** | ||||
* @def EVAS_SMART_SUBCLASS_NEW | ||||
* | ||||
* Convenience macro to subclass a Smart Class. | ||||
* | ||||
* This macro saves some typing when writing a Smart Class derived from | ||||
* another one. In order to work, the user needs to provide some functions | ||||
* adhering to the following guidelines. | ||||
* - @<prefix@>_smart_set_user(): the internal _smart_set function will ca | ||||
ll | ||||
* this one provided by the user after inheriting everything from the | ||||
* parent, which should take care of setting the right member functions | ||||
* for the class. | ||||
* - @<prefix@>_parent_sc: pointer to the smart class of the parent. When | ||||
calling | ||||
* parent functions from overloaded ones, use this global variable. | ||||
* - @<prefix@>_smart_class_new(): this function returns the Evas_Smart ne | ||||
eded | ||||
* to create smart objects with this class, should be called by the publ | ||||
ic | ||||
* _add() function. | ||||
* - If this new class should be subclassable as well, a public _smart_set | ||||
() | ||||
* function is desirable to fill the class used as parent by the childre | ||||
n. | ||||
* It's up to the user to provide this interface, which will most likely | ||||
* call @<prefix@>_smart_set() to get the job done. | ||||
* | ||||
* @param smart_name The name used for the Smart Class. e.g: "Evas_Object_B | ||||
ox". | ||||
* @param prefix Prefix used for all variables and functions defined. | ||||
* @param api_type Type of the structure used as API for the Smart Class. E | ||||
ither Evas_Smart_Class or something derived from it. | ||||
* @param parent_type Type of the parent class API. | ||||
* @param parent_func Function that gets the parent class. e.g: evas_object | ||||
_box_smart_class_get(). | ||||
* @param cb_desc Array of callback descriptions for this Smart Class. | ||||
* | ||||
* @ingroup Evas_Smart_Group | ||||
*/ | ||||
#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 void prefix##_smart_set_user(api_type *api); \ | ||||
static void prefix##_smart_set(api_type *api) | ||||
\ | ||||
{ \ | ||||
Evas_Smart_Class *sc; \ | ||||
if (!(sc = (Evas_Smart_Class *)api)) \ | ||||
return; \ | ||||
if (!prefix##_parent_sc) \ | ||||
prefix##_parent_sc = parent_func(); \ | ||||
evas_smart_class_inherit(sc, (const Evas_Smart_Class *)prefix##_parent | ||||
_sc); \ | ||||
prefix##_smart_set_user(api); \ | ||||
} \ | ||||
static Evas_Smart * prefix##_smart_class_new(void) \ | ||||
{ \ | ||||
static Evas_Smart *smart = NULL; \ | ||||
static api_type api; \ | ||||
if (!smart) \ | ||||
{ \ | ||||
Evas_Smart_Class *sc = (Evas_Smart_Class *)&api; \ | ||||
memset(&api, 0, sizeof(api_type)); \ | ||||
sc->version = EVAS_SMART_CLASS_VERSION; \ | ||||
sc->name = smart_name; \ | ||||
sc->callbacks = cb_desc; \ | ||||
prefix##_smart_set(&api); \ | ||||
smart = evas_smart_class_new(sc); \ | ||||
} \ | ||||
return smart; \ | ||||
} | ||||
/** | ||||
* @def EVAS_SMART_DATA_ALLOC | ||||
* Convenience macro to allocate smart data only if needed. | ||||
* | ||||
* When writing a subclassable smart object, the .add function 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. | ||||
* | ||||
* @param o Evas object passed to the .add function | ||||
* @param priv_type The type of the data to allocate | ||||
* @ingroup Evas_Smart_Group | ||||
*/ | ||||
#define EVAS_SMART_DATA_ALLOC(o, priv_type) \ | ||||
priv_type *priv; \ | ||||
priv = evas_object_smart_data_get(o); \ | ||||
if (!priv) { \ | ||||
priv = (priv_type *)calloc(1, sizeof(priv_type)); \ | ||||
if (!priv) return; \ | ||||
evas_object_smart_data_set(o, priv); \ | ||||
} | ||||
EAPI void evas_smart_free | ||||
(Evas_Smart *s) EINA_ARG_NONNULL(1); | ||||
EAPI Evas_Smart *evas_smart_class_new | ||||
(const Evas_Smart_Class *sc) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) | ||||
EINA_MALLOC; | ||||
EAPI const Evas_Smart_Class *evas_smart_class_get | ||||
(const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PU | ||||
RE; | ||||
EAPI void *evas_smart_data_get | ||||
(const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PU | ||||
RE; | ||||
EAPI const Evas_Smart_Cb_Description *evas_smart_callback_description_fi | ||||
nd(const Evas_Smart *s, const char *name) EINA_ARG_NONNULL(1, 2) EINA_PURE; | ||||
EAPI Eina_Bool evas_smart_class_inherit_full | ||||
(Evas_Smart_Class *sc, const Evas_Smart_Class *parent_sc, unsigned int pa | ||||
rent_sc_size) EINA_ARG_NONNULL(1, 2); | ||||
/** | ||||
* @def evas_smart_class_inherit | ||||
* Easy to use version of evas_smart_class_inherit_full(). | ||||
* | ||||
* This version will use sizeof(parent_sc), copying everything. | ||||
* | ||||
* @param sc child class, will have methods copied from @a parent_sc | ||||
* @param parent_sc parent class, will provide contents to be copied. | ||||
* @return 1 on success, 0 on failure. | ||||
* @ingroup Evas_Smart_Group | ||||
*/ | ||||
#define evas_smart_class_inherit(sc, parent_sc) evas_smart_class_inherit_fu | ||||
ll(sc, parent_sc, sizeof(*parent_sc)) | ||||
/** | ||||
* @defgroup Evas_Smart_Object_Group Smart Object Functions | ||||
* | ||||
* Functions dealing with evas smart objects (instances). | ||||
* | ||||
* Smart objects are groupings of primitive evas objects that behave 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 rectangles that appear | ||||
* behind the image and text when the icon is selected. As a smart object, | ||||
* the normal evas api could be used on the icon object. | ||||
* | ||||
* @see @ref Evas_Smart_Group for class definitions. | ||||
*/ | ||||
EAPI Evas_Object *evas_object_smart_add (Evas *e, Evas_ | ||||
Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_MALLOC; | ||||
EAPI void evas_object_smart_member_add (Evas_Object *o | ||||
bj, Evas_Object *smart_obj) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void evas_object_smart_member_del (Evas_Object *o | ||||
bj) EINA_ARG_NONNULL(1); | ||||
EAPI Evas_Object *evas_object_smart_parent_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Eina_Bool evas_object_smart_type_check (const Evas_Obj | ||||
ect *obj, const char *type) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) | ||||
EINA_PURE; | ||||
EAPI Eina_Bool evas_object_smart_type_check_ptr (const Evas_Obj | ||||
ect *obj, const char *type) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) | ||||
EINA_PURE; | ||||
EAPI Eina_List *evas_object_smart_members_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Evas_Smart *evas_object_smart_smart_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void *evas_object_smart_data_get (const Evas_Obj | ||||
ect *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_smart_data_set (Evas_Object *o | ||||
bj, void *data) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_smart_callback_add (Evas_Object *o | ||||
bj, const char *event, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNU | ||||
LL(1, 2, 3); | ||||
EAPI void *evas_object_smart_callback_del (Evas_Object *o | ||||
bj, const char *event, Evas_Smart_Cb func) EINA_ARG_NONNULL(1, 2, 3); | ||||
EAPI void evas_object_smart_callback_call (Evas_Object *o | ||||
bj, const char *event, void *event_info) EINA_ARG_NONNULL(1, 2); | ||||
EAPI Eina_Bool evas_object_smart_callbacks_descriptions_set(Evas | ||||
_Object *obj, const Evas_Smart_Cb_Description *descriptions) EINA_ARG_NONNU | ||||
LL(1); | ||||
EAPI void evas_object_smart_callbacks_descriptions_get(cons | ||||
t Evas_Object *obj, const Evas_Smart_Cb_Description ***class_descriptions, | ||||
unsigned int *class_count, const Evas_Smart_Cb_Description ***instance_desc | ||||
riptions, unsigned int *instance_count) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_smart_callback_description_find(const | ||||
Evas_Object *obj, const char *name, const Evas_Smart_Cb_Description **clas | ||||
s_description, const Evas_Smart_Cb_Description **instance_description) EINA | ||||
_ARG_NONNULL(1, 2); | ||||
EAPI void evas_object_smart_changed (Evas_Object *o | ||||
bj) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_smart_need_recalculate_set(Evas_Objec | ||||
t *obj, Eina_Bool value) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_object_smart_need_recalculate_get(const Evas | ||||
_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_smart_calculate (Evas_Object *o | ||||
bj) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_smart_objects_calculate (Evas *e); | ||||
/** | ||||
* @defgroup Evas_Smart_Object_Clipped Clipped Smart Object | ||||
* | ||||
* Clipped smart object is a base to construct other smart objects | ||||
* that based on the concept of having an internal clipper that is | ||||
* applied to all its other children. This clipper will control the | ||||
* visibility, clipping and color of sibling objects (remember that | ||||
* the clipping is recursive, and clipper color modulates the color of | ||||
* its clippees). By default, this base will also move children | ||||
* relatively to the parent, and delete them when parent is | ||||
* deleted. In other words, it is the base for simple object grouping. | ||||
* | ||||
* @see evas_object_smart_clipped_smart_set() | ||||
* | ||||
* @ingroup Evas_Smart_Object_Group | ||||
*/ | ||||
/** | ||||
* Every subclass should provide this at the beginning of their own | ||||
* data set with evas_object_smart_data_set(). | ||||
*/ | ||||
typedef struct _Evas_Object_Smart_Clipped_Data Evas_Object_Smart_Clipped_ | ||||
Data; | ||||
struct _Evas_Object_Smart_Clipped_Data | ||||
{ | ||||
Evas_Object *clipper; | ||||
Evas *evas; | ||||
}; | ||||
EAPI Evas_Object *evas_object_smart_clipped_clipper_get (Ev | ||||
as_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI void evas_object_smart_clipped_smart_set (Ev | ||||
as_Smart_Class *sc) EINA_ARG_NONNULL(1); | ||||
EAPI const Evas_Smart_Class *evas_object_smart_clipped_class_get (vo | ||||
id) EINA_CONST; | ||||
EAPI void evas_object_smart_move_children_relative(Ev | ||||
as_Object *obj, Evas_Coord dx, Evas_Coord dy) EINA_ARG_NONNULL(1); | ||||
/** | ||||
* @defgroup Evas_Object_Box Box (Sequence) Smart Object. | ||||
* | ||||
* Convenience smart object that packs children as a sequence using | ||||
* a layout function specified by user. There are a couple of helper | ||||
* layout functions, all of them using children size hints to define | ||||
* their size and alignment inside their cell space. | ||||
* | ||||
* @see @ref Evas_Object_Group_Size_Hints | ||||
* | ||||
* @ingroup Evas_Smart_Object_Group | ||||
*/ | ||||
/** | ||||
* @typedef Evas_Object_Box_Api | ||||
* Smart Class extension providing extra box requirements. | ||||
* @ingroup Evas_Object_Box | ||||
*/ | ||||
typedef struct _Evas_Object_Box_Api Evas_Object_Box_Api; | ||||
/** | ||||
* @typedef Evas_Object_Box_Data | ||||
* Smart instance data providing box requirements. | ||||
* @ingroup Evas_Object_Box | ||||
*/ | ||||
typedef struct _Evas_Object_Box_Data Evas_Object_Box_Data; | ||||
/** | ||||
* @typedef Evas_Object_Box_Option | ||||
* The base structure for a box option. | ||||
* @ingroup Evas_Object_Box | ||||
*/ | ||||
typedef struct _Evas_Object_Box_Option Evas_Object_Box_Option; | ||||
typedef void (*Evas_Object_Box_Layout) (Evas_Object *o, Evas_Object_Box_ | ||||
Data *priv, void *user_data); | ||||
/** | ||||
* @def EVAS_OBJECT_BOX_API_VERSION | ||||
* @ingroup Evas_Object_Box | ||||
*/ | ||||
#define EVAS_OBJECT_BOX_API_VERSION 1 | ||||
/** | ||||
* @struct _Evas_Object_Box_Api | ||||
* | ||||
* This structure should be used by any class that wants to inherit | ||||
* from box to provide custom behavior not allowed only by providing a | ||||
* layout function with evas_object_box_layout_set(). | ||||
* | ||||
* @extends Evas_Smart_Class | ||||
* @ingroup Evas_Object_Box | ||||
*/ | ||||
struct _Evas_Object_Box_Api | ||||
{ | ||||
Evas_Smart_Class base; | ||||
int version; | ||||
Evas_Object_Box_Option *(*append) (Evas_Object *o, Evas_Obj | ||||
ect_Box_Data *priv, Evas_Object *child); | ||||
Evas_Object_Box_Option *(*prepend) (Evas_Object *o, Evas_Obj | ||||
ect_Box_Data *priv, Evas_Object *child); | ||||
Evas_Object_Box_Option *(*insert_before) (Evas_Object *o, Evas_Obj | ||||
ect_Box_Data *priv, Evas_Object *child, const Evas_Object *reference); | ||||
Evas_Object_Box_Option *(*insert_after) (Evas_Object *o, Evas_Obj | ||||
ect_Box_Data *priv, Evas_Object *child, const Evas_Object *reference); | ||||
Evas_Object_Box_Option *(*insert_at) (Evas_Object *o, Evas_Obj | ||||
ect_Box_Data *priv, Evas_Object *child, unsigned int pos); | ||||
Evas_Object *(*remove) (Evas_Object *o, Evas_Obj | ||||
ect_Box_Data *priv, Evas_Object *child); | ||||
Evas_Object *(*remove_at) (Evas_Object *o, Evas_Obj | ||||
ect_Box_Data *priv, unsigned int pos); | ||||
Eina_Bool (*property_set) (Evas_Object *o, Evas_Obj | ||||
ect_Box_Option *opt, int property, va_list args); | ||||
Eina_Bool (*property_get) (Evas_Object *o, Evas_Obj | ||||
ect_Box_Option *opt, int property, va_list args); | ||||
const char *(*property_name_get)(Evas_Object *o, int prop | ||||
erty); | ||||
int (*property_id_get) (Evas_Object *o, const ch | ||||
ar *name); | ||||
Evas_Object_Box_Option *(*option_new) (Evas_Object *o, Evas_Obj | ||||
ect_Box_Data *priv, Evas_Object *child); | ||||
void (*option_free) (Evas_Object *o, Evas_Obj | ||||
ect_Box_Data *priv, Evas_Object_Box_Option *opt); | ||||
}; | ||||
/** | ||||
* @def EVAS_OBJECT_BOX_API_INIT | ||||
* Initializer for whole Evas_Object_Box_Api structure. | ||||
* | ||||
* @param smart_class_init initializer to use for the "base" field | ||||
* (Evas_Smart_Class). | ||||
* | ||||
* @see EVAS_SMART_CLASS_INIT_NULL | ||||
* @see EVAS_SMART_CLASS_INIT_VERSION | ||||
* @see EVAS_SMART_CLASS_INIT_NAME_VERSION | ||||
* @see EVAS_OBJECT_BOX_API_INIT_NULL | ||||
* @see EVAS_OBJECT_BOX_API_INIT_VERSION | ||||
* @see EVAS_OBJECT_BOX_API_INIT_NAME_VERSION | ||||
* @ingroup Evas_Object_Box | ||||
*/ | ||||
#define EVAS_OBJECT_BOX_API_INIT(smart_class_init) {smart_class_init, EVAS_ | ||||
OBJECT_BOX_API_VERSION, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NUL | ||||
L, NULL, NULL, NULL, NULL} | ||||
/** | ||||
* @def EVAS_OBJECT_BOX_API_INIT_NULL | ||||
* Initializer to zero a whole Evas_Object_Box_Api structure. | ||||
* | ||||
* @see EVAS_OBJECT_BOX_API_INIT_VERSION | ||||
* @see EVAS_OBJECT_BOX_API_INIT_NAME_VERSION | ||||
* @see EVAS_OBJECT_BOX_API_INIT | ||||
* @ingroup Evas_Object_Box | ||||
*/ | ||||
#define EVAS_OBJECT_BOX_API_INIT_NULL EVAS_OBJECT_BOX_API_INIT(EVAS_SMART_C | ||||
LASS_INIT_NULL) | ||||
/** | ||||
* @def EVAS_OBJECT_BOX_API_INIT_VERSION | ||||
* Initializer to zero a whole Evas_Object_Box_Api structure and set versio | ||||
n. | ||||
* | ||||
* Similar to EVAS_OBJECT_BOX_API_INIT_NULL, but will set version field of | ||||
* Evas_Smart_Class (base field) to latest EVAS_SMART_CLASS_VERSION | ||||
* | ||||
* @see EVAS_OBJECT_BOX_API_INIT_NULL | ||||
* @see EVAS_OBJECT_BOX_API_INIT_NAME_VERSION | ||||
* @see EVAS_OBJECT_BOX_API_INIT | ||||
* @ingroup Evas_Object_Box | ||||
*/ | ||||
#define EVAS_OBJECT_BOX_API_INIT_VERSION EVAS_OBJECT_BOX_API_INIT(EVAS_SMAR | ||||
T_CLASS_INIT_VERSION) | ||||
/** | ||||
* @def EVAS_OBJECT_BOX_API_INIT_NAME_VERSION | ||||
* Initializer to zero a whole Evas_Object_Box_Api structure and set | ||||
* name and version. | ||||
* | ||||
* Similar to EVAS_OBJECT_BOX_API_INIT_NULL, but will set version field of | ||||
* Evas_Smart_Class (base field) to latest EVAS_SMART_CLASS_VERSION and nam | ||||
e | ||||
* to the specific value. | ||||
* | ||||
* It will keep a reference to name field as a "const char *", that is, | ||||
* name must be available while the structure is used (hint: static or glob | ||||
al!) | ||||
* and will not be modified. | ||||
* | ||||
* @see EVAS_OBJECT_BOX_API_INIT_NULL | ||||
* @see EVAS_OBJECT_BOX_API_INIT_VERSION | ||||
* @see EVAS_OBJECT_BOX_API_INIT | ||||
* @ingroup Evas_Object_Box | ||||
*/ | ||||
#define EVAS_OBJECT_BOX_API_INIT_NAME_VERSION(name) EVAS_OBJECT_BOX_API_INI | ||||
T(EVAS_SMART_CLASS_INIT_NAME_VERSION(name)) | ||||
/** | ||||
* @struct _Evas_Object_Box_Data | ||||
* | ||||
* This structure augments clipped smart object's instance data, | ||||
* providing extra members required by generic box implementation. If | ||||
* a subclass inherits from #Evas_Object_Box_Api then it may augment | ||||
* #Evas_Object_Box_Data to fit its own needs. | ||||
* | ||||
* @extends Evas_Object_Smart_Clipped_Data | ||||
* @ingroup Evas_Object_Box | ||||
*/ | ||||
struct _Evas_Object_Box_Data | ||||
{ | ||||
Evas_Object_Smart_Clipped_Data base; | ||||
const Evas_Object_Box_Api *api; | ||||
struct { | ||||
double h, v; | ||||
} align; | ||||
struct { | ||||
Evas_Coord h, v; | ||||
} pad; | ||||
Eina_List *children; | ||||
struct { | ||||
Evas_Object_Box_Layout cb; | ||||
void *data; | ||||
void (*free_data)(void *data); | ||||
} layout; | ||||
Eina_Bool layouting : 1; | ||||
Eina_Bool children_changed : 1; | ||||
}; | ||||
struct _Evas_Object_Box_Option | ||||
{ | ||||
Evas_Object *obj; | ||||
Eina_Bool max_reached:1; | ||||
Eina_Bool min_reached:1; | ||||
Evas_Coord alloc_size; | ||||
}; | ||||
EAPI void evas_object_box_smart_set | ||||
(Evas_Object_Box_Api *api) EINA_ARG_NONNULL(1); | ||||
EAPI const Evas_Object_Box_Api *evas_object_box_smart_class_get | ||||
(void) EINA_CONST; | ||||
EAPI void evas_object_box_layout_set | ||||
(Evas_Object *o, Evas_Object_Box_Layout cb, const void *data, | ||||
void (*free_data)(void *data)) EINA_ARG_NONNULL(1, 2); | ||||
EAPI Evas_Object *evas_object_box_add | ||||
(Evas *evas) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA | ||||
_MALLOC; | ||||
EAPI Evas_Object *evas_object_box_add_to | ||||
(Evas_Object *parent) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNUL | ||||
L(1) EINA_MALLOC; | ||||
EAPI void evas_object_box_layout_horizontal | ||||
(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA | ||||
_ARG_NONNULL(1, 2); | ||||
EAPI void evas_object_box_layout_vertical | ||||
(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA | ||||
_ARG_NONNULL(1, 2); | ||||
EAPI void evas_object_box_layout_homogeneous_verti | ||||
cal (Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA | ||||
_ARG_NONNULL(1, 2); | ||||
EAPI void evas_object_box_layout_homogeneous_horiz | ||||
ontal (Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA | ||||
_ARG_NONNULL(1, 2); | ||||
EAPI void evas_object_box_layout_homogeneous_max_s | ||||
ize_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA | ||||
_ARG_NONNULL(1, 2); | ||||
EAPI void evas_object_box_layout_homogeneous_max_s | ||||
ize_vertical (Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA | ||||
_ARG_NONNULL(1, 2); | ||||
EAPI void evas_object_box_layout_flow_horizontal | ||||
(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA | ||||
_ARG_NONNULL(1, 2); | ||||
EAPI void evas_object_box_layout_flow_vertical | ||||
(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA | ||||
_ARG_NONNULL(1, 2); | ||||
EAPI void evas_object_box_layout_stack | ||||
(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) EINA | ||||
_ARG_NONNULL(1, 2); | ||||
EAPI void evas_object_box_align_set | ||||
(Evas_Object *o, double horizontal, double vertical) EINA_ARG | ||||
_NONNULL(1); | ||||
EAPI void evas_object_box_align_get | ||||
(const Evas_Object *o, double *horizontal, double *vertical) | ||||
EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_box_padding_set | ||||
(Evas_Object *o, Evas_Coord horizontal, Evas_Coord vertical) | ||||
EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_box_padding_get | ||||
(const Evas_Object *o, Evas_Coord *horizontal, Evas_Coord *ve | ||||
rtical) EINA_ARG_NONNULL(1); | ||||
EAPI Evas_Object_Box_Option *evas_object_box_append | ||||
(Evas_Object *o, Evas_Object *child) EINA_ARG_NONNULL(1, 2); | ||||
EAPI Evas_Object_Box_Option *evas_object_box_prepend | ||||
(Evas_Object *o, Evas_Object *child) EINA_ARG_NONNULL(1, 2); | ||||
EAPI Evas_Object_Box_Option *evas_object_box_insert_before | ||||
(Evas_Object *o, Evas_Object *child, const Evas_Object *refer | ||||
ence) 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 *refer | ||||
ente) EINA_ARG_NONNULL(1, 2, 3); | ||||
EAPI Evas_Object_Box_Option *evas_object_box_insert_at | ||||
(Evas_Object *o, Evas_Object *child, unsigned int pos) EINA_A | ||||
RG_NONNULL(1, 2); | ||||
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_at | ||||
(Evas_Object *o, unsigned int pos) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Bool evas_object_box_remove_all | ||||
(Evas_Object *o, Eina_Bool clear) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Iterator *evas_object_box_iterator_new | ||||
(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNU | ||||
LL(1) EINA_MALLOC; | ||||
EAPI Eina_Accessor *evas_object_box_accessor_new | ||||
(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNU | ||||
LL(1) EINA_MALLOC; | ||||
EAPI Eina_List *evas_object_box_children_get | ||||
(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNU | ||||
LL(1) EINA_MALLOC; | ||||
EAPI const char *evas_object_box_option_property_name_get | ||||
(Evas_Object *o, int property) EINA_WARN_UNUSED_RESULT EINA_A | ||||
RG_NONNULL(1) EINA_PURE; | ||||
EAPI int evas_object_box_option_property_id_get | ||||
(Evas_Object *o, const char *name) EINA_WARN_UNUSED_RESULT EI | ||||
NA_ARG_NONNULL(1, 2) EINA_PURE; | ||||
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_vset | ||||
(Evas_Object *o, Evas_Object_Box_Option *opt, int property, v | ||||
a_list args) 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); | ||||
EAPI Eina_Bool evas_object_box_option_property_vget | ||||
(Evas_Object *o, Evas_Object_Box_Option *opt, int property, v | ||||
a_list args) EINA_ARG_NONNULL(1, 2); | ||||
/** | ||||
* @defgroup Evas_Object_Table Table Smart Object. | ||||
* | ||||
* Convenience smart object that packs children using a tabular | ||||
* layout using children size hints to define their size and | ||||
* alignment inside their cell space. | ||||
* | ||||
* @see @ref Evas_Object_Group_Size_Hints | ||||
* | ||||
* @ingroup Evas_Smart_Object_Group | ||||
*/ | ||||
EAPI Evas_Object *evas_object_table_add | ||||
(Evas *evas) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC; | ||||
EAPI Evas_Object *evas_object_table_add_to | ||||
(Evas_Object *parent) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_M | ||||
ALLOC; | ||||
EAPI void evas_object_table_homogeneous_s | ||||
et (Evas_Object *o, Evas_Object_Table_Homogeneous_Mode homogeneous) EINA_AR | ||||
G_NONNULL(1); | ||||
EAPI Evas_Object_Table_Homogeneous_Mode evas_object_table_homogeneous_g | ||||
et (const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_ | ||||
PURE; | ||||
EAPI void evas_object_table_padding_set | ||||
(Evas_Object *o, Evas_Coord horizontal, Evas_Coord vertical) EINA_ARG_NO | ||||
NNULL(1); | ||||
EAPI void evas_object_table_padding_get | ||||
(const Evas_Object *o, Evas_Coord *horizontal, Evas_Coord *vertical) EIN | ||||
A_ARG_NONNULL(1); | ||||
EAPI void evas_object_table_align_set | ||||
(Evas_Object *o, double horizontal, double vertical) EINA_ARG_NONNULL(1) | ||||
; | ||||
EAPI void evas_object_table_align_get | ||||
(const Evas_Object *o, double *horizontal, double *vertical) EINA_ARG_NO | ||||
NNULL(1); | ||||
EAPI Eina_Bool evas_object_table_pack | ||||
(Evas_Object *o, Evas_Object *child, unsigned short col, unsigned short | ||||
row, unsigned short colspan, unsigned short rowspan) EINA_ARG_NONNULL(1, 2) | ||||
; | ||||
EAPI Eina_Bool evas_object_table_unpack | ||||
(Evas_Object *o, Evas_Object *child) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void evas_object_table_clear | ||||
(Evas_Object *o, Eina_Bool clear) EINA_ARG_NONNULL(1); | ||||
EAPI void evas_object_table_col_row_size_ | ||||
get(const Evas_Object *o, int *cols, int *rows) EINA_ARG_NONNULL(1); | ||||
EAPI Eina_Iterator *evas_object_table_iterator_new | ||||
(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_ | ||||
MALLOC; | ||||
EAPI Eina_Accessor *evas_object_table_accessor_new | ||||
(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_ | ||||
MALLOC; | ||||
EAPI Eina_List *evas_object_table_children_get | ||||
(const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_ | ||||
MALLOC; | ||||
EAPI Evas_Object *evas_object_table_child_get | ||||
(const Evas_Object *o, unsigned short col, unsigned short row) EINA_ARG_ | ||||
NONNULL(1); | ||||
/** | ||||
* @defgroup Evas_Cserve Shared Image Cache Server | ||||
* | ||||
* Provides client-server infrastructure to share bitmaps across | ||||
* multiple processes, saving data and processing power. | ||||
*/ | ||||
typedef struct _Evas_Cserve_Stats Evas_Cserve_Stats; | ||||
typedef struct _Evas_Cserve_Image_Cache Evas_Cserve_Image_Cache; | ||||
typedef struct _Evas_Cserve_Image Evas_Cserve_Image; | ||||
typedef struct _Evas_Cserve_Config Evas_Cserve_Config; | ||||
/** | ||||
* Statistics about server that shares cached bitmaps. | ||||
* @ingroup Evas_Cserve | ||||
*/ | ||||
struct _Evas_Cserve_Stats | ||||
{ | ||||
int saved_memory; /**< current saved memory, in bytes */ | ||||
int wasted_memory; /**< current wasted memory, in bytes */ | ||||
int saved_memory_peak; /**< peak of saved memory, in bytes */ | ||||
int wasted_memory_peak; /**< peak of wasted memory, in bytes */ | ||||
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 */ | ||||
}; | ||||
/** | ||||
* Cache of images shared by server. | ||||
* @ingroup Evas_Cserve | ||||
*/ | ||||
struct _Evas_Cserve_Image_Cache | ||||
{ | ||||
struct { | ||||
int mem_total; | ||||
int count; | ||||
} active, cached; | ||||
Eina_List *images; | ||||
}; | ||||
/** | ||||
* An image shared by the server. | ||||
* @ingroup Evas_Cserve | ||||
*/ | ||||
struct _Evas_Cserve_Image | ||||
{ | ||||
const char *file, *key; | ||||
int w, h; | ||||
time_t file_mod_time; | ||||
time_t file_checked_time; | ||||
time_t cached_time; | ||||
int refcount; | ||||
int data_refcount; | ||||
int memory_footprint; | ||||
double head_load_time; | ||||
double data_load_time; | ||||
Eina_Bool alpha : 1; | ||||
Eina_Bool data_loaded : 1; | ||||
Eina_Bool active : 1; | ||||
Eina_Bool dead : 1; | ||||
Eina_Bool useless : 1; | ||||
}; | ||||
/** | ||||
* Configuration that controls the server that shares cached bitmaps. | ||||
* @ingroup Evas_Cserve | ||||
*/ | ||||
struct _Evas_Cserve_Config | ||||
{ | ||||
int cache_max_usage; | ||||
int cache_item_timeout; | ||||
int cache_item_timeout_check; | ||||
}; | ||||
EAPI Eina_Bool evas_cserve_want_get (void) EIN | ||||
A_WARN_UNUSED_RESULT EINA_PURE; | ||||
EAPI Eina_Bool evas_cserve_connected_get (void) EIN | ||||
A_WARN_UNUSED_RESULT; | ||||
EAPI Eina_Bool evas_cserve_stats_get (Evas_Cser | ||||
ve_Stats *stats) EINA_WARN_UNUSED_RESULT; | ||||
EAPI void evas_cserve_image_cache_contents_clean (Evas_Cser | ||||
ve_Image_Cache *cache) EINA_PURE; | ||||
EAPI Eina_Bool evas_cserve_config_get (Evas_Cser | ||||
ve_Config *config) EINA_WARN_UNUSED_RESULT EINA_PURE; | ||||
EAPI Eina_Bool evas_cserve_config_set (const Eva | ||||
s_Cserve_Config *config) EINA_WARN_UNUSED_RESULT EINA_PURE; | ||||
EAPI void evas_cserve_disconnect (void); | ||||
/** | ||||
* @defgroup Evas_Utils General Utilities | ||||
* | ||||
* Some functions that are handy but are not specific of canvas or | ||||
* objects. | ||||
*/ | ||||
EAPI const char *evas_load_error_str (Evas_Load_Erro | ||||
r error); | ||||
/* Evas utility routines for color space conversions */ | ||||
/* hsv color space has h in the range 0.0 to 360.0, and s,v in the range 0. | ||||
0 to 1.0 */ | ||||
/* rgb color space has r,g,b in the range 0 to 255 */ | ||||
EAPI void evas_color_hsv_to_rgb (float h, float | ||||
s, float v, int *r, int *g, int *b); | ||||
EAPI void evas_color_rgb_to_hsv (int r, int g, | ||||
int b, float *h, float *s, float *v); | ||||
/* argb color space has a,r,g,b in the range 0 to 255 */ | ||||
EAPI void evas_color_argb_premul (int a, int *r, | ||||
int *g, int *b); | ||||
EAPI void evas_color_argb_unpremul (int a, int *r, | ||||
int *g, int *b); | ||||
EAPI void evas_data_argb_premul (unsigned int * | ||||
data, unsigned int len); | ||||
EAPI void evas_data_argb_unpremul (unsigned int * | ||||
data, unsigned int len); | ||||
/* string and font handling */ | ||||
EAPI int evas_string_char_next_get (const char *st | ||||
r, int pos, int *decoded) EINA_ARG_NONNULL(1); | ||||
EAPI int evas_string_char_prev_get (const char *st | ||||
r, int pos, int *decoded) EINA_ARG_NONNULL(1); | ||||
EAPI int evas_string_char_len_get (const char *st | ||||
r) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
/** | ||||
* TO BE DOCUMENTED: | ||||
* @todo document key modifiers. | ||||
*/ | ||||
EAPI const Evas_Modifier *evas_key_modifier_get (const Evas *e) | ||||
EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI const Evas_Lock *evas_key_lock_get (const Evas *e) | ||||
EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | ||||
EAPI Eina_Bool evas_key_modifier_is_set (const Evas_Mod | ||||
ifier *m, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, | ||||
2) EINA_PURE; | ||||
EAPI Eina_Bool evas_key_lock_is_set (const Evas_Loc | ||||
k *l, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) E | ||||
INA_PURE; | ||||
EAPI void evas_key_modifier_add (Evas *e, const | ||||
char *keyname) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void evas_key_modifier_del (Evas *e, const | ||||
char *keyname) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void evas_key_lock_add (Evas *e, const | ||||
char *keyname) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void evas_key_lock_del (Evas *e, const | ||||
char *keyname) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void evas_key_modifier_on (Evas *e, const | ||||
char *keyname) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void evas_key_modifier_off (Evas *e, const | ||||
char *keyname) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void evas_key_lock_on (Evas *e, const | ||||
char *keyname) EINA_ARG_NONNULL(1, 2); | ||||
EAPI void evas_key_lock_off (Evas *e, const | ||||
char *keyname) EINA_ARG_NONNULL(1, 2); | ||||
EAPI Evas_Modifier_Mask evas_key_modifier_mask_get (const Evas *e, | ||||
const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_P | ||||
URE; | ||||
/* create and destroy */ | EAPI Eina_Bool evas_object_key_grab (Evas_Object *o | |||
Evas evas_new_all(Display *display, Window parent_window, | bj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask n | |||
int x, int y, int w, int h, | ot_modifiers, Eina_Bool exclusive) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL | |||
Evas_Render_Method render_method, | (1, 2); | |||
int colors, int font_cache, int image_cache | EAPI void evas_object_key_ungrab (Evas_Object *o | |||
, | bj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask n | |||
char *font_dir); | ot_modifiers) EINA_ARG_NONNULL(1, 2); | |||
Window evas_get_window(Evas e); | ||||
Display *evas_get_display(Evas e); | ||||
Visual *evas_get_visual(Evas e); | ||||
Colormap evas_get_colormap(Evas e); | ||||
int evas_get_colors(Evas e); | ||||
Imlib_Image evas_get_image(Evas e); | ||||
Evas_Render_Method evas_get_render_method(Evas e); | ||||
Evas evas_new(void); | ||||
void evas_free(Evas e); | ||||
/* for exposes or forced redraws (relative to output drawable) */ | ||||
void evas_update_rect(Evas e, int x, int y, int w, int h); | ||||
/* for when the evas isnt fully visible you can clip out rects that are */ | ||||
/* full obscured rects of the evas (ie windows ontop) */ | ||||
void evas_add_obscured_rect(Evas e, int x, int y, int w, int h); | ||||
void evas_clear_obscured_rects(Evas e); | ||||
/* drawing */ | ||||
Imlib_Updates evas_render_updates(Evas e); | ||||
void evas_render(Evas e); | ||||
/* query for settings to use */ | ||||
Visual *evas_get_optimal_visual(Evas e, Display *disp); | ||||
Colormap evas_get_optimal_colormap(Evas e, Display *disp); | ||||
void evas_get_drawable_size(Evas e, int *w, int *h); | ||||
void evas_get_viewport(Evas e, double *x, double *y, double *w, double | ||||
*h); | ||||
/* the output settings */ | ||||
void evas_set_output(Evas e, Display *disp, Drawable d, Visual *v, Colormap | ||||
c); | ||||
void evas_set_output_image(Evas e, Imlib_Image image); | ||||
void evas_set_output_colors(Evas e, int colors); | ||||
void evas_set_output_size(Evas e, int w, int h); | ||||
void evas_set_output_viewport(Evas e, double x, double y, double w, double | ||||
h); | ||||
void evas_set_output_method(Evas e, Evas_Render_Method method); | ||||
void evas_set_scale_smoothness(Evas e, int smooth); | ||||
/* clipping - for now you can only use rectangles as clip objects */ | ||||
void evas_set_clip(Evas e, Evas_Object o, Evas_Object clip); | ||||
void evas_unset_clip(Evas e, Evas_Object o); | ||||
Evas_Object evas_get_clip_object(Evas e, Evas_Object o); | ||||
Evas_List evas_get_clip_list(Evas e, Evas_Object o); | ||||
/* deleting objects */ | ||||
void evas_del_object(Evas e, Evas_Object o); | ||||
/* adding objects */ | ||||
Evas_Object evas_add_image_from_file(Evas e, char *file); | ||||
/* ** ** not implimented yet ** ** */Evas_Object evas_add_image_from_data(E | ||||
vas e, void *data, Evas_Image_Format format, int w, int h); | ||||
Evas_Object evas_add_text(Evas e, char *font, int size, char *text); | ||||
Evas_Object evas_add_rectangle(Evas e); | ||||
Evas_Object evas_add_line(Evas e); | ||||
Evas_Object evas_add_gradient_box(Evas e); | ||||
Evas_Object evas_add_poly(Evas e); | ||||
/* set object settings */ | ||||
void evas_set_image_file(Evas e, Evas_Object o, char *file); | ||||
/* ** ** not implimented yet ** ** */void evas_set_image_data(Evas e, Evas_ | ||||
Object o, void *data, Evas_Image_Format format, int w, int h); | ||||
void evas_set_image_fill(Evas e, Evas_Object o, double x, double y, double | ||||
w, double h); | ||||
void evas_set_image_border(Evas e, Evas_Object o, int l, int r, int t, int | ||||
b); | ||||
void evas_set_color(Evas e, Evas_Object o, int r, int g, int b, int a); | ||||
void evas_set_text(Evas e, Evas_Object o, char *text); | ||||
void evas_set_font(Evas e, Evas_Object o, char *font, int size); | ||||
void evas_set_gradient(Evas e, Evas_Object o, Evas_Gradient grad); | ||||
void evas_set_angle(Evas e, Evas_Object o, double angle); | ||||
void evas_set_zoom_scale(Evas e, Evas_Object o, int scale); | ||||
void evas_set_line_xy(Evas e, Evas_Object o, double x1, double y1, double x | ||||
2, double y2); | ||||
void evas_set_pass_events(Evas e, Evas_Object o, int pass_events); | ||||
void evas_add_point(Evas e, Evas_Object o, double x, double y); | ||||
/* cache settings for performance */ | ||||
void evas_set_font_cache(Evas e, int size); | ||||
int evas_get_font_cache(Evas e); | ||||
void evas_flush_font_cache(Evas e); | ||||
void evas_set_image_cache(Evas e, int size); | ||||
int evas_get_image_cache(Evas e); | ||||
void evas_flush_image_cache(Evas e); | ||||
/* font path */ | ||||
void evas_font_add_path(Evas e, char *path); | ||||
void evas_font_del_path(Evas e, char *path); | ||||
/* layer stacking for object */ | ||||
void evas_set_layer(Evas e, Evas_Object o, int l); | ||||
int evas_get_layer(Evas e, Evas_Object o); | ||||
/* ** ** not implimented yet ** ** */void evas_set_layer_store(Evas e, int | ||||
l, int store); | ||||
/* gradient creating / deletion / modification */ | ||||
Evas_Gradient evas_gradient_new(void); | ||||
void evas_gradient_free(Evas_Gradient grad); | ||||
void evas_gradient_add_color(Evas_Gradient grad, int r, int g, int b, int a | ||||
, int dist); | ||||
/* stacking within a layer */ | ||||
void evas_raise(Evas e, Evas_Object o); | ||||
void evas_lower(Evas e, Evas_Object o); | ||||
void evas_stack_above(Evas e, Evas_Object o, Evas_Object above); | ||||
void evas_stack_below(Evas e, Evas_Object o, Evas_Object below); | ||||
/* object geometry */ | ||||
void evas_move(Evas e, Evas_Object o, double x, double y); | ||||
void evas_resize(Evas e, Evas_Object o, double w, double h); | ||||
void evas_get_geometry(Evas e, Evas_Object o, double *x, double *y, double | ||||
*w, double *h); | ||||
/* object query */ | ||||
Evas_List evas_objects_in_rect(Evas e, double x, double y, double w, double | ||||
h); | ||||
Evas_List evas_objects_at_position(Evas e, double x, double y); | ||||
Evas_Object evas_object_in_rect(Evas e, double x, double y, double w, doubl | ||||
e h); | ||||
Evas_Object evas_object_at_position(Evas e, double x, double y); | ||||
Evas_Object evas_object_get_named(Evas e, char *name); | ||||
void evas_object_set_name(Evas e, Evas_Object o, char *name); | ||||
char *evas_object_get_name(Evas e, Evas_Object o); | ||||
Evas_List evas_get_points(Evas e, Evas_Object o); | ||||
/* object visibility */ | ||||
void evas_show(Evas e, Evas_Object o); | ||||
void evas_hide(Evas e, Evas_Object o); | ||||
/* image query ops */ | ||||
int evas_get_image_alpha(Evas e, Evas_Object o); | ||||
void evas_get_image_size(Evas e, Evas_Object o, int *w, int *h); | ||||
void evas_get_image_border(Evas e, Evas_Object o, int *l, int *r, int *t, i | ||||
nt *b); | ||||
Imlib_Load_Error evas_get_image_load_error(Evas e, Evas_Object o); | ||||
/* coordinate space transforms */ | ||||
int evas_world_x_to_screen(Evas e, double x); | ||||
int evas_world_y_to_screen(Evas e, double y); | ||||
double evas_screen_x_to_world(Evas e, int x); | ||||
double evas_screen_y_to_world(Evas e, int y); | ||||
/* text query ops */ | ||||
char *evas_get_text_string(Evas e, Evas_Object o); | ||||
char *evas_get_text_font(Evas e, Evas_Object o); | ||||
int evas_get_text_size(Evas e, Evas_Object o); | ||||
int evas_get_text_width(Evas e, Evas_Object o); | ||||
int evas_get_text_height(Evas e, Evas_Object o); | ||||
int evas_text_at_position(Evas e, Evas_Object o, double x, double y, int | ||||
*char_x, int *char_y, int *char_w, int *char_h); | ||||
void evas_text_at(Evas e, Evas_Object o, int index, int *char_x, int *cha | ||||
r_y, int *char_w, int *char_h); | ||||
void evas_text_get_ascent_descent(Evas e, Evas_Object o, double *ascent, | ||||
double *descent); | ||||
void evas_text_get_max_ascent_descent(Evas e, Evas_Object o, double *asce | ||||
nt, double *descent); | ||||
void evas_text_get_advance(Evas e, Evas_Object o, double *h_advance, doub | ||||
le *v_advance); | ||||
double evas_text_get_inset(Evas e, Evas_Object o); | ||||
/* object query ops */ | ||||
void evas_get_color(Evas e, Evas_Object o, int *r, int *g, int *b, int *a); | ||||
Evas_Object evas_get_object_under_mouse(Evas e); | ||||
/* data attachment ops */ | ||||
void evas_put_data(Evas e, Evas_Object o, char *key, void *data); | ||||
void *evas_get_data(Evas e, Evas_Object o, char *key); | ||||
void *evas_remove_data(Evas e, Evas_Object o, char *key); | ||||
/* events */ | ||||
void evas_ungrab_button(Evas e); | ||||
void evas_event_button_down(Evas e, int x, int y, int b); | ||||
void evas_event_button_up(Evas e, int x, int y, int b); | ||||
void evas_event_move(Evas e, int x, int y); | ||||
void evas_event_enter(Evas e); | ||||
void evas_event_leave(Evas e); | ||||
int evas_pointer_in(Evas e); | ||||
void evas_pointer_pos(Evas e, int *x, int *y); | ||||
int evas_pointer_buttons(Evas e); | ||||
void evas_pointer_ungrab(Evas e); | ||||
/* callbacks */ | ||||
void evas_callback_add(Evas e, Evas_Object o, Evas_Callback_Type callback, | ||||
void (*func) (void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) | ||||
, void *data); | ||||
void evas_callback_del(Evas e, Evas_Object o, Evas_Callback_Type callback); | ||||
/* list ops */ | ||||
Evas_List evas_list_append(Evas_List list, void *data); | ||||
Evas_List evas_list_prepend(Evas_List list, void *data); | ||||
Evas_List evas_list_append_relative(Evas_List list, void *data, void *relat | ||||
ive); | ||||
Evas_List evas_list_prepend_relative(Evas_List list, void *data, void *rela | ||||
tive); | ||||
Evas_List evas_list_remove(Evas_List list, void *data); | ||||
Evas_List evas_list_remove_list(Evas_List list, Evas_List remove_list); | ||||
void * evas_list_find(Evas_List list, void *data); | ||||
Evas_List evas_list_free(Evas_List list); | ||||
#ifdef __cplusplus | #ifdef __cplusplus | |||
} | } | |||
#endif | #endif | |||
#endif | #endif | |||
End of changes. 15 change blocks. | ||||
249 lines changed or deleted | 3001 lines changed or added | |||