Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_x


Modified Files:
        Ecore_X.h ecore_x.c ecore_x_events.c ecore_x_window_shape.c 


Log Message:


basic core of shape support

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/Ecore_X.h,v
retrieving revision 1.106
retrieving revision 1.107
diff -u -3 -r1.106 -r1.107
--- Ecore_X.h   10 Apr 2005 10:20:18 -0000      1.106
+++ Ecore_X.h   13 Apr 2005 15:47:35 -0000      1.107
@@ -977,8 +977,19 @@
 EAPI void             ecore_x_window_prop_state_set(Ecore_X_Window win, 
Ecore_X_Window_State s);
 EAPI int              ecore_x_window_prop_state_isset(Ecore_X_Window win, 
Ecore_X_Window_State s);
 EAPI void             ecore_x_window_prop_state_unset(Ecore_X_Window win, 
Ecore_X_Window_State s);
-EAPI void             ecore_x_window_shape_mask_set(Ecore_X_Window win, 
Ecore_X_Pixmap mask);
-       
+
+EAPI void               ecore_x_window_shape_mask_set(Ecore_X_Window win, 
Ecore_X_Pixmap mask);
+EAPI void               ecore_x_window_shape_window_set(Ecore_X_Window win, 
Ecore_X_Window shape_win);
+EAPI void               ecore_x_window_shape_window_set_xy(Ecore_X_Window win, 
Ecore_X_Window shape_win, int x, int y);
+EAPI void               ecore_x_window_shape_rectangle_set(Ecore_X_Window win, 
int x, int y, int w, int h);
+EAPI void               ecore_x_window_shape_rectangles_set(Ecore_X_Window 
win, Ecore_X_Rectangle *rects, int num);
+EAPI void               ecore_x_window_shape_window_add(Ecore_X_Window win, 
Ecore_X_Window shape_win);
+EAPI void               ecore_x_window_shape_window_add_xy(Ecore_X_Window win, 
Ecore_X_Window shape_win, int x, int y);
+EAPI void               ecore_x_window_shape_rectangle_add(Ecore_X_Window win, 
int x, int y, int w, int h);
+EAPI void               ecore_x_window_shape_rectangles_add(Ecore_X_Window 
win, Ecore_X_Rectangle *rects, int num);
+EAPI Ecore_X_Rectangle *ecore_x_window_shape_rectangles_get(Ecore_X_Window 
win, int *num_ret);
+EAPI void               ecore_x_window_shape_events_select(Ecore_X_Window win, 
int on);
+   
 EAPI Ecore_X_Pixmap   ecore_x_pixmap_new(Ecore_X_Window win, int w, int h, int 
dep);
 EAPI void             ecore_x_pixmap_del(Ecore_X_Pixmap pmap);
 EAPI void             ecore_x_pixmap_paste(Ecore_X_Pixmap pmap, 
Ecore_X_Drawable dest, Ecore_X_GC gc, int sx, int sy, int w, int h, int dx, int 
dy);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x.c,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -3 -r1.69 -r1.70
--- ecore_x.c   10 Apr 2005 10:20:18 -0000      1.69
+++ ecore_x.c   13 Apr 2005 15:47:51 -0000      1.70
@@ -939,6 +939,7 @@
                VisibilityChangeMask |
                StructureNotifyMask
                );
+   XShapeSelectInput(_ecore_x_disp, win, ShapeNotifyMask);
 }
 
 void
@@ -959,6 +960,7 @@
                ColormapChangeMask |
                VisibilityChangeMask |
                StructureNotifyMask);
+   XShapeSelectInput(_ecore_x_disp, win, ShapeNotifyMask);
 }
 
 /**
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_events.c,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -3 -r1.51 -r1.52
--- ecore_x_events.c    11 Apr 2005 21:41:45 -0000      1.51
+++ ecore_x_events.c    13 Apr 2005 15:47:52 -0000      1.52
@@ -1382,7 +1382,15 @@
 }
 
 void
-_ecore_x_event_handle_shape_change(XEvent *xevent __UNUSED__)
+_ecore_x_event_handle_shape_change(XEvent *xevent)
 {
-   /* FIXME: handle this event type */
+   XShapeEvent *shape_event;
+   Ecore_X_Event_Window_Shape *e;
+   
+   shape_event = (XShapeEvent *)xevent;
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Shape));
+   if (!e) return;
+   e->win = shape_event->window;
+   e->time = shape_event->time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_SHAPE, e, NULL, NULL);
 }
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_window_shape.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- ecore_x_window_shape.c      12 Aug 2004 11:29:19 -0000      1.4
+++ ecore_x_window_shape.c      13 Apr 2005 15:47:53 -0000      1.5
@@ -21,3 +21,127 @@
 {
    XShapeCombineMask(_ecore_x_disp, win, ShapeBounding, 0, 0, mask, ShapeSet);
 }
+
+void
+ecore_x_window_shape_window_set(Ecore_X_Window win, Ecore_X_Window shape_win)
+{
+   XShapeCombineShape(_ecore_x_disp, win, ShapeBounding, 0, 0, shape_win, 
ShapeBounding, ShapeSet);
+}
+
+void
+ecore_x_window_shape_window_set_xy(Ecore_X_Window win, Ecore_X_Window 
shape_win, int x, int y)
+{
+   XShapeCombineShape(_ecore_x_disp, win, ShapeBounding, x, y, shape_win, 
ShapeBounding, ShapeSet);
+}
+
+void
+ecore_x_window_shape_rectangle_set(Ecore_X_Window win, int x, int y, int w, 
int h)
+{
+   XRectangle rect;
+   
+   rect.x = x;
+   rect.y = y;
+   rect.width = w;
+   rect.height = h;
+   XShapeCombineRectangles(_ecore_x_disp, win, ShapeBounding, 0, 0, &rect, 1, 
ShapeSet, Unsorted);
+}
+
+void
+ecore_x_window_shape_rectangles_set(Ecore_X_Window win, Ecore_X_Rectangle 
*rects, int num)
+{
+   XRectangle *rect = NULL;
+   int i;
+   
+   if (num > 0)
+     {
+       rect = alloca(sizeof(XRectangle) * num);
+       for (i = 0; i < num; i++)
+         {
+            rect[i].x = rects[i].x;
+            rect[i].y = rects[i].y;
+            rect[i].width = rects[i].width;
+            rect[i].height = rects[i].height;
+         }
+     }
+   XShapeCombineRectangles(_ecore_x_disp, win, ShapeBounding, 0, 0, rect, num, 
ShapeSet, Unsorted);
+}
+
+void
+ecore_x_window_shape_window_add(Ecore_X_Window win, Ecore_X_Window shape_win)
+{
+   XShapeCombineShape(_ecore_x_disp, win, ShapeBounding, 0, 0, shape_win, 
ShapeBounding, ShapeUnion);
+}
+
+void
+ecore_x_window_shape_window_add_xy(Ecore_X_Window win, Ecore_X_Window 
shape_win, int x, int y)
+{
+   XShapeCombineShape(_ecore_x_disp, win, ShapeBounding, x, y, shape_win, 
ShapeBounding, ShapeUnion);
+}
+
+void
+ecore_x_window_shape_rectangle_add(Ecore_X_Window win, int x, int y, int w, 
int h)
+{
+   XRectangle rect;
+   
+   rect.x = x;
+   rect.y = y;
+   rect.width = w;
+   rect.height = h;
+   XShapeCombineRectangles(_ecore_x_disp, win, ShapeBounding, 0, 0, &rect, 1, 
ShapeUnion, Unsorted);
+}
+
+void
+ecore_x_window_shape_rectangles_add(Ecore_X_Window win, Ecore_X_Rectangle 
*rects, int num)
+{
+   XRectangle *rect = NULL;
+   int i;
+   
+   if (num > 0)
+     {
+       rect = alloca(sizeof(XRectangle) * num);
+       for (i = 0; i < num; i++)
+         {
+            rect[i].x = rects[i].x;
+            rect[i].y = rects[i].y;
+            rect[i].width = rects[i].width;
+            rect[i].height = rects[i].height;
+         }
+     }
+   XShapeCombineRectangles(_ecore_x_disp, win, ShapeBounding, 0, 0, rect, num, 
ShapeUnion, Unsorted);
+}
+
+Ecore_X_Rectangle *
+ecore_x_window_shape_rectangles_get(Ecore_X_Window win, int *num_ret)
+{
+   XRectangle *rect;
+   Ecore_X_Rectangle *rects = NULL;
+   int i, num = 0, ord;
+   
+   rect = XShapeGetRectangles(_ecore_x_disp, win, ShapeBounding, &num, &ord);
+   if (rect)
+     {
+       rects = malloc(sizeof(Ecore_X_Rectangle) * num);
+       if (rects)
+         {
+            for (i = 0; i < num; i++)
+              {
+                 rects[i].x = rect[i].x;
+                 rects[i].y = rect[i].y;
+                 rects[i].width = rect[i].width;
+                 rects[i].height = rect[i].height;
+              }
+         }
+       XFree(rect);
+     }
+   if (num_ret) *num_ret = num;
+   return rects;
+}
+
+void
+ecore_x_window_shape_events_select(Ecore_X_Window win, int on)
+{
+   if (on)
+     XShapeSelectInput(_ecore_x_disp, win, ShapeNotifyMask);
+   else
+     XShapeSelectInput(_ecore_x_disp, win, 0);
+}




-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to