Adding rounded corners patch
parent
f2673fec53
commit
a560b9cb53
@ -0,0 +1,50 @@
|
|||||||
|
#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);
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
static void drawroundedcorners(Client *c);
|
Loading…
Reference in New Issue