1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
#ifndef VTXIO_H
#define VTXIO_H
#include <X11/Xlib.h>
#include "vt.h"
#include "dllist.h"
typedef u32 lbits;
#define ALL_LINES ((1ul << H) - 1)
/* one xio per display */
struct xio
{
struct dl_node node[1];
int argc;
char **argv;
Display *dpy; /* display connection */
int fd; /* the displays file descriptor */
Atom xa_del_win; /* WM_DELETE_WINDOW atom */
Atom xa_targets; /* TARGETS atom (selection) */
Atom xa_timestamp; /* TIMESTAMP atom (selection) */
Atom xa_text; /* TEXT atom (selection) */
Atom xa_multiple; /* MULTIPLE atom (selection) */
Window group_leader; /* unmapped window */
int screen; /* DefaultScreen */
int width, height; /* DisplayWidth/Height */
int depth; /* DefaultDepth */
Window root; /* DefaultRoot */
Colormap cmap;
int color[16]; /* 8 normal, 8 dim intensity */
Pixmap font[2]; /* normal, dbl-height */
Pixmap icon; /* icon pixmap */
struct dl_head windows[1]; /* all windows on this display */
};
/* one vt_win per window */
struct xio_win
{
struct dl_node node[1];
struct xio *xio; /* display */
Window win; /* the drawing window */
Time tstamp; /* timestamp of last user event */
GC gc; /* it's graphics context */
u8 ch[H*W]; /* the page contents */
lbits modified, hidden, lhidden; /* states for each line */
lbits dheight, blink, concealed; /* attributes for each line */
int fg, bg; /* current foreground/background */
int blink_on; /* blinking on */
int reveal; /* reveal concealed text */
void (*handler)(void *data, struct vt_event *ev); /* event-handler */
void *data; /* data for the event-handler */
int curs_x, curs_y; /* cursor position */
u8 title[32]; /* the user title */
// selection support
int sel_start_x, sel_start_y;
Time sel_start_t;
Time sel_set_t; /* time we got selection owner */
int sel_x1, sel_y1, sel_x2, sel_y2; /* selected area */
Pixmap sel_pixmap; /* for pixmap-selection requests */
};
struct xio *xio_open_dpy(char *dpy, int argc, char **argv);
struct xio_win *xio_open_win(struct xio *xio, char *geom);
void xio_close_win(struct xio_win *xw, int dpy_too);
void xio_close_dpy(struct xio *xio);
void xio_set_handler(struct xio_win *xw, void *handler, void *data);
void xio_clear_win(struct xio_win *xw);
void xio_put_line(struct xio_win *xw, int line, u8 *data);
void xio_put_str(struct xio_win *xw, int line, u8 *c_str);
int xio_get_line(struct xio_win *xw, int line, u8 *data);
int xio_set_concealed(struct xio_win *xw, int on);
void xio_update_win(struct xio_win *xw);
void xio_fd_handler(int fd, void *handler, void *data);
void xio_cancel_selection(struct xio_win *xw);
void xio_query_selection(struct xio_win *xw);
void xio_set_selection(struct xio_win *xw, int x1, int y1, int x2, int y2);
void xio_set_cursor(struct xio_win *xw, int x, int y);
void xio_event_loop(void);
void xio_title(struct xio_win *xw, char *title);
#endif
|