Enlightenment CVS committal
Author : kwo
Project : e16
Module : e
Dir : e16/e/src
Modified Files:
hiwin.c x.c
Log Message:
No need to fetch shape rects in EWindowGetShapePixmap().
===================================================================
RCS file: /cvs/e/e16/e/src/hiwin.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -3 -r1.33 -r1.34
--- hiwin.c 5 Jun 2008 08:55:20 -0000 1.33
+++ hiwin.c 5 Jun 2008 09:20:25 -0000 1.34
@@ -59,12 +59,8 @@
{
EImage *im;
Pixmap mask;
- int shaped;
- mask = None;
- shaped = EShapeCheck(EobjGetWin(eo));
- if (shaped)
- mask = EWindowGetShapePixmap(EobjGetWin(eo));
+ mask = EWindowGetShapePixmap(EobjGetWin(eo));
im = EImageGrabDrawable(draw, mask, 0, 0, EobjGetW(eo), EobjGetH(eo), 0);
if (mask)
EFreePixmap(mask);
===================================================================
RCS file: /cvs/e/e16/e/src/x.c,v
retrieving revision 1.176
retrieving revision 1.177
diff -u -3 -r1.176 -r1.177
--- x.c 5 Jun 2008 08:55:21 -0000 1.176
+++ x.c 5 Jun 2008 09:20:25 -0000 1.177
@@ -1548,6 +1548,35 @@
return win->num_rect != 0;
}
+/* Build mask from window shape rects */
+Pixmap
+EWindowGetShapePixmap(Win win)
+{
+ Pixmap mask;
+ GC gc;
+ int i;
+ const XRectangle *rect;
+
+ if (win->num_rect == 0) /* Not shaped */
+ return None;
+
+ mask = ECreatePixmap(win, win->w, win->h, 1);
+ gc = EXCreateGC(mask, 0, NULL);
+
+ XSetForeground(disp, gc, 0);
+ XFillRectangle(disp, mask, gc, 0, 0, win->w, win->h);
+
+ XSetForeground(disp, gc, 1);
+ rect = win->rects;
+ for (i = 0; i < win->num_rect; i++)
+ XFillRectangle(disp, mask, gc, rect[i].x, rect[i].y,
+ rect[i].width, rect[i].height);
+
+ EXFreeGC(gc);
+
+ return mask;
+}
+
Pixmap
ECreatePixmap(Win win, unsigned int width, unsigned int height,
unsigned int depth)
@@ -1667,40 +1696,6 @@
pxc->green = pec->green << 8;
pxc->blue = pec->blue << 8;
XAllocColor(disp, cmap, pxc);
-}
-
-/* Build mask from window shape rects */
-/* Snatched from imlib_create_scaled_image_from_drawable() */
-Pixmap
-EWindowGetShapePixmap(Win win)
-{
- Pixmap mask;
- GC gc;
- XRectangle *rect;
- int i, w, h;
- int rect_num, rect_ord;
-
- EGetGeometry(win, NULL, NULL, NULL, &w, &h, NULL, NULL);
- mask = ECreatePixmap(win, w, h, 1);
-
- gc = EXCreateGC(mask, 0, NULL);
- XSetForeground(disp, gc, 0);
-
- rect =
- XShapeGetRectangles(disp, win->xwin, ShapeBounding, &rect_num,
&rect_ord);
- XFillRectangle(disp, mask, gc, 0, 0, w, h);
- if (rect)
- {
- XSetForeground(disp, gc, 1);
- for (i = 0; i < rect_num; i++)
- XFillRectangle(disp, mask, gc, rect[i].x, rect[i].y,
- rect[i].width, rect[i].height);
- XFree(rect);
- }
-
- EXFreeGC(gc);
-
- return mask;
}
/*
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs