enum{ Debug9p = 1, Debugdraw = 2, Debugevent = 4,}; enum{ PMundef = ~0, /* Pixmap undefined */ CursorSize= 32, /* Biggest cursor size */ SnarfSize= 100*1024, /* snarf buffer size */}; /* Runes */enum { KF= 0xF000, /* Beginning of private space */ /* KF|1, KF|2, ..., KF|0xC is F1, F2, ..., F12 */ Khome= KF|0x0D, Kup= KF|0x0E, Kpgup= KF|0x0F, Kprint= KF|0x10, Kleft= KF|0x11, Kright= KF|0x12, Kdown= KF|0x800, Kview= 0x80, Kpgdown=KF|0x13, Kins= KF|0x14, Kend= KF|0x18, Kalt= KF|0x15, Kshift= KF|0x16, Kctl= KF|0x17, Kcmd= 0xF100 /* Beginning of Cmd+'a', Cmd+'A', etc on Mac */}; /* Datatypes: */typedef struct Draw Draw; /* Defined in devdraw.c: */typedef struct DClient DClient; /* Defined in devdraw.c: */typedef struct Kbdbuf Kbdbuf;typedef struct Cursor Cursor;typedef struct Clip Clip;typedef struct Mousebuf Mousebuf;typedef struct Reqbuf Reqbuf;typedef struct Window Window; /* Keyboard */struct Kbdbuf{ Rune r[32]; int ri; int wi; int stall; /* Used by kbdputc */ uchar k[5*UTFmax]; int alting, nk;}; /* Pointer */struct Mouse{ int buttons; /* bit array: LMR=124 */ Point xy; ulong msec;}; struct Mousebuf{ int open; Mouse m[32]; int ri; int wi; int stall; int resized;}; struct Reqbuf{ void *r[32]; int ri; int wi;}; struct Cursor { int hotx; int hoty; int w; int h; uchar src[(CursorSize/8)*CursorSize]; /* image and mask bitmaps */ uchar mask[(CursorSize/8)*CursorSize];}; /* snarf buffer */struct Clip{ char buf[SnarfSize];}; /* Window system */struct Window{ int id; int fullscreen; int deleted; int pid; int resized; int current; int visible; int ref; char *label; char *name; Draw *draw; void *screenimage; Kbdbuf kbd; Mousebuf mouse; Reqbuf kbdreqs; Reqbuf mousereqs; Cursor cursor; Point orig; Rectangle screenr; Rectangle newscreenr; void *x;}; /* Global Vars */int debug;int nwindow;Window **window;int nclient;DClient **client;Clip clip;
enum
{
Debug9p = 1,
Debugdraw = 2,
Debugevent = 4,
};
enum
{
PMundef = ~0, /* Pixmap undefined */
CursorSize= 32, /* Biggest cursor size */
SnarfSize= 100*1024, /* snarf buffer size */
};
/* Runes */
enum {
KF= 0xF000, /* Beginning of private space */
/* KF|1, KF|2, ..., KF|0xC is F1, F2, ..., F12 */
Khome= KF|0x0D,
Kup= KF|0x0E,
Kpgup= KF|0x0F,
Kprint= KF|0x10,
Kleft= KF|0x11,
Kright= KF|0x12,
Kdown= KF|0x800,
Kview= 0x80,
Kpgdown=KF|0x13,
Kins= KF|0x14,
Kend= KF|0x18,
Kalt= KF|0x15,
Kshift= KF|0x16,
Kctl= KF|0x17,
Kcmd= 0xF100 /* Beginning of Cmd+'a', Cmd+'A', etc on Mac */
};
/* Datatypes: */
typedef struct Draw Draw; /* Defined in devdraw.c: */
typedef struct DClient DClient; /* Defined in devdraw.c: */
typedef struct Kbdbuf Kbdbuf;
typedef struct Cursor Cursor;
typedef struct Clip Clip;
typedef struct Mousebuf Mousebuf;
typedef struct Reqbuf Reqbuf;
typedef struct Window Window;
/* Keyboard */
struct Kbdbuf
{
Rune r[32];
int ri;
int wi;
int stall;
/* Used by kbdputc */
uchar k[5*UTFmax];
int alting, nk;
};
/* Pointer */
struct Mouse
{
int buttons; /* bit array: LMR=124 */
Point xy;
ulong msec;
};
struct Mousebuf
{
int open;
Mouse m[32];
int ri;
int wi;
int stall;
int resized;
};
struct Reqbuf
{
void *r[32];
int ri;
int wi;
};
struct Cursor {
int hotx;
int hoty;
int w;
int h;
uchar src[(CursorSize/8)*CursorSize]; /* image and mask bitmaps */
uchar mask[(CursorSize/8)*CursorSize];
};
/* snarf buffer */
struct Clip
{
char buf[SnarfSize];
};
/* Window system */
struct Window
{
int id;
int fullscreen;
int deleted;
int pid;
int resized;
int current;
int visible;
int ref;
char *label;
char *name;
Draw *draw;
void *screenimage;
Kbdbuf kbd;
Mousebuf mouse;
Reqbuf kbdreqs;
Reqbuf mousereqs;
Cursor cursor;
Point orig;
Rectangle screenr;
Rectangle newscreenr;
void *x;
};
/* Global Vars */
int debug;
int nwindow;
Window **window;
int nclient;
DClient **client;
Clip clip;