193631029SDavid du Colombier typedef struct Cursor Cursor; 293631029SDavid du Colombier typedef struct Cursorinfo Cursorinfo; 3bacfa46cSDavid du Colombier typedef struct OScreen OScreen; 4bacfa46cSDavid du Colombier typedef struct Omap3fb Omap3fb; 5*5efba406SDavid du Colombier typedef struct Settings Settings; 693631029SDavid du Colombier 793631029SDavid du Colombier struct Cursorinfo 893631029SDavid du Colombier { 993631029SDavid du Colombier Cursor; 1093631029SDavid du Colombier Lock; 1193631029SDavid du Colombier }; 1293631029SDavid du Colombier 1393631029SDavid du Colombier extern Cursor arrow; 1493631029SDavid du Colombier extern Cursorinfo cursor; 1593631029SDavid du Colombier 16*5efba406SDavid du Colombier /* devmouse.c */ 17*5efba406SDavid du Colombier extern void mousetrack(int, int, int, int); 18*5efba406SDavid du Colombier extern Point mousexy(void); 19*5efba406SDavid du Colombier 2093631029SDavid du Colombier extern void mouseaccelerate(int); 2193631029SDavid du Colombier extern void mouseresize(void); 2293631029SDavid du Colombier 23*5efba406SDavid du Colombier /* screen.c */ 2493631029SDavid du Colombier extern uchar* attachscreen(Rectangle*, ulong*, int*, int*, int*); 2593631029SDavid du Colombier extern void flushmemscreen(Rectangle); 26*5efba406SDavid du Colombier extern int cursoron(int); 27*5efba406SDavid du Colombier extern void cursoroff(int); 28*5efba406SDavid du Colombier extern void setcursor(Cursor*); 29*5efba406SDavid du Colombier extern int screensize(int, int, int, ulong); 30*5efba406SDavid du Colombier extern int screenaperture(int, int); 31*5efba406SDavid du Colombier extern Rectangle physgscreenr; /* actual monitor size */ 32*5efba406SDavid du Colombier extern void blankscreen(int); 33*5efba406SDavid du Colombier 34*5efba406SDavid du Colombier extern void swcursorinit(void); 35*5efba406SDavid du Colombier extern void swcursorhide(void); 36*5efba406SDavid du Colombier extern void swcursoravoid(Rectangle); 37*5efba406SDavid du Colombier extern void swcursorunhide(void); 38*5efba406SDavid du Colombier 39*5efba406SDavid du Colombier /* devdraw.c */ 40*5efba406SDavid du Colombier extern void deletescreenimage(void); 41*5efba406SDavid du Colombier extern void resetscreenimage(void); 42*5efba406SDavid du Colombier extern int drawhasclients(void); 43*5efba406SDavid du Colombier extern ulong blanktime; 44*5efba406SDavid du Colombier extern void setscreenimageclipr(Rectangle); 45*5efba406SDavid du Colombier extern void drawflush(void); 46*5efba406SDavid du Colombier extern int drawidletime(void); 47*5efba406SDavid du Colombier extern QLock drawlock; 4893631029SDavid du Colombier 49bacfa46cSDavid du Colombier #define ishwimage(i) 0 /* for ../port/devdraw.c */ 5093631029SDavid du Colombier 5193631029SDavid du Colombier /* for communication between devdss.c and screen.c */ 5293631029SDavid du Colombier 53bacfa46cSDavid du Colombier enum { 54bacfa46cSDavid du Colombier /* maxima */ 5593631029SDavid du Colombier Wid = 1280, 5693631029SDavid du Colombier Ht = 1024, 5793631029SDavid du Colombier Depth = 16, /* bits per pixel */ 5893631029SDavid du Colombier 5993631029SDavid du Colombier Pcolours = 256, /* Palette */ 6093631029SDavid du Colombier Pred = 0, 6193631029SDavid du Colombier Pgreen = 1, 6293631029SDavid du Colombier Pblue = 2, 6393631029SDavid du Colombier 6493631029SDavid du Colombier Pblack = 0x00, 6593631029SDavid du Colombier Pwhite = 0xFF, 66634d7e5aSDavid du Colombier 67634d7e5aSDavid du Colombier /* settings indices */ 68634d7e5aSDavid du Colombier Res800x600 = 0, 69634d7e5aSDavid du Colombier Res1024x768, 70634d7e5aSDavid du Colombier Res1280x1024, 71*5efba406SDavid du Colombier Res1400x1050, 7293631029SDavid du Colombier }; 7393631029SDavid du Colombier 74*5efba406SDavid du Colombier struct Settings { 75*5efba406SDavid du Colombier uint wid; /* width in pixels */ 76*5efba406SDavid du Colombier uint ht; /* height in pixels */ 77*5efba406SDavid du Colombier uint freq; /* refresh frequency; only printed */ 78*5efba406SDavid du Colombier uint chan; /* draw chan */ 7993631029SDavid du Colombier 8093631029SDavid du Colombier /* shouldn't be needed? */ 8193631029SDavid du Colombier uint pixelclock; 8293631029SDavid du Colombier 83*5efba406SDavid du Colombier /* horizontal timing */ 84*5efba406SDavid du Colombier uint hbp; /* back porch: pixel clocks before scan line */ 85*5efba406SDavid du Colombier uint hfp; /* front porch: pixel clocks after scan line */ 86*5efba406SDavid du Colombier uint hsw; /* sync pulse width: more hfp */ 87634d7e5aSDavid du Colombier 88*5efba406SDavid du Colombier /* vertical timing */ 89*5efba406SDavid du Colombier uint vbp; /* back porch: line clocks before frame */ 90*5efba406SDavid du Colombier uint vfp; /* front porch: line clocks after frame */ 91*5efba406SDavid du Colombier uint vsw; /* sync pulse width: more vfp */ 92*5efba406SDavid du Colombier }; 93*5efba406SDavid du Colombier 94*5efba406SDavid du Colombier struct OScreen { 95*5efba406SDavid du Colombier Lock; 96*5efba406SDavid du Colombier Cursor; 97*5efba406SDavid du Colombier Settings *settings; 98*5efba406SDavid du Colombier int open; 9993631029SDavid du Colombier }; 10093631029SDavid du Colombier 10193631029SDavid du Colombier struct Omap3fb { /* frame buffer for 24-bit active color */ 10293631029SDavid du Colombier // short palette[256]; 10393631029SDavid du Colombier /* pixel data, even; base type's width must match Depth */ 10493631029SDavid du Colombier ushort pixel[Wid*Ht]; 10593631029SDavid du Colombier }; 106