Added win_open & win_close
This commit is contained in:
parent
bbe7ae0470
commit
49a69a357b
66
window.c
66
window.c
@ -16,6 +16,72 @@
|
|||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
* 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 "sxiv.h"
|
||||||
#include "window.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);
|
||||||
|
}
|
||||||
|
9
window.h
9
window.h
@ -19,12 +19,21 @@
|
|||||||
#ifndef WINDOW_H
|
#ifndef WINDOW_H
|
||||||
#define WINDOW_H
|
#define WINDOW_H
|
||||||
|
|
||||||
|
#include <X11/Xlib.h>
|
||||||
|
|
||||||
typedef struct win_s {
|
typedef struct win_s {
|
||||||
|
Window xwin;
|
||||||
|
|
||||||
int w;
|
int w;
|
||||||
int h;
|
int h;
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
|
|
||||||
int bw;
|
int bw;
|
||||||
|
int fullscreen;
|
||||||
} win_t;
|
} win_t;
|
||||||
|
|
||||||
|
void win_open(win_t *win);
|
||||||
|
void win_close(win_t *win);
|
||||||
|
|
||||||
#endif /* WINDOW_H */
|
#endif /* WINDOW_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user