Enlightenment CVS committal Author : raster Project : e17 Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore_evas Modified Files: Tag: SPLIT Ecore_Evas.h Makefile.am ecore_evas.c ecore_evas_private.h Added Files: Tag: SPLIT ecore_evas_fb.c ecore_evas_x.c Log Message: busy bee. some work from the weekend & recently committed... :) =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Attic/Ecore_Evas.h,v retrieving revision 1.1.2.9 retrieving revision 1.1.2.10 diff -u -3 -r1.1.2.9 -r1.1.2.10 --- Ecore_Evas.h 9 Feb 2003 02:27:49 -0000 1.1.2.9 +++ Ecore_Evas.h 11 Feb 2003 06:27:09 -0000 1.1.2.10 @@ -15,14 +15,16 @@ typedef void Ecore_Evas; #endif -int ecore_evas_init(void); -int ecore_evas_shutdown(void); +int ecore_evas_init(void); +int ecore_evas_shutdown(void); - Ecore_Evas *ecore_evas_software_x11_new(const char *disp_name, Window parent, int x, int y, int w, int h); - void ecore_evas_free(Ecore_Evas *ee); - void ecore_evas_callback_resize_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)); - void ecore_evas_callback_move_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)); - void ecore_evas_callback_show_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)); +Ecore_Evas *ecore_evas_software_x11_new(const char *disp_name, Window parent, int x, +int y, int w, int h); +Ecore_Evas *ecore_evas_fb_new(char *disp_name, int rotation, int w, int h); + +void ecore_evas_free(Ecore_Evas *ee); +void ecore_evas_callback_resize_set(Ecore_Evas *ee, void (*func) (Ecore_Evas +*ee)); +void ecore_evas_callback_move_set(Ecore_Evas *ee, void (*func) (Ecore_Evas +*ee)); +void ecore_evas_callback_show_set(Ecore_Evas *ee, void (*func) (Ecore_Evas +*ee)); void ecore_evas_callback_hide_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)); void ecore_evas_callback_delete_request_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)); void ecore_evas_callback_destroy_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Attic/Makefile.am,v retrieving revision 1.1.2.4 retrieving revision 1.1.2.5 diff -u -3 -r1.1.2.4 -r1.1.2.5 --- Makefile.am 9 Feb 2003 00:41:46 -0000 1.1.2.4 +++ Makefile.am 11 Feb 2003 06:27:09 -0000 1.1.2.5 @@ -1,25 +1,57 @@ ## Process this file with automake to produce Makefile.in +if BUILD_ECORE_X +ECORE_X_INC = -I$(top_srcdir)/src/lib/ecore_x +ECORE_X_LIB = $(top_builddir)/src/lib/ecore_x/libecore_x.la +else +ECORE_X_INC = +ECORE_X_LIB = +endif + +if BUILD_ECORE_FB +ECORE_FB_INC = -I$(top_srcdir)/src/lib/ecore_fb +ECORE_FB_LIB = $(top_builddir)/src/lib/ecore_fb/libecore_fb.la +else +ECORE_FB_INC = +ECORE_FB_LIB = +endif + INCLUDES = \ -I$(top_srcdir)/src/lib/ecore \ --I$(top_srcdir)/src/lib/ecore_x \ +$(ECORE_X_INC) \ +$(ECORE_FB_INC) \ @evas_cflags@ +libecore_evas_la_LDFLAGS = -version-info 1:0:0 + +if BUILD_ECORE_EVAS + lib_LTLIBRARIES = libecore_evas.la include_HEADERS = \ Ecore_Evas.h libecore_evas_la_SOURCES = \ ecore_evas.c \ +ecore_evas_x.c \ +ecore_evas_fb.c \ ecore_evas_private.h libecore_evas_la_LIBADD = $(LDFLAGS) \ -$(top_builddir)/src/lib/ecore_x/libecore_x.la \ +$(ECORE_X_LIB) \ +$(ECORE_FB_LIB) \ $(top_builddir)/src/lib/ecore/libecore.la \ @evas_libs@ -libecore_evas_la_LDFLAGS = -version-info 1:0:0 - libecore_evas_la_DEPENDENCIES = \ -$(top_builddir)/src/lib/ecore_x/libecore_x.la \ +$(ECORE_X_LIB) \ +$(ECORE_FB_LIB) \ $(top_builddir)/src/lib/ecore/libecore.la + +endif + +EXTRA_DIST = \ +Ecore_Evas.h \ +ecore_evas.c \ +ecore_evas_x.c \ +ecore_evas_fb.c \ +ecore_evas_private.h =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Attic/ecore_evas.c,v retrieving revision 1.1.2.10 retrieving revision 1.1.2.11 diff -u -3 -r1.1.2.10 -r1.1.2.11 --- ecore_evas.c 9 Feb 2003 03:19:39 -0000 1.1.2.10 +++ ecore_evas.c 11 Feb 2003 06:27:09 -0000 1.1.2.11 @@ -1,431 +1,11 @@ +#include "config.h" #include "ecore_private.h" #include "Ecore.h" #include "ecore_evas_private.h" #include "Ecore_Evas.h" -#include "Ecore_X.h" static int _ecore_evas_init_count = 0; -static Ecore_Evas *ecore_evases = NULL; -static Ecore_Event_Handler *ecore_evas_event_handlers[15]; -static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL; - -static Ecore_Evas * -_ecore_evas_software_x11_match(Window win) -{ - Ecore_List *l; - - for (l = (Ecore_List *)ecore_evases; l; l = l->next) - { - Ecore_Evas *ee; - - ee = (Ecore_Evas *)l; - if ((ee->x11.win == win) || (ee->x11.win_container == win)) - { - ecore_evases = _ecore_list_remove(ecore_evases, ee); - ecore_evases = _ecore_list_prepend(ecore_evases, ee); - return ee; - } - } - return NULL; -} - -static void -_ecore_evas_modifer_locks_update(Ecore_Evas *ee, int modifiers) -{ - if (modifiers & ECORE_X_MODIFIER_SHIFT) - evas_key_modifier_on(ee->evas, "Shift"); - else - evas_key_modifier_off(ee->evas, "Shift"); - if (modifiers & ECORE_X_MODIFIER_CTRL) - evas_key_modifier_on(ee->evas, "Control"); - else - evas_key_modifier_off(ee->evas, "Control"); - if (modifiers & ECORE_X_MODIFIER_ALT) - evas_key_modifier_on(ee->evas, "Alt"); - else - evas_key_modifier_off(ee->evas, "Alt"); - if (modifiers & ECORE_X_MODIFIER_WIN) - { - evas_key_modifier_on(ee->evas, "Super"); - evas_key_modifier_on(ee->evas, "Hyper"); - } - else - { - evas_key_modifier_off(ee->evas, "Super"); - evas_key_modifier_off(ee->evas, "Hyper"); - } - if (modifiers & ECORE_X_LOCK_SCROLL) - evas_key_lock_on(ee->evas, "Scroll_Lock"); - else - evas_key_lock_off(ee->evas, "Scroll_Lock"); - if (modifiers & ECORE_X_LOCK_NUM) - evas_key_lock_on(ee->evas, "Num_Lock"); - else - evas_key_lock_off(ee->evas, "Num_Lock"); - if (modifiers & ECORE_X_LOCK_CAPS) - evas_key_lock_on(ee->evas, "Caps_Lock"); - else - evas_key_lock_off(ee->evas, "Caps_Lock"); -} - -static int -_ecore_evas_event_key_down(int type, void *event, void *data) -{ - Ecore_Evas *ee; - Ecore_X_Event_Key_Down *e; - - e = event; - ee = _ecore_evas_software_x11_match(e->win); - if (!ee) return 1; /* pass on event */ - _ecore_evas_modifer_locks_update(ee, e->modifiers); - evas_event_feed_key_down(ee->evas, e->keyname); - return 0; /* dont pass it on */ -} - -static int -_ecore_evas_event_key_up(int type, void *event, void *data) -{ - Ecore_Evas *ee; - Ecore_X_Event_Key_Up *e; - - e = event; - ee = _ecore_evas_software_x11_match(e->win); - if (!ee) return 1; /* pass on event */ - _ecore_evas_modifer_locks_update(ee, e->modifiers); - evas_event_feed_key_up(ee->evas, e->keyname); - return 0; /* dont pass it on */ -} - -static int -_ecore_evas_event_mouse_button_down(int type, void *event, void *data) -{ - Ecore_Evas *ee; - Ecore_X_Event_Mouse_Button_Down *e; - - e = event; - ee = _ecore_evas_software_x11_match(e->win); - if (!ee) return 1; /* pass on event */ - _ecore_evas_modifer_locks_update(ee, e->modifiers); - evas_event_feed_mouse_move(ee->evas, e->x, e->y); - evas_event_feed_mouse_down(ee->evas, e->button); - return 0; /* dont pass it on */ -} - -static int -_ecore_evas_event_mouse_button_up(int type, void *event, void *data) -{ - Ecore_Evas *ee; - Ecore_X_Event_Mouse_Button_Up *e; - - e = event; - ee = _ecore_evas_software_x11_match(e->win); - if (!ee) return 1; /* pass on event */ - _ecore_evas_modifer_locks_update(ee, e->modifiers); - evas_event_feed_mouse_move(ee->evas, e->x, e->y); - evas_event_feed_mouse_up(ee->evas, e->button); - return 0; /* dont pass it on */ -} - -static int -_ecore_evas_event_mouse_move(int type, void *event, void *data) -{ - Ecore_Evas *ee; - Ecore_X_Event_Mouse_Move *e; - - e = event; - ee = _ecore_evas_software_x11_match(e->win); - if (!ee) return 1; /* pass on event */ - if (ee->prop.cursor.object) - { - evas_object_show(ee->prop.cursor.object); - evas_object_move(ee->prop.cursor.object, - e->x - ee->prop.cursor.hot.x, - e->y - ee->prop.cursor.hot.y); - } - _ecore_evas_modifer_locks_update(ee, e->modifiers); - evas_event_feed_mouse_move(ee->evas, e->x, e->y); - return 0; /* dont pass it on */ -} - -static int -_ecore_evas_event_mouse_in(int type, void *event, void *data) -{ - Ecore_Evas *ee; - Ecore_X_Event_Mouse_In *e; - - e = event; - ee = _ecore_evas_software_x11_match(e->win); - if (!ee) return 1; /* pass on event */ - if (ee->prop.cursor.object) - { - evas_object_show(ee->prop.cursor.object); - evas_object_move(ee->prop.cursor.object, - e->x - ee->prop.cursor.hot.x, - e->y - ee->prop.cursor.hot.y); - } - if (ee->func.fn_mouse_in) ee->func.fn_mouse_in(ee); - _ecore_evas_modifer_locks_update(ee, e->modifiers); - evas_event_feed_mouse_in(ee->evas); - evas_event_feed_mouse_move(ee->evas, e->x, e->y); - return 0; /* dont pass it on */ -} - -static int -_ecore_evas_event_mouse_out(int type, void *event, void *data) -{ - Ecore_Evas *ee; - Ecore_X_Event_Mouse_Out *e; - - e = event; - ee = _ecore_evas_software_x11_match(e->win); - if (!ee) return 1; /* pass on event */ - _ecore_evas_modifer_locks_update(ee, e->modifiers); - evas_event_feed_mouse_move(ee->evas, e->x, e->y); - evas_event_feed_mouse_out(ee->evas); - if (ee->func.fn_mouse_out) ee->func.fn_mouse_out(ee); - if (ee->prop.cursor.object) evas_object_hide(ee->prop.cursor.object); - return 0; /* dont pass it on */ -} - -static int -_ecore_evas_event_window_focus_in(int type, void *event, void *data) -{ - Ecore_Evas *ee; - Ecore_X_Event_Window_Focus_In *e; - - e = event; - ee = _ecore_evas_software_x11_match(e->win); - if (!ee) return 1; /* pass on event */ - ee->prop.focused = 1; - if (ee->func.fn_focus_in) ee->func.fn_focus_in(ee); - return 0; /* dont pass it on */ -} - -static int -_ecore_evas_event_window_focus_out(int type, void *event, void *data) -{ - Ecore_Evas *ee; - Ecore_X_Event_Window_Focus_Out *e; - - e = event; - ee = _ecore_evas_software_x11_match(e->win); - if (!ee) return 1; /* pass on event */ - ee->prop.focused = 0; - if (ee->func.fn_focus_out) ee->func.fn_focus_out(ee); - return 0; /* dont pass it on */ -} - -static int -_ecore_evas_event_window_damage(int type, void *event, void *data) -{ - Ecore_Evas *ee; - Ecore_X_Event_Window_Damage *e; - - e = event; - ee = _ecore_evas_software_x11_match(e->win); - if (!ee) return 1; /* pass on event */ - if (ee->prop.avoid_damage) - { - XRectangle xr; - Region tmpr; - - if (!ee->x11.damages) ee->x11.damages = XCreateRegion(); - tmpr = XCreateRegion(); - xr.x = e->x; - xr.y = e->y; - xr.width = e->w; - xr.height = e->h; - XUnionRectWithRegion(&xr, ee->x11.damages, tmpr); - XDestroyRegion(ee->x11.damages); - ee->x11.damages = tmpr; - } - else - evas_damage_rectangle_add(ee->evas, e->x, e->y, e->w, e->h); - return 0; /* dont pass it on */ -} - -static int -_ecore_evas_event_window_destroy(int type, void *event, void *data) -{ - Ecore_Evas *ee; - Ecore_X_Event_Window_Destroy *e; - - e = event; - ee = _ecore_evas_software_x11_match(e->win); - if (!ee) return 1; /* pass on event */ - if (ee->func.fn_destroy) ee->func.fn_destroy(ee); - ecore_evas_free(ee); - return 0; /* dont pass it on */ -} - -static int -_ecore_evas_event_window_configure(int type, void *event, void *data) -{ - Ecore_Evas *ee; - Ecore_X_Event_Window_Configure *e; - - e = event; - ee = _ecore_evas_software_x11_match(e->win); - if (!ee) return 1; /* pass on event */ - if ((ee->prop.fullscreen) && (e->win == ee->x11.win_container)) return 0; - if ((e->from_wm) || (ee->prop.fullscreen) || (ee->prop.override)) - { - if ((ee->x != e->x) || (ee->y != e->y)) - { - ee->x = e->x; - ee->y = e->y; - if (ee->func.fn_move) ee->func.fn_move(ee); - } - } - if ((ee->w != e->w) || (ee->h != e->h)) - { - ee->w = e->w; - ee->h = e->h; - if (e->win == ee->x11.win_container) - ecore_x_window_resize(ee->x11.win, ee->w, ee->h); - evas_output_size_set(ee->evas, ee->w, ee->h); - evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h); - if (ee->prop.avoid_damage) - { - ecore_evas_avoid_damage_set(ee, 0); - ecore_evas_avoid_damage_set(ee, 1); - } - if (ee->shaped) - { - ecore_evas_shaped_set(ee, 0); - ecore_evas_shaped_set(ee, 1); - } - if (ee->func.fn_resize) ee->func.fn_resize(ee); - } - return 0; /* dont pass it on */ -} - -static int -_ecore_evas_event_window_delete_request(int type, void *event, void *data) -{ - Ecore_Evas *ee; - Ecore_X_Event_Window_Delete_Request *e; - - e = event; - ee = _ecore_evas_software_x11_match(e->win); - if (!ee) return 1; /* pass on event */ - if (ee->func.fn_delete_request) ee->func.fn_delete_request(ee); - return 0; /* dont pass it on */ -} - -static int -_ecore_evas_event_window_show(int type, void *event, void *data) -{ - Ecore_Evas *ee; - Ecore_X_Event_Window_Show *e; - - e = event; - ee = _ecore_evas_software_x11_match(e->win); - if (!ee) return 1; /* pass on event */ - if (ee->x11.win_container != e->win) return 0; - ee->visible = 1; - if (ee->func.fn_show) ee->func.fn_show(ee); - return 0; /* dont pass it on */ -} - -static int -_ecore_evas_event_window_hide(int type, void *event, void *data) -{ - Ecore_Evas *ee; - Ecore_X_Event_Window_Hide *e; - - e = event; - ee = _ecore_evas_software_x11_match(e->win); - if (!ee) return 1; /* pass on event */ - if (ee->x11.win_container != e->win) return 0; - ee->visible = 0; - if (ee->func.fn_hide) ee->func.fn_hide(ee); - return 0; /* dont pass it on */ -} - -static int -_ecore_evas_idle_enter(void *data) -{ - Ecore_List *l; - - for (l = (Ecore_List *)ecore_evases; l; l = l->next) - { - Ecore_Evas *ee; - - ee = (Ecore_Evas *)l; - if (ee->prop.avoid_damage) - { - Evas_List *updates, *l; - - updates = evas_render_updates(ee->evas); - if (!ee->x11.damages) ee->x11.damages = XCreateRegion(); - for (l = updates; l; l = l->next) - { - Evas_Rectangle *r; - XRectangle xr; - Region tmpr; - - r = l->data; - tmpr = XCreateRegion(); - xr.x = r->x; - xr.y = r->y; - xr.width = r->w; - xr.height = r->h; - XUnionRectWithRegion(&xr, ee->x11.damages, tmpr); - XDestroyRegion(ee->x11.damages); - ee->x11.damages = tmpr; - } - XSetRegion(ecore_x_display_get(), ee->x11.gc, ee->x11.damages); - ecore_x_pixmap_paste(ee->x11.pmap, ee->x11.win, ee->x11.gc, - 0, 0, ee->w, ee->h, 0, 0); - XDestroyRegion(ee->x11.damages); - ee->x11.damages = 0; - if ((ee->shaped) && (updates)) - { - if (ee->prop.fullscreen) - ecore_x_window_shape_mask_set(ee->x11.win, ee->x11.mask); - else - ecore_x_window_shape_mask_set(ee->x11.win_container, ee->x11.mask); - } - if (updates) evas_render_updates_free(updates); - } - else if (ee->visible) - { - if (ee->shaped) - { - Evas_List *updates; - - updates = evas_render_updates(ee->evas); - if (updates) - { - if (ee->prop.fullscreen) - ecore_x_window_shape_mask_set(ee->x11.win, ee->x11.mask); - else - ecore_x_window_shape_mask_set(ee->x11.win_container, ee->x11.mask); - evas_render_updates_free(updates); - } - } - else - evas_render(ee->evas); - } - } - ecore_x_flush(); - return 1; -} - -static void -_ecore_evas_software_x11_free(Ecore_Evas *ee) -{ - ecore_x_shutdown(); - ecore_x_window_del(ee->x11.win); - ecore_x_window_del(ee->x11.win_container); - if (ee->x11.pmap) ecore_x_pixmap_del(ee->x11.pmap); - if (ee->x11.mask) ecore_x_pixmap_del(ee->x11.mask); - if (ee->x11.gc) ecore_x_gc_del(ee->x11.gc); - if (ee->x11.damages) XDestroyRegion(ee->x11.damages); -} - /** * Init the Evas system * @param driver @@ -439,22 +19,6 @@ { _ecore_evas_init_count++; if (_ecore_evas_init_count > 1) return _ecore_evas_init_count; - ecore_evas_idle_enterer = ecore_idle_enterer_add(_ecore_evas_idle_enter, NULL); - ecore_evas_event_handlers[0] = ecore_event_handler_add(ECORE_X_EVENT_KEY_DOWN, _ecore_evas_event_key_down, NULL); - ecore_evas_event_handlers[1] = ecore_event_handler_add(ECORE_X_EVENT_KEY_UP, _ecore_evas_event_key_up, NULL); - ecore_evas_event_handlers[2] = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_DOWN, _ecore_evas_event_mouse_button_down, NULL); - ecore_evas_event_handlers[3] = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_UP, _ecore_evas_event_mouse_button_up, NULL); - ecore_evas_event_handlers[4] = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_MOVE, _ecore_evas_event_mouse_move, NULL); - ecore_evas_event_handlers[5] = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_IN, _ecore_evas_event_mouse_in, NULL); - ecore_evas_event_handlers[6] = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_OUT, _ecore_evas_event_mouse_out, NULL); - ecore_evas_event_handlers[7] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, _ecore_evas_event_window_focus_in, NULL); - ecore_evas_event_handlers[8] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, _ecore_evas_event_window_focus_out, NULL); - ecore_evas_event_handlers[9] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DAMAGE, _ecore_evas_event_window_damage, NULL); - ecore_evas_event_handlers[10] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DESTROY, _ecore_evas_event_window_destroy, NULL); - ecore_evas_event_handlers[11] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CONFIGURE, _ecore_evas_event_window_configure, NULL); - ecore_evas_event_handlers[12] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DELETE_REQUEST, _ecore_evas_event_window_delete_request, NULL); - ecore_evas_event_handlers[13] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_SHOW, _ecore_evas_event_window_show, NULL); - ecore_evas_event_handlers[14] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_HIDE, _ecore_evas_event_window_hide, NULL); return _ecore_evas_init_count; } @@ -466,81 +30,14 @@ int ecore_evas_shutdown(void) { - int i; - _ecore_evas_init_count--; if (_ecore_evas_init_count == 0) { - for (i = 0; - i < (sizeof(ecore_evas_event_handlers) / - sizeof(Ecore_Event_Handler *)); - i++) - ecore_event_handler_del(ecore_evas_event_handlers[i]); } if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0; return _ecore_evas_init_count; } -Ecore_Evas * -ecore_evas_software_x11_new(const char *disp_name, Window parent, - int x, int y, int w, int h) -{ - Evas_Engine_Info_Software_X11 *einfo; - Ecore_Evas *ee; - int rmethod; - - rmethod = evas_render_method_lookup("software_x11"); - if (!rmethod) return NULL; - if (!ecore_x_init(disp_name)) return NULL; - ee = calloc(1, sizeof(Ecore_Evas)); - if (!ee) return NULL; - - ee->func.fn_free = _ecore_evas_software_x11_free; - - ee->driver = strdup("software_x11"); - if (disp_name) ee->name = strdup(disp_name); - - ee->prop.max.w = 32767; - ee->prop.max.h = 32767; - ee->prop.layer = 4; - - /* init evas here */ - ee->evas = evas_new(); - evas_output_method_set(ee->evas, rmethod); - evas_output_size_set(ee->evas, w, h); - evas_output_viewport_set(ee->evas, 0, 0, w, h); - - ee->x11.win_container = ecore_x_window_new(parent, x, y, w, h); - ee->x11.win = ecore_x_window_override_new(ee->x11.win_container, 0, 0, w, h); - - einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas); - if (einfo) - { - einfo->info.display = ecore_x_display_get(); - einfo->info.visual = DefaultVisual(ecore_x_display_get(), DefaultScreen(ecore_x_display_get())); - einfo->info.colormap = DefaultColormap(ecore_x_display_get(), DefaultScreen(ecore_x_display_get())); - einfo->info.drawable = ee->x11.win; - einfo->info.depth = DefaultDepth(ecore_x_display_get(), DefaultScreen(ecore_x_display_get())); - einfo->info.rotation = 0; - einfo->info.debug = 0; - evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo); - } - evas_key_modifier_add(ee->evas, "Shift"); - evas_key_modifier_add(ee->evas, "Control"); - evas_key_modifier_add(ee->evas, "Alt"); - evas_key_modifier_add(ee->evas, "Meta"); - evas_key_modifier_add(ee->evas, "Hyper"); - evas_key_modifier_add(ee->evas, "Super"); - evas_key_lock_add(ee->evas, "Caps_Lock"); - evas_key_lock_add(ee->evas, "Num_Lock"); - evas_key_lock_add(ee->evas, "Scroll_Lock"); - - ecore_x_window_show(ee->x11.win); - - ecore_evases = _ecore_list_prepend(ecore_evases, ee); - return ee; -} - void ecore_evas_free(Ecore_Evas *ee) { @@ -552,69 +49,90 @@ if (ee->prop.cursor.file) free(ee->prop.cursor.file); if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object); if (ee->evas) evas_free(ee->evas); - if (ee->func.fn_free) ee->func.fn_free(ee); - ecore_evases = _ecore_list_remove(ecore_evases, ee); + if (ee->engine.func->fn_free) ee->engine.func->fn_free(ee); free(ee); } + +#define IFC(_ee, _fn) if (_ee->engine.func->_fn) {_ee->engine.func->_fn +#define IFE return;} + void ecore_evas_callback_resize_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)) { + IFC(ee, fn_callback_resize_set) (ee, func); + IFE; ee->func.fn_resize = func; } void ecore_evas_callback_move_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)) { + IFC(ee, fn_callback_move_set) (ee, func); + IFE; ee->func.fn_move = func; } void ecore_evas_callback_show_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)) { + IFC(ee, fn_callback_show_set) (ee, func); + IFE; ee->func.fn_show = func; } void ecore_evas_callback_hide_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)) { + IFC(ee, fn_callback_hide_set) (ee, func); + IFE; ee->func.fn_hide = func; } void ecore_evas_callback_delete_request_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)) { - if (func) ecore_x_window_prop_delete_request_set(ee->x11.win_container, 1); - else ecore_x_window_prop_delete_request_set(ee->x11.win_container, 0); + IFC(ee, fn_callback_delete_request_set) (ee, func); + IFE; ee->func.fn_delete_request = func; } void ecore_evas_callback_destroy_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)) { + IFC(ee, fn_callback_destroy_set) (ee, func); + IFE; ee->func.fn_destroy = func; } void ecore_evas_callback_focus_in_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)) { + IFC(ee, fn_callback_focus_in_set) (ee, func); + IFE; ee->func.fn_focus_in = func; } void ecore_evas_callback_focus_out_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)) { + IFC(ee, fn_callback_focus_out_set) (ee, func); + IFE; ee->func.fn_focus_out = func; } void ecore_evas_callback_mouse_in_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)) { + IFC(ee, fn_callback_mouse_in_set) (ee, func); + IFE; ee->func.fn_mouse_in = func; } void ecore_evas_callback_mouse_out_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)) { + IFC(ee, fn_callback_mouse_out_set) (ee, func); + IFE; ee->func.fn_mouse_out = func; } @@ -627,19 +145,22 @@ void ecore_evas_move(Ecore_Evas *ee, int x, int y) { - ecore_x_window_move(ee->x11.win_container, x, y); + IFC(ee, fn_move) (ee, x, y); + IFE; } void ecore_evas_resize(Ecore_Evas *ee, int w, int h) { - ecore_x_window_resize(ee->x11.win_container, w, h); + IFC(ee, fn_resize) (ee, w, h); + IFE; } void ecore_evas_move_resize(Ecore_Evas *ee, int x, int y, int w, int h) { - ecore_x_window_move_resize(ee->x11.win_container, x, y, w, h); + IFC(ee, fn_move_resize) (ee, x, y, w, h); + IFE; } void @@ -654,6 +175,8 @@ void ecore_evas_rotation_set(Ecore_Evas *ee, int rot) { + IFC(ee, fn_rotation_set) (ee, rot); + IFE; } int @@ -665,32 +188,8 @@ void ecore_evas_shaped_set(Ecore_Evas *ee, int shaped) { - Evas_Engine_Info_Software_X11 *einfo; - - if (((ee->shaped) && (shaped)) || - ((!ee->shaped) && (!shaped))) - return; - ee->shaped = shaped; - einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas); - if (einfo) - { - if (ee->shaped) - { - ee->x11.mask = ecore_x_pixmap_new(ee->x11.win, ee->w, ee->h, 1); - einfo->info.mask = ee->x11.mask; - evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo); - evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h); - } - else - { - if (ee->x11.mask) ecore_x_pixmap_del(ee->x11.mask); - ee->x11.mask = 0; - einfo->info.mask = 0; - evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo); - ecore_x_window_shape_mask_set(ee->x11.win, 0); - ecore_x_window_shape_mask_set(ee->x11.win_container, 0); - } - } + IFC(ee, fn_shaped_set) (ee, shaped); + IFE; } int @@ -702,13 +201,15 @@ void ecore_evas_show(Ecore_Evas *ee) { - ecore_x_window_show(ee->x11.win_container); + IFC(ee, fn_show) (ee); + IFE; } void ecore_evas_hide(Ecore_Evas *ee) { - ecore_x_window_hide(ee->x11.win_container); + IFC(ee, fn_hide) (ee); + IFE; } int @@ -720,22 +221,22 @@ void ecore_evas_raise(Ecore_Evas *ee) { - ecore_x_window_raise(ee->x11.win_container); + IFC(ee, fn_raise) (ee); + IFE; } void ecore_evas_lower(Ecore_Evas *ee) { - ecore_x_window_lower(ee->x11.win_container); + IFC(ee, fn_lower) (ee); + IFE; } void ecore_evas_title_set(Ecore_Evas *ee, const char *t) { - if (ee->prop.title) free(ee->prop.title); - ee->prop.title = NULL; - if (t) ee->prop.title = strdup(t); - ecore_x_window_prop_title_set(ee->x11.win_container, ee->prop.title); + IFC(ee, fn_title_set) (ee, t); + IFE; } const char * @@ -747,13 +248,8 @@ void ecore_evas_name_class_set(Ecore_Evas *ee, const char *n, const char *c) { - if (ee->prop.name) free(ee->prop.name); - if (ee->prop.clas) free(ee->prop.clas); - ee->prop.name = NULL; - ee->prop.clas = NULL; - ee->prop.name = strdup(n); - ee->prop.clas = strdup(c); - ecore_x_window_prop_name_class_set(ee->x11.win_container, ee->prop.name, ee->prop.clas); + IFC(ee, fn_name_class_set) (ee, n, c); + IFE; } void @@ -766,12 +262,8 @@ void ecore_evas_size_min_set(Ecore_Evas *ee, int w, int h) { - if (w < 0) w = 0; - if (h < 0) h = 0; - if ((ee->prop.min.w == w) && (ee->prop.min.h == h)) return; - ee->prop.min.w = w; - ee->prop.min.h = h; - ecore_x_window_prop_min_size_set(ee->x11.win_container, ee->prop.min.w, ee->prop.min.h); + IFC(ee, fn_size_min_set) (ee, w, h); + IFE; } void @@ -784,12 +276,8 @@ void ecore_evas_size_max_set(Ecore_Evas *ee, int w, int h) { - if (w < 0) w = 0; - if (h < 0) h = 0; - if ((ee->prop.max.w == w) && (ee->prop.max.h == h)) return; - ee->prop.max.w = w; - ee->prop.max.h = h; - ecore_x_window_prop_max_size_set(ee->x11.win_container, ee->prop.max.w, ee->prop.max.h); + IFC(ee, fn_size_max_set) (ee, w, h); + IFE; } void @@ -802,12 +290,8 @@ void ecore_evas_size_base_set(Ecore_Evas *ee, int w, int h) { - if (w < 0) w = 0; - if (h < 0) h = 0; - if ((ee->prop.base.w == w) && (ee->prop.base.h == h)) return; - ee->prop.base.w = w; - ee->prop.base.h = h; - ecore_x_window_prop_base_size_set(ee->x11.win_container, ee->prop.base.w, ee->prop.base.h); + IFC(ee, fn_size_base_set) (ee, w, h); + IFE; } void @@ -820,12 +304,8 @@ void ecore_evas_size_step_set(Ecore_Evas *ee, int w, int h) { - if (w < 1) w = 1; - if (h < 1) h = 1; - if ((ee->prop.step.w == w) && (ee->prop.step.h == h)) return; - ee->prop.step.w = w; - ee->prop.step.h = h; - ecore_x_window_prop_step_size_set(ee->x11.win_container, ee->prop.step.w, ee->prop.step.h); + IFC(ee, fn_size_step_set) (ee, w, h); + IFE; } void @@ -838,40 +318,8 @@ void ecore_evas_cursor_set(Ecore_Evas *ee, const char *file, int layer, int hot_x, int hot_y) { - int x, y; - - if (!file) - { - if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object); - if (ee->prop.cursor.file) free(ee->prop.cursor.file); - ee->prop.cursor.object = NULL; - ee->prop.cursor.file = NULL; - ee->prop.cursor.layer = 0; - ee->prop.cursor.hot.x = 0; - ee->prop.cursor.hot.y = 0; - ecore_x_window_cursor_show(ee->x11.win, 1); - return; - } - ecore_x_window_cursor_show(ee->x11.win, 0); - if (!ee->prop.cursor.object) ee->prop.cursor.object = evas_object_image_add(ee->evas); - if (ee->prop.cursor.file) free(ee->prop.cursor.file); - ee->prop.cursor.file = strdup(file); - ee->prop.cursor.layer = layer; - ee->prop.cursor.hot.x = hot_x; - ee->prop.cursor.hot.y = hot_y; - evas_pointer_output_xy_get(ee->evas, &x, &y); - evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer); - evas_object_color_set(ee->prop.cursor.object, 255, 255, 255, 255); - evas_object_move(ee->prop.cursor.object, - x - ee->prop.cursor.hot.x, - y - ee->prop.cursor.hot.y); - evas_object_image_file_set(ee->prop.cursor.object, ee->prop.cursor.file, NULL); - evas_object_image_size_get(ee->prop.cursor.object, &x, &y); - evas_object_resize(ee->prop.cursor.object, x, y); - evas_object_image_fill_set(ee->prop.cursor.object, 0, 0, x, y); - evas_object_pass_events_set(ee->prop.cursor.object, 1); - if (evas_pointer_inside_get(ee->evas)) - evas_object_show(ee->prop.cursor.object); + IFC(ee, fn_cursor_set) (ee, file, layer, hot_x, hot_y); + IFE; } void @@ -886,9 +334,8 @@ void ecore_evas_layer_set(Ecore_Evas *ee, int layer) { - if (ee->prop.layer == layer) return; - ee->prop.layer = layer; - ecore_x_window_prop_layer_set(ee->x11.win_container, ee->prop.layer); + IFC(ee, fn_layer_set) (ee, layer); + IFE; } int @@ -900,7 +347,8 @@ void ecore_evas_focus_set(Ecore_Evas *ee, int on) { - ecore_x_window_focus(ee->x11.win_container); + IFC(ee, fn_focus_set) (ee, on); + IFE; } int @@ -912,7 +360,8 @@ void ecore_evas_iconified_set(Ecore_Evas *ee, int on) { - printf("ecore_evas_iconified_set() does not do anything yet.\n"); + IFC(ee, fn_iconified_set) (ee, on); + IFE; } int @@ -924,10 +373,8 @@ void ecore_evas_borderless_set(Ecore_Evas *ee, int on) { - if (((ee->prop.borderless) && (on)) || - ((!ee->prop.borderless) && (!on))) return; - ee->prop.borderless = on; - ecore_x_window_prop_borderless_set(ee->x11.win_container, ee->prop.borderless); + IFC(ee, fn_borderless_set) (ee, on); + IFE; } int @@ -939,32 +386,8 @@ void ecore_evas_override_set(Ecore_Evas *ee, int on) { - if (((ee->prop.override) && (on)) || - ((!ee->prop.override) && (!on))) return; - ecore_x_window_hide(ee->x11.win); - ecore_x_window_reparent(ee->x11.win, 0, 0, 0); - ecore_x_window_del(ee->x11.win_container); - if (on) - ee->x11.win_container = ecore_x_window_override_new(0, ee->x, ee->y, ee->w, ee->h); - else - { - ee->x11.win_container = ecore_x_window_new(0, ee->x, ee->y, ee->w, ee->h); - ecore_x_window_prop_title_set(ee->x11.win_container, ee->prop.title); - ecore_x_window_prop_name_class_set(ee->x11.win_container, ee->prop.name, ee->prop.clas); - if (ee->func.fn_delete_request) - ecore_x_window_prop_delete_request_set(ee->x11.win_container, 1); - ecore_x_window_prop_min_size_set(ee->x11.win_container, ee->prop.min.w, ee->prop.min.h); - ecore_x_window_prop_max_size_set(ee->x11.win_container, ee->prop.max.w, ee->prop.max.h); - ecore_x_window_prop_base_size_set(ee->x11.win_container, ee->prop.base.w, ee->prop.base.h); - ecore_x_window_prop_step_size_set(ee->x11.win_container, ee->prop.step.w, ee->prop.step.h); - ecore_x_window_prop_borderless_set(ee->x11.win_container, ee->prop.borderless); - ecore_x_window_prop_layer_set(ee->x11.win_container, ee->prop.layer); - } - ecore_x_window_reparent(ee->x11.win, ee->x11.win_container, 0, 0); - ecore_x_window_show(ee->x11.win); - if (ee->visible) ecore_x_window_show(ee->x11.win_container); - if (ee->prop.focused) ecore_x_window_focus(ee->x11.win_container); - ee->prop.override = on; + IFC(ee, fn_override_set) (ee, on); + IFE; } int @@ -976,44 +399,21 @@ void ecore_evas_maximized_set(Ecore_Evas *ee, int on) { - printf("ecore_evas_maximized_set() does not do anything yet.\n"); + IFC(ee, fn_maximized_set) (ee, on); + IFE; } int ecore_evas_maximized_get(Ecore_Evas *ee) { - return 0; + return ee->prop.maximized;; } void ecore_evas_fullscreen_set(Ecore_Evas *ee, int on) { - if (((ee->prop.fullscreen) && (on)) || - ((!ee->prop.fullscreen) && (!on))) return; - if (on) - { - int rw, rh; - - ecore_x_window_size_get(0, &rw, &rh); - ecore_x_window_resize(ee->x11.win, rw, rh); - ecore_x_window_reparent(ee->x11.win, 0, 0, 0); - ecore_x_window_raise(ee->x11.win); - ecore_x_window_show(ee->x11.win); - ecore_x_window_focus(ee->x11.win); - ecore_x_window_shape_mask_set(ee->x11.win_container, 0); - ee->x = 0; - ee->y = 0; - } - else - { - int pw, ph; - - ecore_x_window_size_get(ee->x11.win_container, &pw, &ph); - ecore_x_window_reparent(ee->x11.win, ee->x11.win_container, 0, 0); - ecore_x_window_resize(ee->x11.win, pw, ph); - ecore_x_window_shape_mask_set(ee->x11.win, 0); - } - ee->prop.fullscreen = on; + IFC(ee, fn_fullscreen_set) (ee, on); + IFE; } int @@ -1025,33 +425,8 @@ void ecore_evas_avoid_damage_set(Ecore_Evas *ee, int on) { - Evas_Engine_Info_Software_X11 *einfo; - - if (((ee->prop.avoid_damage) && (on)) || - ((!ee->prop.avoid_damage) && (!on))) - return; - ee->prop.avoid_damage = on; - einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas); - if (einfo) - { - if (ee->prop.avoid_damage) - { - ee->x11.pmap = ecore_x_pixmap_new(ee->x11.win, ee->w, ee->h, 0); - ee->x11.gc = ecore_x_gc_new(ee->x11.pmap); - einfo->info.drawable = ee->x11.pmap; - evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo); - evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h); - } - else - { - if (ee->x11.pmap) ecore_x_pixmap_del(ee->x11.pmap); - if (ee->x11.gc) ecore_x_gc_del(ee->x11.gc); - ee->x11.pmap = 0; - ee->x11.gc = 0; - einfo->info.drawable = ee->x11.win; - evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo); - } - } + IFC(ee, fn_avoid_damage_set) (ee, on); + IFE; } int =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Attic/ecore_evas_private.h,v retrieving revision 1.1.2.8 retrieving revision 1.1.2.9 diff -u -3 -r1.1.2.8 -r1.1.2.9 --- ecore_evas_private.h 9 Feb 2003 04:23:50 -0000 1.1.2.8 +++ ecore_evas_private.h 11 Feb 2003 06:27:09 -0000 1.1.2.9 @@ -2,11 +2,74 @@ #define _ECORE_EVAS_PRIVATE_H #include <Evas.h> + +#ifdef BUILD_ECORE_X #include <Evas_Engine_Software_X11.h> #include <X11/Xutil.h> +#endif +#ifdef BUILD_ECORE_FB +#include <Evas_Engine_FB.h> +#endif + +typedef struct _Ecore_Evas Ecore_Evas; +typedef struct _Ecore_Evas_Engine Ecore_Evas_Engine; +typedef struct _Ecore_Evas_Engine_Func Ecore_Evas_Engine_Func; -typedef struct _Ecore_Evas Ecore_Evas; +struct _Ecore_Evas_Engine_Func +{ + void (*fn_free) (Ecore_Evas *ee); + void (*fn_callback_resize_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas +*ee)); + void (*fn_callback_move_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas +*ee)); + void (*fn_callback_show_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas +*ee)); + void (*fn_callback_hide_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas +*ee)); + void (*fn_callback_delete_request_set) (Ecore_Evas *ee, void (*func) +(Ecore_Evas *ee)); + void (*fn_callback_destroy_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas +*ee)); + void (*fn_callback_focus_in_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas +*ee)); + void (*fn_callback_focus_out_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas +*ee)); + void (*fn_callback_mouse_in_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas +*ee)); + void (*fn_callback_mouse_out_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas +*ee)); + void (*fn_move) (Ecore_Evas *ee, int x, int y); + void (*fn_resize) (Ecore_Evas *ee, int w, int h); + void (*fn_move_resize) (Ecore_Evas *ee, int x, int y, int w, int h); + void (*fn_rotation_set) (Ecore_Evas *ee, int rot); + void (*fn_shaped_set) (Ecore_Evas *ee, int shaped); + void (*fn_show) (Ecore_Evas *ee); + void (*fn_hide) (Ecore_Evas *ee); + void (*fn_raise) (Ecore_Evas *ee); + void (*fn_lower) (Ecore_Evas *ee); + void (*fn_title_set) (Ecore_Evas *ee, const char *t); + void (*fn_name_class_set) (Ecore_Evas *ee, const char *n, const char *c); + void (*fn_size_min_set) (Ecore_Evas *ee, int w, int h); + void (*fn_size_max_set) (Ecore_Evas *ee, int w, int h); + void (*fn_size_base_set) (Ecore_Evas *ee, int w, int h); + void (*fn_size_step_set) (Ecore_Evas *ee, int w, int h); + void (*fn_cursor_set) (Ecore_Evas *ee, const char *file, int layer, int +hot_x, int hot_y); + void (*fn_layer_set) (Ecore_Evas *ee, int layer); + void (*fn_focus_set) (Ecore_Evas *ee, int on); + void (*fn_iconified_set) (Ecore_Evas *ee, int on); + void (*fn_borderless_set) (Ecore_Evas *ee, int on); + void (*fn_override_set) (Ecore_Evas *ee, int on); + void (*fn_maximized_set) (Ecore_Evas *ee, int on); + void (*fn_fullscreen_set) (Ecore_Evas *ee, int on); + void (*fn_avoid_damage_set) (Ecore_Evas *ee, int on); +}; +struct _Ecore_Evas_Engine +{ + Ecore_Evas_Engine_Func *func; + +#ifdef BUILD_ECORE_X + struct { + Window win_container; + Window win; + Pixmap pmap; + Pixmap mask; + GC gc; + Region damages; + } x; +#endif +}; + struct _Ecore_Evas { Ecore_List __list_data; @@ -48,7 +111,6 @@ } prop; struct { - void (*fn_free) (Ecore_Evas *ee); void (*fn_resize) (Ecore_Evas *ee); void (*fn_move) (Ecore_Evas *ee); void (*fn_show) (Ecore_Evas *ee); @@ -61,14 +123,16 @@ void (*fn_mouse_out) (Ecore_Evas *ee); } func; - struct { - Window win_container; - Window win; - Pixmap pmap; - Pixmap mask; - GC gc; - Region damages; - } x11; + Ecore_Evas_Engine engine; }; + +#ifdef BUILD_ECORE_X +int _ecore_evas_x_init(void); +int _ecore_evas_x_shutdown(void); +#endif +#ifdef BUILD_ECORE_FB +int _ecore_evas_fb_init(void); +int _ecore_evas_fb_shutdown(void); +#endif #endif ------------------------------------------------------- This SF.NET email is sponsored by: SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See! http://www.vasoftware.com _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs