Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

Dir     : e17/libs/evas/src/modules/engines/software_x11


Modified Files:
        Evas_Engine_Software_X11.h evas_engine.c evas_engine.h 
        evas_outbuf.c 


Log Message:


add a dst alpha flag
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/modules/engines/software_x11/Evas_Engine_Software_X11.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- Evas_Engine_Software_X11.h  2 Mar 2006 08:06:10 -0000       1.1
+++ Evas_Engine_Software_X11.h  8 Mar 2006 15:35:05 -0000       1.2
@@ -24,6 +24,7 @@
       int       alloc_grayscale : 1;
       int       debug : 1;
       int       shape_dither : 1;
+      int       destination_alpha : 1;
 
       int       alloc_colors_max;
    } info;
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/modules/engines/software_x11/evas_engine.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- evas_engine.c       2 Mar 2006 09:16:46 -0000       1.5
+++ evas_engine.c       8 Mar 2006 15:35:05 -0000       1.6
@@ -19,7 +19,7 @@
 };
 
 /* prototypes we will use here */
-static void *_output_setup(int w, int h, int rot, Display *disp, Drawable 
draw, Visual *vis, Colormap cmap, int depth, int debug, int grayscale, int 
max_colors, Pixmap mask, int shape_dither);
+static void *_output_setup(int w, int h, int rot, Display *disp, Drawable 
draw, Visual *vis, Colormap cmap, int depth, int debug, int grayscale, int 
max_colors, Pixmap mask, int shape_dither, int destination_alpha);
 static Visual *_best_visual_get(Display *disp, int screen);
 static Colormap _best_colormap_get(Display *disp, int screen);
 static int _best_depth_get(Display *disp, int screen);
@@ -46,7 +46,7 @@
 
 /* internal engine routines */
 static void *
-_output_setup(int w, int h, int rot, Display *disp, Drawable draw, Visual 
*vis, Colormap cmap, int depth, int debug, int grayscale, int max_colors, 
Pixmap mask, int shape_dither)
+_output_setup(int w, int h, int rot, Display *disp, Drawable draw, Visual 
*vis, Colormap cmap, int depth, int debug, int grayscale, int max_colors, 
Pixmap mask, int shape_dither, int destination_alpha)
 {
    Render_Engine *re;
    Outbuf_Perf *perf;
@@ -73,7 +73,7 @@
 
    /* get any stored performance metrics from device (xserver) */
    perf = evas_software_x11_outbuf_perf_restore_x(disp, draw, vis, cmap, 
depth);
-   re->ob = evas_software_x11_outbuf_setup_x(w, h, rot, OUTBUF_DEPTH_INHERIT, 
disp, draw, vis, cmap, depth, perf, grayscale, max_colors, mask, shape_dither);
+   re->ob = evas_software_x11_outbuf_setup_x(w, h, rot, OUTBUF_DEPTH_INHERIT, 
disp, draw, vis, cmap, depth, perf, grayscale, max_colors, mask, shape_dither, 
destination_alpha);
    if (!re->ob)
      {
        evas_software_x11_outbuf_perf_free(perf);
@@ -214,7 +214,8 @@
                   info->info.alloc_grayscale,
                   info->info.alloc_colors_max,
                   info->info.mask,
-                  info->info.shape_dither);
+                  info->info.shape_dither,
+                  info->info.destination_alpha);
    if (!e->engine.data.output) return;
    if (!e->engine.data.context)
      e->engine.data.context =
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/modules/engines/software_x11/evas_engine.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- evas_engine.h       14 Jan 2006 12:13:37 -0000      1.1
+++ evas_engine.h       8 Mar 2006 15:35:05 -0000       1.2
@@ -63,6 +63,7 @@
       Evas_List   *pending_writes;
 
       int          mask_dither : 1;
+      int          destination_alpha : 1;
 
       int          debug : 1;
    } priv;
@@ -130,7 +131,7 @@
 void             evas_software_x11_outbuf_init                   (void);
 void             evas_software_x11_outbuf_free                   (Outbuf *buf);
 
-Outbuf          *evas_software_x11_outbuf_setup_x                (int w, int 
h, int rot, Outbuf_Depth depth, Display *disp, Drawable draw, Visual *vis, 
Colormap cmap, int x_depth, Outbuf_Perf *perf, int grayscale, int max_colors, 
Pixmap mask, int shape_dither);
+Outbuf          *evas_software_x11_outbuf_setup_x                (int w, int 
h, int rot, Outbuf_Depth depth, Display *disp, Drawable draw, Visual *vis, 
Colormap cmap, int x_depth, Outbuf_Perf *perf, int grayscale, int max_colors, 
Pixmap mask, int shape_dither, int destination_alpha);
 
 char            *evas_software_x11_outbuf_perf_serialize_x       (Outbuf_Perf 
*perf);
 void             evas_software_x11_outbuf_perf_deserialize_x     (Outbuf_Perf 
*perf, const char *data);
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/modules/engines/software_x11/evas_outbuf.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- evas_outbuf.c       14 Jan 2006 12:13:37 -0000      1.1
+++ evas_outbuf.c       8 Mar 2006 15:35:05 -0000       1.2
@@ -31,10 +31,10 @@
 
 Outbuf             *
 evas_software_x11_outbuf_setup_x(int w, int h, int rot, Outbuf_Depth depth,
-                                             Display * disp, Drawable draw, 
Visual * vis,
-                                             Colormap cmap, int x_depth, 
Outbuf_Perf * perf,
-                                             int grayscale, int max_colors, 
Pixmap mask,
-                                             int shape_dither)
+                                Display * disp, Drawable draw, Visual * vis,
+                                Colormap cmap, int x_depth, Outbuf_Perf * perf,
+                                int grayscale, int max_colors, Pixmap mask,
+                                int shape_dither, int destination_alpha)
 {
    Outbuf             *buf;
 
@@ -56,6 +56,7 @@
    buf->priv.x.depth = x_depth;
 
    buf->priv.mask_dither = shape_dither;
+   buf->priv.destination_alpha = destination_alpha;
 
    {
       Gfx_Func_Convert    conv_func;
@@ -136,7 +137,7 @@
                        pm = PAL_MODE_MONO;
                  }
                buf->priv.pal = evas_software_x11_x_color_allocate(disp, cmap, 
vis,
-                                                             PAL_MODE_RGB666);
+                                                                  
PAL_MODE_RGB666);
                if (!buf->priv.pal)
                  {
                     free(buf);
@@ -146,53 +147,53 @@
           if (buf->priv.pal)
             {
                if (buf->rot == 0)
-                  conv_func = evas_common_convert_func_get(0, buf->w, buf->h,
-                                               
evas_software_x11_x_output_buffer_depth
-                                               (xob), buf->priv.mask.r,
-                                               buf->priv.mask.g,
-                                               buf->priv.mask.b,
-                                               buf->priv.pal->colors,
-                                               buf->rot);
+                 conv_func = evas_common_convert_func_get(0, buf->w, buf->h,
+                                                          
evas_software_x11_x_output_buffer_depth
+                                                          (xob), 
buf->priv.mask.r,
+                                                          buf->priv.mask.g,
+                                                          buf->priv.mask.b,
+                                                          
buf->priv.pal->colors,
+                                                          buf->rot);
                else if (buf->rot == 270)
-                  conv_func = evas_common_convert_func_get(0, buf->h, buf->w,
-                                               
evas_software_x11_x_output_buffer_depth
-                                               (xob), buf->priv.mask.r,
-                                               buf->priv.mask.g,
-                                               buf->priv.mask.b,
-                                               buf->priv.pal->colors,
-                                               buf->rot);
+                 conv_func = evas_common_convert_func_get(0, buf->h, buf->w,
+                                                          
evas_software_x11_x_output_buffer_depth
+                                                          (xob), 
buf->priv.mask.r,
+                                                          buf->priv.mask.g,
+                                                          buf->priv.mask.b,
+                                                          
buf->priv.pal->colors,
+                                                          buf->rot);
                else if (buf->rot == 90)
-                  conv_func = evas_common_convert_func_get(0, buf->h, buf->w,
-                                               
evas_software_x11_x_output_buffer_depth
-                                               (xob), buf->priv.mask.r,
-                                               buf->priv.mask.g,
-                                               buf->priv.mask.b,
-                                               buf->priv.pal->colors,
-                                               buf->rot);
+                 conv_func = evas_common_convert_func_get(0, buf->h, buf->w,
+                                                          
evas_software_x11_x_output_buffer_depth
+                                                          (xob), 
buf->priv.mask.r,
+                                                          buf->priv.mask.g,
+                                                          buf->priv.mask.b,
+                                                          
buf->priv.pal->colors,
+                                                          buf->rot);
             }
           else
             {
                if (buf->rot == 0)
-                  conv_func = evas_common_convert_func_get(0, buf->w, buf->h,
-                                               
evas_software_x11_x_output_buffer_depth
-                                               (xob), buf->priv.mask.r,
-                                               buf->priv.mask.g,
+                 conv_func = evas_common_convert_func_get(0, buf->w, buf->h,
+                                                          
evas_software_x11_x_output_buffer_depth
+                                                          (xob), 
buf->priv.mask.r,
+                                                          buf->priv.mask.g,
                                                buf->priv.mask.b, PAL_MODE_NONE,
-                                               buf->rot);
+                                                          buf->rot);
                else if (buf->rot == 270)
-                  conv_func = evas_common_convert_func_get(0, buf->h, buf->w,
-                                               
evas_software_x11_x_output_buffer_depth
-                                               (xob), buf->priv.mask.r,
-                                               buf->priv.mask.g,
-                                               buf->priv.mask.b, PAL_MODE_NONE,
-                                               buf->rot);
+                 conv_func = evas_common_convert_func_get(0, buf->h, buf->w,
+                                                          
evas_software_x11_x_output_buffer_depth
+                                                          (xob), 
buf->priv.mask.r,
+                                                          buf->priv.mask.g,
+                                                          buf->priv.mask.b, 
PAL_MODE_NONE,
+                                                          buf->rot);
                else if (buf->rot == 90)
-                  conv_func = evas_common_convert_func_get(0, buf->h, buf->w,
-                                               
evas_software_x11_x_output_buffer_depth
-                                               (xob), buf->priv.mask.r,
-                                               buf->priv.mask.g,
-                                               buf->priv.mask.b, PAL_MODE_NONE,
-                                               buf->rot);
+                 conv_func = evas_common_convert_func_get(0, buf->h, buf->w,
+                                                          
evas_software_x11_x_output_buffer_depth
+                                                          (xob), 
buf->priv.mask.r,
+                                                          buf->priv.mask.g,
+                                                          buf->priv.mask.b, 
PAL_MODE_NONE,
+                                                          buf->rot);
             }
           evas_software_x11_x_output_buffer_free(xob, 1);
           if (!conv_func)
@@ -245,7 +246,6 @@
      {
        if ((w * h) < (200 * 200)) use_shm = 0;
      }
-
    if ((buf->rot == 0) &&
        (buf->priv.mask.r == 0xff0000) &&
        (buf->priv.mask.g == 0x00ff00) &&
@@ -297,7 +297,7 @@
                                                            use_shm,
                                                            NULL);
      }
-   if (buf->priv.x.mask)
+   if ((buf->priv.x.mask) || (buf->priv.destination_alpha))
      {
        im->flags |= RGBA_IMAGE_HAS_ALPHA;
        /* FIXME: faster memset! */
@@ -441,6 +441,8 @@
      }
    else
      {
+       DATA32 *s, *e;
+       
        if (data != src_data)
          conv_func(src_data, data,
                    0,




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to