xref: /trunk/main/x11_extensions/inc/randrproto.h (revision cdf0e10c)
1 /*
2  * $XFree86: xc/include/extensions/randrproto.h,v 1.6 2002/09/29 23:39:43 keithp Exp $
3  *
4  * Copyright © 2000 Compaq Computer Corporation
5  * Copyright © 2002 Hewlett-Packard Company
6  *
7  * Permission to use, copy, modify, distribute, and sell this software and its
8  * documentation for any purpose is hereby granted without fee, provided that
9  * the above copyright notice appear in all copies and that both that
10  * copyright notice and this permission notice appear in supporting
11  * documentation, and that the name of Compaq or HP not be used in advertising
12  * or publicity pertaining to distribution of the software without specific,
13  * written prior permission.  Compaq and HP makes no representations about the
14  * suitability of this software for any purpose.  It is provided "as is"
15  * without express or implied warranty.
16  *
17  * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL COMPAQ
19  * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
21  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
22  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23  *
24  * Author:  Jim Gettys, Hewlett-Packard Company, Inc.
25  */
26 
27 /* note that RANDR 1.0 is incompatible with version 0.0, or 0.1 */
28 /* V1.0 removes depth switching from the protocol */
29 #ifndef _XRANDRP_H_
30 #define _XRANDRP_H_
31 
32 #include <X11/extensions/randr.h>
33 
34 #define Window CARD32
35 #define Drawable CARD32
36 #define Font CARD32
37 #define Pixmap CARD32
38 #define Cursor CARD32
39 #define Colormap CARD32
40 #define GContext CARD32
41 #define Atom CARD32
42 #define Time CARD32
43 #define KeyCode CARD8
44 #define KeySym CARD32
45 
46 #define Rotation CARD16
47 #define SizeID CARD16
48 #define SubpixelOrder CARD16
49 
50 /*
51  * data structures
52  */
53 
54 typedef struct {
55     CARD16 widthInPixels B16;
56     CARD16 heightInPixels B16;
57     CARD16 widthInMillimeters B16;
58     CARD16 heightInMillimeters B16;
59 } xScreenSizes;
60 #define sz_xScreenSizes 8
61 
62 /*
63  * requests and replies
64  */
65 
66 typedef struct {
67     CARD8   reqType;
68     CARD8   randrReqType;
69     CARD16  length B16;
70     CARD32  majorVersion B32;
71     CARD32  minorVersion B32;
72 } xRRQueryVersionReq;
73 #define sz_xRRQueryVersionReq   12
74 
75 typedef struct {
76     BYTE    type;   /* X_Reply */
77     BYTE    pad1;
78     CARD16  sequenceNumber B16;
79     CARD32  length B32;
80     CARD32  majorVersion B32;
81     CARD32  minorVersion B32;
82     CARD32  pad2 B32;
83     CARD32  pad3 B32;
84     CARD32  pad4 B32;
85     CARD32  pad5 B32;
86 } xRRQueryVersionReply;
87 #define sz_xRRQueryVersionReply	32
88 
89 typedef struct {
90     CARD8   reqType;
91     CARD8   randrReqType;
92     CARD16  length B16;
93     Window  window B32;
94 } xRRGetScreenInfoReq;
95 #define sz_xRRGetScreenInfoReq   8
96 
97 /*
98  * the xRRScreenInfoReply structure is followed by:
99  *
100  * the size information
101  */
102 
103 
104 typedef struct {
105     BYTE    type;   /* X_Reply */
106     BYTE    setOfRotations;
107     CARD16  sequenceNumber B16;
108     CARD32  length B32;
109     Window  root B32;
110     Time    timestamp B32;
111     Time    configTimestamp B32;
112     CARD16  nSizes B16;
113     SizeID  sizeID B16;
114     Rotation  rotation B16;
115     CARD16  rate B16;
116     CARD16  nrateEnts B16;
117     CARD16  pad B16;
118 } xRRGetScreenInfoReply;
119 #define sz_xRRGetScreenInfoReply	32
120 
121 typedef struct {
122     CARD8    reqType;
123     CARD8    randrReqType;
124     CARD16   length B16;
125     Drawable drawable B32;
126     Time     timestamp B32;
127     Time     configTimestamp B32;
128     SizeID   sizeID B16;
129     Rotation rotation B16;
130 } xRR1_0SetScreenConfigReq;
131 #define sz_xRR1_0SetScreenConfigReq   20
132 
133 typedef struct {
134     CARD8    reqType;
135     CARD8    randrReqType;
136     CARD16   length B16;
137     Drawable drawable B32;
138     Time     timestamp B32;
139     Time     configTimestamp B32;
140     SizeID   sizeID B16;
141     Rotation rotation B16;
142     CARD16   rate B16;
143     CARD16   pad B16;
144 } xRRSetScreenConfigReq;
145 #define sz_xRRSetScreenConfigReq   24
146 
147 typedef struct {
148     BYTE    type;   /* X_Reply */
149     CARD8   status;
150     CARD16  sequenceNumber B16;
151     CARD32  length B32;
152     Time    newTimestamp B32;
153     Time    newConfigTimestamp B32;
154     Window  root;
155     CARD16  subpixelOrder B16;
156     CARD16  pad4 B16;
157     CARD32  pad5 B32;
158     CARD32  pad6 B32;
159 } xRRSetScreenConfigReply;
160 #define sz_xRRSetScreenConfigReply 32
161 
162 typedef struct {
163     CARD8   reqType;
164     CARD8   randrReqType;
165     CARD16  length B16;
166     Window  window B32;
167     CARD16  enable B16;
168     CARD16  pad2 B16;
169 } xRRSelectInputReq;
170 #define sz_xRRSelectInputReq   12
171 
172 #define sz_xRRSelectInputReq   12
173 
174 /*
175  * event
176  */
177 typedef struct {
178     CARD8 type;				/* always evBase + ScreenChangeNotify */
179     CARD8 rotation;			/* new rotation */
180     CARD16 sequenceNumber B16;
181     Time timestamp B32;			/* time screen was changed */
182     Time configTimestamp B32;		/* time config data was changed */
183     Window root B32;			/* root window */
184     Window window B32;			/* window requesting notification */
185     SizeID sizeID B16;			/* new size ID */
186     CARD16 subpixelOrder B16;		/* subpixel order */
187     CARD16 widthInPixels B16;		/* new size */
188     CARD16 heightInPixels B16;
189     CARD16 widthInMillimeters B16;
190     CARD16 heightInMillimeters B16;
191 } xRRScreenChangeNotifyEvent;
192 #define sz_xRRScreenChangeNotifyEvent	32
193 
194 #undef Window
195 #undef Drawable
196 #undef Font
197 #undef Pixmap
198 #undef Cursor
199 #undef Colormap
200 #undef GContext
201 #undef Atom
202 #undef Time
203 #undef KeyCode
204 #undef KeySym
205 #undef Rotation
206 #undef SizeID
207 #undef SubpixelOrder
208 
209 #endif /* _XRANDRP_H_ */
210