1b290cf36Smrg/*
2b290cf36Smrg
3b290cf36SmrgCopyright 1995  Kaleb S. KEITHLEY
4b290cf36Smrg
5b290cf36SmrgPermission is hereby granted, free of charge, to any person obtaining
6b290cf36Smrga copy of this software and associated documentation files (the
7b290cf36Smrg"Software"), to deal in the Software without restriction, including
8b290cf36Smrgwithout limitation the rights to use, copy, modify, merge, publish,
9b290cf36Smrgdistribute, sublicense, and/or sell copies of the Software, and to
10b290cf36Smrgpermit persons to whom the Software is furnished to do so, subject to
11b290cf36Smrgthe following conditions:
12b290cf36Smrg
13b290cf36SmrgThe above copyright notice and this permission notice shall be
14b290cf36Smrgincluded in all copies or substantial portions of the Software.
15b290cf36Smrg
16b290cf36SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17b290cf36SmrgEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18b290cf36SmrgMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19d9dcd5aeSmrgIN NO EVENT SHALL Kaleb S. KEITHLEY BE LIABLE FOR ANY CLAIM, DAMAGES
20b290cf36SmrgOR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21b290cf36SmrgARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22b290cf36SmrgOTHER DEALINGS IN THE SOFTWARE.
23b290cf36Smrg
24d9dcd5aeSmrgExcept as contained in this notice, the name of Kaleb S. KEITHLEY
25d9dcd5aeSmrgshall not be used in advertising or otherwise to promote the sale, use
26b290cf36Smrgor other dealings in this Software without prior written authorization
27b290cf36Smrgfrom Kaleb S. KEITHLEY
28b290cf36Smrg
29b290cf36Smrg*/
30b290cf36Smrg
31b290cf36Smrg/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */
32b290cf36Smrg
33b290cf36Smrg#ifndef _XF86VIDMODE_H_
34b290cf36Smrg#define _XF86VIDMODE_H_
35b290cf36Smrg
36b290cf36Smrg#include <X11/Xfuncproto.h>
37b290cf36Smrg#include <X11/Xmd.h>
38b290cf36Smrg#include <X11/extensions/xf86vm.h>
39b290cf36Smrg
40b290cf36Smrg#define CLKFLAG_PROGRAMABLE		1
41b290cf36Smrg
42b290cf36Smrg#ifdef XF86VIDMODE_EVENTS
43b290cf36Smrg#define XF86VidModeNotify		0
44b290cf36Smrg#define XF86VidModeNumberEvents		(XF86VidModeNotify + 1)
45b290cf36Smrg
46b290cf36Smrg#define XF86VidModeNotifyMask		0x00000001
47b290cf36Smrg
48b290cf36Smrg#define XF86VidModeNonEvent		0
49b290cf36Smrg#define XF86VidModeModeChange		1
50b290cf36Smrg#else
51b290cf36Smrg#define XF86VidModeNumberEvents		0
52b290cf36Smrg#endif
53b290cf36Smrg
54b290cf36Smrg#define XF86VidModeBadClock		0
55b290cf36Smrg#define XF86VidModeBadHTimings		1
56b290cf36Smrg#define XF86VidModeBadVTimings		2
57b290cf36Smrg#define XF86VidModeModeUnsuitable	3
58b290cf36Smrg#define XF86VidModeExtensionDisabled	4
59b290cf36Smrg#define XF86VidModeClientNotLocal	5
60b290cf36Smrg#define XF86VidModeZoomLocked		6
61b290cf36Smrg#define XF86VidModeNumberErrors		(XF86VidModeZoomLocked + 1)
62b290cf36Smrg
63b290cf36Smrg#define XF86VM_READ_PERMISSION	1
64b290cf36Smrg#define XF86VM_WRITE_PERMISSION	2
65b290cf36Smrg
66b290cf36Smrg#ifndef _XF86VIDMODE_SERVER_
67b290cf36Smrg
68b290cf36Smrgtypedef struct {
69b290cf36Smrg    unsigned short	hdisplay;
70b290cf36Smrg    unsigned short	hsyncstart;
71b290cf36Smrg    unsigned short	hsyncend;
72b290cf36Smrg    unsigned short	htotal;
73b290cf36Smrg    unsigned short	hskew;
74b290cf36Smrg    unsigned short	vdisplay;
75b290cf36Smrg    unsigned short	vsyncstart;
76b290cf36Smrg    unsigned short	vsyncend;
77b290cf36Smrg    unsigned short	vtotal;
78b290cf36Smrg    unsigned int	flags;
79b290cf36Smrg    int			privsize;
80b290cf36Smrg#if defined(__cplusplus) || defined(c_plusplus)
81b290cf36Smrg    /* private is a C++ reserved word */
82b290cf36Smrg    INT32		*c_private;
83b290cf36Smrg#else
84b290cf36Smrg    INT32		*private;
85b290cf36Smrg#endif
86b290cf36Smrg} XF86VidModeModeLine;
87b290cf36Smrg
88b290cf36Smrgtypedef struct {
89b290cf36Smrg    unsigned int	dotclock;
90b290cf36Smrg    unsigned short	hdisplay;
91b290cf36Smrg    unsigned short	hsyncstart;
92b290cf36Smrg    unsigned short	hsyncend;
93b290cf36Smrg    unsigned short	htotal;
94b290cf36Smrg    unsigned short	hskew;
95b290cf36Smrg    unsigned short	vdisplay;
96b290cf36Smrg    unsigned short	vsyncstart;
97b290cf36Smrg    unsigned short	vsyncend;
98b290cf36Smrg    unsigned short	vtotal;
99b290cf36Smrg    unsigned int	flags;
100b290cf36Smrg    int			privsize;
101b290cf36Smrg#if defined(__cplusplus) || defined(c_plusplus)
102b290cf36Smrg    /* private is a C++ reserved word */
103b290cf36Smrg    INT32		*c_private;
104b290cf36Smrg#else
105b290cf36Smrg    INT32		*private;
106b290cf36Smrg#endif
107b290cf36Smrg} XF86VidModeModeInfo;
108b290cf36Smrg
109b290cf36Smrgtypedef struct {
110b290cf36Smrg    float		hi;
111b290cf36Smrg    float		lo;
112b290cf36Smrg} XF86VidModeSyncRange;
113b290cf36Smrg
114b290cf36Smrgtypedef struct {
115b290cf36Smrg    char*			vendor;
116b290cf36Smrg    char*			model;
117b290cf36Smrg    float			EMPTY;
118b290cf36Smrg    unsigned char		nhsync;
119b290cf36Smrg    XF86VidModeSyncRange*	hsync;
120b290cf36Smrg    unsigned char		nvsync;
121b290cf36Smrg    XF86VidModeSyncRange*	vsync;
122b290cf36Smrg} XF86VidModeMonitor;
123d9dcd5aeSmrg
124b290cf36Smrgtypedef struct {
125b290cf36Smrg    int type;			/* of event */
126b290cf36Smrg    unsigned long serial;	/* # of last request processed by server */
127b290cf36Smrg    Bool send_event;		/* true if this came from a SendEvent req */
128b290cf36Smrg    Display *display;		/* Display the event was read from */
129b290cf36Smrg    Window root;		/* root window of event screen */
130b290cf36Smrg    int state;			/* What happened */
131b290cf36Smrg    int kind;			/* What happened */
132b290cf36Smrg    Bool forced;		/* extents of new region */
133b290cf36Smrg    Time time;			/* event timestamp */
134b290cf36Smrg} XF86VidModeNotifyEvent;
135b290cf36Smrg
136b290cf36Smrgtypedef struct {
137b290cf36Smrg    float red;			/* Red Gamma value */
138b290cf36Smrg    float green;		/* Green Gamma value */
139b290cf36Smrg    float blue;			/* Blue Gamma value */
140b290cf36Smrg} XF86VidModeGamma;
141b290cf36Smrg
142b290cf36Smrg
143b290cf36Smrg#define XF86VidModeSelectNextMode(disp, scr) \
144b290cf36Smrg	XF86VidModeSwitchMode(disp, scr, 1)
145b290cf36Smrg#define XF86VidModeSelectPrevMode(disp, scr) \
146b290cf36Smrg	XF86VidModeSwitchMode(disp, scr, -1)
147b290cf36Smrg
148b290cf36Smrg_XFUNCPROTOBEGIN
149b290cf36Smrg
150b290cf36SmrgBool XF86VidModeQueryVersion(
151b290cf36Smrg    Display*		/* dpy */,
152b290cf36Smrg    int*		/* majorVersion */,
153b290cf36Smrg    int*		/* minorVersion */
154b290cf36Smrg);
155b290cf36Smrg
156b290cf36SmrgBool XF86VidModeQueryExtension(
157b290cf36Smrg    Display*		/* dpy */,
158b290cf36Smrg    int*		/* event_base */,
159b290cf36Smrg    int*		/* error_base */
160b290cf36Smrg);
161b290cf36Smrg
162b290cf36SmrgBool XF86VidModeSetClientVersion(
163b290cf36Smrg    Display*		/* dpy */
164b290cf36Smrg);
165b290cf36Smrg
166b290cf36SmrgBool XF86VidModeGetModeLine(
167b290cf36Smrg    Display*			/* dpy */,
168b290cf36Smrg    int				/* screen */,
169b290cf36Smrg    int*			/* dotclock */,
170b290cf36Smrg    XF86VidModeModeLine*	/* modeline */
171b290cf36Smrg);
172b290cf36Smrg
173b290cf36SmrgBool XF86VidModeGetAllModeLines(
174b290cf36Smrg    Display*			/* dpy */,
175b290cf36Smrg    int				/* screen */,
176b290cf36Smrg    int*			/* modecount */,
177b290cf36Smrg    XF86VidModeModeInfo***	/* modelinesPtr */
178b290cf36Smrg);
179b290cf36Smrg
180b290cf36SmrgBool XF86VidModeAddModeLine(
181b290cf36Smrg    Display*			/* dpy */,
182b290cf36Smrg    int				/* screen */,
183b290cf36Smrg    XF86VidModeModeInfo*	/* new modeline */,
184b290cf36Smrg    XF86VidModeModeInfo*	/* after modeline */
185b290cf36Smrg);
186b290cf36Smrg
187b290cf36SmrgBool XF86VidModeDeleteModeLine(
188b290cf36Smrg    Display*			/* dpy */,
189b290cf36Smrg    int				/* screen */,
190b290cf36Smrg    XF86VidModeModeInfo*	/* modeline */
191b290cf36Smrg);
192b290cf36Smrg
193b290cf36SmrgBool XF86VidModeModModeLine(
194b290cf36Smrg    Display*			/* dpy */,
195b290cf36Smrg    int				/* screen */,
196b290cf36Smrg    XF86VidModeModeLine*	/* modeline */
197b290cf36Smrg);
198b290cf36Smrg
199b290cf36SmrgStatus XF86VidModeValidateModeLine(
200b290cf36Smrg    Display*			/* dpy */,
201b290cf36Smrg    int				/* screen */,
202b290cf36Smrg    XF86VidModeModeInfo*	/* modeline */
203b290cf36Smrg);
204b290cf36Smrg
205b290cf36SmrgBool XF86VidModeSwitchMode(
206b290cf36Smrg    Display*		/* dpy */,
207b290cf36Smrg    int			/* screen */,
208b290cf36Smrg    int			/* zoom */
209b290cf36Smrg);
210b290cf36Smrg
211b290cf36SmrgBool XF86VidModeSwitchToMode(
212b290cf36Smrg    Display*			/* dpy */,
213b290cf36Smrg    int				/* screen */,
214b290cf36Smrg    XF86VidModeModeInfo*	/* modeline */
215b290cf36Smrg);
216b290cf36Smrg
217b290cf36SmrgBool XF86VidModeLockModeSwitch(
218b290cf36Smrg    Display*		/* dpy */,
219b290cf36Smrg    int			/* screen */,
220b290cf36Smrg    int			/* lock */
221b290cf36Smrg);
222b290cf36Smrg
223b290cf36SmrgBool XF86VidModeGetMonitor(
224b290cf36Smrg    Display*		/* dpy */,
225b290cf36Smrg    int			/* screen */,
226b290cf36Smrg    XF86VidModeMonitor*	/* monitor */
227b290cf36Smrg);
228b290cf36Smrg
229b290cf36SmrgBool XF86VidModeGetViewPort(
230b290cf36Smrg    Display*		/* dpy */,
231b290cf36Smrg    int			/* screen */,
232b290cf36Smrg    int*		/* x return */,
233b290cf36Smrg    int*		/* y return */
234b290cf36Smrg);
235b290cf36Smrg
236b290cf36SmrgBool XF86VidModeSetViewPort(
237b290cf36Smrg    Display*		/* dpy */,
238b290cf36Smrg    int			/* screen */,
239b290cf36Smrg    int			/* x */,
240b290cf36Smrg    int			/* y */
241b290cf36Smrg);
242b290cf36Smrg
243b290cf36SmrgBool XF86VidModeGetDotClocks(
244b290cf36Smrg    Display*		/* dpy */,
245b290cf36Smrg    int			/* screen */,
246b290cf36Smrg    int*		/* flags return */,
247b290cf36Smrg    int*		/* number of clocks return */,
248b290cf36Smrg    int*		/* max dot clock return */,
249b290cf36Smrg    int**		/* clocks return */
250b290cf36Smrg);
251b290cf36Smrg
252b290cf36SmrgBool XF86VidModeGetGamma(
253b290cf36Smrg    Display*			/* dpy */,
254b290cf36Smrg    int				/* screen */,
255b290cf36Smrg    XF86VidModeGamma*		/* Gamma */
256b290cf36Smrg);
257b290cf36Smrg
258b290cf36SmrgBool XF86VidModeSetGamma(
259b290cf36Smrg    Display*			/* dpy */,
260b290cf36Smrg    int				/* screen */,
261b290cf36Smrg    XF86VidModeGamma*		/* Gamma */
262b290cf36Smrg);
263b290cf36Smrg
264b290cf36SmrgBool XF86VidModeSetGammaRamp(
265b290cf36Smrg    Display*                    /* dpy */,
266b290cf36Smrg    int                         /* screen */,
267d9dcd5aeSmrg    int				/* size */,
268b290cf36Smrg    unsigned short*             /* red array */,
269b290cf36Smrg    unsigned short*             /* green array */,
270b290cf36Smrg    unsigned short*             /* blue array */
271b290cf36Smrg);
272b290cf36Smrg
273b290cf36SmrgBool XF86VidModeGetGammaRamp(
274b290cf36Smrg    Display*                    /* dpy */,
275b290cf36Smrg    int                         /* screen */,
276b290cf36Smrg    int                         /* size */,
277b290cf36Smrg    unsigned short*             /* red array */,
278b290cf36Smrg    unsigned short*             /* green array */,
279b290cf36Smrg    unsigned short*             /* blue array */
280b290cf36Smrg);
281b290cf36Smrg
282b290cf36SmrgBool XF86VidModeGetGammaRampSize(
283b290cf36Smrg    Display*                    /* dpy */,
284b290cf36Smrg    int                         /* screen */,
285b290cf36Smrg    int*                        /* size */
286b290cf36Smrg);
287b290cf36Smrg
288b290cf36SmrgBool XF86VidModeGetPermissions(
289b290cf36Smrg    Display*                    /* dpy */,
290b290cf36Smrg    int                         /* screen */,
291b290cf36Smrg    int*			/* permissions */
292b290cf36Smrg);
293b290cf36Smrg
294b290cf36Smrg_XFUNCPROTOEND
295b290cf36Smrg
296b290cf36Smrg#endif
297b290cf36Smrg
298b290cf36Smrg#endif
299