]>
Dogcows Code - chaz/openbox/blob - mask.c
e1a18933143993a33a10676a93597830e58755f2
2 #include "../kernel/openbox.h"
4 pixmap_mask
*pixmap_mask_new(int w
, int h
, char *data
)
6 pixmap_mask
*m
= g_new(pixmap_mask
, 1);
9 m
->mask
= XCreateBitmapFromData(ob_display
, ob_root
, data
, w
, h
);
13 void pixmap_mask_free(pixmap_mask
*m
)
15 XFreePixmap(ob_display
, m
->mask
);
19 void mask_draw(Pixmap p
, TextureMask
*m
, Rect
*position
)
22 if (m
->mask
== None
) return; /* no mask given */
24 /* set the clip region */
25 x
= position
->x
+ (position
->width
- m
->mask
->w
) / 2;
26 y
= position
->y
+ (position
->height
- m
->mask
->h
) / 2;
31 XSetClipMask(ob_display
, m
->color
->gc
, m
->mask
->mask
);
32 XSetClipOrigin(ob_display
, m
->color
->gc
, x
, y
);
34 /* fill in the clipped region */
35 XFillRectangle(ob_display
, p
, m
->color
->gc
, x
, y
,
36 x
+ m
->mask
->w
, y
+ m
->mask
->h
);
38 /* unset the clip region */
39 XSetClipMask(ob_display
, m
->color
->gc
, None
);
40 XSetClipOrigin(ob_display
, m
->color
->gc
, 0, 0);
This page took 0.032942 seconds and 3 git commands to generate.