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*);
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*);