2002-11-08 00:02:15 -08:00
|
|
|
#ifndef EVAS_PRIVATE_H
|
|
|
|
#define EVAS_PRIVATE_H
|
|
|
|
|
2005-02-23 12:32:07 -08:00
|
|
|
#ifndef _GNU_SOURCE
|
2003-02-21 02:28:24 -08:00
|
|
|
#define _GNU_SOURCE
|
2005-02-23 12:32:07 -08:00
|
|
|
#endif
|
2003-02-21 02:28:24 -08:00
|
|
|
|
2008-09-12 06:14:08 -07:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
# include <config.h>
|
|
|
|
#endif
|
|
|
|
|
2008-10-16 05:27:07 -07:00
|
|
|
#include <Eina.h>
|
2009-03-19 18:03:15 -07:00
|
|
|
#include <eina_safety_checks.h>
|
2005-06-17 18:00:32 -07:00
|
|
|
#include "Evas.h"
|
|
|
|
|
2008-07-10 09:38:54 -07:00
|
|
|
#include "../file/evas_module.h"
|
|
|
|
#include "../file/evas_path.h"
|
2010-07-28 05:00:41 -07:00
|
|
|
#include "../engines/common/evas_bidi_utils.h"
|
2006-01-14 22:21:05 -08:00
|
|
|
|
2008-09-12 06:14:08 -07:00
|
|
|
#ifdef EVAS_MAGIC_DEBUG
|
2002-11-08 00:02:15 -08:00
|
|
|
/* complain when peole pass in wrong object types etc. */
|
2008-09-12 06:14:08 -07:00
|
|
|
# define MAGIC_DEBUG
|
|
|
|
#endif
|
2002-11-08 00:02:15 -08:00
|
|
|
|
|
|
|
#define RENDER_METHOD_INVALID 0x00000000
|
|
|
|
|
2003-10-17 20:34:00 -07:00
|
|
|
typedef struct _Evas_Layer Evas_Layer;
|
2008-04-11 16:12:20 -07:00
|
|
|
typedef struct _Evas_Size Evas_Size;
|
|
|
|
typedef struct _Evas_Aspect Evas_Aspect;
|
2008-10-04 09:11:23 -07:00
|
|
|
typedef struct _Evas_Border Evas_Border;
|
|
|
|
typedef struct _Evas_Double_Pair Evas_Double_Pair;
|
2008-04-11 16:12:20 -07:00
|
|
|
typedef struct _Evas_Size_Hints Evas_Size_Hints;
|
2005-01-08 02:02:18 -08:00
|
|
|
typedef struct _Evas_Font_Dir Evas_Font_Dir;
|
|
|
|
typedef struct _Evas_Font Evas_Font;
|
|
|
|
typedef struct _Evas_Font_Alias Evas_Font_Alias;
|
2003-10-17 20:34:00 -07:00
|
|
|
typedef struct _Evas_Data_Node Evas_Data_Node;
|
|
|
|
typedef struct _Evas_Func_Node Evas_Func_Node;
|
2006-08-18 07:45:26 -07:00
|
|
|
typedef RGBA_Image_Loadopts Evas_Image_Load_Opts;
|
2003-10-17 20:34:00 -07:00
|
|
|
typedef struct _Evas_Func Evas_Func;
|
2006-01-14 12:03:42 -08:00
|
|
|
typedef struct _Evas_Image_Load_Func Evas_Image_Load_Func;
|
2006-01-15 02:35:02 -08:00
|
|
|
typedef struct _Evas_Image_Save_Func Evas_Image_Save_Func;
|
2003-10-17 20:34:00 -07:00
|
|
|
typedef struct _Evas_Object_Func Evas_Object_Func;
|
2003-01-05 04:55:37 -08:00
|
|
|
typedef struct _Evas_Intercept_Func Evas_Intercept_Func;
|
2002-12-14 16:33:57 -08:00
|
|
|
typedef struct _Evas_Intercept_Func_Basic Evas_Intercept_Func_Basic;
|
|
|
|
typedef struct _Evas_Intercept_Func_SizePos Evas_Intercept_Func_SizePos;
|
|
|
|
typedef struct _Evas_Intercept_Func_Obj Evas_Intercept_Func_Obj;
|
|
|
|
typedef struct _Evas_Intercept_Func_Int Evas_Intercept_Func_Int;
|
2007-08-22 09:45:37 -07:00
|
|
|
typedef struct _Evas_Intercept_Func_Color Evas_Intercept_Func_Color;
|
2003-01-05 04:55:37 -08:00
|
|
|
typedef struct _Evas_Key_Grab Evas_Key_Grab;
|
2003-10-17 20:34:00 -07:00
|
|
|
typedef struct _Evas_Callbacks Evas_Callbacks;
|
2005-01-19 22:54:45 -08:00
|
|
|
typedef struct _Evas_Format Evas_Format;
|
2009-10-31 18:32:23 -07:00
|
|
|
typedef struct _Evas_Map_Point Evas_Map_Point;
|
2010-01-11 06:24:41 -08:00
|
|
|
typedef struct _Evas_Smart_Cb_Description_Array Evas_Smart_Cb_Description_Array;
|
2010-05-04 08:58:10 -07:00
|
|
|
typedef struct _Evas_Post_Callback Evas_Post_Callback;
|
2003-10-17 20:34:00 -07:00
|
|
|
|
2009-11-05 07:24:48 -08:00
|
|
|
#define MAGIC_EVAS 0x70777770
|
|
|
|
#define MAGIC_OBJ 0x71777770
|
|
|
|
#define MAGIC_OBJ_RECTANGLE 0x71777771
|
|
|
|
#define MAGIC_OBJ_LINE 0x71777772
|
|
|
|
#define MAGIC_OBJ_POLYGON 0x71777774
|
|
|
|
#define MAGIC_OBJ_IMAGE 0x71777775
|
|
|
|
#define MAGIC_OBJ_TEXT 0x71777776
|
|
|
|
#define MAGIC_OBJ_SMART 0x71777777
|
|
|
|
#define MAGIC_OBJ_TEXTBLOCK 0x71777778
|
|
|
|
#define MAGIC_SMART 0x72777770
|
|
|
|
#define MAGIC_OBJ_SHAPE 0x72777773
|
|
|
|
#define MAGIC_OBJ_CONTAINER 0x72777774
|
|
|
|
#define MAGIC_OBJ_CUSTOM 0x72777775
|
2002-11-08 00:02:15 -08:00
|
|
|
|
|
|
|
#ifdef MAGIC_DEBUG
|
2008-09-12 06:14:08 -07:00
|
|
|
# define MAGIC_CHECK_FAILED(o, t, m) \
|
2002-11-08 00:02:15 -08:00
|
|
|
{evas_debug_error(); \
|
|
|
|
if (!o) evas_debug_input_null(); \
|
|
|
|
else if (((t *)o)->magic == 0) evas_debug_magic_null(); \
|
|
|
|
else evas_debug_magic_wrong((m), ((t *)o)->magic); \
|
|
|
|
}
|
2008-09-12 06:14:08 -07:00
|
|
|
# define MAGIC_CHECK(o, t, m) \
|
2002-11-08 00:02:15 -08:00
|
|
|
{if ((!o) || (!(((t *)o)->magic == (m)))) { \
|
|
|
|
MAGIC_CHECK_FAILED(o, t, m)
|
2008-09-12 06:14:08 -07:00
|
|
|
# define MAGIC_CHECK_END() }}
|
|
|
|
#else
|
|
|
|
# define MAGIC_CHECK_FAILED(o, t, m)
|
|
|
|
# define MAGIC_CHECK(o, t, m) { if (!o) {
|
|
|
|
# define MAGIC_CHECK_END() }}
|
|
|
|
#endif
|
2002-11-08 00:02:15 -08:00
|
|
|
|
2009-06-23 06:57:27 -07:00
|
|
|
#define NEW_RECT(_r, _x, _y, _w, _h) (_r) = eina_rectangle_new(_x, _y, _w, _h);
|
2002-11-08 00:02:15 -08:00
|
|
|
|
2002-11-23 20:06:08 -08:00
|
|
|
#define MERR_NONE() _evas_alloc_error = EVAS_ALLOC_ERROR_NONE
|
|
|
|
#define MERR_FATAL() _evas_alloc_error = EVAS_ALLOC_ERROR_FATAL
|
|
|
|
#define MERR_BAD() _evas_alloc_error = EVAS_ALLOC_ERROR_RECOVERED
|
|
|
|
|
2003-02-21 02:28:24 -08:00
|
|
|
#define EVAS_OBJECT_IMAGE_FREE_FILE_AND_KEY(o) \
|
|
|
|
if ((o)->cur.file) \
|
|
|
|
{ \
|
2008-10-15 07:38:34 -07:00
|
|
|
eina_stringshare_del((o)->cur.file); \
|
2003-02-21 02:28:24 -08:00
|
|
|
if ((o)->prev.file == (o)->cur.file) \
|
|
|
|
(o)->prev.file = NULL; \
|
|
|
|
(o)->cur.file = NULL; \
|
|
|
|
} \
|
|
|
|
if ((o)->cur.key) \
|
|
|
|
{ \
|
2008-10-15 07:38:34 -07:00
|
|
|
eina_stringshare_del((o)->cur.key); \
|
2003-02-21 02:28:24 -08:00
|
|
|
if ((o)->prev.key == (o)->cur.key) \
|
|
|
|
(o)->prev.key = NULL; \
|
|
|
|
(o)->cur.key = NULL; \
|
|
|
|
} \
|
|
|
|
if ((o)->prev.file) \
|
|
|
|
{ \
|
2008-10-15 07:38:34 -07:00
|
|
|
eina_stringshare_del((o)->prev.file); \
|
2003-02-21 02:28:24 -08:00
|
|
|
(o)->prev.file = NULL; \
|
|
|
|
} \
|
|
|
|
if ((o)->prev.key) \
|
|
|
|
{ \
|
2008-10-15 07:38:34 -07:00
|
|
|
eina_stringshare_del((o)->prev.key); \
|
2003-02-21 02:28:24 -08:00
|
|
|
(o)->prev.key = NULL; \
|
|
|
|
}
|
|
|
|
|
2002-12-14 16:33:57 -08:00
|
|
|
struct _Evas_Intercept_Func_Basic
|
|
|
|
{
|
|
|
|
void (*func) (void *data, Evas_Object *obj);
|
|
|
|
void *data;
|
|
|
|
};
|
2002-11-23 20:06:08 -08:00
|
|
|
|
2002-12-14 16:33:57 -08:00
|
|
|
struct _Evas_Intercept_Func_SizePos
|
|
|
|
{
|
2003-10-17 20:34:00 -07:00
|
|
|
void (*func) (void *data, Evas_Object *obj, Evas_Coord x, Evas_Coord y);
|
2002-12-14 16:33:57 -08:00
|
|
|
void *data;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct _Evas_Intercept_Func_Obj
|
|
|
|
{
|
|
|
|
void (*func) (void *data, Evas_Object *obj, Evas_Object *obj2);
|
|
|
|
void *data;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct _Evas_Intercept_Func_Int
|
|
|
|
{
|
|
|
|
void (*func) (void *data, Evas_Object *obj, int n);
|
|
|
|
void *data;
|
|
|
|
};
|
2002-12-09 22:45:18 -08:00
|
|
|
|
2007-08-22 09:45:37 -07:00
|
|
|
struct _Evas_Intercept_Func_Color
|
|
|
|
{
|
|
|
|
void (*func) (void *data, Evas_Object *obj, int r, int g, int b, int a);
|
|
|
|
void *data;
|
|
|
|
};
|
|
|
|
|
2003-01-05 04:55:37 -08:00
|
|
|
struct _Evas_Key_Grab
|
|
|
|
{
|
|
|
|
char *keyname;
|
|
|
|
Evas_Modifier_Mask modifiers;
|
|
|
|
Evas_Modifier_Mask not_modifiers;
|
|
|
|
Evas_Object *object;
|
2005-10-29 22:07:51 -07:00
|
|
|
unsigned char exclusive : 1;
|
|
|
|
unsigned char just_added : 1;
|
|
|
|
unsigned char delete_me : 1;
|
2003-01-05 04:55:37 -08:00
|
|
|
};
|
|
|
|
|
2002-12-14 16:33:57 -08:00
|
|
|
struct _Evas_Intercept_Func
|
2002-12-09 22:45:18 -08:00
|
|
|
{
|
2002-12-14 16:33:57 -08:00
|
|
|
Evas_Intercept_Func_Basic show;
|
|
|
|
Evas_Intercept_Func_Basic hide;
|
|
|
|
Evas_Intercept_Func_SizePos move;
|
|
|
|
Evas_Intercept_Func_SizePos resize;
|
|
|
|
Evas_Intercept_Func_Basic raise;
|
|
|
|
Evas_Intercept_Func_Basic lower;
|
|
|
|
Evas_Intercept_Func_Obj stack_above;
|
|
|
|
Evas_Intercept_Func_Obj stack_below;
|
|
|
|
Evas_Intercept_Func_Int layer_set;
|
2007-08-22 09:45:37 -07:00
|
|
|
Evas_Intercept_Func_Color color_set;
|
|
|
|
Evas_Intercept_Func_Obj clip_set;
|
|
|
|
Evas_Intercept_Func_Basic clip_unset;
|
2005-05-21 19:49:50 -07:00
|
|
|
};
|
2002-12-09 22:45:18 -08:00
|
|
|
|
2010-01-11 06:24:41 -08:00
|
|
|
struct _Evas_Smart_Cb_Description_Array
|
|
|
|
{
|
|
|
|
unsigned int size;
|
|
|
|
const Evas_Smart_Cb_Description **array;
|
|
|
|
};
|
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
struct _Evas_Smart
|
|
|
|
{
|
|
|
|
DATA32 magic;
|
|
|
|
|
|
|
|
int usage;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2008-02-08 12:03:48 -08:00
|
|
|
const Evas_Smart_Class *smart_class;
|
2007-06-28 16:22:20 -07:00
|
|
|
|
2010-01-11 06:24:41 -08:00
|
|
|
Evas_Smart_Cb_Description_Array callbacks;
|
|
|
|
|
2005-10-29 22:07:51 -07:00
|
|
|
unsigned char delete_me : 1;
|
|
|
|
unsigned char class_allocated : 1;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2003-10-08 20:05:17 -07:00
|
|
|
};
|
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
struct _Evas_Modifier
|
|
|
|
{
|
|
|
|
struct {
|
|
|
|
int count;
|
2002-12-16 16:00:38 -08:00
|
|
|
char **list;
|
2002-11-08 00:02:15 -08:00
|
|
|
} mod;
|
2002-12-17 22:02:32 -08:00
|
|
|
Evas_Modifier_Mask mask; /* ok we have a max of 64 modifiers */
|
2002-11-08 00:02:15 -08:00
|
|
|
};
|
|
|
|
|
|
|
|
struct _Evas_Lock
|
|
|
|
{
|
|
|
|
struct {
|
|
|
|
int count;
|
2002-12-16 16:00:38 -08:00
|
|
|
char **list;
|
2002-11-08 00:02:15 -08:00
|
|
|
} lock;
|
2002-12-17 22:02:32 -08:00
|
|
|
Evas_Modifier_Mask mask; /* we have a max of 64 locks */
|
2002-11-08 00:02:15 -08:00
|
|
|
};
|
|
|
|
|
2010-05-04 08:58:10 -07:00
|
|
|
struct _Evas_Post_Callback
|
|
|
|
{
|
|
|
|
Evas_Object *obj;
|
|
|
|
Evas_Object_Event_Post_Cb func;
|
|
|
|
const void *data;
|
|
|
|
unsigned char delete_me : 1;
|
|
|
|
};
|
|
|
|
|
2003-02-08 20:22:45 -08:00
|
|
|
struct _Evas_Callbacks
|
|
|
|
{
|
2008-10-17 04:23:18 -07:00
|
|
|
Eina_Inlist *callbacks;
|
2007-06-28 16:22:20 -07:00
|
|
|
int walking_list;
|
|
|
|
unsigned char deletions_waiting : 1;
|
2008-05-15 21:55:31 -07:00
|
|
|
/*
|
2008-10-17 04:23:18 -07:00
|
|
|
Eina_Inlist *down;
|
|
|
|
Eina_Inlist *up;
|
|
|
|
Eina_Inlist *move;
|
|
|
|
Eina_Inlist *in;
|
|
|
|
Eina_Inlist *out;
|
|
|
|
Eina_Inlist *wheel;
|
|
|
|
Eina_Inlist *key_down;
|
|
|
|
Eina_Inlist *key_up;
|
|
|
|
Eina_Inlist *free;
|
|
|
|
Eina_Inlist *obj_focus_in;
|
|
|
|
Eina_Inlist *obj_focus_out;
|
|
|
|
Eina_Inlist *obj_show;
|
|
|
|
Eina_Inlist *obj_hide;
|
|
|
|
Eina_Inlist *obj_move;
|
|
|
|
Eina_Inlist *obj_resize;
|
|
|
|
Eina_Inlist *obj_restack;
|
2007-01-22 04:44:57 -08:00
|
|
|
*/
|
2003-02-08 20:22:45 -08:00
|
|
|
};
|
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
struct _Evas
|
|
|
|
{
|
2008-10-17 04:23:18 -07:00
|
|
|
EINA_INLIST;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
DATA32 magic;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
struct {
|
2005-10-29 22:07:51 -07:00
|
|
|
unsigned char inside : 1;
|
2004-09-11 21:49:07 -07:00
|
|
|
int mouse_grabbed;
|
2002-11-08 00:02:15 -08:00
|
|
|
DATA32 button;
|
2006-11-15 19:20:24 -08:00
|
|
|
Evas_Coord x, y;
|
2002-11-08 00:02:15 -08:00
|
|
|
|
2006-11-15 19:20:24 -08:00
|
|
|
//// Evas_Coord canvas_x, canvas_y;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
struct {
|
2008-10-21 09:31:05 -07:00
|
|
|
Eina_List *in;
|
2002-11-08 00:02:15 -08:00
|
|
|
} object;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
} pointer;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
struct {
|
2005-10-29 22:07:51 -07:00
|
|
|
Evas_Coord x, y, w, h;
|
|
|
|
unsigned char changed : 1;
|
2002-11-08 00:02:15 -08:00
|
|
|
} viewport;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
struct {
|
|
|
|
int w, h;
|
|
|
|
DATA32 render_method;
|
2005-10-29 22:07:51 -07:00
|
|
|
unsigned char changed : 1;
|
2002-11-08 00:02:15 -08:00
|
|
|
} output;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2008-10-21 09:31:05 -07:00
|
|
|
Eina_List *damages;
|
|
|
|
Eina_List *obscures;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
Evas_Layer *layers;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2008-12-09 09:56:31 -08:00
|
|
|
Eina_Hash *name_hash;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2007-06-28 16:22:20 -07:00
|
|
|
int output_validity;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2007-04-29 21:22:42 -07:00
|
|
|
int walking_list;
|
2002-11-08 00:02:15 -08:00
|
|
|
int events_frozen;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
struct {
|
2006-09-18 02:40:29 -07:00
|
|
|
Evas_Module *module;
|
2002-11-08 00:02:15 -08:00
|
|
|
Evas_Func *func;
|
|
|
|
struct {
|
|
|
|
void *output;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
void *context;
|
|
|
|
} data;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
void *info;
|
|
|
|
int info_magic;
|
|
|
|
} engine;
|
2003-07-07 23:08:26 -07:00
|
|
|
|
2008-10-16 05:27:07 -07:00
|
|
|
Eina_Array delete_objects;
|
|
|
|
Eina_Array active_objects;
|
|
|
|
Eina_Array restack_objects;
|
2009-09-12 20:04:20 -07:00
|
|
|
Eina_Array render_objects;
|
|
|
|
Eina_Array pending_objects;
|
2008-10-16 05:27:07 -07:00
|
|
|
Eina_Array obscuring_objects;
|
|
|
|
Eina_Array temporary_objects;
|
|
|
|
Eina_Array calculate_objects;
|
2009-04-15 06:40:37 -07:00
|
|
|
Eina_Array clip_changes;
|
2010-04-27 06:43:10 -07:00
|
|
|
|
2010-05-04 08:58:10 -07:00
|
|
|
Eina_List *post_events; // free me on evas_free
|
|
|
|
|
2010-01-31 20:26:55 -08:00
|
|
|
Evas_Callbacks *callbacks;
|
2010-04-27 06:43:10 -07:00
|
|
|
|
2003-07-07 23:08:26 -07:00
|
|
|
int delete_grabs;
|
|
|
|
int walking_grabs;
|
2008-10-21 09:31:05 -07:00
|
|
|
Eina_List *grabs;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2008-10-21 09:31:05 -07:00
|
|
|
Eina_List *font_path;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-12-16 16:00:38 -08:00
|
|
|
Evas_Object *focused;
|
2007-06-28 16:22:20 -07:00
|
|
|
void *attach_data;
|
2002-12-16 16:00:38 -08:00
|
|
|
Evas_Modifier modifiers;
|
|
|
|
Evas_Lock locks;
|
2005-07-25 02:55:47 -07:00
|
|
|
unsigned int last_timestamp;
|
2006-08-25 13:47:32 -07:00
|
|
|
int last_mouse_down_counter;
|
|
|
|
int last_mouse_up_counter;
|
2006-02-27 20:07:49 -08:00
|
|
|
Evas_Font_Hinting_Flags hinting;
|
2008-06-04 09:42:39 -07:00
|
|
|
unsigned char changed : 1;
|
2007-04-29 21:22:42 -07:00
|
|
|
unsigned char delete_me : 1;
|
2008-06-04 09:42:39 -07:00
|
|
|
unsigned char invalidate : 1;
|
|
|
|
unsigned char cleanup : 1;
|
2010-01-31 20:26:55 -08:00
|
|
|
unsigned char focus : 1;
|
2002-11-08 00:02:15 -08:00
|
|
|
};
|
|
|
|
|
|
|
|
struct _Evas_Layer
|
|
|
|
{
|
2008-10-17 04:23:18 -07:00
|
|
|
EINA_INLIST;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2008-04-30 23:18:21 -07:00
|
|
|
short layer;
|
2002-11-08 00:02:15 -08:00
|
|
|
Evas_Object *objects;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
Evas *evas;
|
|
|
|
|
|
|
|
void *engine_data;
|
2005-11-08 03:59:21 -08:00
|
|
|
int usage;
|
2005-10-29 22:07:51 -07:00
|
|
|
unsigned char delete_me : 1;
|
2002-11-08 00:02:15 -08:00
|
|
|
};
|
|
|
|
|
2008-04-11 16:12:20 -07:00
|
|
|
struct _Evas_Size
|
|
|
|
{
|
|
|
|
Evas_Coord w, h;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct _Evas_Aspect
|
|
|
|
{
|
|
|
|
Evas_Aspect_Control mode;
|
|
|
|
Evas_Size size;
|
|
|
|
};
|
|
|
|
|
2008-10-04 09:11:23 -07:00
|
|
|
struct _Evas_Border
|
|
|
|
{
|
|
|
|
Evas_Coord l, r, t, b;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct _Evas_Double_Pair
|
|
|
|
{
|
|
|
|
double x, y;
|
|
|
|
};
|
|
|
|
|
2008-04-11 16:12:20 -07:00
|
|
|
struct _Evas_Size_Hints
|
|
|
|
{
|
|
|
|
Evas_Size min, max, request;
|
|
|
|
Evas_Aspect aspect;
|
2008-10-04 09:11:23 -07:00
|
|
|
Evas_Double_Pair align, weight;
|
|
|
|
Evas_Border padding;
|
2008-04-11 16:12:20 -07:00
|
|
|
};
|
|
|
|
|
2009-10-20 09:03:57 -07:00
|
|
|
struct _Evas_Map_Point
|
|
|
|
{
|
|
|
|
Evas_Coord x, y, z;
|
|
|
|
double u, v;
|
2009-10-31 18:32:23 -07:00
|
|
|
unsigned char r, g, b, a;
|
2009-10-20 09:03:57 -07:00
|
|
|
};
|
|
|
|
|
2009-10-22 13:11:33 -07:00
|
|
|
struct _Evas_Map
|
|
|
|
{
|
2009-11-05 07:24:48 -08:00
|
|
|
int count; // num of points
|
|
|
|
Evas_Coord_Rectangle normal_geometry; // bounding box of map geom actually
|
|
|
|
void *surface; // surface holding map if needed
|
|
|
|
int surface_w, surface_h; // current surface w & h alloc
|
|
|
|
Evas_Coord mx, my; // mouse x, y after conversion to map space
|
2009-10-31 02:08:01 -07:00
|
|
|
Eina_Bool alpha : 1;
|
|
|
|
Eina_Bool smooth : 1;
|
2009-11-05 07:24:48 -08:00
|
|
|
Evas_Map_Point points[]; // actual points
|
2009-10-22 13:11:33 -07:00
|
|
|
};
|
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
struct _Evas_Object
|
|
|
|
{
|
2008-10-17 04:23:18 -07:00
|
|
|
EINA_INLIST;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
DATA32 magic;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
|
|
|
const char *type;
|
|
|
|
Evas_Layer *layer;
|
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
struct {
|
|
|
|
struct {
|
2008-05-15 21:55:31 -07:00
|
|
|
/*
|
2002-11-08 00:02:15 -08:00
|
|
|
struct {
|
|
|
|
int x, y, w, h;
|
|
|
|
int validity;
|
|
|
|
} geometry;
|
2006-11-15 19:20:24 -08:00
|
|
|
*/
|
2002-11-08 00:02:15 -08:00
|
|
|
struct {
|
|
|
|
int x, y, w, h;
|
2003-02-08 20:22:45 -08:00
|
|
|
unsigned char r, g, b, a;
|
2009-06-17 03:01:52 -07:00
|
|
|
Eina_Bool visible : 1;
|
|
|
|
Eina_Bool dirty : 1;
|
2002-11-08 00:02:15 -08:00
|
|
|
} clip;
|
|
|
|
} cache;
|
2008-09-09 07:14:26 -07:00
|
|
|
double scale;
|
2009-10-22 13:11:33 -07:00
|
|
|
Evas_Map *map;
|
2008-04-30 16:58:43 -07:00
|
|
|
Evas_Coord_Rectangle geometry;
|
2002-11-08 00:02:15 -08:00
|
|
|
struct {
|
2003-02-08 20:22:45 -08:00
|
|
|
unsigned char r, g, b, a;
|
2005-05-21 19:49:50 -07:00
|
|
|
} color;
|
|
|
|
Evas_Object *clipper;
|
2008-04-30 23:18:21 -07:00
|
|
|
short layer;
|
2009-10-20 09:03:57 -07:00
|
|
|
Eina_Bool usemap : 1;
|
2009-06-17 03:01:52 -07:00
|
|
|
Eina_Bool visible : 1;
|
|
|
|
Eina_Bool have_clipees : 1;
|
|
|
|
Eina_Bool anti_alias : 1;
|
2008-04-30 21:14:08 -07:00
|
|
|
unsigned char interpolation_color_space : 1;
|
2008-04-30 20:52:20 -07:00
|
|
|
Evas_Render_Op render_op : 4;
|
2002-11-08 00:02:15 -08:00
|
|
|
} cur, prev;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2003-02-08 20:22:45 -08:00
|
|
|
char *name;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-12-14 16:33:57 -08:00
|
|
|
Evas_Intercept_Func *interceptors;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
struct {
|
2008-10-21 09:31:05 -07:00
|
|
|
Eina_List *elements;
|
2002-11-08 00:02:15 -08:00
|
|
|
} data;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2008-10-21 09:31:05 -07:00
|
|
|
Eina_List *grabs;
|
2003-02-08 20:22:45 -08:00
|
|
|
|
|
|
|
Evas_Callbacks *callbacks;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
struct {
|
2008-10-21 09:31:05 -07:00
|
|
|
Eina_List *clipees;
|
|
|
|
Eina_List *changes;
|
2002-11-08 00:02:15 -08:00
|
|
|
} clip;
|
|
|
|
|
2007-05-06 04:29:37 -07:00
|
|
|
const Evas_Object_Func *func;
|
2003-02-08 20:22:45 -08:00
|
|
|
|
|
|
|
void *object_data;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
struct {
|
2005-10-26 19:44:36 -07:00
|
|
|
Evas_Smart *smart;
|
|
|
|
Evas_Object *parent;
|
2002-11-08 00:02:15 -08:00
|
|
|
} smart;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2008-04-30 16:44:03 -07:00
|
|
|
Evas_Size_Hints *size_hints;
|
2008-04-11 16:12:20 -07:00
|
|
|
|
2006-08-25 13:47:32 -07:00
|
|
|
int last_mouse_down_counter;
|
|
|
|
int last_mouse_up_counter;
|
2004-09-12 20:56:39 -07:00
|
|
|
int mouse_grabbed;
|
2008-04-30 20:52:20 -07:00
|
|
|
|
2010-03-04 06:48:21 -08:00
|
|
|
int last_event;
|
|
|
|
|
2008-04-30 20:52:20 -07:00
|
|
|
Evas_Object_Pointer_Mode pointer_mode : 1;
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2009-06-17 03:01:52 -07:00
|
|
|
Eina_Bool store : 1;
|
|
|
|
Eina_Bool pass_events : 1;
|
|
|
|
Eina_Bool parent_pass_events : 1;
|
|
|
|
Eina_Bool parent_cache_valid : 1;
|
|
|
|
Eina_Bool repeat_events : 1;
|
|
|
|
Eina_Bool restack : 1;
|
|
|
|
Eina_Bool changed : 1;
|
|
|
|
Eina_Bool is_active : 1;
|
2009-11-05 07:24:48 -08:00
|
|
|
|
2009-06-17 03:01:52 -07:00
|
|
|
Eina_Bool render_pre : 1;
|
|
|
|
Eina_Bool rect_del : 1;
|
|
|
|
Eina_Bool mouse_in : 1;
|
|
|
|
Eina_Bool pre_render_done : 1;
|
|
|
|
Eina_Bool intercepted : 1;
|
|
|
|
Eina_Bool focused : 1;
|
|
|
|
Eina_Bool in_layer : 1;
|
|
|
|
Eina_Bool no_propagate : 1;
|
2009-11-05 07:24:48 -08:00
|
|
|
|
2009-06-17 03:01:52 -07:00
|
|
|
Eina_Bool precise_is_inside : 1;
|
2009-11-05 07:24:48 -08:00
|
|
|
Eina_Bool havemap_parent : 1;
|
2007-07-23 07:22:57 -07:00
|
|
|
|
2005-05-21 19:49:50 -07:00
|
|
|
unsigned char delete_me;
|
2002-11-08 00:02:15 -08:00
|
|
|
};
|
|
|
|
|
|
|
|
struct _Evas_Func_Node
|
|
|
|
{
|
2008-10-17 04:23:18 -07:00
|
|
|
EINA_INLIST;
|
2010-02-16 04:59:37 -08:00
|
|
|
void (*func) ();
|
2002-11-08 00:02:15 -08:00
|
|
|
void *data;
|
2007-01-22 04:44:57 -08:00
|
|
|
Evas_Callback_Type type;
|
2007-04-29 21:22:42 -07:00
|
|
|
unsigned char delete_me : 1;
|
2002-11-08 00:02:15 -08:00
|
|
|
};
|
|
|
|
|
|
|
|
struct _Evas_Data_Node
|
|
|
|
{
|
|
|
|
char *key;
|
|
|
|
void *data;
|
|
|
|
};
|
|
|
|
|
2005-01-08 02:02:18 -08:00
|
|
|
struct _Evas_Font_Dir
|
|
|
|
{
|
2008-12-09 09:56:31 -08:00
|
|
|
Eina_Hash *lookup;
|
2008-10-21 09:31:05 -07:00
|
|
|
Eina_List *fonts;
|
|
|
|
Eina_List *aliases;
|
2005-01-08 02:02:18 -08:00
|
|
|
DATA64 dir_mod_time;
|
|
|
|
DATA64 fonts_dir_mod_time;
|
|
|
|
DATA64 fonts_alias_mod_time;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct _Evas_Font
|
|
|
|
{
|
|
|
|
struct {
|
2006-05-31 11:33:46 -07:00
|
|
|
const char *prop[14];
|
2005-01-08 02:02:18 -08:00
|
|
|
} x;
|
|
|
|
struct {
|
2006-05-31 11:33:46 -07:00
|
|
|
const char *name;
|
2005-01-08 02:02:18 -08:00
|
|
|
} simple;
|
2006-05-31 11:33:46 -07:00
|
|
|
const char *path;
|
2007-06-28 16:22:20 -07:00
|
|
|
char type;
|
2005-01-08 02:02:18 -08:00
|
|
|
};
|
|
|
|
|
|
|
|
struct _Evas_Font_Alias
|
|
|
|
{
|
2006-05-31 11:33:46 -07:00
|
|
|
const char *alias;
|
|
|
|
Evas_Font *fn;
|
2005-01-08 02:02:18 -08:00
|
|
|
};
|
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
struct _Evas_Object_Func
|
|
|
|
{
|
|
|
|
void (*free) (Evas_Object *obj);
|
|
|
|
void (*render) (Evas_Object *obj, void *output, void *context, void *surface, int x, int y);
|
|
|
|
void (*render_pre) (Evas_Object *obj);
|
|
|
|
void (*render_post) (Evas_Object *obj);
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2008-08-30 19:04:31 -07:00
|
|
|
unsigned int (*type_id_get) (Evas_Object *obj);
|
|
|
|
unsigned int (*visual_id_get) (Evas_Object *obj);
|
2008-08-25 22:45:04 -07:00
|
|
|
void *(*engine_data_get) (Evas_Object *obj);
|
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
void (*store) (Evas_Object *obj);
|
|
|
|
void (*unstore) (Evas_Object *obj);
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
int (*is_visible) (Evas_Object *obj);
|
|
|
|
int (*was_visible) (Evas_Object *obj);
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
int (*is_opaque) (Evas_Object *obj);
|
|
|
|
int (*was_opaque) (Evas_Object *obj);
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2003-10-17 20:34:00 -07:00
|
|
|
int (*is_inside) (Evas_Object *obj, Evas_Coord x, Evas_Coord y);
|
|
|
|
int (*was_inside) (Evas_Object *obj, Evas_Coord x, Evas_Coord y);
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
void (*coords_recalc) (Evas_Object *obj);
|
2008-11-15 02:39:46 -08:00
|
|
|
|
|
|
|
void (*scale_update) (Evas_Object *obj);
|
2009-02-16 20:53:03 -08:00
|
|
|
|
|
|
|
int (*has_opaque_rect) (Evas_Object *obj);
|
|
|
|
int (*get_opaque_rect) (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
|
2009-10-28 01:59:01 -07:00
|
|
|
|
|
|
|
int (*can_map) (Evas_Object *obj);
|
2002-11-08 00:02:15 -08:00
|
|
|
};
|
|
|
|
|
|
|
|
struct _Evas_Func
|
|
|
|
{
|
|
|
|
void *(*info) (Evas *e);
|
|
|
|
void (*info_free) (Evas *e, void *info);
|
2009-03-24 02:05:32 -07:00
|
|
|
int (*setup) (Evas *e, void *info);
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
void (*output_free) (void *data);
|
|
|
|
void (*output_resize) (void *data, int w, int h);
|
|
|
|
void (*output_tile_size_set) (void *data, int w, int h);
|
|
|
|
void (*output_redraws_rect_add) (void *data, int x, int y, int w, int h);
|
|
|
|
void (*output_redraws_rect_del) (void *data, int x, int y, int w, int h);
|
|
|
|
void (*output_redraws_clear) (void *data);
|
|
|
|
void *(*output_redraws_next_update_get) (void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch);
|
|
|
|
void (*output_redraws_next_update_push) (void *data, void *surface, int x, int y, int w, int h);
|
|
|
|
void (*output_flush) (void *data);
|
2007-06-16 19:56:59 -07:00
|
|
|
void (*output_idle_flush) (void *data);
|
2010-04-12 01:23:53 -07:00
|
|
|
void (*output_dump) (void *data);
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
void *(*context_new) (void *data);
|
2009-06-26 06:26:52 -07:00
|
|
|
Eina_Bool (*canvas_alpha_get) (void *data, void *context);
|
2002-11-08 00:02:15 -08:00
|
|
|
void (*context_free) (void *data, void *context);
|
|
|
|
void (*context_clip_set) (void *data, void *context, int x, int y, int w, int h);
|
|
|
|
void (*context_clip_clip) (void *data, void *context, int x, int y, int w, int h);
|
|
|
|
void (*context_clip_unset) (void *data, void *context);
|
|
|
|
int (*context_clip_get) (void *data, void *context, int *x, int *y, int *w, int *h);
|
|
|
|
void (*context_color_set) (void *data, void *context, int r, int g, int b, int a);
|
|
|
|
int (*context_color_get) (void *data, void *context, int *r, int *g, int *b, int *a);
|
|
|
|
void (*context_multiplier_set) (void *data, void *context, int r, int g, int b, int a);
|
|
|
|
void (*context_multiplier_unset) (void *data, void *context);
|
|
|
|
int (*context_multiplier_get) (void *data, void *context, int *r, int *g, int *b, int *a);
|
|
|
|
void (*context_cutout_add) (void *data, void *context, int x, int y, int w, int h);
|
|
|
|
void (*context_cutout_clear) (void *data, void *context);
|
2005-12-03 01:27:53 -08:00
|
|
|
void (*context_anti_alias_set) (void *data, void *context, unsigned char aa);
|
|
|
|
unsigned char (*context_anti_alias_get) (void *data, void *context);
|
|
|
|
void (*context_color_interpolation_set) (void *data, void *context, int color_space);
|
|
|
|
int (*context_color_interpolation_get) (void *data, void *context);
|
2006-05-02 00:28:49 -07:00
|
|
|
void (*context_render_op_set) (void *data, void *context, int render_op);
|
|
|
|
int (*context_render_op_get) (void *data, void *context);
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
void (*rectangle_draw) (void *data, void *context, void *surface, int x, int y, int w, int h);
|
|
|
|
|
|
|
|
void (*line_draw) (void *data, void *context, void *surface, int x1, int y1, int x2, int y2);
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
void *(*polygon_point_add) (void *data, void *context, void *polygon, int x, int y);
|
|
|
|
void *(*polygon_points_clear) (void *data, void *context, void *polygon);
|
2010-03-16 06:23:37 -07:00
|
|
|
void (*polygon_draw) (void *data, void *context, void *surface, void *polygon, int x, int y);
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2006-08-18 07:45:26 -07:00
|
|
|
void *(*image_load) (void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo);
|
2006-12-17 07:48:52 -08:00
|
|
|
void *(*image_new_from_data) (void *data, int w, int h, DATA32 *image_data, int alpha, int cspace);
|
|
|
|
void *(*image_new_from_copied_data) (void *data, int w, int h, DATA32 *image_data, int alpha, int cspace);
|
2002-11-08 00:02:15 -08:00
|
|
|
void (*image_free) (void *data, void *image);
|
|
|
|
void (*image_size_get) (void *data, void *image, int *w, int *h);
|
|
|
|
void *(*image_size_set) (void *data, void *image, int w, int h);
|
2007-07-23 07:22:57 -07:00
|
|
|
void (*image_stride_get) (void *data, void *image, int *stride);
|
2002-11-08 00:02:15 -08:00
|
|
|
void *(*image_dirty_region) (void *data, void *image, int x, int y, int w, int h);
|
|
|
|
void *(*image_data_get) (void *data, void *image, int to_write, DATA32 **image_data);
|
|
|
|
void *(*image_data_put) (void *data, void *image, DATA32 *image_data);
|
2008-09-16 07:52:57 -07:00
|
|
|
void (*image_data_preload_request) (void *data, void *image, const void *target);
|
2009-01-20 06:56:37 -08:00
|
|
|
void (*image_data_preload_cancel) (void *data, void *image, const void *target);
|
2002-11-08 00:02:15 -08:00
|
|
|
void *(*image_alpha_set) (void *data, void *image, int has_alpha);
|
|
|
|
int (*image_alpha_get) (void *data, void *image);
|
2008-11-04 01:19:35 -08:00
|
|
|
void *(*image_border_set) (void *data, void *image, int l, int r, int t, int b);
|
|
|
|
void (*image_border_get) (void *data, void *image, int *l, int *r, int *t, int *b);
|
|
|
|
void (*image_draw) (void *data, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth);
|
2002-11-08 00:02:15 -08:00
|
|
|
char *(*image_comment_get) (void *data, void *image, char *key);
|
|
|
|
char *(*image_format_get) (void *data, void *image);
|
2006-12-09 00:52:08 -08:00
|
|
|
void (*image_colorspace_set) (void *data, void *image, int cspace);
|
|
|
|
int (*image_colorspace_get) (void *data, void *image);
|
2010-08-02 23:09:53 -07:00
|
|
|
void *(*image_native_set) (void *data, void *image, void *native);
|
2006-12-09 00:52:08 -08:00
|
|
|
void *(*image_native_get) (void *data, void *image);
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
void (*image_cache_flush) (void *data);
|
|
|
|
void (*image_cache_set) (void *data, int bytes);
|
|
|
|
int (*image_cache_get) (void *data);
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2006-05-31 11:33:46 -07:00
|
|
|
void *(*font_load) (void *data, const char *name, int size);
|
2004-01-22 18:14:45 -08:00
|
|
|
void *(*font_memory_load) (void *data, char *name, int size, const void *fdata, int fdata_size);
|
2006-05-31 11:33:46 -07:00
|
|
|
void *(*font_add) (void *data, void *font, const char *name, int size);
|
2005-03-20 08:41:49 -08:00
|
|
|
void *(*font_memory_add) (void *data, void *font, char *name, int size, const void *fdata, int fdata_size);
|
2002-11-08 00:02:15 -08:00
|
|
|
void (*font_free) (void *data, void *font);
|
|
|
|
int (*font_ascent_get) (void *data, void *font);
|
|
|
|
int (*font_descent_get) (void *data, void *font);
|
|
|
|
int (*font_max_ascent_get) (void *data, void *font);
|
|
|
|
int (*font_max_descent_get) (void *data, void *font);
|
2010-07-28 05:00:41 -07:00
|
|
|
void (*font_string_size_get) (void *data, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int *w, int *h);
|
|
|
|
int (*font_inset_get) (void *data, void *font, const Eina_Unicode *text);
|
|
|
|
int (*font_h_advance_get) (void *data, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props);
|
|
|
|
int (*font_v_advance_get) (void *data, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props);
|
|
|
|
int (*font_char_coords_get) (void *data, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int pos, int *cx, int *cy, int *cw, int *ch);
|
|
|
|
int (*font_char_at_coords_get) (void *data, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int x, int y, int *cx, int *cy, int *cw, int *ch);
|
|
|
|
void (*font_draw) (void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props);
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
void (*font_cache_flush) (void *data);
|
|
|
|
void (*font_cache_set) (void *data, int bytes);
|
|
|
|
int (*font_cache_get) (void *data);
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2006-02-27 20:07:49 -08:00
|
|
|
/* Engine functions will over time expand from here */
|
2008-05-15 21:55:31 -07:00
|
|
|
|
2006-02-27 20:07:49 -08:00
|
|
|
void (*font_hinting_set) (void *data, void *font, int hinting);
|
|
|
|
int (*font_hinting_can_hint) (void *data, int hinting);
|
2008-05-15 21:55:31 -07:00
|
|
|
|
2006-01-14 12:03:42 -08:00
|
|
|
/* void (*image_rotation_set) (void *data, void *image); */
|
|
|
|
|
2009-05-07 06:29:56 -07:00
|
|
|
void (*image_scale_hint_set) (void *data, void *image, int hint);
|
|
|
|
int (*image_scale_hint_get) (void *data, void *image);
|
2010-07-28 05:00:41 -07:00
|
|
|
int (*font_last_up_to_pos) (void *data, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int x, int y);
|
2009-10-20 09:03:57 -07:00
|
|
|
|
|
|
|
void (*image_map4_draw) (void *data, void *context, void *surface, void *image, RGBA_Map_Point *p, int smooth, int level);
|
2009-10-28 01:59:01 -07:00
|
|
|
void *(*image_map_surface_new) (void *data, int w, int h, int alpha);
|
2009-12-21 07:52:12 -08:00
|
|
|
void (*image_map_surface_free) (void *data, void *surface);
|
2010-08-11 23:11:13 -07:00
|
|
|
|
|
|
|
void (*image_content_hint_set) (void *data, void *surface, int hint);
|
|
|
|
int (*image_content_hint_get) (void *data, void *surface);
|
2002-11-08 00:02:15 -08:00
|
|
|
};
|
|
|
|
|
2006-01-14 12:03:42 -08:00
|
|
|
struct _Evas_Image_Load_Func
|
|
|
|
{
|
2009-12-24 05:15:34 -08:00
|
|
|
Eina_Bool threadable;
|
2009-12-22 15:11:57 -08:00
|
|
|
Eina_Bool (*file_head) (Image_Entry *ie, const char *file, const char *key, int *error);
|
|
|
|
Eina_Bool (*file_data) (Image_Entry *ie, const char *file, const char *key, int *error);
|
2006-01-14 12:03:42 -08:00
|
|
|
};
|
|
|
|
|
2006-01-15 02:35:02 -08:00
|
|
|
struct _Evas_Image_Save_Func
|
|
|
|
{
|
|
|
|
int (*image_save) (RGBA_Image *im, const char *file, const char *key, int quality, int compress);
|
|
|
|
};
|
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2010-04-29 10:35:47 -07:00
|
|
|
Evas_Object *evas_object_new(Evas *e);
|
2002-11-08 00:02:15 -08:00
|
|
|
void evas_object_free(Evas_Object *obj, int clean_layer);
|
|
|
|
void evas_object_inject(Evas_Object *obj, Evas *e);
|
|
|
|
void evas_object_release(Evas_Object *obj, int clean_layer);
|
|
|
|
void evas_object_change(Evas_Object *obj);
|
2009-04-14 05:15:07 -07:00
|
|
|
void evas_object_clip_changes_clean(Evas_Object *obj);
|
2009-04-15 06:40:37 -07:00
|
|
|
void evas_object_render_pre_visible_change(Eina_Array *rects, Evas_Object *obj, int is_v, int was_v);
|
|
|
|
void evas_object_render_pre_clipper_change(Eina_Array *rects, Evas_Object *obj);
|
|
|
|
void evas_object_render_pre_prev_cur_add(Eina_Array *rects, Evas_Object *obj);
|
|
|
|
void evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *obj, int is_v, int was_v);
|
|
|
|
void evas_rects_return_difference_rects(Eina_Array *rects, int x, int y, int w, int h, int xx, int yy, int ww, int hh);
|
2008-05-26 06:08:54 -07:00
|
|
|
|
2005-04-03 07:22:17 -07:00
|
|
|
void evas_object_clip_dirty(Evas_Object *obj);
|
2005-08-31 10:33:32 -07:00
|
|
|
void evas_object_recalc_clippees(Evas_Object *obj);
|
2002-11-08 00:02:15 -08:00
|
|
|
Evas_Layer *evas_layer_new(Evas *e);
|
2003-01-09 21:38:47 -08:00
|
|
|
void evas_layer_pre_free(Evas_Layer *lay);
|
2009-06-20 00:17:40 -07:00
|
|
|
void evas_layer_free_objects(Evas_Layer *lay);
|
2009-06-15 07:25:21 -07:00
|
|
|
void evas_layer_clean(Evas *e);
|
2008-04-30 23:18:21 -07:00
|
|
|
Evas_Layer *evas_layer_find(Evas *e, short layer_num);
|
2002-11-08 00:02:15 -08:00
|
|
|
void evas_layer_add(Evas_Layer *lay);
|
|
|
|
void evas_layer_del(Evas_Layer *lay);
|
2008-05-26 06:08:54 -07:00
|
|
|
|
|
|
|
int evas_object_was_in_output_rect(Evas_Object *obj, int x, int y, int w, int h);
|
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
int evas_object_was_opaque(Evas_Object *obj);
|
2007-07-23 07:22:57 -07:00
|
|
|
int evas_object_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
|
|
|
|
int evas_object_was_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
|
2002-11-08 00:02:15 -08:00
|
|
|
int evas_object_clippers_was_visible(Evas_Object *obj);
|
2010-01-31 20:26:55 -08:00
|
|
|
void evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info);
|
2002-11-08 00:02:15 -08:00
|
|
|
void evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info);
|
2008-10-21 09:31:05 -07:00
|
|
|
Eina_List *evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y);
|
2002-11-23 20:06:08 -08:00
|
|
|
int evas_mem_free(int mem_required);
|
|
|
|
int evas_mem_degrade(int mem_required);
|
2002-11-08 00:02:15 -08:00
|
|
|
void evas_debug_error(void);
|
|
|
|
void evas_debug_input_null(void);
|
|
|
|
void evas_debug_magic_null(void);
|
|
|
|
void evas_debug_magic_wrong(DATA32 expected, DATA32 supplied);
|
2004-01-27 18:43:13 -08:00
|
|
|
void evas_debug_generic(const char *str);
|
2007-05-06 04:29:37 -07:00
|
|
|
const char *evas_debug_magic_string_get(DATA32 magic);
|
2002-11-08 00:02:15 -08:00
|
|
|
void evas_object_smart_use(Evas_Smart *s);
|
2005-05-21 19:49:50 -07:00
|
|
|
void evas_object_smart_unuse(Evas_Smart *s);
|
2010-01-11 06:24:41 -08:00
|
|
|
void evas_smart_cb_descriptions_fix(Evas_Smart_Cb_Description_Array *a) EINA_ARG_NONNULL(1);
|
|
|
|
Eina_Bool evas_smart_cb_descriptions_resize(Evas_Smart_Cb_Description_Array *a, unsigned int size) EINA_ARG_NONNULL(1);
|
|
|
|
const Evas_Smart_Cb_Description *evas_smart_cb_description_find(const Evas_Smart_Cb_Description_Array *a, const char *name) EINA_ARG_NONNULL(1, 2) EINA_PURE;
|
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
void evas_object_smart_del(Evas_Object *obj);
|
|
|
|
void evas_object_smart_cleanup(Evas_Object *obj);
|
2008-04-30 22:48:03 -07:00
|
|
|
void evas_object_smart_member_raise(Evas_Object *member);
|
|
|
|
void evas_object_smart_member_lower(Evas_Object *member);
|
|
|
|
void evas_object_smart_member_stack_above(Evas_Object *member, Evas_Object *other);
|
|
|
|
void evas_object_smart_member_stack_below(Evas_Object *member, Evas_Object *other);
|
2008-10-17 04:23:18 -07:00
|
|
|
const Eina_Inlist *evas_object_smart_members_get_direct(const Evas_Object *obj);
|
2008-09-06 18:25:49 -07:00
|
|
|
void evas_call_smarts_calculate(Evas *e);
|
2002-11-23 20:06:08 -08:00
|
|
|
void *evas_mem_calloc(int size);
|
2010-05-04 08:58:10 -07:00
|
|
|
void _evas_post_event_callback_call(Evas *e);
|
|
|
|
void _evas_post_event_callback_free(Evas *e);
|
2010-01-31 20:26:55 -08:00
|
|
|
void evas_event_callback_list_post_free(Eina_Inlist **list);
|
2007-02-21 13:43:45 -08:00
|
|
|
void evas_object_event_callback_all_del(Evas_Object *obj);
|
2005-05-21 19:49:50 -07:00
|
|
|
void evas_object_event_callback_cleanup(Evas_Object *obj);
|
2010-03-28 22:03:25 -07:00
|
|
|
void evas_event_callback_all_del(Evas *e);
|
2010-03-28 19:40:49 -07:00
|
|
|
void evas_event_callback_cleanup(Evas *e);
|
2002-12-09 22:45:18 -08:00
|
|
|
void evas_object_inform_call_show(Evas_Object *obj);
|
|
|
|
void evas_object_inform_call_hide(Evas_Object *obj);
|
|
|
|
void evas_object_inform_call_move(Evas_Object *obj);
|
|
|
|
void evas_object_inform_call_resize(Evas_Object *obj);
|
|
|
|
void evas_object_inform_call_restack(Evas_Object *obj);
|
2008-04-11 16:12:20 -07:00
|
|
|
void evas_object_inform_call_changed_size_hints(Evas_Object *obj);
|
2008-12-19 13:56:31 -08:00
|
|
|
void evas_object_inform_call_image_preloaded(Evas_Object *obj);
|
2002-12-14 16:33:57 -08:00
|
|
|
void evas_object_intercept_cleanup(Evas_Object *obj);
|
|
|
|
int evas_object_intercept_call_show(Evas_Object *obj);
|
|
|
|
int evas_object_intercept_call_hide(Evas_Object *obj);
|
2003-10-17 20:34:00 -07:00
|
|
|
int evas_object_intercept_call_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
|
|
|
|
int evas_object_intercept_call_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
|
2002-12-14 16:33:57 -08:00
|
|
|
int evas_object_intercept_call_raise(Evas_Object *obj);
|
|
|
|
int evas_object_intercept_call_lower(Evas_Object *obj);
|
|
|
|
int evas_object_intercept_call_stack_above(Evas_Object *obj, Evas_Object *above);
|
|
|
|
int evas_object_intercept_call_stack_below(Evas_Object *obj, Evas_Object *below);
|
|
|
|
int evas_object_intercept_call_layer_set(Evas_Object *obj, int l);
|
2007-08-22 09:45:37 -07:00
|
|
|
int evas_object_intercept_call_color_set(Evas_Object *obj, int r, int g, int b, int a);
|
|
|
|
int evas_object_intercept_call_clip_set(Evas_Object *obj, Evas_Object *clip);
|
|
|
|
int evas_object_intercept_call_clip_unset(Evas_Object *obj);
|
2003-01-05 04:55:37 -08:00
|
|
|
void evas_object_grabs_cleanup(Evas_Object *obj);
|
2003-07-07 23:08:26 -07:00
|
|
|
void evas_key_grab_free(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers);
|
2005-01-08 02:02:18 -08:00
|
|
|
void evas_font_dir_cache_free(void);
|
2006-05-31 11:33:46 -07:00
|
|
|
const char *evas_font_dir_cache_find(char *dir, char *font);
|
2008-10-21 09:31:05 -07:00
|
|
|
Eina_List *evas_font_dir_available_list(const Evas* evas);
|
|
|
|
void evas_font_dir_available_list_free(Eina_List *available);
|
2005-03-31 23:14:16 -08:00
|
|
|
void evas_font_free(Evas *evas, void *font);
|
2008-10-31 03:46:46 -07:00
|
|
|
void evas_fonts_zero_free(Evas *evas);
|
2009-06-15 07:37:14 -07:00
|
|
|
void evas_fonts_zero_presure(Evas *evas);
|
2005-05-21 20:02:15 -07:00
|
|
|
void *evas_font_load(Evas *evas, const char *name, const char *source, int size);
|
2008-05-15 21:55:31 -07:00
|
|
|
void evas_font_load_hinting_set(Evas *evas, void *font, int hinting);
|
2005-07-22 03:28:11 -07:00
|
|
|
void evas_object_smart_member_cache_invalidate(Evas_Object *obj);
|
2005-11-26 00:04:20 -08:00
|
|
|
void evas_text_style_pad_get(Evas_Text_Style_Type style, int *l, int *r, int *t, int *b);
|
2006-02-28 19:48:03 -08:00
|
|
|
void _evas_object_text_rehint(Evas_Object *obj);
|
|
|
|
void _evas_object_textblock_rehint(Evas_Object *obj);
|
2008-05-15 21:55:31 -07:00
|
|
|
|
2002-11-23 20:06:08 -08:00
|
|
|
extern int _evas_alloc_error;
|
2010-03-04 06:48:21 -08:00
|
|
|
extern int _evas_event_counter;
|
2004-04-20 23:38:24 -07:00
|
|
|
|
|
|
|
struct _Evas_Imaging_Image
|
|
|
|
{
|
|
|
|
RGBA_Image *image;
|
|
|
|
};
|
|
|
|
|
2004-04-22 04:29:34 -07:00
|
|
|
struct _Evas_Imaging_Font
|
2004-04-20 23:38:24 -07:00
|
|
|
{
|
|
|
|
RGBA_Font *font;
|
|
|
|
};
|
2005-05-21 19:49:50 -07:00
|
|
|
|
2008-04-30 05:21:31 -07:00
|
|
|
int evas_async_events_init(void);
|
|
|
|
int evas_async_events_shutdown(void);
|
2009-09-27 20:51:21 -07:00
|
|
|
int evas_async_target_del(const void *target);
|
2009-12-18 03:03:31 -08:00
|
|
|
|
|
|
|
void _evas_preload_thread_init(void);
|
|
|
|
void _evas_preload_thread_shutdown(void);
|
|
|
|
Evas_Preload_Pthread *evas_preload_thread_run(void (*func_heavy)(void *data),
|
|
|
|
void (*func_end)(void *data),
|
|
|
|
void (*func_cancel)(void *data),
|
|
|
|
const void *data);
|
|
|
|
Eina_Bool evas_preload_thread_cancel(Evas_Preload_Pthread *thread);
|
|
|
|
|
2007-04-29 21:22:42 -07:00
|
|
|
void _evas_walk(Evas *e);
|
|
|
|
void _evas_unwalk(Evas *e);
|
2008-05-15 21:55:31 -07:00
|
|
|
|
2006-09-06 00:33:40 -07:00
|
|
|
EAPI int _evas_module_engine_inherit(Evas_Func *funcs, char *name);
|
2008-05-15 21:55:31 -07:00
|
|
|
|
2008-05-26 06:17:12 -07:00
|
|
|
void evas_render_invalidate(Evas *e);
|
|
|
|
void evas_render_object_recalc(Evas_Object *obj);
|
|
|
|
|
2009-11-05 07:24:48 -08:00
|
|
|
Eina_Bool evas_map_inside_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y);
|
|
|
|
Eina_Bool evas_map_coords_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y, Evas_Coord *mx, Evas_Coord *my, int grab);
|
|
|
|
|
2008-05-26 06:17:12 -07:00
|
|
|
#define EVAS_API_OVERRIDE(func, api, prefix) \
|
2006-03-02 00:06:10 -08:00
|
|
|
(api)->func = prefix##func
|
2008-05-26 06:17:12 -07:00
|
|
|
|
|
|
|
#include "evas_inline.x"
|
|
|
|
|
2002-11-08 00:02:15 -08:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
2006-03-02 04:48:11 -08:00
|
|
|
#endif
|