You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.3 KiB
51 lines
1.3 KiB
#include <X11/extensions/shape.h> |
|
|
|
void drawroundedcorners(Client *c) |
|
{ |
|
if (corner_radius <= 0 || !c || c->isfullscreen) |
|
return; |
|
|
|
Window win; |
|
win = c->win; |
|
if (!win) |
|
return; |
|
|
|
XWindowAttributes win_attr; |
|
if (!XGetWindowAttributes(dpy, win, &win_attr)) |
|
return; |
|
|
|
int dia = 2 * corner_radius; |
|
int w = c->w; |
|
int h = c->h; |
|
if (w < dia || h < dia) |
|
return; |
|
|
|
Pixmap mask; |
|
mask = XCreatePixmap(dpy, win, w, h, 1); |
|
if (!mask) |
|
return; |
|
|
|
XGCValues xgcv; |
|
GC shape_gc; |
|
shape_gc = XCreateGC(dpy, mask, 0, &xgcv); |
|
|
|
if (!shape_gc) { |
|
XFreePixmap(dpy, mask); |
|
free(shape_gc); |
|
return; |
|
} |
|
|
|
XSetForeground(dpy, shape_gc, 0); |
|
XFillRectangle(dpy, mask, shape_gc, 0, 0, w, h); |
|
XSetForeground(dpy, shape_gc, 1); |
|
XFillArc(dpy, mask, shape_gc, 0, 0, dia, dia, 0, 23040); |
|
XFillArc(dpy, mask, shape_gc, w-dia-1, 0, dia, dia, 0, 23040); |
|
XFillArc(dpy, mask, shape_gc, 0, h-dia-1, dia, dia, 0, 23040); |
|
XFillArc(dpy, mask, shape_gc, w-dia-1, h-dia-1, dia, dia, 0, 23040); |
|
XFillRectangle(dpy, mask, shape_gc, corner_radius, 0, w-dia, h); |
|
XFillRectangle(dpy, mask, shape_gc, 0, corner_radius, w, h-dia); |
|
XShapeCombineMask(dpy, win, ShapeBounding, 0, 0, mask, ShapeSet); |
|
XFreePixmap(dpy, mask); |
|
XFreeGC(dpy, shape_gc); |
|
} |
|
|
|
|