1 /*****************************************************************
2 Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts.
3 Permission is hereby granted, free of charge, to any person obtaining a copy
4 of this software and associated documentation files (the "Software"), to deal
5 in the Software without restriction, including without limitation the rights
6 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 copies of the Software.
8 
9 The above copyright notice and this permission notice shall be included in
10 all copies or substantial portions of the Software.
11 
12 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
15 DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
16 BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY,
17 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
18 IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 
20 Except as contained in this notice, the name of Digital Equipment Corporation
21 shall not be used in advertising or otherwise to promote the sale, use or other
22 dealings in this Software without prior written authorization from Digital
23 Equipment Corporation.
24 ******************************************************************/
25 
26 /* THIS IS NOT AN X PROJECT TEAM SPECIFICATION */
27 
28 #ifndef _PANORAMIXPROTO_H_
29 #define _PANORAMIXPROTO_H_
30 
31 #define PANORAMIX_MAJOR_VERSION         1       /* current version number */
32 #define PANORAMIX_MINOR_VERSION         1
33 
34 #define PANORAMIX_PROTOCOL_NAME "XINERAMA"
35 
36 #define X_PanoramiXQueryVersion		0
37 #define X_PanoramiXGetState		1
38 #define X_PanoramiXGetScreenCount	2
39 #define X_PanoramiXGetScreenSize	3
40 
41 #define X_XineramaIsActive		4
42 #define X_XineramaQueryScreens		5
43 
44 typedef struct _PanoramiXQueryVersion {
45 	CARD8	reqType;		/* always PanoramiXReqCode */
46 	CARD8	panoramiXReqType;	/* always X_PanoramiXQueryVersion */
47 	CARD16	length;
48 	CARD8	clientMajor;
49 	CARD8	clientMinor;
50 	CARD16	unused;
51 } xPanoramiXQueryVersionReq;
52 
53 #define sz_xPanoramiXQueryVersionReq	8
54 
55 typedef struct {
56 	CARD8	type;			/* must be X_Reply */
57 	CARD8	pad1;			/* unused	*/
58 	CARD16	sequenceNumber;		/* last sequence number */
59 	CARD32	length;			/* 0 */
60 	CARD16	majorVersion;
61 	CARD16	minorVersion;
62 	CARD32	pad2;			/* unused */
63 	CARD32	pad3;			/* unused */
64 	CARD32	pad4;			/* unused */
65 	CARD32	pad5;			/* unused */
66 	CARD32	pad6;			/* unused */
67 } xPanoramiXQueryVersionReply;
68 
69 #define sz_xPanoramiXQueryVersionReply	32
70 
71 
72 typedef	struct	_PanoramiXGetState {
73         CARD8   reqType;	        /* always PanoramiXReqCode */
74         CARD8   panoramiXReqType;    	/* always X_PanoramiXGetState */
75         CARD16  length;
76         CARD32  window;
77 } xPanoramiXGetStateReq;
78 #define sz_xPanoramiXGetStateReq	8
79 
80 typedef struct {
81 	BYTE	type;
82 	BYTE	state;
83 	CARD16	sequenceNumber;
84 	CARD32	length;
85 	CARD32  window;
86 	CARD32	pad1;			/* unused */
87 	CARD32	pad2;			/* unused */
88 	CARD32	pad3;			/* unused */
89 	CARD32	pad4;			/* unused */
90 	CARD32	pad5;			/* unused */
91 } xPanoramiXGetStateReply;
92 
93 #define sz_panoramiXGetStateReply	32
94 
95 typedef	struct	_PanoramiXGetScreenCount {
96         CARD8   reqType;             /* always PanoramiXReqCode */
97         CARD8   panoramiXReqType;    /* always X_PanoramiXGetScreenCount */
98         CARD16  length;
99         CARD32  window;
100 } xPanoramiXGetScreenCountReq;
101 #define sz_xPanoramiXGetScreenCountReq	8
102 
103 typedef struct {
104 	BYTE	type;
105 	BYTE	ScreenCount;
106 	CARD16	sequenceNumber;
107 	CARD32	length;
108 	CARD32  window;
109 	CARD32	pad1;			/* unused */
110 	CARD32	pad2;			/* unused */
111 	CARD32	pad3;			/* unused */
112 	CARD32	pad4;			/* unused */
113 	CARD32	pad5;			/* unused */
114 } xPanoramiXGetScreenCountReply;
115 #define sz_panoramiXGetScreenCountReply	32
116 
117 typedef	struct	_PanoramiXGetScreenSize {
118         CARD8   reqType;                /* always PanoramiXReqCode */
119         CARD8   panoramiXReqType;	/* always X_PanoramiXGetState */
120         CARD16  length;
121         CARD32  window;
122         CARD32  screen;
123 } xPanoramiXGetScreenSizeReq;
124 #define sz_xPanoramiXGetScreenSizeReq	12
125 
126 typedef struct {
127 	BYTE	type;
128 	CARD8	pad1;
129 	CARD16	sequenceNumber;
130 	CARD32	length;
131 	CARD32	width;
132 	CARD32	height;
133 	CARD32  window;
134 	CARD32  screen;
135 	CARD32	pad2;			/* unused */
136 	CARD32	pad3;			/* unused */
137 } xPanoramiXGetScreenSizeReply;
138 #define sz_panoramiXGetScreenSizeReply 32
139 
140 /************  Alternate protocol  ******************/
141 
142 typedef struct {
143         CARD8   reqType;
144         CARD8   panoramiXReqType;
145         CARD16  length;
146 } xXineramaIsActiveReq;
147 #define sz_xXineramaIsActiveReq 4
148 
149 typedef struct {
150 	BYTE	type;
151 	CARD8	pad1;
152 	CARD16	sequenceNumber;
153 	CARD32	length;
154 	CARD32	state;
155 	CARD32	pad2;
156 	CARD32  pad3;
157 	CARD32  pad4;
158 	CARD32	pad5;
159 	CARD32	pad6;
160 } xXineramaIsActiveReply;
161 #define sz_XineramaIsActiveReply 32
162 
163 
164 typedef struct {
165         CARD8   reqType;
166         CARD8   panoramiXReqType;
167         CARD16  length;
168 } xXineramaQueryScreensReq;
169 #define sz_xXineramaQueryScreensReq 4
170 
171 typedef struct {
172 	BYTE	type;
173 	CARD8	pad1;
174 	CARD16	sequenceNumber;
175 	CARD32	length;
176 	CARD32	number;
177 	CARD32	pad2;
178 	CARD32  pad3;
179 	CARD32  pad4;
180 	CARD32	pad5;
181 	CARD32	pad6;
182 } xXineramaQueryScreensReply;
183 #define sz_XineramaQueryScreensReply 32
184 
185 typedef struct {
186 	INT16   x_org;
187 	INT16   y_org;
188 	CARD16  width;
189 	CARD16  height;
190 } xXineramaScreenInfo;
191 #define sz_XineramaScreenInfo 8
192 
193 #endif
194