xref: /plan9/sys/src/cmd/unix/drawterm/kern/screen.h (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
1*8ccd4a63SDavid du Colombier typedef struct Mouseinfo Mouseinfo;
2*8ccd4a63SDavid du Colombier typedef struct Mousestate Mousestate;
3*8ccd4a63SDavid du Colombier typedef struct Cursorinfo Cursorinfo;
4*8ccd4a63SDavid du Colombier typedef struct Screeninfo Screeninfo;
5*8ccd4a63SDavid du Colombier 
6*8ccd4a63SDavid du Colombier #define Mousequeue 16		/* queue can only have Mousequeue-1 elements */
7*8ccd4a63SDavid du Colombier #define Mousewindow 500		/* mouse event window in millisec */
8*8ccd4a63SDavid du Colombier 
9*8ccd4a63SDavid du Colombier struct Mousestate {
10*8ccd4a63SDavid du Colombier 	int	buttons;
11*8ccd4a63SDavid du Colombier 	Point	xy;
12*8ccd4a63SDavid du Colombier 	ulong	msec;
13*8ccd4a63SDavid du Colombier };
14*8ccd4a63SDavid du Colombier 
15*8ccd4a63SDavid du Colombier struct Mouseinfo {
16*8ccd4a63SDavid du Colombier 	Lock	lk;
17*8ccd4a63SDavid du Colombier 	Mousestate queue[Mousequeue];
18*8ccd4a63SDavid du Colombier 	int	ri, wi;
19*8ccd4a63SDavid du Colombier 	int	lastb;
20*8ccd4a63SDavid du Colombier 	int	trans;
21*8ccd4a63SDavid du Colombier 	int	open;
22*8ccd4a63SDavid du Colombier 	Rendez	r;
23*8ccd4a63SDavid du Colombier };
24*8ccd4a63SDavid du Colombier 
25*8ccd4a63SDavid du Colombier struct Cursorinfo {
26*8ccd4a63SDavid du Colombier 	Lock	lk;
27*8ccd4a63SDavid du Colombier 	Point	offset;
28*8ccd4a63SDavid du Colombier 	uchar	clr[2*16];
29*8ccd4a63SDavid du Colombier 	uchar	set[2*16];
30*8ccd4a63SDavid du Colombier };
31*8ccd4a63SDavid du Colombier 
32*8ccd4a63SDavid du Colombier struct Screeninfo {
33*8ccd4a63SDavid du Colombier 	Lock		lk;
34*8ccd4a63SDavid du Colombier 	Memimage	*newsoft;
35*8ccd4a63SDavid du Colombier 	int		reshaped;
36*8ccd4a63SDavid du Colombier 	int		depth;
37*8ccd4a63SDavid du Colombier 	int		dibtype;
38*8ccd4a63SDavid du Colombier };
39*8ccd4a63SDavid du Colombier 
40*8ccd4a63SDavid du Colombier extern	Memimage *gscreen;
41*8ccd4a63SDavid du Colombier extern	Mouseinfo mouse;
42*8ccd4a63SDavid du Colombier extern	Cursorinfo cursor;
43*8ccd4a63SDavid du Colombier extern	Screeninfo screen;
44*8ccd4a63SDavid du Colombier 
45*8ccd4a63SDavid du Colombier void	screeninit(void);
46*8ccd4a63SDavid du Colombier void	screenload(Rectangle, int, uchar *, Point, int);
47*8ccd4a63SDavid du Colombier 
48*8ccd4a63SDavid du Colombier void	getcolor(ulong, ulong*, ulong*, ulong*);
49*8ccd4a63SDavid du Colombier void	setcolor(ulong, ulong, ulong, ulong);
50*8ccd4a63SDavid du Colombier 
51*8ccd4a63SDavid du Colombier void	refreshrect(Rectangle);
52*8ccd4a63SDavid du Colombier 
53*8ccd4a63SDavid du Colombier void	cursorarrow(void);
54*8ccd4a63SDavid du Colombier void	setcursor(void);
55*8ccd4a63SDavid du Colombier void	mouseset(Point);
56*8ccd4a63SDavid du Colombier void	drawflushr(Rectangle);
57*8ccd4a63SDavid du Colombier void	flushmemscreen(Rectangle);
58*8ccd4a63SDavid du Colombier uchar *attachscreen(Rectangle*, ulong*, int*, int*, int*, void**);
59*8ccd4a63SDavid du Colombier 
60