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