Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

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


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_x11/evas_engine.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- evas_engine.c       16 Apr 2006 15:51:26 -0000      1.7
+++ evas_engine.c       2 May 2006 07:28:49 -0000       1.8
@@ -54,12 +54,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);
@@ -391,6 +394,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->xinf, (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)
 {
@@ -404,6 +427,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);
@@ -422,9 +454,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
@@ -739,8 +771,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_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:38 -0000      1.1
+++ evas_engine.h       2 May 2006 07:28:49 -0000       1.2
@@ -150,12 +150,15 @@
 
 XR_Gradient *_xre_gradient_color_add(Ximage_Info *xinf, XR_Gradient *gr, int 
r, int g, int b, int a, int distance);
 XR_Gradient *_xre_gradient_colors_clear(XR_Gradient *gr);
+XR_Gradient *_xre_gradient_data_set(Ximage_Info *xinf, 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, int x, int y, 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);
 void         _xre_gradient_type_params_set(XR_Gradient *gr, char *params);
 void        *_xre_gradient_geometry_init(XR_Gradient *gr, int spread);
-int          _xre_gradient_alpha_get(XR_Gradient *gr, int spread);
+int          _xre_gradient_alpha_get(XR_Gradient *gr, int spread, int op);
 void         _xre_gradient_map(RGBA_Draw_Context *dc, XR_Gradient *gr, int 
spread);
 void         _xre_gradient_draw(Xrender_Surface *rs, RGBA_Draw_Context *dc, 
XR_Gradient *gr, int x, int y, int w, int h, double angle, int spread);
     
===================================================================
RCS file: 
/cvs/e/e17/libs/evas/src/modules/engines/xrender_x11/evas_engine_gradient.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- evas_engine_gradient.c      14 Jan 2006 12:13:38 -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(Ximage_Info *xinf, XR_Gradient *gr, void *map, int len, 
int has_alpha)
+{
+   if (!gr)
+     {
+       gr = calloc(1, sizeof(XR_Gradient));
+       if (!gr) return NULL;
+       gr->xinf = xinf;
+       gr->xinf->references++;
+       gr->grad = evas_common_gradient_new();
+       if (!gr->grad)
+         {
+            gr->xinf->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)
 {
@@ -72,6 +113,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_set(XR_Gradient *gr, char *name)
 {
    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->xinf, w, h, 
gr->xinf->fmt32, 1);
                  if (gr->surface)
===================================================================
RCS file: 
/cvs/e/e17/libs/evas/src/modules/engines/xrender_x11/evas_engine_image.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- evas_engine_image.c 17 Apr 2006 01:57:11 -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);
@@ -286,7 +286,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