77 lines · 1.7 KB · C
RawDownload
typedef struct Mouseinfo Mouseinfo;typedef struct Mousestate Mousestate;typedef struct Cursorinfo Cursorinfo;typedef struct Screeninfo Screeninfo; #define Mousequeue 16		/* queue can only have Mousequeue-1 elements */#define Mousewindow 500		/* mouse event window in millisec */ struct Mousestate{	Point	xy;		/* mouse.xy */	int	buttons;	/* mouse.buttons */	ulong	counter;	/* increments every update */	ulong	msec;		/* time of last event */}; struct Mouseinfo{	Mousestate	mstate;	int	dx;	int	dy;	int	track;		/* dx & dy updated */	int	redraw;		/* update cursor on screen */	ulong	lastcounter;	/* value when /dev/mouse read */	ulong	lastresize;	ulong	resize;	Rendez	r;	Ref	ref;	QLock	qlk;	int	open;	int	inopen;	int	acceleration;	int	maxacc;	Mousestate	queue[16];	/* circular buffer of click events */	int	ri;		/* read index into queue */	int	wi;		/* write index into queue */	uchar	qfull;		/* queue is full */}; struct Cursorinfo {	Lock	lk;	struct Cursor	cursor;}; struct Screeninfo {	Lock		lk;	Memimage	*newsoft;	int		reshaped;	int		depth;	int		dibtype;}; extern	Mouseinfo mouse;extern	Cursorinfo cursor;extern	Screeninfo screen;extern	Rectangle	mouserect; enum{	SnarfSize = 1<<20}; uchar*	attachscreen(Rectangle*, ulong*, int*, int*, int*, void**);int	drawcanqlock(void);void	drawqlock(void);void	drawqunlock(void);void	getcolor(ulong, ulong*, ulong*, ulong*);char*	getsnarf(void);void	flushmemscreen(Rectangle);void	mousetrack(int, int, int, int);void	putsnarf(char*);int	setcolor(ulong, ulong, ulong, ulong);void	setcursor(struct Cursor*);void	setmouse(Point);void	terminit(int);void	termredraw(void);void	termreplacescreenimage(Memimage*);