/****************************************************************************** * recordMyDesktop * ******************************************************************************* * * * Copyright (C) 2006,2007,2008 John Varouhakis * * * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * * * * * * * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ #include "config.h" #include "rmd_frame.h" #include #include #include #include #define BORDER_WIDTH 6 #define OUTLINE_WIDTH 1 void rmdDrawFrame(Display *dpy, int screen, Window win, int width, int height){ GC gc; XGCValues gcv; XColor white, white_e, black, black_e ; unsigned long gcmask=GCForeground; XAllocNamedColor(dpy,DefaultColormap(dpy, screen),"white", &white, &white_e); XAllocNamedColor(dpy,DefaultColormap(dpy, screen),"black", &black, &black_e); gcv.foreground = black.pixel; gc = XCreateGC(dpy,win, gcmask,&gcv); XFillRectangle(dpy, win, gc, OUTLINE_WIDTH, OUTLINE_WIDTH, width+(BORDER_WIDTH-OUTLINE_WIDTH)*2, height+(BORDER_WIDTH-OUTLINE_WIDTH)*2); gcv.foreground = white.pixel; XChangeGC(dpy,gc,gcmask,&gcv); XFillRectangle(dpy, win, gc, BORDER_WIDTH-OUTLINE_WIDTH, BORDER_WIDTH-OUTLINE_WIDTH, width+OUTLINE_WIDTH*2, height+OUTLINE_WIDTH*2); XFreeGC(dpy, gc); } void rmdMoveFrame(Display *dpy, Window win, int x, int y){ XMoveWindow(dpy, win, x-BORDER_WIDTH, y-BORDER_WIDTH); // XSync(pdata->dpy,False); } Window rmdFrameInit(Display *dpy, int screen, Window root, int x, int y, int width, int height){ XSetWindowAttributes attribs; XColor white, white_e; Window win; unsigned long valuemask=CWBackPixmap|CWBackPixel| CWSaveUnder|CWOverrideRedirect|CWColormap; XAllocNamedColor(dpy,DefaultColormap(dpy, screen),"white", &white, &white_e); attribs.background_pixmap=None; attribs.background_pixel=white.pixel; attribs.save_under=True; attribs.override_redirect=True; attribs.colormap=DefaultColormap(dpy,screen); win = XCreateWindow(dpy, root, x-BORDER_WIDTH, y-BORDER_WIDTH, width+BORDER_WIDTH*2, height+BORDER_WIDTH*2, 0, CopyFromParent, InputOutput, CopyFromParent, valuemask, &attribs); XRectangle rect; rect.x=rect.y=BORDER_WIDTH; rect.width=width; rect.height=height; XShapeCombineRectangles(dpy, win, ShapeBounding, 0, 0, &rect, 1, ShapeSubtract, 0); XMapWindow(dpy, win); rmdDrawFrame(dpy,screen,win,width,height); return win; }