From 49a69a357bee345148a3d26d166121a6eaf4011c Mon Sep 17 00:00:00 2001
From: Bert <ber.t@gmx.com>
Date: Mon, 17 Jan 2011 16:42:49 +0100
Subject: [PATCH] Added win_open & win_close

---
 window.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 window.h |  9 ++++++++
 2 files changed, 75 insertions(+)

diff --git a/window.c b/window.c
index 90f24c3..b7732fa 100644
--- a/window.c
+++ b/window.c
@@ -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);
+}
diff --git a/window.h b/window.h
index 3ac34cb..31cd3da 100644
--- a/window.h
+++ b/window.h
@@ -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 */