Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
      Tag: branch-exp
        E.h draw.c fx.c iconify.c 


Log Message:
Use imlib2 for icon grabbing. Reduce PixImg usage.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.314.2.13
retrieving revision 1.314.2.14
diff -u -3 -r1.314.2.13 -r1.314.2.14
--- E.h 15 Aug 2004 07:55:45 -0000      1.314.2.13
+++ E.h 15 Aug 2004 08:15:21 -0000      1.314.2.14
@@ -1255,15 +1255,6 @@
 #define DITEM_SLIDER       8
 #define DITEM_AREA         9
 
-typedef struct _PixImg
-{
-   XImage             *xim;
-   XShmSegmentInfo    *shminfo;
-   Pixmap              pmap;
-   GC                  gc;
-}
-PixImg;
-
 typedef struct _drawqueue
 {
    Window              win;
@@ -1744,15 +1735,6 @@
 /* draw.c */
 void                HandleDrawQueue(void);
 char                IsPropagateEwinOnQueue(EWin * ewin);
-void                EFillPixmap(Window win, Pixmap pmap, int x, int y, int w,
-                               int h);
-void                EPastePixmap(Window win, Pixmap pmap, int x, int y, int w,
-                                int h);
-void                EBlendRemoveShape(EWin * ewin, Pixmap pmap, int x, int y);
-PixImg             *ECreatePixImg(Window win, int w, int h);
-void                EDestroyPixImg(PixImg * pi);
-void                EBlendPixImg(EWin * ewin, PixImg * s1, PixImg * s2,
-                                PixImg * dst, int x, int y, int w, int h);
 
 void                ScaleLine(Pixmap dest, Window src, int dx, int dy, int sw,
                              int pw, int sy, int sh);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/draw.c,v
retrieving revision 1.51
retrieving revision 1.51.2.1
diff -u -3 -r1.51 -r1.51.2.1
--- draw.c      25 Jul 2004 09:34:43 -0000      1.51
+++ draw.c      15 Aug 2004 08:15:21 -0000      1.51.2.1
@@ -268,7 +268,7 @@
    EDBUG_RETURN(0);
 }
 
-void
+static void
 EFillPixmap(Window win, Pixmap pmap, int x, int y, int w, int h)
 {
    XGCValues           gcv;
@@ -280,7 +280,7 @@
    XFreeGC(disp, gc);
 }
 
-void
+static void
 EPastePixmap(Window win, Pixmap pmap, int x, int y, int w, int h)
 {
    XGCValues           gcv;
@@ -292,7 +292,16 @@
    XFreeGC(disp, gc);
 }
 
-PixImg             *
+typedef struct _PixImg
+{
+   XImage             *xim;
+   XShmSegmentInfo    *shminfo;
+   Pixmap              pmap;
+   GC                  gc;
+}
+PixImg;
+
+static PixImg      *
 ECreatePixImg(Window win, int w, int h)
 {
    XGCValues           gcv;
@@ -356,7 +365,7 @@
    return NULL;
 }
 
-void
+static void
 EDestroyPixImg(PixImg * pi)
 {
    if (!pi)
@@ -372,7 +381,7 @@
    Efree(pi);
 }
 
-void
+static void
 EBlendRemoveShape(EWin * ewin, Pixmap pmap, int x, int y)
 {
    XGCValues           gcv;
@@ -438,7 +447,7 @@
    XCopyArea(disp, pmap, VRoot.win, gc, x, y, w, h, x, y);
 }
 
-void
+static void
 EBlendPixImg(EWin * ewin, PixImg * s1, PixImg * s2, PixImg * dst, int x, int y,
             int w, int h)
 {
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/fx.c,v
retrieving revision 1.41.2.1
retrieving revision 1.41.2.2
diff -u -3 -r1.41.2.1 -r1.41.2.2
--- fx.c        8 Aug 2004 00:24:23 -0000       1.41.2.1
+++ fx.c        15 Aug 2004 08:15:21 -0000      1.41.2.2
@@ -42,31 +42,36 @@
 }
 FXHandler;
 
-void                FX_Ripple_Init(const char *name);
-void                FX_Ripple_Desk(void);
-void                FX_Ripple_Quit(void);
-void                FX_Ripple_Pause(void);
-void                FX_Raindrops_Init(const char *name);
-void                FX_Raindrops_Desk(void);
-void                FX_Raindrops_Quit(void);
-void                FX_Raindrops_Pause(void);
-void                FX_Waves_Init(const char *name);
-void                FX_Waves_Desk(void);
-void                FX_Waves_Quit(void);
-void                FX_Waves_Pause(void);
-void                FX_ImageSpinner_Init(const char *name);
-void                FX_ImageSpinner_Desk(void);
-void                FX_ImageSpinner_Quit(void);
-void                FX_ImageSpinner_Pause(void);
+static void         FX_Ripple_Init(const char *name);
+static void         FX_Ripple_Desk(void);
+static void         FX_Ripple_Quit(void);
+static void         FX_Ripple_Pause(void);
+
+#ifdef E_FX_RAINDROPS          /* FIXME */
+static void         FX_Raindrops_Init(const char *name);
+static void         FX_Raindrops_Desk(void);
+static void         FX_Raindrops_Quit(void);
+static void         FX_Raindrops_Pause(void);
+#endif
+static void         FX_Waves_Init(const char *name);
+static void         FX_Waves_Desk(void);
+static void         FX_Waves_Quit(void);
+static void         FX_Waves_Pause(void);
+static void         FX_ImageSpinner_Init(const char *name);
+static void         FX_ImageSpinner_Desk(void);
+static void         FX_ImageSpinner_Quit(void);
+static void         FX_ImageSpinner_Pause(void);
 
 static FXHandler    fx_handlers[] = {
    {"ripples",
     FX_Ripple_Init, FX_Ripple_Desk, FX_Ripple_Quit, FX_Ripple_Pause,
     0, 0},
+#ifdef E_FX_RAINDROPS          /* FIXME */
    {"raindrops",
     FX_Raindrops_Init, FX_Raindrops_Desk, FX_Raindrops_Quit,
     FX_Raindrops_Pause,
     0, 0},
+#endif
    {"waves",
     FX_Waves_Init, FX_Waves_Desk, FX_Waves_Quit, FX_Waves_Pause,
     0, 0},
@@ -320,7 +325,7 @@
    data = NULL;
 }
 
-void
+static void
 FX_Ripple_Init(const char *name)
 {
    fx_ripple_count = 0;
@@ -329,7 +334,7 @@
    name = NULL;
 }
 
-void
+static void
 FX_Ripple_Desk(void)
 {
    EFreePixmap(disp, fx_ripple_above);
@@ -337,7 +342,7 @@
    fx_ripple_above = 0;
 }
 
-void
+static void
 FX_Ripple_Quit(void)
 {
    RemoveTimerEvent("FX_RIPPLE_TIMEOUT");
@@ -345,7 +350,7 @@
              fx_ripple_waterh, False);
 }
 
-void
+static void
 FX_Ripple_Pause(void)
 {
    static char         paused = 0;
@@ -362,6 +367,7 @@
      }
 }
 
+#ifdef E_FX_RAINDROPS          /* FIXME - Requires eliminating use of PixImg */
 /****************************************************************************/
 
 /****************************** RAIN DROPS **********************************/
@@ -601,7 +607,7 @@
    data = NULL;
 }
 
-void
+static void
 FX_Raindrops_Init(const char *name)
 {
    int                 i;
@@ -618,13 +624,13 @@
    name = NULL;
 }
 
-void
+static void
 FX_Raindrops_Desk(void)
 {
    fx_raindrops_win = 0;
 }
 
-void
+static void
 FX_Raindrops_Quit(void)
 {
    int                 i;
@@ -644,7 +650,7 @@
    fx_raindrops_win = 0;
 }
 
-void
+static void
 FX_Raindrops_Pause(void)
 {
    static char         paused = 0;
@@ -660,6 +666,7 @@
        paused = 0;
      }
 }
+#endif /* E_FX_RAINDROPS */
 
 /****************************************************************************/
 
@@ -814,7 +821,7 @@
    data = NULL;
 }
 
-void
+static void
 FX_Waves_Init(const char *name)
 {
    fx_wave_count = 0;
@@ -823,7 +830,7 @@
    name = NULL;
 }
 
-void
+static void
 FX_Waves_Desk(void)
 {
    XFreePixmap(disp, fx_wave_above);
@@ -831,7 +838,7 @@
    fx_wave_above = 0;
 }
 
-void
+static void
 FX_Waves_Quit(void)
 {
    RemoveTimerEvent("FX_WAVE_TIMEOUT");
@@ -839,7 +846,7 @@
              FX_WAVE_WATERH, False);
 }
 
-void
+static void
 FX_Waves_Pause(void)
 {
    static char         paused = 0;
@@ -930,7 +937,7 @@
    data = NULL;
 }
 
-void
+static void
 FX_ImageSpinner_Init(const char *name)
 {
    fx_imagespinner_count = 3;
@@ -938,13 +945,13 @@
    fx_imagespinner_params = Estrdup(name);
 }
 
-void
+static void
 FX_ImageSpinner_Desk(void)
 {
    fx_imagespinner_win = desks.desk[desks.current].win;
 }
 
-void
+static void
 FX_ImageSpinner_Quit(void)
 {
    RemoveTimerEvent("FX_IMAGESPINNER_TIMEOUT");
@@ -955,7 +962,7 @@
    fx_imagespinner_win = 0;
 }
 
-void
+static void
 FX_ImageSpinner_Pause(void)
 {
    static char         paused = 0;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/iconify.c,v
retrieving revision 1.116.2.7
retrieving revision 1.116.2.8
diff -u -3 -r1.116.2.7 -r1.116.2.8
--- iconify.c   10 Aug 2004 19:36:30 -0000      1.116.2.7
+++ iconify.c   15 Aug 2004 08:15:21 -0000      1.116.2.8
@@ -730,6 +730,7 @@
    int                 x, y;
    unsigned int        w, h, depth, bw;
    Window              rt;
+   Imlib_Image         im;
 
    if (!ewin->client.icon_pmap)
       return;
@@ -738,36 +739,21 @@
    h = 0;
    EGetGeometry(disp, ewin->client.icon_pmap, &rt, &x, &y, &w, &h, &bw, &depth);
 
-   ewin->icon_pmm.type = 0;
    ewin->icon_w = (int)w;
    ewin->icon_h = (int)h;
-   ewin->icon_pmm.pmap = ECreatePixmap(disp, VRoot.win, w, h, VRoot.depth);
-   ewin->icon_pmm.mask = 0;
-   if (ewin->client.icon_mask)
-      ewin->icon_pmm.mask = ECreatePixmap(disp, VRoot.win, w, h, 1);
-
-   if (depth == 1)
-     {
-       GC                  gc;
-       XGCValues           gcv;
-
-       gc = XCreateGC(disp, ewin->icon_pmm.pmap, 0, &gcv);
-       XSetForeground(disp, gc, WhitePixel(disp, VRoot.scr));
-       XFillRectangle(disp, ewin->icon_pmm.pmap, gc, 0, 0, w, h);
-       XSetClipOrigin(disp, gc, 0, 0);
-       XSetClipMask(disp, gc, ewin->client.icon_pmap);
-       XSetForeground(disp, gc, BlackPixel(disp, VRoot.scr));
-       XFillRectangle(disp, ewin->icon_pmm.pmap, gc, 0, 0, w, h);
-       XFreeGC(disp, gc);
-     }
-   else
-      EPastePixmap(ewin->icon_pmm.pmap, ewin->client.icon_pmap, 0, 0, w, h);
-
-   if (ewin->client.icon_mask)
-      EPastePixmap(ewin->icon_pmm.mask, ewin->client.icon_mask, 0, 0, w, h);
+   if (w < 1 || h < 1)
+      return;
 
-   if ((ewin->icon_w < 1) || (ewin->icon_h < 1))
-      FreePmapMask(&ewin->icon_pmm);
+   imlib_context_set_colormap(None);
+   imlib_context_set_drawable(ewin->client.icon_pmap);
+   im = imlib_create_image_from_drawable(ewin->client.icon_mask, 0, 0, w, h, 0);
+   imlib_context_set_image(im);
+   imlib_image_set_has_alpha(1);
+   imlib_context_set_colormap(VRoot.cmap);
+   imlib_context_set_drawable(VRoot.win);
+   ewin->icon_pmm.type = 1;
+   imlib_render_pixmaps_for_whole_image(&ewin->icon_pmm.pmap,
+                                       &ewin->icon_pmm.mask);
 }
 
 static void




-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to