Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

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


Modified Files:
        evas_gl_common.h evas_gl_context.c evas_gl_font.c 


Log Message:


bring gl engine vaguely back up to snuff.

===================================================================
RCS file: /cvs/e/e17/libs/evas/src/modules/engines/gl_common/evas_gl_common.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- evas_gl_common.h    30 Sep 2006 10:18:34 -0000      1.5
+++ evas_gl_common.h    6 Dec 2006 14:58:00 -0000       1.6
@@ -42,24 +42,25 @@
 {
    int             w, h;
 
-   char            dither : 1;
-   char            blend : 1;
+   unsigned char   dither : 1;
+   unsigned char   blend : 1;
+   unsigned char   blend_alpha : 1;
    unsigned char   r, g, b, a;
 
    struct {
-      char         size : 1;
-      char         dither : 1;
-      char         blend : 1;
-      char         color : 1;
-      char         texture : 1;
-      char         clip : 1;
-      char         buf : 1;
-      char         other : 1;
+      unsigned char size : 1;
+      unsigned char dither : 1;
+      unsigned char blend : 1;
+      unsigned char color : 1;
+      unsigned char texture : 1;
+      unsigned char clip : 1;
+      unsigned char buf : 1;
+      unsigned char other : 1;
    } change;
 
    struct {
-      char         active : 1;
-      int          x, y, w, h;
+      unsigned char active : 1;
+      int           x, y, w, h;
    } clip;
 
    struct {
@@ -74,7 +75,7 @@
 
    Evas_GL_Texture      *texture;
    GLuint                font_texture;
-   char                  font_texture_rectangle : 1;
+   unsigned char         font_texture_rectangle : 1;
 
    int             max_texture_depth;
    int             max_texture_size;
@@ -96,12 +97,12 @@
 
    GLuint           texture;
 
-   char             smooth : 1;
-   char             changed : 1;
-   char             have_mipmaps : 1;
-   char             rectangle : 1;
-   char             not_power_of_two : 1;
-   char             opt : 1;
+   unsigned char    smooth : 1;
+   unsigned char    changed : 1;
+   unsigned char    have_mipmaps : 1;
+   unsigned char    rectangle : 1;
+   unsigned char    not_power_of_two : 1;
+   unsigned char    opt : 1;
 
    int              references;
 };
@@ -114,8 +115,8 @@
    RGBA_Image_Loadopts load_opts;
    int              putcount;
    int              references;
-   char             dirty : 1;
-   char             cached : 1;
+   unsigned char    dirty : 1;
+   unsigned char    cached : 1;
 };
 
 struct _Evas_GL_Polygon
@@ -153,7 +154,7 @@
    int              w, h;
    GLuint           texture;
    int              references;
-   char             rectangle : 1;
+   unsigned char    rectangle : 1;
    Evas_List       *allocations;
 };
 
===================================================================
RCS file: /cvs/e/e17/libs/evas/src/modules/engines/gl_common/evas_gl_context.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- evas_gl_context.c   30 Sep 2006 10:18:34 -0000      1.2
+++ evas_gl_context.c   6 Dec 2006 14:58:00 -0000       1.3
@@ -73,8 +73,8 @@
 // this causes at least nvidia's drivers to go into pathological pain when
 // changing textures a lot (doing video). so we wont do anything with this
 // for now, but it does work.
-            gc->ext.arb_texture_non_power_of_two = 0; printf("DISABLE 
GL_ARB_texture_non_power_of_two\n");
-//          gc->ext.nv_texture_rectangle = 0; printf("DISABLE 
GL_NV_texture_rectangle\n");
+//          gc->ext.arb_texture_non_power_of_two = 0; printf("DISABLE 
GL_ARB_texture_non_power_of_two\n");
+            gc->ext.nv_texture_rectangle = 0; printf("DISABLE 
GL_NV_texture_rectangle\n");
          }
        else
          {
@@ -127,9 +127,27 @@
 void
 evas_gl_common_context_blend_set(Evas_GL_Context *gc, int blend)
 {
-   if (((blend) && (gc->blend)) || ((!blend) && (!gc->blend))) return;
-   gc->change.blend = 1;
-   gc->blend = blend;
+   if (blend == 1)
+     {
+       if (gc->blend) return;
+       gc->change.blend = 1;
+       gc->blend = 1;
+       gc->blend_alpha = 0;
+     }
+   else if (blend == 2)
+     {
+       if (gc->blend_alpha) return;
+       gc->change.blend = 1;
+       gc->blend = 0;
+       gc->blend_alpha = 1;
+     }
+   else
+     {
+       if ((!gc->blend) && (!gc->blend_alpha)) return;
+       gc->change.blend = 1;
+       gc->blend = 0;
+       gc->blend_alpha = 0;
+     }
    if (_evas_gl_common_context == gc) _evas_gl_common_blend_set(gc);
 }
 
@@ -267,7 +285,12 @@
 _evas_gl_common_blend_set(Evas_GL_Context *gc)
 {
    if (!gc->change.blend) return;
-   if (gc->blend)
+   if (gc->blend_alpha)
+     {
+       glEnable(GL_BLEND);
+        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+     }
+   else if (gc->blend)
      {
        glEnable(GL_BLEND);
        glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
@@ -350,7 +373,7 @@
                    {
                       if (gc->texture->smooth)
                         {
-                           glTexParameteri(GL_TEXTURE_2D, 
GL_TEXTURE_MAX_ANISOTROPY_EXT, 8);
+                           glTexParameteri(GL_TEXTURE_2D, 
GL_TEXTURE_MAX_ANISOTROPY_EXT, 16);
                            glTexParameteri(GL_TEXTURE_2D, 
GL_TEXTURE_MAG_FILTER, GL_LINEAR);
                            if (gc->texture->have_mipmaps)
                              glTexParameteri(GL_TEXTURE_2D, 
GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
===================================================================
RCS file: /cvs/e/e17/libs/evas/src/modules/engines/gl_common/evas_gl_font.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- evas_gl_font.c      30 Sep 2006 10:18:34 -0000      1.2
+++ evas_gl_font.c      6 Dec 2006 14:58:00 -0000       1.3
@@ -181,9 +181,14 @@
        int r, g, b, a;
 
        a = (dc->col.col >> 24) & 0xff;
+       if (a == 0) return;
        r = (dc->col.col >> 16) & 0xff;
        g = (dc->col.col >> 8 ) & 0xff;
        b = (dc->col.col      ) & 0xff;
+       /* have to un-premul the color - as we are using blend mode 2 
(non-premul blend) */
+       r = (r * 255) / a;
+       g = (g * 255) / a;
+       b = (b * 255) / a;
        evas_gl_common_context_color_set(gc, r, g, b, a);
        if (dc->clip.use)
          evas_gl_common_context_clip_set(gc, 1,
@@ -192,7 +197,7 @@
        else
          evas_gl_common_context_clip_set(gc, 0,
                                          0, 0, 0, 0);
-       evas_gl_common_context_blend_set(gc, 1);
+       evas_gl_common_context_blend_set(gc, 2);
        evas_gl_common_context_read_buf_set(gc, GL_BACK);
        evas_gl_common_context_write_buf_set(gc, GL_BACK);
      }



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to