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