xref: /plan9-contrib/sys/src/9/omap/screen.h (revision 5efba40621eb0e8502497b8c98fd368f3bc4d354)
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