diff options
author | Bert <ber.t@gmx.com> | 2011-01-17 16:42:49 +0100 |
---|---|---|
committer | Bert <ber.t@gmx.com> | 2011-01-17 16:42:49 +0100 |
commit | 49a69a357bee345148a3d26d166121a6eaf4011c (patch) | |
tree | aaa89e64d37fab1e12a4f2a1ccc5444226d80cb1 | |
parent | bbe7ae04702e8e7897de6c7f87d5d8b844e46256 (diff) |
Added win_open & win_close
-rw-r--r-- | window.c | 66 | ||||
-rw-r--r-- | window.h | 9 |
2 files changed, 75 insertions, 0 deletions
@@ -16,6 +16,72 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include <stdlib.h> +#include <stdio.h> + +#include <X11/Xutil.h> + #include "sxiv.h" #include "window.h" +Display *dpy; +int scr; +int scrw, scrh; +GC gc; +XColor bgcol; + +void win_open(win_t *win) { + XClassHint *classhint; + + if (win == NULL) + return; + + if (!(dpy = XOpenDisplay(NULL))) + FATAL("could not open display"); + + scr = DefaultScreen(dpy); + scrw = DisplayWidth(dpy, scr); + scrh = DisplayHeight(dpy, scr); + + bgcol.red = 0x7000; + bgcol.green = 0x7000; + bgcol.blue = 0x7000; + XAllocColor(dpy, DefaultColormap(dpy, scr), &bgcol); + + if (win->w > scrw) + win->w = scrw; + if (win->h > scrh) + win->h = scrh; + win->x = (scrw - win->w) / 2; + win->y = (scrh - win->h) / 2; + + win->xwin = XCreateWindow(dpy, RootWindow(dpy, scr), + win->x, win->y, win->w, win->h, 0, DefaultDepth(dpy, scr), InputOutput, + DefaultVisual(dpy, scr), 0, NULL); + if (win->xwin == None) + FATAL("could not create window"); + + XSelectInput(dpy, win->xwin, + StructureNotifyMask | ExposureMask | KeyPressMask); + + gc = XCreateGC(dpy, win->xwin, 0, NULL); + + if ((classhint = XAllocClassHint())) { + classhint->res_name = "sxvi"; + classhint->res_class = "sxvi"; + XSetClassHint(dpy, win->xwin, classhint); + XFree(classhint); + } + + XMapWindow(dpy, win->xwin); + XFlush(dpy); +} + +void win_close(win_t *win) { + if (win == NULL) + return; + + XDestroyWindow(dpy, win->xwin); + XFreeGC(dpy, gc); + XCloseDisplay(dpy); +} @@ -19,12 +19,21 @@ #ifndef WINDOW_H #define WINDOW_H +#include <X11/Xlib.h> + typedef struct win_s { + Window xwin; + int w; int h; int x; int y; + int bw; + int fullscreen; } win_t; +void win_open(win_t *win); +void win_close(win_t *win); + #endif /* WINDOW_H */ |