Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

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


Modified Files:
        evas_engine.c evas_engine.h evas_engine_gradient.c 
        evas_engine_image.c 


Log Message:


jose's software rendering work - slight improvements (about 5-10%). i had to
disable destination alha mmx support for text rendering (mask + color) as it
was broken in tests.

===================================================================
RCS file: /cvs/e/e17/libs/evas/src/modules/engines/xrender_xcb/evas_engine.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- evas_engine.c       23 Apr 2006 15:38:23 -0000      1.3
+++ evas_engine.c       2 May 2006 07:28:49 -0000       1.4
@@ -57,12 +57,15 @@
 static void eng_polygon_draw(void *data, void *context, void *surface, void 
*polygon);
 static void *eng_gradient_color_add(void *data, void *context, void *gradient, 
int r, int g, int b, int a, int distance);
 static void *eng_gradient_colors_clear(void *data, void *context, void 
*gradient);
+static void *eng_gradient_data_set(void *data, void *context, void *gradient, 
void *map, int len, int has_alpha);
+static void *eng_gradient_data_unset(void *data, void *context, void 
*gradient);
 static void eng_gradient_free(void *data, void *gradient);
 static void eng_gradient_fill_set(void *data, void *gradient, int x, int y, 
int w, int h);
+static void eng_gradient_range_offset_set(void *data, void *gradient, float 
offset);
 static void eng_gradient_type_set(void *data, void *gradient, char *name);
 static void eng_gradient_type_params_set(void *data, void *gradient, char 
*params);
 static void *eng_gradient_geometry_init(void *data, void *gradient, int 
spread);
-static int  eng_gradient_alpha_get(void *data, void *gradient, int spread);
+static int  eng_gradient_alpha_get(void *data, void *gradient, int spread, int 
op);
 static void eng_gradient_map(void *data, void *context, void *gradient, int 
spread);
 static void eng_gradient_draw(void *data, void *context, void *surface, void 
*gradient, int x, int y, int w, int h, double angle, int spread);
 static void *eng_image_load(void *data, char *file, char *key, int *error);
@@ -401,6 +404,26 @@
    return _xre_gradient_colors_clear((XR_Gradient *)gradient);
 }
 
+static void *
+eng_gradient_data_set(void *data, void *context, void *gradient, void *map, 
int len, int has_alpha)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   return _xre_gradient_data_set(re->xcbinf, (XR_Gradient *)gradient, map, 
len, has_alpha);
+   context = NULL;
+}
+
+static void *
+eng_gradient_data_unset(void *data, void *context, void *gradient)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   return _xre_gradient_data_unset((XR_Gradient *)gradient);
+   context = NULL;
+}
+
 static void
 eng_gradient_free(void *data, void *gradient)
 {
@@ -414,6 +437,15 @@
 }
 
 static void
+eng_gradient_range_offset_set(void *data, void *gradient, float offset)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   _xre_gradient_range_offset_set((XR_Gradient *)gradient, offset);
+}
+
+static void
 eng_gradient_type_set(void *data, void *gradient, char *name)
 {
    _xre_gradient_type_set((XR_Gradient *)gradient, name);
@@ -432,9 +464,9 @@
 }
 
 static int
-eng_gradient_alpha_get(void *data, void *gradient, int spread)
+eng_gradient_alpha_get(void *data, void *gradient, int spread, int op)
 {
-   return _xre_gradient_alpha_get((XR_Gradient *)gradient, spread);
+   return _xre_gradient_alpha_get((XR_Gradient *)gradient, spread, op);
 }
 
 static void
@@ -749,8 +781,11 @@
    ORD(polygon_draw);
    ORD(gradient_color_add);
    ORD(gradient_colors_clear);
+   ORD(gradient_data_set);
+   ORD(gradient_data_unset);
    ORD(gradient_free);
    ORD(gradient_fill_set);
+   ORD(gradient_range_offset_set);
    ORD(gradient_type_set);
    ORD(gradient_type_params_set);
    ORD(gradient_geometry_init);
===================================================================
RCS file: /cvs/e/e17/libs/evas/src/modules/engines/xrender_xcb/evas_engine.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- evas_engine.h       10 Mar 2006 19:10:07 -0000      1.1
+++ evas_engine.h       2 May 2006 07:28:49 -0000       1.2
@@ -173,6 +173,14 @@
 
 XR_Gradient *_xre_gradient_colors_clear    (XR_Gradient      *gr);
 
+XR_Gradient *_xre_gradient_data_set        (XCBimage_Info *xcbinf,
+                                            XR_Gradient *gr,
+                                            void *map,
+                                            int len,
+                                            int has_alpha);
+
+XR_Gradient *_xre_gradient_data_unset      (XR_Gradient *gr);
+
 void         _xre_gradient_free            (XR_Gradient      *gr);
 
 void         _xre_gradient_fill_set        (XR_Gradient      *gr,
@@ -181,6 +189,9 @@
                                             int               w,
                                             int               h);
 
+void         _xre_gradient_range_offset_set(XR_Gradient *gr,
+                                            float offset);
+
 void         _xre_gradient_type_set        (XR_Gradient      *gr,
                                             char             *name);
 
@@ -191,7 +202,8 @@
                                             int               spread);
 
 int          _xre_gradient_alpha_get       (XR_Gradient       *gr,
-                                            int                spread);
+                                            int                spread,
+                                            int op);
 
 void         _xre_gradient_map             (RGBA_Draw_Context *dc,
                                             XR_Gradient       *gr,
===================================================================
RCS file: 
/cvs/e/e17/libs/evas/src/modules/engines/xrender_xcb/evas_engine_gradient.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- evas_engine_gradient.c      10 Mar 2006 19:10:07 -0000      1.1
+++ evas_engine_gradient.c      2 May 2006 07:28:49 -0000       1.2
@@ -45,6 +45,47 @@
    return gr;
 }
 
+XR_Gradient *
+_xre_gradient_data_set(XCBimage_Info *xcbinf, XR_Gradient *gr, void *map, int 
len, int has_alpha)
+{
+   if (!gr)
+     {
+       gr = calloc(1, sizeof(XR_Gradient));
+       if (!gr) return NULL;
+       gr->xcbinf = xcbinf;
+       gr->xcbinf->references++;
+       gr->grad = evas_common_gradient_new();
+       if (!gr->grad)
+         {
+            gr->xcbinf->references--;
+            free(gr);
+            return NULL;
+         }
+     }
+   evas_common_gradient_data_set(gr->grad, map, len, has_alpha);
+   if (gr->surface)
+     {
+       _xr_render_surface_free(gr->surface);
+       gr->surface = NULL;
+     }
+   gr->changed = 1;
+   return gr;
+}
+
+XR_Gradient *
+_xre_gradient_data_unset(XR_Gradient *gr)
+{
+   if (!gr) return NULL;
+   evas_common_gradient_data_unset(gr->grad);
+   if (gr->surface)
+     {
+       _xr_render_surface_free(gr->surface);
+       gr->surface = NULL;
+     }
+   gr->changed = 1;
+   return gr;
+}
+
 void
 _xre_gradient_free(XR_Gradient *gr)
 {
@@ -80,6 +121,14 @@
 }
 
 void
+_xre_gradient_range_offset_set(XR_Gradient *gr, float offset)
+{
+   if (!gr) return;
+   evas_common_gradient_range_offset_set(gr->grad, offset);
+   gr->changed = 1;
+}
+
+void
 _xre_gradient_type_params_set(XR_Gradient *gr, char *params)
 {
    if (!gr) return;
@@ -96,10 +145,10 @@
 }
 
 int
-_xre_gradient_alpha_get(XR_Gradient *gr, int spread)
+_xre_gradient_alpha_get(XR_Gradient *gr, int spread, int op)
 {
    if (!gr) return 0;
-   return evas_common_gradient_has_alpha(gr->grad, spread);
+   return evas_common_gradient_has_alpha(gr->grad, spread, op);
 }
 
 void
@@ -140,6 +189,7 @@
                  memset(im->image->data, 0, im->image->w * im->image->h * 
sizeof(DATA32));
                  dc2->anti_alias = dc->anti_alias;
                  dc2->interpolation.color_space = 
dc->interpolation.color_space;
+                 dc2->render_op = _EVAS_RENDER_COPY;
                  evas_common_gradient_draw(im, dc2, 0, 0, w, h, gr->grad, 
angle, spread);
                  gr->surface = _xr_render_surface_new(gr->xcbinf, w, h, 
gr->xcbinf->fmt32, 1);
                  if (gr->surface)
===================================================================
RCS file: 
/cvs/e/e17/libs/evas/src/modules/engines/xrender_xcb/evas_engine_image.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- evas_engine_image.c 23 Apr 2006 15:38:23 -0000      1.3
+++ evas_engine_image.c 2 May 2006 07:28:49 -0000       1.4
@@ -139,7 +139,7 @@
      }
    if (data)
      {
-       Gfx_Func_Blend_Src_Dst func;
+       Gfx_Func_Copy func;
        
        func = evas_common_draw_func_copy_get(w * h, 0);
        if (func) func(data, im->data, w * h);
@@ -287,7 +287,7 @@
      }
    if (im->data)
      {
-       Gfx_Func_Blend_Src_Dst func;
+       Gfx_Func_Copy func;
        int x = 0, y = 0, ww, hh;
        unsigned int *sp, *dp;
        void *data;




-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to