Enlightenment CVS committal Author : doursse Project : e17 Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore_evas Modified Files: Ecore_Evas.h ecore_evas_private.h ecore_evas_win32.c Log Message: forgot to add glew support in configure.in =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/Ecore_Evas.h,v retrieving revision 1.35 retrieving revision 1.36 diff -u -3 -r1.35 -r1.36 --- Ecore_Evas.h 19 Nov 2007 18:27:11 -0000 1.35 +++ Ecore_Evas.h 21 Nov 2007 12:16:16 -0000 1.36 @@ -54,6 +54,7 @@ #define HAVE_ECORE_EVAS_X11_16 1 #define HAVE_ECORE_EVAS_DIRECTFB 1 #define HAVE_ECORE_EVAS_WIN32 1 +#define HAVE_ECORE_EVAS_SDL 1 typedef enum _Ecore_Evas_Engine_Type { @@ -65,6 +66,7 @@ ECORE_EVAS_ENGINE_DIRECTFB, ECORE_EVAS_ENGINE_SOFTWARE_X11_16, ECORE_EVAS_ENGINE_SOFTWARE_DDRAW, + ECORE_EVAS_ENGINE_SOFTWARE_DDRAW_16, ECORE_EVAS_ENGINE_DIRECT3D, ECORE_EVAS_ENGINE_SDL } Ecore_Evas_Engine_Type; @@ -148,6 +150,14 @@ int height); EAPI Ecore_Win32_Window *ecore_evas_software_ddraw_window_get(Ecore_Evas *ee); + +EAPI Ecore_Evas *ecore_evas_software_ddraw_16_new(Ecore_Win32_Window *parent, + int x, + int y, + int width, + int height); + +EAPI Ecore_Win32_Window *ecore_evas_software_ddraw_16_window_get(Ecore_Evas *ee); EAPI Ecore_Evas *ecore_evas_direct3d_new(Ecore_Win32_Window *parent, int x, =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_private.h,v retrieving revision 1.37 retrieving revision 1.38 diff -u -3 -r1.37 -r1.38 --- ecore_evas_private.h 19 Nov 2007 18:27:11 -0000 1.37 +++ ecore_evas_private.h 21 Nov 2007 12:16:16 -0000 1.38 @@ -66,6 +66,9 @@ # ifdef HAVE_DIRECTDRAW # include <Evas_Engine_Software_DDraw.h> # endif +# ifdef HAVE_DIRECTDRAW_16 +# include <Evas_Engine_Software_16_DDraw.h> +# endif # ifdef HAVE_DIRECT3D # include <Evas_Engine_Direct3D.h> # endif =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_win32.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ecore_evas_win32.c 19 Nov 2007 18:27:11 -0000 1.3 +++ ecore_evas_win32.c 21 Nov 2007 12:16:16 -0000 1.4 @@ -276,6 +276,7 @@ Ecore_Win32_Event_Mouse_Button_Up *e; Evas_Button_Flags flags = EVAS_BUTTON_NONE; + printf (" * ee event button up 0 \n"); e = event; ee = _ecore_evas_win32_match(e->window); if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */ @@ -836,6 +837,42 @@ } static void +_ecore_evas_win32_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y) +{ +#if 0 + int x, y; + + if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object); + + if (obj == NULL) + { + ee->prop.cursor.object = NULL; + ee->prop.cursor.layer = 0; + ee->prop.cursor.hot.x = 0; + ee->prop.cursor.hot.y = 0; + ecore_win32_window_cursor_show(ee->engine.win32.window, 1); + return; + } + + ee->prop.cursor.object = obj; + ee->prop.cursor.layer = layer; + ee->prop.cursor.hot.x = hot_x; + ee->prop.cursor.hot.y = hot_y; + + ecore_win32_window_cursor_show(ee->engine.win32.window, 0); + + evas_pointer_output_xy_get(ee->evas, &x, &y); + evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer); + evas_object_move(ee->prop.cursor.object, + x - ee->prop.cursor.hot.x, + y - ee->prop.cursor.hot.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); +#endif +} + +static void _ecore_evas_win32_focus_set(Ecore_Evas *ee, int on __UNUSED__) { ecore_win32_window_focus_set(ee->engine.win32.window); @@ -920,7 +957,7 @@ _ecore_evas_win32_size_max_set, _ecore_evas_win32_size_base_set, _ecore_evas_win32_size_step_set, - NULL, /* _ecore_evas_x_cursor_set */ + _ecore_evas_win32_cursor_set, NULL, /* _ecore_evas_x_layer_set */ _ecore_evas_win32_focus_set, _ecore_evas_win32_iconified_set, @@ -947,7 +984,7 @@ int width, int height) { -#ifdef BUILD_ECORE_WIN32 +#ifdef BUILD_ECORE_EVAS_DIRECTDRAW Evas_Engine_Info_Software_DDraw *einfo; Ecore_Evas *ee; int rmethod; @@ -956,6 +993,7 @@ if (!rmethod) return NULL; + printf ("ecore_evas_software_ddraw_new : ecore_win32_init\n"); if (!ecore_win32_init()) return NULL; @@ -986,13 +1024,18 @@ /* FIXME: sticky to add */ /* init evas here */ + printf ("ecore_evas_software_ddraw_new : evas_new\n"); ee->evas = evas_new(); evas_data_attach_set(ee->evas, ee); + printf ("ecore_evas_software_ddraw_new : evas_output_method_set\n"); evas_output_method_set(ee->evas, rmethod); + printf ("ecore_evas_software_ddraw_new : evas_output_size_set\n"); evas_output_size_set(ee->evas, width, height); + printf ("ecore_evas_software_ddraw_new : evas_output_viewport_set\n"); evas_output_viewport_set(ee->evas, 0, 0, width, height); ee->engine.win32.parent = parent; + printf ("ecore_evas_software_ddraw_new : ecore_win32_window_new\n"); ee->engine.win32.window = ecore_win32_window_new(parent, x, y, width, height); if (!ee->engine.win32.window) { @@ -1001,6 +1044,7 @@ return NULL; } + printf ("ecore_evas_software_ddraw_new : ecore_win32_ddraw_init\n"); if (!ecore_win32_ddraw_init(ee->engine.win32.window)) { ecore_win32_window_del(ee->engine.win32.window); @@ -1009,6 +1053,7 @@ return NULL; } + printf ("ecore_evas_software_ddraw_new : evas_engine_info_get\n"); einfo = (Evas_Engine_Info_Software_DDraw *)evas_engine_info_get(ee->evas); if (einfo) { @@ -1019,6 +1064,7 @@ einfo->info.surface_back = ecore_win32_ddraw_surface_back_get(ee->engine.win32.window); einfo->info.depth = ecore_win32_ddraw_depth_get(ee->engine.win32.window); einfo->info.rotation = 0; + printf ("ecore_evas_software_ddraw_new : evas_engine_info_set\n"); evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo); } @@ -1043,7 +1089,7 @@ y = 0; width = 0; height = 0; -#endif /* BUILD_ECORE_WIN32 */ +#endif /* BUILD_ECORE_EVAS_DIRECTDRAW */ } EAPI Ecore_Win32_Window * @@ -1053,13 +1099,136 @@ } EAPI Ecore_Evas * +ecore_evas_software_ddraw_16_new(Ecore_Win32_Window *parent, + int x, + int y, + int width, + int height) +{ +#ifdef BUILD_ECORE_EVAS_DIRECTDRAW_16 + Evas_Engine_Info_Software_16_DDraw *einfo; + Ecore_Evas *ee; + int rmethod; + + rmethod = evas_render_method_lookup("software_16_ddraw"); + if (!rmethod) + return NULL; + + if (!ecore_win32_init()) + return NULL; + + ee = calloc(1, sizeof(Ecore_Evas)); + if (!ee) + return NULL; + + ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS); + + _ecore_evas_win32_init(); + + ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_win32_engine_func; + + ee->driver = "software_16_ddraw"; + + if (width < 1) width = 1; + if (height < 1) height = 1; + ee->x = x; + ee->y = y; + ee->w = width; + ee->h = height; + + ee->prop.max.w = 32767; + ee->prop.max.h = 32767; + ee->prop.layer = 4; + ee->prop.request_pos = 0; + ee->prop.sticky = 0; + /* FIXME: sticky to add */ + + /* init evas here */ + ee->evas = evas_new(); + evas_data_attach_set(ee->evas, ee); + evas_output_method_set(ee->evas, rmethod); + evas_output_size_set(ee->evas, width, height); + evas_output_viewport_set(ee->evas, 0, 0, width, height); + + ee->engine.win32.parent = parent; + ee->engine.win32.window = ecore_win32_window_new(parent, x, y, width, height); + if (!ee->engine.win32.window) + { + _ecore_evas_win32_shutdown(); + free(ee); + return NULL; + } + + if (!ecore_win32_ddraw_16_init(ee->engine.win32.window)) + { + ecore_win32_window_del(ee->engine.win32.window); + _ecore_evas_win32_shutdown(); + free(ee); + return NULL; + } + + if (ecore_win32_ddraw_depth_get(ee->engine.win32.window) != 16) + { + ecore_win32_ddraw_shutdown(ee->engine.win32.window); + ecore_win32_window_del(ee->engine.win32.window); + _ecore_evas_win32_shutdown(); + free(ee); + return NULL; + } + + einfo = (Evas_Engine_Info_Software_16_DDraw *)evas_engine_info_get(ee->evas); + if (einfo) + { + /* FIXME: REDRAW_DEBUG missing for now */ + einfo->info.window = ((struct _Ecore_Win32_Window *)ee->engine.win32.window)->window; + einfo->info.object = ecore_win32_ddraw_object_get(ee->engine.win32.window); + einfo->info.surface_primary = ecore_win32_ddraw_surface_primary_get(ee->engine.win32.window); + einfo->info.surface_back = ecore_win32_ddraw_surface_back_get(ee->engine.win32.window); + einfo->info.surface_source = ecore_win32_ddraw_surface_source_get(ee->engine.win32.window); + einfo->info.depth = ecore_win32_ddraw_depth_get(ee->engine.win32.window); + printf ("ecore_evas_software_ddraw_16_new depth : %d\n", einfo->info.depth); + einfo->info.rotation = 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_evases = _ecore_list2_prepend(ecore_evases, ee); + ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_win32_winid_str_get(ee->engine.win32.window), ee); + + return ee; +#else + return NULL; + parent = NULL; + x = 0; + y = 0; + width = 0; + height = 0; +#endif /* BUILD_ECORE_EVAS_DIRECTDRAW_16 */ +} + +EAPI Ecore_Win32_Window * +ecore_evas_software_ddraw_16_window_get(Ecore_Evas *ee) +{ + return (Ecore_Win32_Window *) _ecore_evas_win32_window_get(ee); +} + +EAPI Ecore_Evas * ecore_evas_direct3d_new(Ecore_Win32_Window *parent, int x, int y, int width, int height) { -#ifdef BUILD_ECORE_WIN32 +#ifdef BUILD_ECORE_EVAS_DIRECT3D Evas_Engine_Info_Direct3D *einfo; Ecore_Evas *ee; int rmethod; @@ -1156,7 +1325,7 @@ y = 0; width = 0; height = 0; -#endif /* BUILD_ECORE_WIN32 */ +#endif /* BUILD_ECORE_EVAS_DIRECT3D */ } EAPI Ecore_Win32_Window * ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs