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