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

Reply via email to