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.c ecore_evas_private.h ecore_evas_win32.c Log Message: add glew engine support in ecore_evas. fix Windows backend compilation =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/Ecore_Evas.h,v retrieving revision 1.38 retrieving revision 1.39 diff -u -3 -r1.38 -r1.39 --- Ecore_Evas.h 6 Jun 2008 13:57:02 -0000 1.38 +++ Ecore_Evas.h 26 Jun 2008 09:56:08 -0000 1.39 @@ -78,6 +78,7 @@ ECORE_EVAS_ENGINE_SOFTWARE_DDRAW, ECORE_EVAS_ENGINE_SOFTWARE_DDRAW_16, ECORE_EVAS_ENGINE_DIRECT3D, + ECORE_EVAS_ENGINE_GL_GLEW, ECORE_EVAS_ENGINE_SDL, ECORE_EVAS_ENGINE_SOFTWARE_WINCE, } Ecore_Evas_Engine_Type; @@ -181,6 +182,12 @@ int height); EAPI Ecore_Win32_Window *ecore_evas_direct3d_window_get(Ecore_Evas *ee); + +EAPI Ecore_Evas *ecore_evas_gl_glew_new(Ecore_Win32_Window *parent, + int x, + int y, + int width, + int height); EAPI Ecore_Evas *ecore_evas_sdl_new(const char* name, int w, int h, int fullscreen, int hwsurface, int noframe, int alpha); =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/ecore_evas.c,v retrieving revision 1.47 retrieving revision 1.48 diff -u -3 -r1.47 -r1.48 --- ecore_evas.c 6 Jun 2008 13:57:02 -0000 1.47 +++ ecore_evas.c 26 Jun 2008 09:56:08 -0000 1.48 @@ -78,6 +78,12 @@ #else return 0; #endif + case ECORE_EVAS_ENGINE_GL_GLEW: +#ifdef BUILD_ECORE_EVAS_GL_GLEW + return 1; +#else + return 0; +#endif case ECORE_EVAS_ENGINE_SDL: #ifdef BUILD_ECORE_EVAS_SDL return 1; =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_private.h,v retrieving revision 1.41 retrieving revision 1.42 diff -u -3 -r1.41 -r1.42 --- ecore_evas_private.h 6 Jun 2008 13:57:02 -0000 1.41 +++ ecore_evas_private.h 26 Jun 2008 09:56:08 -0000 1.42 @@ -67,14 +67,17 @@ #endif #ifdef BUILD_ECORE_WIN32 # include "Ecore_Win32.h" -# ifdef HAVE_DIRECTDRAW +# ifdef BUILD_ECORE_EVAS_SOFTWARE_DIRECTDRAW # include <Evas_Engine_Software_DDraw.h> # endif -# ifdef HAVE_DIRECTDRAW_16 +# ifdef BUILD_ECORE_EVAS_SOFTWARE_DIRECTDRAW_16 # include <Evas_Engine_Software_16_DDraw.h> # endif -# ifdef HAVE_DIRECT3D +# ifdef BUILD_ECORE_EVAS_DIRECT3D # include <Evas_Engine_Direct3D.h> +# endif +# ifdef BUILD_ECORE_EVAS_GL_GLEW +# include <Evas_Engine_GL_Glew.h> # endif #endif #ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_win32.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- ecore_evas_win32.c 26 Jun 2008 04:34:06 -0000 1.5 +++ ecore_evas_win32.c 26 Jun 2008 09:56:08 -0000 1.6 @@ -984,7 +984,7 @@ int width, int height) { -#ifdef BUILD_ECORE_EVAS_DIRECTDRAW +#ifdef BUILD_ECORE_EVAS_SOFTWARE_DIRECTDRAW Evas_Engine_Info_Software_DDraw *einfo; Ecore_Evas *ee; int rmethod; @@ -1077,7 +1077,7 @@ y = 0; width = 0; height = 0; -#endif /* BUILD_ECORE_EVAS_DIRECTDRAW */ +#endif /* BUILD_ECORE_EVAS_SOFTWARE_DIRECTDRAW */ } EAPI Ecore_Win32_Window * @@ -1093,7 +1093,7 @@ int width, int height) { -#ifdef BUILD_ECORE_EVAS_DIRECTDRAW_16 +#ifdef BUILD_ECORE_EVAS_SOFTWARE_DIRECTDRAW_16 Evas_Engine_Info_Software_16_DDraw *einfo; Ecore_Evas *ee; int rmethod; @@ -1192,7 +1192,7 @@ y = 0; width = 0; height = 0; -#endif /* BUILD_ECORE_EVAS_DIRECTDRAW_16 */ +#endif /* BUILD_ECORE_EVAS_SOFTWARE_DIRECTDRAW_16 */ } EAPI Ecore_Win32_Window * @@ -1300,4 +1300,98 @@ ecore_evas_direct3d_window_get(Ecore_Evas *ee) { return (Ecore_Win32_Window *) _ecore_evas_win32_window_get(ee); +} + +EAPI Ecore_Evas * +ecore_evas_gl_glew_new(Ecore_Win32_Window *parent, + int x, + int y, + int width, + int height) +{ +#ifdef BUILD_ECORE_EVAS_GL_GLEW + Evas_Engine_Info_GL_Glew *einfo; + Ecore_Evas *ee; + int rmethod; + + rmethod = evas_render_method_lookup("gl_glew"); + 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 = "gl_glew"; + + 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; + } + + einfo = (Evas_Engine_Info_GL_Glew *)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.depth = ecore_win32_screen_depth_get(); + 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_GL_GLEW */ } ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs