| /* | 
 |  * Structure pointed to by X field of Memimage | 
 |  */ | 
 |  | 
 | typedef struct Xmem Xmem; | 
 | typedef struct Xprivate Xprivate; | 
 |  | 
 | enum | 
 | { | 
 | 	PMundef = ~0 | 
 | }; | 
 |  | 
 | struct Xmem | 
 | { | 
 | 	int		pixmap;	/* pixmap id */ | 
 | 	XImage		*xi;	/* local image */ | 
 | 	int		dirty;	/* is the X server ahead of us?  */ | 
 | 	Rectangle	dirtyr;	/* which pixels? */ | 
 | 	Rectangle	r;	/* size of image */ | 
 | }; | 
 |  | 
 | struct Xprivate { | 
 | 	u32int		chan; | 
 | 	XColormap	cmap; | 
 | 	XCursor		cursor; | 
 | 	XDisplay	*display; | 
 | 	int		fd;	/* of display */ | 
 | 	int		depth;				/* of screen */ | 
 | 	XDrawable	drawable; | 
 | 	XColor		map[256]; | 
 | 	XColor		map7[128]; | 
 | 	uchar		map7to8[128][2]; | 
 | 	XGC		gccopy; | 
 | 	XGC		gccopy0; | 
 | 	XGC		gcfill; | 
 | 	u32int		gcfillcolor; | 
 | 	XGC		gcfill0; | 
 | 	u32int		gcfill0color; | 
 | 	XGC		gcreplsrc; | 
 | 	u32int		gcreplsrctile; | 
 | 	XGC		gcreplsrc0; | 
 | 	u32int		gcreplsrc0tile; | 
 | 	XGC		gcsimplesrc; | 
 | 	u32int		gcsimplesrccolor; | 
 | 	u32int		gcsimplesrcpixmap; | 
 | 	XGC		gcsimplesrc0; | 
 | 	u32int		gcsimplesrc0color; | 
 | 	u32int		gcsimplesrc0pixmap; | 
 | 	XGC		gczero; | 
 | 	u32int		gczeropixmap; | 
 | 	XGC		gczero0; | 
 | 	u32int		gczero0pixmap; | 
 | 	Rectangle	newscreenr; | 
 | 	Memimage*	screenimage; | 
 | 	QLock		screenlock; | 
 | 	XDrawable	screenpm; | 
 | 	XDrawable	nextscreenpm; | 
 | 	Rectangle	screenr; | 
 | 	int		toplan9[256]; | 
 | 	int		tox11[256]; | 
 | 	int		usetable; | 
 | 	XVisual		*vis; | 
 | 	Atom		clipboard; | 
 | 	Atom		utf8string; | 
 | 	Atom		targets; | 
 | 	Atom		text; | 
 | 	Atom		compoundtext; | 
 | 	Atom		takefocus; | 
 | 	Atom		losefocus; | 
 | 	Atom		wmprotos; | 
 | 	uint		putsnarf; | 
 | 	uint		assertsnarf; | 
 | 	int		destroyed; | 
 | }; | 
 |  | 
 | extern Xprivate _x; | 
 |  | 
 | extern Memimage *_xallocmemimage(Rectangle, u32int, int); | 
 | extern XImage	*_xallocxdata(Memimage*, Rectangle); | 
 | extern void	_xdirtyxdata(Memimage*, Rectangle); | 
 | extern void	_xfillcolor(Memimage*, Rectangle, u32int); | 
 | extern void	_xfreexdata(Memimage*); | 
 | extern XImage	*_xgetxdata(Memimage*, Rectangle); | 
 | extern void	_xputxdata(Memimage*, Rectangle); | 
 |  | 
 | struct Mouse; | 
 | extern int	_xtoplan9mouse(XEvent*, struct Mouse*); | 
 | extern int	_xtoplan9kbd(XEvent*); | 
 | extern void	_xexpose(XEvent*); | 
 | extern int	_xselect(XEvent*); | 
 | extern int	_xconfigure(XEvent*); | 
 | extern int	_xdestroy(XEvent*); | 
 | extern void	_flushmemscreen(Rectangle); | 
 | extern void	_xmoveto(Point); | 
 | struct Cursor; | 
 | extern void	_xsetcursor(struct Cursor*); | 
 | extern void	_xbouncemouse(Mouse*); | 
 | extern int		_xsetlabel(char*); | 
 | extern Memimage*	_xattach(char*, char*); | 
 | extern char*		_xgetsnarf(void); | 
 | extern void		_xputsnarf(char *data); | 
 | extern void		_xtopwindow(void); | 
 | extern void		_xresizewindow(Rectangle); | 
 | extern void		_xmovewindow(Rectangle); | 
 | extern int		_xreplacescreenimage(void); | 
 |  | 
 | #define MouseMask (\ | 
 | 	ButtonPressMask|\ | 
 | 	ButtonReleaseMask|\ | 
 | 	PointerMotionMask|\ | 
 | 	Button1MotionMask|\ | 
 | 	Button2MotionMask|\ | 
 | 	Button3MotionMask) | 
 |  | 
 | extern Rectangle screenrect; | 
 | extern Rectangle windowrect; | 
 | extern int fullscreen; |