xref: /plan9/sys/src/9/omap/screen.h (revision 5efba40621eb0e8502497b8c98fd368f3bc4d354)
1 typedef struct Cursor Cursor;
2 typedef struct Cursorinfo	Cursorinfo;
3 typedef struct OScreen OScreen;
4 typedef struct Omap3fb Omap3fb;
5 typedef struct Settings Settings;
6 
7 struct Cursorinfo
8 {
9 	Cursor;
10 	Lock;
11 };
12 
13 extern Cursor	arrow;
14 extern Cursorinfo cursor;
15 
16 /* devmouse.c */
17 extern void mousetrack(int, int, int, int);
18 extern Point mousexy(void);
19 
20 extern void	mouseaccelerate(int);
21 extern void	mouseresize(void);
22 
23 /* screen.c */
24 extern uchar* attachscreen(Rectangle*, ulong*, int*, int*, int*);
25 extern void	flushmemscreen(Rectangle);
26 extern int	cursoron(int);
27 extern void	cursoroff(int);
28 extern void	setcursor(Cursor*);
29 extern int	screensize(int, int, int, ulong);
30 extern int	screenaperture(int, int);
31 extern Rectangle physgscreenr;	/* actual monitor size */
32 extern void	blankscreen(int);
33 
34 extern void swcursorinit(void);
35 extern void swcursorhide(void);
36 extern void swcursoravoid(Rectangle);
37 extern void swcursorunhide(void);
38 
39 /* devdraw.c */
40 extern void	deletescreenimage(void);
41 extern void	resetscreenimage(void);
42 extern int		drawhasclients(void);
43 extern ulong	blanktime;
44 extern void	setscreenimageclipr(Rectangle);
45 extern void	drawflush(void);
46 extern int drawidletime(void);
47 extern QLock	drawlock;
48 
49 #define ishwimage(i)	0		/* for ../port/devdraw.c */
50 
51 /* for communication between devdss.c and screen.c */
52 
53 enum {
54 	/* maxima */
55 	Wid		= 1280,
56 	Ht		= 1024,
57 	Depth		= 16,		/* bits per pixel */
58 
59 	Pcolours	= 256,		/* Palette */
60 	Pred		= 0,
61 	Pgreen		= 1,
62 	Pblue		= 2,
63 
64 	Pblack		= 0x00,
65 	Pwhite		= 0xFF,
66 
67 	/* settings indices */
68 	Res800x600	= 0,
69 	Res1024x768,
70 	Res1280x1024,
71 	Res1400x1050,
72 };
73 
74 struct Settings {
75 	uint	wid;		/* width in pixels */
76 	uint	ht;		/* height in pixels */
77 	uint	freq;		/* refresh frequency; only printed */
78 	uint	chan;		/* draw chan */
79 
80 	/* shouldn't be needed? */
81 	uint	pixelclock;
82 
83 	/* horizontal timing */
84 	uint	hbp;		/* back porch: pixel clocks before scan line */
85 	uint	hfp;		/* front porch: pixel clocks after scan line */
86 	uint	hsw;		/* sync pulse width: more hfp */
87 
88 	/* vertical timing */
89 	uint	vbp;		/* back porch: line clocks before frame */
90 	uint	vfp;		/* front porch: line clocks after frame */
91 	uint	vsw;		/* sync pulse width: more vfp */
92 };
93 
94 struct OScreen {
95 	Lock;
96 	Cursor;
97 	Settings *settings;
98 	int	open;
99 };
100 
101 struct Omap3fb {		/* frame buffer for 24-bit active color */
102 //	short	palette[256];
103 	/* pixel data, even; base type's width must match Depth */
104 	ushort	pixel[Wid*Ht];
105 };
106