Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_evas


Modified Files:
        Ecore_Evas.h Makefile.am ecore_evas.c ecore_evas_fb.c 
        ecore_evas_private.h ecore_evas_x.c 
Added Files:
        ecore_evas_buffer.c 


Log Message:


ecore_evas supprot for buffers... and bingo... image objects in another
evas.. so u can put an evas in an evas.. and get its pixel data or just
render to raw ARGB memory too :)

===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Ecore_Evas.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- Ecore_Evas.h        25 Nov 2004 05:17:16 -0000      1.7
+++ Ecore_Evas.h        8 Jan 2005 18:40:31 -0000       1.8
@@ -52,7 +52,8 @@
 {
    ECORE_EVAS_ENGINE_SOFTWARE_X11,
    ECORE_EVAS_ENGINE_SOFTWARE_FB,
-   ECORE_EVAS_ENGINE_GL_X11
+   ECORE_EVAS_ENGINE_GL_X11,
+   ECORE_EVAS_ENGINE_SOFTWARE_BUFFER
 } Ecore_Evas_Engine_Type;
 
 #ifndef _ECORE_X_H
@@ -87,6 +88,11 @@
 
 EAPI Ecore_Evas     *ecore_evas_fb_new(char *disp_name, int rotation, int w, 
int h);
 
+EAPI Ecore_Evas     *ecore_evas_buffer_new(int w, int h);
+EAPI int            *ecore_evas_buffer_pixels_get(Ecore_Evas *ee);
+       
+EAPI Evas_Object    *ecore_evas_object_image_new(Ecore_Evas *ee_target);
+
 /* generic manipulation calls */
 EAPI void        ecore_evas_free(Ecore_Evas *ee);
 EAPI void       *ecore_evas_data_get(Ecore_Evas *ee, const char *key);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Makefile.am,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- Makefile.am 2 Nov 2004 04:03:26 -0000       1.9
+++ Makefile.am 8 Jan 2005 18:40:31 -0000       1.10
@@ -43,8 +43,9 @@
 libecore_evas_la_SOURCES = \
 ecore_evas.c \
 ecore_evas_private.h \
+ecore_evas_x.c \
 ecore_evas_fb.c \
-ecore_evas_x.c
+ecore_evas_buffer.c
 
 libecore_evas_la_LIBADD = \
 $(ECORE_X_LIB) \
@@ -61,7 +62,8 @@
 
 EXTRA_DIST = \
 ecore_evas.c \
+ecore_evas_private.h \
 ecore_evas_x.c \
 ecore_evas_fb.c \
-ecore_evas_private.h
+ecore_evas_buffer.c
 
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/ecore_evas.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- ecore_evas.c        22 Oct 2004 03:41:48 -0000      1.17
+++ ecore_evas.c        8 Jan 2005 18:40:31 -0000       1.18
@@ -40,6 +40,13 @@
        return 0;
 #endif 
        break;
+      case ECORE_EVAS_ENGINE_SOFTWARE_BUFFER:
+#ifdef BUILD_ECORE_EVAS_BUFFER
+       return 1;
+#else
+       return 0;
+#endif 
+       break;
       default:
        return 0;
        break;
@@ -79,6 +86,9 @@
 #ifdef BUILD_ECORE_EVAS_FB
        while (_ecore_evas_fb_shutdown());
 #endif
+#ifdef BUILD_ECORE_EVAS_BUFFER
+       while (_ecore_evas_buffer_shutdown());
+#endif
        evas_shutdown(); 
      }
    if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0;
@@ -101,6 +111,10 @@
        return;
      }
    ECORE_MAGIC_SET(ee, ECORE_MAGIC_NONE);
+   while (ee->sub_ecore_evas)
+     {
+       ecore_evas_free(ee->sub_ecore_evas->data);
+     }
    if (ee->data) evas_hash_free(ee->data);
    if (ee->driver) free(ee->driver);
    if (ee->name) free(ee->name);
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_fb.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- ecore_evas_fb.c     14 Dec 2004 03:21:42 -0000      1.9
+++ ecore_evas_fb.c     8 Jan 2005 18:40:31 -0000       1.10
@@ -186,7 +186,22 @@
        ee = (Ecore_Evas *)l;
        if (ee->visible)
          {
+#ifdef BUILD_ECORE_EVAS_BUFFER
+            Evas_List *ll;
+#endif
+            
             if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee);
+#ifdef BUILD_ECORE_EVAS_BUFFER
+            for (ll = ee->sub_ecore_evas; ll; ll = ll->next)
+              {
+                 Ecore_Evas *ee2;
+                 
+                 ee2 = ll->data;
+                 if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2);
+                 _ecore_evas_buffer_render(ee2);
+                 if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
+              }
+#endif      
             evas_render(ee->evas);
             if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
          }
@@ -481,8 +496,8 @@
    ee->w = w;
    ee->h = h;
 
-   ee->prop.max.w = 240;
-   ee->prop.max.h = 320;
+   ee->prop.max.w = 0;
+   ee->prop.max.h = 0;
    ee->prop.layer = 0;
    ee->prop.focused = 1;
    ee->prop.borderless = 1;
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_private.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- ecore_evas_private.h        23 Nov 2004 15:17:54 -0000      1.8
+++ ecore_evas_private.h        8 Jan 2005 18:40:31 -0000       1.9
@@ -25,6 +25,9 @@
 #ifdef BUILD_ECORE_EVAS_FB
 #include <Evas_Engine_FB.h>
 #endif
+#ifdef BUILD_ECORE_EVAS_BUFFER
+#include <Evas_Engine_Buffer.h>
+#endif
 
 typedef struct _Ecore_Evas             Ecore_Evas;
 typedef struct _Ecore_Evas_Engine      Ecore_Evas_Engine;
@@ -94,6 +97,12 @@
       int real_h;
    } fb;
 #endif
+#ifdef BUILD_ECORE_EVAS_BUFFER
+   struct {
+      void *pixels;
+      Evas_Object *image;
+   } buffer;
+#endif
 };
   
 struct _Ecore_Evas
@@ -165,6 +174,7 @@
    } func;
    
    Ecore_Evas_Engine engine;
+   Evas_List *sub_ecore_evas;
 };
 
 #ifdef BUILD_ECORE_X
@@ -173,6 +183,10 @@
 #ifdef BUILD_ECORE_EVAS_FB
 int _ecore_evas_fb_shutdown(void);
 #endif
+#ifdef BUILD_ECORE_EVAS_BUFFER
+int _ecore_evas_buffer_shutdown(void);
+void _ecore_evas_buffer_render(Ecore_Evas *ee);
+#endif
 
 void _ecore_evas_fps_debug_init(void);
 void _ecore_evas_fps_debug_shutdown(void);
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_x.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -3 -r1.30 -r1.31
--- ecore_evas_x.c      14 Dec 2004 03:21:42 -0000      1.30
+++ ecore_evas_x.c      8 Jan 2005 18:40:32 -0000       1.31
@@ -451,9 +451,23 @@
    for (l = (Ecore_Oldlist *)ecore_evases; l; l = l->next)
      {
        Ecore_Evas *ee;
+#ifdef BUILD_ECORE_EVAS_BUFFER
+       Evas_List *ll;
+#endif
        
        ee = (Ecore_Evas *)l;
        if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee);
+#ifdef BUILD_ECORE_EVAS_BUFFER
+       for (ll = ee->sub_ecore_evas; ll; ll = ll->next)
+         {
+            Ecore_Evas *ee2;
+            
+            ee2 = ll->data;
+            if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2);
+            _ecore_evas_buffer_render(ee2);
+            if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
+         }
+#endif 
        if (ee->prop.avoid_damage)
          {
             Evas_List *updates, *l;




-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to