1 /*
2  * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the "Software"),
6  * to deal in the Software without restriction, including without limitation
7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8  * and/or sell copies of the Software, and to permit persons to whom the
9  * Software is furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice (including the next
12  * paragraph) shall be included in all copies or substantial portions of the
13  * Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21  * DEALINGS IN THE SOFTWARE.
22  */
23 /*
24  * Copyright © 2003 Keith Packard
25  *
26  * Permission to use, copy, modify, distribute, and sell this software and its
27  * documentation for any purpose is hereby granted without fee, provided that
28  * the above copyright notice appear in all copies and that both that
29  * copyright notice and this permission notice appear in supporting
30  * documentation, and that the name of Keith Packard not be used in
31  * advertising or publicity pertaining to distribution of the software without
32  * specific, written prior permission.  Keith Packard makes no
33  * representations about the suitability of this software for any purpose.  It
34  * is provided "as is" without express or implied warranty.
35  *
36  * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
37  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
38  * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
39  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
40  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
41  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
42  * PERFORMANCE OF THIS SOFTWARE.
43  */
44 
45 #ifndef _COMPOSITEPROTO_H_
46 #define _COMPOSITEPROTO_H_
47 
48 #include <X11/Xmd.h>
49 #include <X11/extensions/composite.h>
50 
51 #define Window CARD32
52 #define Region CARD32
53 #define Pixmap CARD32
54 
55 /*
56  * requests and replies
57  */
58 typedef struct {
59     CARD8   reqType;
60     CARD8   compositeReqType;
61     CARD16  length;
62     CARD32  majorVersion;
63     CARD32  minorVersion;
64 } xCompositeQueryVersionReq;
65 
66 #define sz_xCompositeQueryVersionReq   12
67 
68 typedef struct {
69     BYTE    type;   /* X_Reply */
70     BYTE    pad1;
71     CARD16  sequenceNumber;
72     CARD32  length;
73     CARD32  majorVersion;
74     CARD32  minorVersion;
75     CARD32  pad2;
76     CARD32  pad3;
77     CARD32  pad4;
78     CARD32  pad5;
79 } xCompositeQueryVersionReply;
80 
81 #define sz_xCompositeQueryVersionReply	32
82 
83 typedef struct {
84     CARD8   reqType;
85     CARD8   compositeReqType;
86     CARD16  length;
87     Window  window;
88     CARD8   update;
89     CARD8   pad1;
90     CARD16  pad2;
91 } xCompositeRedirectWindowReq;
92 
93 #define sz_xCompositeRedirectWindowReq	12
94 
95 typedef struct {
96     CARD8   reqType;
97     CARD8   compositeReqType;
98     CARD16  length;
99     Window  window;
100     CARD8   update;
101     CARD8   pad1;
102     CARD16  pad2;
103 } xCompositeRedirectSubwindowsReq;
104 
105 #define sz_xCompositeRedirectSubwindowsReq	    12
106 
107 typedef struct {
108     CARD8   reqType;
109     CARD8   compositeReqType;
110     CARD16  length;
111     Window  window;
112     CARD8   update;
113     CARD8   pad1;
114     CARD16  pad2;
115 } xCompositeUnredirectWindowReq;
116 
117 #define sz_xCompositeUnredirectWindowReq    12
118 
119 typedef struct {
120     CARD8   reqType;
121     CARD8   compositeReqType;
122     CARD16  length;
123     Window  window;
124     CARD8   update;
125     CARD8   pad1;
126     CARD16  pad2;
127 } xCompositeUnredirectSubwindowsReq;
128 
129 #define sz_xCompositeUnredirectSubwindowsReq   12
130 
131 typedef struct {
132     CARD8   reqType;
133     CARD8   compositeReqType;
134     CARD16  length;
135     Region  region;
136     Window  window;
137 } xCompositeCreateRegionFromBorderClipReq;
138 
139 #define sz_xCompositeCreateRegionFromBorderClipReq  12
140 
141 /* Version 0.2 additions */
142 
143 typedef struct {
144     CARD8   reqType;
145     CARD8   compositeReqType;
146     CARD16  length;
147     Window  window;
148     Pixmap  pixmap;
149 } xCompositeNameWindowPixmapReq;
150 
151 #define sz_xCompositeNameWindowPixmapReq	    12
152 
153 /* Version 0.3 additions */
154 
155 typedef struct {
156     CARD8   reqType;
157     CARD8   compositeReqType;
158     CARD16  length;
159     Window  window;
160 } xCompositeGetOverlayWindowReq;
161 
162 #define sz_xCompositeGetOverlayWindowReq sizeof(xCompositeGetOverlayWindowReq)
163 
164 typedef struct {
165     BYTE    type;   /* X_Reply */
166     BYTE    pad1;
167     CARD16  sequenceNumber;
168     CARD32  length;
169     Window  overlayWin;
170     CARD32  pad2;
171     CARD32  pad3;
172     CARD32  pad4;
173     CARD32  pad5;
174     CARD32  pad6;
175 } xCompositeGetOverlayWindowReply;
176 
177 #define sz_xCompositeGetOverlayWindowReply sizeof(xCompositeGetOverlayWindowReply)
178 
179 typedef struct {
180     CARD8   reqType;
181     CARD8   compositeReqType;
182     CARD16  length;
183     Window  window;
184 } xCompositeReleaseOverlayWindowReq;
185 
186 #define sz_xCompositeReleaseOverlayWindowReq sizeof(xCompositeReleaseOverlayWindowReq)
187 
188 #undef Window
189 #undef Region
190 #undef Pixmap
191 
192 #endif /* _COMPOSITEPROTO_H_ */
193