xref: /plan9/sys/src/cmd/unix/drawterm/kern/screen.h (revision 96cbc34f1b36a29efdcfd47b10e70703a690febc)
18ccd4a63SDavid du Colombier typedef struct Mouseinfo Mouseinfo;
28ccd4a63SDavid du Colombier typedef struct Mousestate Mousestate;
38ccd4a63SDavid du Colombier typedef struct Cursorinfo Cursorinfo;
48ccd4a63SDavid du Colombier typedef struct Screeninfo Screeninfo;
58ccd4a63SDavid du Colombier 
68ccd4a63SDavid du Colombier #define Mousequeue 16		/* queue can only have Mousequeue-1 elements */
78ccd4a63SDavid du Colombier #define Mousewindow 500		/* mouse event window in millisec */
88ccd4a63SDavid du Colombier 
98ccd4a63SDavid du Colombier struct Mousestate {
108ccd4a63SDavid du Colombier 	int	buttons;
118ccd4a63SDavid du Colombier 	Point	xy;
128ccd4a63SDavid du Colombier 	ulong	msec;
138ccd4a63SDavid du Colombier };
148ccd4a63SDavid du Colombier 
158ccd4a63SDavid du Colombier struct Mouseinfo {
168ccd4a63SDavid du Colombier 	Lock	lk;
178ccd4a63SDavid du Colombier 	Mousestate queue[Mousequeue];
188ccd4a63SDavid du Colombier 	int	ri, wi;
198ccd4a63SDavid du Colombier 	int	lastb;
208ccd4a63SDavid du Colombier 	int	trans;
218ccd4a63SDavid du Colombier 	int	open;
228ccd4a63SDavid du Colombier 	Rendez	r;
238ccd4a63SDavid du Colombier };
248ccd4a63SDavid du Colombier 
258ccd4a63SDavid du Colombier struct Cursorinfo {
268ccd4a63SDavid du Colombier 	Lock	lk;
278ccd4a63SDavid du Colombier 	Point	offset;
288ccd4a63SDavid du Colombier 	uchar	clr[2*16];
298ccd4a63SDavid du Colombier 	uchar	set[2*16];
308ccd4a63SDavid du Colombier };
318ccd4a63SDavid du Colombier 
328ccd4a63SDavid du Colombier struct Screeninfo {
338ccd4a63SDavid du Colombier 	Lock		lk;
348ccd4a63SDavid du Colombier 	Memimage	*newsoft;
358ccd4a63SDavid du Colombier 	int		reshaped;
368ccd4a63SDavid du Colombier 	int		depth;
378ccd4a63SDavid du Colombier 	int		dibtype;
388ccd4a63SDavid du Colombier };
398ccd4a63SDavid du Colombier 
408ccd4a63SDavid du Colombier extern	Memimage *gscreen;
418ccd4a63SDavid du Colombier extern	Mouseinfo mouse;
428ccd4a63SDavid du Colombier extern	Cursorinfo cursor;
438ccd4a63SDavid du Colombier extern	Screeninfo screen;
448ccd4a63SDavid du Colombier 
458ccd4a63SDavid du Colombier void	screeninit(void);
468ccd4a63SDavid du Colombier void	screenload(Rectangle, int, uchar *, Point, int);
478ccd4a63SDavid du Colombier 
488ccd4a63SDavid du Colombier void	getcolor(ulong, ulong*, ulong*, ulong*);
498ccd4a63SDavid du Colombier void	setcolor(ulong, ulong, ulong, ulong);
508ccd4a63SDavid du Colombier 
518ccd4a63SDavid du Colombier void	refreshrect(Rectangle);
528ccd4a63SDavid du Colombier 
538ccd4a63SDavid du Colombier void	cursorarrow(void);
548ccd4a63SDavid du Colombier void	setcursor(void);
558ccd4a63SDavid du Colombier void	mouseset(Point);
568ccd4a63SDavid du Colombier void	drawflushr(Rectangle);
578ccd4a63SDavid du Colombier void	flushmemscreen(Rectangle);
588ccd4a63SDavid du Colombier uchar *attachscreen(Rectangle*, ulong*, int*, int*, int*, void**);
598ccd4a63SDavid du Colombier 
60*96cbc34fSDavid du Colombier void	drawqlock(void);
61*96cbc34fSDavid du Colombier void	drawqunlock(void);
62*96cbc34fSDavid du Colombier int	drawcanqlock(void);
63*96cbc34fSDavid du Colombier void	terminit(void);
64