summaryrefslogtreecommitdiff
path: root/ecore/src/Ecore.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--ecore/src/Ecore.h916
1 files changed, 916 insertions, 0 deletions
diff --git a/ecore/src/Ecore.h b/ecore/src/Ecore.h
new file mode 100644
index 0000000..9bdd679
--- /dev/null
+++ b/ecore/src/Ecore.h
@@ -0,0 +1,916 @@
+#ifndef E_CORE_H
+#define E_CORE_H 1
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <signal.h>
+
+#define XK_MISCELLANY 1
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <X11/Xresource.h>
+#include <X11/keysymdef.h>
+#include <X11/extensions/XShm.h>
+#include <X11/extensions/shape.h>
+#ifdef WITH_DMALLOC
+#include <dmalloc.h>
+#endif
+
+#define XEV_NONE NoEventMask
+#define XEV_KEY KeyPressMask | KeyReleaseMask
+#define XEV_BUTTON ButtonPressMask | ButtonReleaseMask
+#define XEV_KEY_PRESS KeyPressMask
+#define XEV_KEY_RELEASE KeyReleaseMask
+#define XEV_BUTTON_PRESS ButtonPressMask
+#define XEV_BUTTON_RELEASE ButtonReleaseMask
+#define XEV_IN_OUT EnterWindowMask | LeaveWindowMask
+#define XEV_MOUSE_MOVE PointerMotionMask | ButtonMotionMask
+#define XEV_EXPOSE ExposureMask
+#define XEV_VISIBILITY VisibilityChangeMask
+#define XEV_CONFIGURE StructureNotifyMask
+#define XEV_CHILD_CHANGE SubstructureNotifyMask
+#define XEV_CHILD_REDIRECT SubstructureRedirectMask | ResizeRedirectMask
+#define XEV_FOCUS FocusChangeMask
+#define XEV_PROPERTY PropertyChangeMask
+#define XEV_COLORMAP ColormapChangeMask
+
+
+#define ECORE_ATOM(atom, name) \
+ if (!atom) (atom) = ecore_atom_get(name);
+#define MEMCPY(src, dst, type, num) \
+ memcpy(dst, src, sizeof(type) * (num))
+#define NEW(type, num) \
+ malloc(sizeof(type) * (num))
+#define ZERO(ptr, type, num) \
+ memset((ptr), 0, sizeof(type) * (num))
+#define NEW_PTR(num) \
+ malloc(sizeof(void *) * (num))
+#define FREE(ptr) \
+ { \
+ free(ptr); \
+ (ptr) = NULL; \
+ }
+#define IF_FREE(ptr) \
+ {if (ptr) FREE(ptr);}
+#define REALLOC(ptr, type, num) \
+ { \
+ if ((ptr) && (num == 0)) {free(ptr); ptr = NULL;} \
+ else if (ptr) ptr = realloc((ptr), sizeof(type) * (num)); \
+ else ptr = malloc(sizeof(type) * (num)); \
+ }
+#define REALLOC_PTR(ptr, num) \
+ { \
+ if ((ptr) && (num == 0)) {free(ptr); ptr = NULL;} \
+ else if (ptr) ptr = realloc(ptr, sizeof(void *) * (num)); \
+ else ptr = malloc(sizeof(void *) * (num)); \
+ }
+
+#define START_LIST_DEL(type, base, cmp) \
+ type *_p, *_pp; _pp = NULL; \
+ _p = (base); \
+ while(_p) \
+ { \
+ if (cmp) \
+ { \
+ if (_pp) _pp->next = _p->next; \
+ else (base) = _p->next;
+#define END_LIST_DEL \
+ return; \
+ } \
+ _pp = _p; \
+ _p = _p->next; \
+ }
+
+#define DND_TYPE_URI_LIST 0
+#define DND_TYPE_PLAIN_TEXT 1
+#define DND_TYPE_MOZ_URL 2
+#define DND_TYPE_NETSCAPE_URL 3
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ extern XContext xid_context;
+
+ typedef void (*Ecore_Error_Function) (Display * d, XErrorEvent * ev);
+
+ typedef struct _ecore_keygrab Ecore_KeyGrab;
+
+ typedef enum _ecore_ev_modifiers
+ {
+ ECORE_EVENT_KEY_MODIFIER_NONE = 0,
+ ECORE_EVENT_KEY_MODIFIER_SHIFT = (1 << 0),
+ ECORE_EVENT_KEY_MODIFIER_CTRL = (1 << 1),
+ ECORE_EVENT_KEY_MODIFIER_ALT = (1 << 2),
+ ECORE_EVENT_KEY_MODIFIER_WIN = (1 << 3)
+ } Ecore_Event_Key_Modifiers;
+
+ typedef enum _ecore_event_stack_detail
+ {
+ ECORE_EVENT_STACK_ABOVE = Above,
+ ECORE_EVENT_STACK_BELOW = Below,
+ ECORE_EVENT_STACK_TOP_IF = TopIf,
+ ECORE_EVENT_STACK_BOTTOM_IF = BottomIf,
+ ECORE_EVENT_STACK_OPPOSITE = Opposite
+ } Ecore_Event_Stack_Detail;
+
+ typedef enum _ecore_event_value_mask
+ {
+ ECORE_EVENT_VALUE_X = CWX,
+ ECORE_EVENT_VALUE_Y = CWY,
+ ECORE_EVENT_VALUE_W = CWWidth,
+ ECORE_EVENT_VALUE_H = CWHeight,
+ ECORE_EVENT_VALUE_BORDER = CWBorderWidth,
+ ECORE_EVENT_VALUE_SIBLING = CWSibling,
+ ECORE_EVENT_VALUE_STACKING = CWStackMode
+ } Ecore_Event_Value_Mask;
+
+ typedef enum _ecore_event_type
+ {
+ ECORE_EVENT_MOUSE_MOVE,
+ ECORE_EVENT_MOUSE_DOWN,
+ ECORE_EVENT_MOUSE_UP,
+ ECORE_EVENT_MOUSE_IN,
+ ECORE_EVENT_MOUSE_OUT,
+ ECORE_EVENT_MOUSE_WHEEL,
+ ECORE_EVENT_KEY_DOWN,
+ ECORE_EVENT_KEY_UP,
+ ECORE_EVENT_WINDOW_MAP,
+ ECORE_EVENT_WINDOW_UNMAP,
+ ECORE_EVENT_WINDOW_CREATE,
+ ECORE_EVENT_WINDOW_DESTROY,
+ ECORE_EVENT_WINDOW_CONFIGURE,
+ ECORE_EVENT_WINDOW_CONFIGURE_REQUEST,
+ ECORE_EVENT_WINDOW_MAP_REQUEST,
+ ECORE_EVENT_WINDOW_PROPERTY,
+ ECORE_EVENT_WINDOW_CIRCULATE,
+ ECORE_EVENT_WINDOW_CIRCULATE_REQUEST,
+ ECORE_EVENT_WINDOW_REPARENT,
+ ECORE_EVENT_WINDOW_EXPOSE,
+ ECORE_EVENT_WINDOW_VISIBILITY,
+ ECORE_EVENT_WINDOW_SHAPE,
+ ECORE_EVENT_WINDOW_FOCUS_IN,
+ ECORE_EVENT_WINDOW_FOCUS_OUT,
+ ECORE_EVENT_MESSAGE,
+ ECORE_EVENT_WINDOW_DELETE,
+ ECORE_EVENT_COLORMAP,
+
+ ECORE_EVENT_DND_DROP_REQUEST,
+ ECORE_EVENT_DND_DROP_END,
+ ECORE_EVENT_DND_DROP_POSITION,
+ ECORE_EVENT_DND_DROP,
+ ECORE_EVENT_DND_DROP_STATUS,
+ ECORE_EVENT_DND_DATA_REQUEST,
+ ECORE_EVENT_PASTE_REQUEST,
+ ECORE_EVENT_CLEAR_SELECTION,
+
+ ECORE_EVENT_CHILD,
+ ECORE_EVENT_USER,
+
+ ECORE_EVENT_MAX
+ } Ecore_Event_Type;
+
+ typedef struct _ecore_event
+ {
+ Ecore_Event_Type type;
+ char ignore;
+ void *event;
+ void (*ev_free) (void *evnt);
+ struct _ecore_event *next;
+ } Ecore_Event;
+
+ typedef struct _ecore_event_fd_handler
+ {
+ int fd;
+ void (*func) (int fd);
+ struct _ecore_event_fd_handler *next;
+ } Ecore_Event_Fd_Handler;
+
+ typedef struct _ecore_event_pid_handler
+ {
+ pid_t pid;
+ void (*func) (pid_t pid);
+ struct _ecore_event_pid_handler *next;
+ } Ecore_Event_Pid_Handler;
+
+ typedef struct _ecore_event_ipc_handler
+ {
+ int ipc;
+ void (*func) (int ipc);
+ struct _ecore_event_ipc_handler *next;
+ } Ecore_Event_Ipc_Handler;
+
+ typedef struct _ecore_event_timer
+ {
+ char *name;
+ void (*func) (int val, void *data);
+ int val;
+ void *data;
+ double in;
+ char just_added;
+ struct _ecore_event_timer *next;
+ } Ecore_Event_Timer;
+
+ typedef struct _ecore_event_key_down
+ {
+ Window win, root;
+ Ecore_Event_Key_Modifiers mods;
+ char *key;
+ char *compose;
+ Time time;
+ } Ecore_Event_Key_Down;
+
+ typedef struct _ecore_event_key_up
+ {
+ Window win, root;
+ Ecore_Event_Key_Modifiers mods;
+ char *key;
+ char *compose;
+ Time time;
+ } Ecore_Event_Key_Up;
+
+ typedef struct _ecore_event_mouse_down
+ {
+ Window win, root;
+ Ecore_Event_Key_Modifiers mods;
+ int button;
+ int x, y;
+ int rx, ry;
+ int double_click, triple_click;
+ Time time;
+ } Ecore_Event_Mouse_Down;
+
+ typedef struct _ecore_event_mouse_up
+ {
+ Window win, root;
+ Ecore_Event_Key_Modifiers mods;
+ int button;
+ int x, y;
+ int rx, ry;
+ Time time;
+ } Ecore_Event_Mouse_Up;
+
+ typedef struct _ecore_event_wheel
+ {
+ Window win, root;
+ Ecore_Event_Key_Modifiers mods;
+ int x, y, z;
+ int rx, ry;
+ Time time;
+ } Ecore_Event_Wheel;
+
+ typedef struct _ecore_event_mouse_move
+ {
+ Window win, root;
+ Ecore_Event_Key_Modifiers mods;
+ int x, y;
+ int rx, ry;
+ Time time;
+ } Ecore_Event_Mouse_Move;
+
+ typedef struct _ecore_event_window_enter
+ {
+ Window win, root;
+ int x, y;
+ int rx, ry;
+ Ecore_Event_Key_Modifiers mods;
+ Time time;
+ } Ecore_Event_Window_Enter;
+
+ typedef struct _ecore_event_window_leave
+ {
+ Window win, root;
+ int x, y;
+ int rx, ry;
+ Ecore_Event_Key_Modifiers mods;
+ Time time;
+ } Ecore_Event_Window_Leave;
+
+ typedef struct _ecore_event_window_focus_in
+ {
+ Window win, root;
+ int key_grab;
+ Time time;
+ } Ecore_Event_Window_Focus_In;
+
+ typedef struct _ecore_event_window_focus_out
+ {
+ Window win, root;
+ int key_grab;
+ Time time;
+ } Ecore_Event_Window_Focus_Out;
+
+ typedef struct _ecore_event_window_expose
+ {
+ Window win, root;
+ int x, y, w, h;
+ } Ecore_Event_Window_Expose;
+
+ typedef struct _ecore_event_window_visibility
+ {
+ Window win, root;
+ int fully_obscured;
+ } Ecore_Event_Window_Visibility;
+
+ typedef struct _ecore_event_window_create
+ {
+ Window win, root;
+ int override;
+ } Ecore_Event_Window_Create;
+
+ typedef struct _ecore_event_window_destroy
+ {
+ Window win, root;
+ } Ecore_Event_Window_Destroy;
+
+ typedef struct _ecore_event_window_map
+ {
+ Window win, root;
+ } Ecore_Event_Window_Map;
+
+ typedef struct _ecore_event_window_unmap
+ {
+ Window win, root;
+ } Ecore_Event_Window_Unmap;
+
+ typedef struct _ecore_event_window_map_request
+ {
+ Window win, root;
+ } Ecore_Event_Window_Map_Request;
+
+ typedef struct _ecore_event_window_reparent
+ {
+ Window win, root;
+ Window parent_from, parent;
+ } Ecore_Event_Window_Reparent;
+
+ typedef struct _ecore_event_window_configure
+ {
+ Window win, root;
+ int x, y, w, h;
+ int wm_generated;
+ } Ecore_Event_Window_Configure;
+
+ typedef struct _ecore_event_window_configure_request
+ {
+ Window win, root;
+ int x, y, w, h;
+ int border;
+ Window stack_win;
+ Ecore_Event_Stack_Detail detail;
+ Ecore_Event_Value_Mask mask;
+ } Ecore_Event_Window_Configure_Request;
+
+ typedef struct _ecore_event_window_circulate
+ {
+ Window win, root;
+ int lower;
+ } Ecore_Event_Window_Circulate;
+
+ typedef struct _ecore_event_window_circulate_request
+ {
+ Window win, root;
+ int lower;
+ } Ecore_Event_Window_Circulate_Request;
+
+ typedef struct _ecore_event_window_property
+ {
+ Window win, root;
+ Atom atom;
+ Time time;
+ } Ecore_Event_Window_Property;
+
+ typedef struct _ecore_event_window_shape
+ {
+ Window win, root;
+ Time time;
+ } Ecore_Event_Window_Shape;
+
+ typedef struct _ecore_event_message
+ {
+ Window win;
+ int format;
+ Atom atom;
+ union
+ {
+ char b[20];
+ short s[10];
+ long l[5];
+ }
+ data;
+ } Ecore_Event_Message;
+
+ typedef struct _ecore_event_colormap
+ {
+ Window win, root;
+ Colormap cmap;
+ int installed;
+ } Ecore_Event_Colormap;
+
+ typedef struct _ecore_event_window_delete
+ {
+ Window win, root;
+ } Ecore_Event_Window_Delete;
+
+ typedef struct _ecore_event_paste_request
+ {
+ Window win, root, source_win;
+ char *string;
+ } Ecore_Event_Paste_Request;
+
+ typedef struct _ecore_event_clear_selection
+ {
+ Window win, root;
+ Atom selection;
+ } Ecore_Event_Clear_Selection;
+
+ typedef struct _ecore_event_dnd_drop_request
+ {
+ Window win, root, source_win;
+ int num_files;
+ char **files;
+ int copy, link, move;
+ } Ecore_Event_Dnd_Drop_Request;
+
+ typedef struct _ecore_event_dnd_drop_end
+ {
+ Window win, root, source_win;
+ } Ecore_Event_Dnd_Drop_End;
+
+ typedef struct _ecore_event_dnd_drop_position
+ {
+ Window win, root, source_win;
+ int x, y;
+ } Ecore_Event_Dnd_Drop_Position;
+
+ typedef struct _ecore_event_dnd_drop
+ {
+ Window win, root, source_win;
+ } Ecore_Event_Dnd_Drop;
+
+ typedef struct _ecore_event_dnd_drop_status
+ {
+ Window win, root, source_win;
+ int x, y, w, h;
+ int copy, link, move, e_private;
+ int all_position_msgs;
+ int ok;
+ } Ecore_Event_Dnd_Drop_Status;
+
+ typedef struct _ecore_event_dnd_data_request
+ {
+ Window win, root, source_win;
+ Atom destination_atom;
+ int plain_text;
+ int uri_list;
+ int moz_url;
+ int netscape_url;
+ } Ecore_Event_Dnd_Data_Request;
+
+ typedef struct _ecore_event_child
+ {
+ pid_t pid;
+ int exit_code;
+ } Ecore_Event_Child;
+
+ typedef struct _ecore_event_user
+ {
+ int num;
+ int hup;
+ } Ecore_Event_User;
+
+ typedef struct _ecore_event_ipc_service
+ {
+ int service;
+ void (*func) (int fd);
+ struct _ecore_event_ipc_service *next;
+ } Ecore_Event_Ipc_Service;
+
+
+ typedef struct _ecore_xid
+ {
+ Window win;
+ Window parent;
+ Window root;
+ int children_num;
+ Window *children;
+ int x, y, w, h;
+ int mapped;
+ int mouse_in;
+ int depth;
+ int gravity;
+ int coords_invalid;
+ int bw;
+ int (*grab_button_auto_replay) (Ecore_Event_Mouse_Down *ev);
+ } Ecore_XID;
+
+
+ /* ---------------- API CALLS BELOW --------------------*/
+
+ /* ---------------- X WRAPPER CALLS */
+
+ int ecore_x_get_fd(void);
+ void ecore_set_error_handler(Ecore_Error_Function func);
+ void ecore_reset_error_handler(void);
+
+ /**
+ * ecore_display_init - Establishes a connection to the X server
+ * @display: The name of the display to connect to
+ *
+ * This function creates a connection to the X server. If
+ * @display is NULL, the name is taken from the $DISPLAY
+ * environment variable.
+ */
+ int ecore_display_init(char *display);
+
+ int ecore_events_pending(void);
+ void ecore_get_next_event(XEvent * event);
+ int ecore_event_shape_get_id(void);
+ void ecore_sync(void);
+ void ecore_flush(void);
+
+ /* ---------------- WINDOW CHILD HANDLING */
+
+ void ecore_del_child(Window win, Window child);
+ void ecore_add_child(Window win, Window child);
+ void ecore_raise_child(Window win, Window child);
+ void ecore_lower_child(Window win, Window child);
+ Ecore_XID *ecore_add_xid(Window win, int x, int y, int w, int h,
+ int depth, Window parent);
+ Ecore_XID *ecore_validate_xid(Window win);
+ void ecore_unvalidate_xid(Window win);
+
+ /* ---------------- WINDOWS-RELATED CALLS */
+
+ Window ecore_window_new(Window parent, int x, int y, int w,
+ int h);
+ Window ecore_window_override_new(Window parent, int x, int y,
+ int w, int h);
+ Window ecore_window_input_new(Window parent, int x, int y, int w,
+ int h);
+ void ecore_window_set_events_propagate(Window win,
+ int propagate);
+ void ecore_window_show(Window win);
+ void ecore_window_hide(Window win);
+ void ecore_window_set_background_pixmap(Window win,
+ Pixmap pmap);
+ void ecore_window_set_shape_mask(Window win, Pixmap mask);
+ void ecore_window_add_shape_mask(Window win, Pixmap mask);
+ void ecore_window_set_shape_window(Window win, Window src,
+ int x, int y);
+ void ecore_window_add_shape_window(Window win, Window src,
+ int x, int y);
+ void ecore_window_set_shape_rectangle(Window win, int x, int y,
+ int w, int h);
+ void ecore_window_add_shape_rectangle(Window win, int x, int y,
+ int w, int h);
+ void ecore_window_set_shape_rectangles(Window win,
+ XRectangle * rect,
+ int num);
+ void ecore_window_add_shape_rectangles(Window win,
+ XRectangle * rect,
+ int num);
+ void ecore_window_clip_shape_by_rectangle(Window win, int x,
+ int y, int w, int h);
+ XRectangle *ecore_window_get_shape_rectangles(Window win, int *num);
+ void ecore_window_select_shape_events(Window win);
+ void ecore_window_unselect_shape_events(Window win);
+ void ecore_window_clear(Window win);
+ void ecore_window_clear_area(Window win, int x, int y, int w,
+ int h);
+ void ecore_window_set_events(Window win, long mask);
+ void ecore_window_remove_events(Window win, long mask);
+ void ecore_window_add_events(Window win, long mask);
+ void ecore_window_move(Window win, int x, int y);
+ void ecore_window_resize(Window win, int w, int h);
+ void ecore_window_move_resize(Window win, int x, int y, int w,
+ int h);
+ void ecore_window_destroy(Window win);
+ void ecore_window_reparent(Window win, Window parent, int x,
+ int y);
+ void ecore_window_raise(Window win);
+ void ecore_window_lower(Window win);
+ void ecore_window_get_geometry(Window win, int *x, int *y,
+ int *w, int *h);
+ int ecore_window_get_depth(Window win);
+ int ecore_window_exists(Window win);
+ Window ecore_window_get_parent(Window win);
+ Window *ecore_window_get_children(Window win, int *num);
+ int ecore_window_mouse_in(Window win);
+ void ecore_window_mouse_set_in(Window win, int in);
+ Window ecore_window_get_root(Window win);
+ void ecore_window_set_delete_inform(Window win);
+ void ecore_window_property_set(Window win, Atom type,
+ Atom format, int size,
+ void *data, int number);
+ void *ecore_window_property_get(Window win, Atom type,
+ Atom format, int *size);
+ void ecore_window_dnd_advertise(Window win);
+ void ecore_window_ignore(Window win);
+ void ecore_window_no_ignore(Window win);
+ int ecore_window_is_ignored(Window win);
+ Window ecore_window_get_at_xy(int x, int y);
+
+ int ecore_window_dnd_capable(Window win);
+ void ecore_window_dnd_handle_motion(Window source_win, int x,
+ int y, int dragging);
+ void ecore_window_dnd_ok(int ok);
+ void ecore_window_dnd_finished(void);
+ void ecore_window_dnd_send_status_ok(Window source_win,
+ Window win, int x, int y,
+ int w, int h);
+ void ecore_window_dnd_send_finished(Window source_win,
+ Window win);
+ void ecore_window_set_title(Window win, char *title);
+ void ecore_window_set_name_class(Window win, char *name,
+ char *);
+ void ecore_window_get_name_class(Window win, char **name,
+ char **name_class);
+ char *ecore_window_get_machine(Window win);
+ char *ecore_window_get_command(Window win);
+ char *ecore_window_get_icon_name(Window win);
+ void ecore_window_get_hints(Window win, int *accepts_focus,
+ int *initial_state,
+ Pixmap * icon_pixmap,
+ Pixmap * icon_mask,
+ Window * icon_window,
+ Window * window_group);
+ void ecore_window_set_min_size(Window win, int w, int h);
+ void ecore_window_set_max_size(Window win, int w, int h);
+ void ecore_window_set_xy_hints(Window win, int x, int y);
+ void ecore_window_get_frame_size(Window win, int *l, int *r,
+ int *t, int *b);
+ int ecore_window_save_under(Window win);
+ void ecore_window_hint_set_layer(Window win, int layer);
+ void ecore_window_hint_set_sticky(Window win, int sticky);
+ void ecore_window_hint_set_borderless(Window win);
+ int ecore_window_get_gravity(Window win);
+ void ecore_window_gravity_reset(Window win);
+ void ecore_window_gravity_set(Window win, int gravity);
+ void ecore_window_bit_gravity_set(Window win, int gravity);
+ void ecore_window_get_root_relative_location(Window win,
+ int *x, int *y);
+ void ecore_window_send_event_move_resize(Window win, int x,
+ int y, int w, int h);
+ void ecore_window_send_client_message(Window win, Atom type,
+ int format, void *data);
+ void ecore_window_add_to_save_set(Window win);
+ void ecore_window_del_from_save_set(Window win);
+ void ecore_window_kill_client(Window win);
+ void ecore_window_set_border_width(Window win, int bw);
+ int ecore_window_get_border_width(Window win);
+ int ecore_window_get_wm_size_hints(Window win,
+ XSizeHints * hints,
+ int *mask);
+ int ecore_window_is_visible(Window win);
+ int ecore_window_is_normal(Window win);
+
+ /**
+ * ecore_window_is_manageable - Returns 1 if a window can be managed by the wm.
+ * @win: the window for which to query.
+ *
+ * This function returns 0 if the window is unmapped, should be ignored
+ * by the window manager or is of the InputOnly class, 1 otherwise.
+ */
+ int ecore_window_is_manageable(Window win);
+
+ void ecore_windows_restack(Window * wins, int num);
+ void ecore_window_stack_above(Window win, Window above);
+ void ecore_window_stack_below(Window win, Window below);
+ char *ecore_window_get_title(Window win);
+ void ecore_window_button_grab_auto_replay_set(Window win,
+ int (*func) (Ecore_Event_Mouse_Down *ev));
+ void *ecore_window_button_grab_auto_replay_get(Window win);
+ Window ecore_window_root(void);
+ void ecore_window_get_virtual_area(Window win, int *area_x,
+ int *area_y);
+
+ /* ---------------- PIXMAP CALLS */
+
+ Pixmap ecore_pixmap_new(Window win, int w, int h, int dep);
+ void ecore_pixmap_free(Pixmap pmap);
+
+ /* ---------------- POINTER CALLS */
+
+ void ecore_pointer_xy(Window win, int *x, int *y);
+ void ecore_pointer_xy_set(int x, int y);
+ void ecore_pointer_xy_get(int *x, int *y);
+ void ecore_pointer_warp_by(int dx, int dy);
+ void ecore_pointer_warp_to(int x, int y);
+ void ecore_pointer_replay(Time t);
+ void ecore_pointer_grab(Window win, Time t);
+ void ecore_pointer_ungrab(Time t);
+
+ /* ---------------- KEYBOARD-RELATED CALLS */
+
+ KeySym ecore_key_get_keysym_from_keycode(KeyCode keycode);
+ char *ecore_key_get_string_from_keycode(KeyCode keycode);
+ void ecore_key_grab(char *key, Ecore_Event_Key_Modifiers mods,
+ int anymod, int sync);
+ void ecore_key_ungrab(char *key,
+ Ecore_Event_Key_Modifiers mods,
+ int anymod);
+ KeyCode ecore_key_get_keycode(char *key);
+ char *ecore_keypress_translate_into_typeable(Ecore_Event_Key_Down * e);
+
+ void ecore_event_allow(int mode, Time t);
+
+ /* ---------------- LOCKS AND MODIFIER CALLS */
+
+ int ecore_lock_mask_scroll_get(void);
+ int ecore_lock_mask_num_get(void);
+ int ecore_lock_mask_caps_get(void);
+ void ecore_lock_scroll_set(int onoff);
+ int ecore_lock_scroll_get(void);
+ void ecore_lock_num_set(int onoff);
+ int ecore_lock_num_get(void);
+ void ecore_lock_caps_set(int onoff);
+ int ecore_lock_caps_get(void);
+
+ int ecore_mod_mask_shift_get(void);
+ int ecore_mod_mask_ctrl_get(void);
+ int ecore_mod_mask_alt_get(void);
+ int ecore_mod_mask_win_get(void);
+ void ecore_mod_shift_set(int onoff);
+ int ecore_mod_shift_get(void);
+ void ecore_mod_ctrl_set(int onoff);
+ int ecore_mod_ctrl_get(void);
+ void ecore_mod_alt_set(int onoff);
+ int ecore_mod_alt_get(void);
+ void ecore_mod_win_set(int onoff);
+ int ecore_mod_win_get(void);
+
+ int ecore_lock_mask_get(void);
+ int ecore_modifier_mask_get(void);
+ Window ecore_get_key_grab_win(void);
+ Display *ecore_display_get(void);
+ void ecore_focus_window_set(Window win);
+ Window ecore_focus_window_get(void);
+ void ecore_focus_to_window(Window win);
+ void ecore_focus_mode_reset(void);
+ Atom ecore_atom_get(char *name);
+
+
+ /* ---------------- GRABBING/UNGRABBING CALLS */
+
+ /**
+ * ecore_grab - Grabs the X server connection
+ *
+ * This function wraps XGrabServer, which prevents all other
+ * clients from receiving events. Calls are reference-counted.
+ */
+ void ecore_grab(void);
+
+ /**
+ * ecore_ungrab - Ungrabs the X server connection
+ *
+ * This function releases the server, provided that ecore_grab()
+ * has been called the same number of times as ecore_ungrab().
+ */
+ void ecore_ungrab(void);
+
+ void ecore_grab_mouse(Window win, int confine, Cursor cursor);
+ void ecore_ungrab_mouse(void);
+ Window ecore_grab_window_get(void);
+
+ void ecore_button_grab(Window win, int button, int events,
+ Ecore_Event_Key_Modifiers mod,
+ int any_mod);
+ void ecore_button_ungrab(Window win, int button,
+ Ecore_Event_Key_Modifiers mod,
+ int any_mod);
+ void ecore_keyboard_grab(Window win);
+ void ecore_keyboard_ungrab(void);
+ Window ecore_keyboard_grab_window_get(void);
+
+
+ /* ----------------- GRAPHICS CONTEXT AND DRAWING CALLS */
+
+ GC ecore_gc_new(Drawable d);
+ void ecore_gc_free(GC gc);
+ void ecore_gc_set_fg(GC gc, int val);
+ void ecore_gc_set_include_inferiors(GC gc);
+ void ecore_fill_rectangle(Drawable d, GC gc, int x, int y,
+ int w, int h);
+ void ecore_draw_rectangle(Drawable d, GC gc, int x, int y,
+ int w, int h);
+ void ecore_draw_line(Drawable d, GC gc, int x1, int y1, int x2,
+ int y2);
+ void ecore_draw_point(Drawable d, GC gc, int x, int y);
+ void ecore_area_copy(Drawable src, Drawable dest, GC gc,
+ int sx, int sy, int sw, int sh, int dx,
+ int dy);
+
+
+ /* ---------------- DRAG AND DROP CALLS */
+
+
+ int ecore_dnd_selection_convert(Window win, Window req,
+ Atom type);
+ void *ecore_dnd_selection_get(Window win, Window req, Atom type,
+ int *size);
+ void ecore_dnd_set_data(Window win);
+ void ecore_dnd_set_action(Window win);
+
+ void ecore_dnd_send_data(Window win, Window source_win,
+ void *data, int size, Atom dest_atom,
+ int type);
+ void ecore_dnd_set_mode_copy(void);
+ void ecore_dnd_set_mode_link(void);
+ void ecore_dnd_set_mode_move(void);
+ void ecore_dnd_set_mode_ask(void);
+ void ecore_dnd_own_selection(Window win);
+ void ecore_dnd_send_drop(Window win, Window source_win);
+ void ecore_get_virtual_area(int *area_x, int *area_y);
+ void ecore_clear_target_status(void);
+
+
+ /* ---------------- IPC CALLS */
+
+ void ecore_event_ipc_init(char *path);
+ void ecore_event_ipc_cleanup(void);
+ void ecore_add_ipc_service(int service, void (*func) (int fd));
+ void ecore_del_ipc_service(int service);
+
+ /* ---------------- SELECTION CALLS */
+
+ char *ecore_selection_get_data(Window win, Atom prop);
+ Window ecore_selection_request(void);
+ Window ecore_selection_set(char *string);
+
+ /* ---------------- CURSOR LOOK CALLS */
+
+ void ecore_set_blank_pointer(Window w);
+ Cursor ecore_cursor_new(Pixmap pmap, Pixmap mask, int x, int y,
+ int fr, int fg, int fb, int br, int bg,
+ int bb);
+ void ecore_cursor_free(Cursor c);
+ void ecore_cursor_set(Window win, Cursor c);
+
+ /* ---------------- EVENT-HANDLING CALLS */
+
+ void ecore_add_event(Ecore_Event_Type type, void *event,
+ void (*ev_free) (void *event));
+ void ecore_del_event(void *event);
+ void ecore_del_all_events(void);
+ Ecore_Event *ecore_get_last_event(void);
+ void ecore_add_event_fd(int fd, void (*func) (int fd));
+ void ecore_del_event_fd(int fd);
+ void ecore_add_event_pid(pid_t pid, void (*func) (pid_t pid));
+ void ecore_del_event_pid(pid_t pid);
+ void ecore_add_event_ipc(int ipc, void (*func) (int ipc));
+ void ecore_del_event_ipc(int ipc);
+ void ecore_event_loop(void);
+ void ecore_event_loop_quit(void);
+ void ecore_add_event_timer(char *name, double in,
+ void (*func) (int val, void *data),
+ int val, void *data);
+ void *ecore_del_event_timer(char *name);
+ void ecore_event_filter(Ecore_Event * ev);
+ void ecore_event_filter_events_handle(Ecore_Event * ev);
+ void ecore_event_filter_idle_handle(void);
+
+ /**
+ * ecore_event_filter_init - Setup event handlers
+ *
+ * This function initializes all ECORE_EVENT_MAX
+ * event handler to be empty.
+ */
+ void ecore_event_filter_init(void);
+
+ void ecore_event_filter_handler_add(Ecore_Event_Type type,
+ void (*func) (Ecore_Event *ev));
+ void ecore_event_filter_idle_handler_add(void (*func) (void *data), void *data);
+
+ /**
+ * ecore_event_signal_init - Setup for default signal handlers
+ *
+ * This function initializes signal handlers for various
+ * signals via sigaction().
+ */
+ void ecore_event_signal_init(void);
+
+ int ecore_event_signal_events_pending(void);
+
+ /**
+ * ecore_event_x_init - Ecore X initialization
+ *
+ * This function initializes Ecore's X event handling
+ * callbacks.
+ */
+ void ecore_event_x_init(void);
+
+ /* ---------------- MISCELLANEOUS CALLS */
+
+ double ecore_get_time(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif