1/*
2 * Copyright 1992 Network Computing Devices
3 *
4 * Permission to use, copy, modify, distribute, and sell this software and its
5 * documentation for any purpose is hereby granted without fee, provided that
6 * the above copyright notice appear in all copies and that both that
7 * copyright notice and this permission notice appear in supporting
8 * documentation, and that the name of NCD. not be used in advertising or
9 * publicity pertaining to distribution of the software without specific,
10 * written prior permission.  NCD. makes no representations about the
11 * suitability of this software for any purpose.  It is provided "as is"
12 * without express or implied warranty.
13 *
14 * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
16 * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
17 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
18 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
19 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20 *
21 */
22
23#ifndef _LBXPROTO_H_
24#define _LBXPROTO_H_
25
26#include <X11/extensions/lbx.h>
27/*
28 * NOTE:  any changes or additions to the opcodes needs to be reflected
29 * in the lbxCacheable array in Xserver/lbx/lbxmain.c
30 */
31
32#define X_LbxQueryVersion		0
33#define X_LbxStartProxy			1
34#define X_LbxStopProxy			2
35#define X_LbxSwitch			3
36#define X_LbxNewClient			4
37#define X_LbxCloseClient		5
38#define X_LbxModifySequence		6
39#define X_LbxAllowMotion		7
40#define X_LbxIncrementPixel		8
41#define X_LbxDelta			9
42#define	X_LbxGetModifierMapping		10
43#define	X_LbxInvalidateTag		12
44#define X_LbxPolyPoint			13
45#define X_LbxPolyLine			14
46#define X_LbxPolySegment		15
47#define X_LbxPolyRectangle		16
48#define X_LbxPolyArc			17
49#define X_LbxFillPoly			18
50#define X_LbxPolyFillRectangle		19
51#define X_LbxPolyFillArc		20
52#define	X_LbxGetKeyboardMapping		21
53#define	X_LbxQueryFont			22
54#define	X_LbxChangeProperty		23
55#define	X_LbxGetProperty		24
56#define	X_LbxTagData			25
57
58#define X_LbxCopyArea			26
59#define X_LbxCopyPlane			27
60#define X_LbxPolyText8			28
61#define X_LbxPolyText16			29
62#define X_LbxImageText8			30
63#define X_LbxImageText16		31
64
65#define X_LbxQueryExtension		32
66#define X_LbxPutImage			33
67#define X_LbxGetImage			34
68
69#define X_LbxBeginLargeRequest		35
70#define X_LbxLargeRequestData		36
71#define X_LbxEndLargeRequest		37
72
73#define X_LbxInternAtoms		38
74#define X_LbxGetWinAttrAndGeom		39
75
76#define X_LbxGrabCmap			40
77#define X_LbxReleaseCmap		41
78#define X_LbxAllocColor			42
79
80#define X_LbxSync			43
81
82/*
83 * Redefine some basic types used by structures defined herein.  This removes
84 * any possibility on 64-bit architectures of one entity viewing communicated
85 * data as 32-bit quantities and another entity viewing the same data as 64-bit
86 * quantities.
87 */
88#define XID CARD32
89#define Atom CARD32
90#define Colormap CARD32
91#define Drawable CARD32
92#define VisualID CARD32
93#define Window CARD32
94
95typedef struct {
96    BOOL	success;		/* TRUE */
97    BOOL	changeType;
98    CARD16	majorVersion,
99		minorVersion;
100    CARD16	length;			/* 1/4 additional bytes in setup info */
101    CARD32	tag;
102} xLbxConnSetupPrefix;
103
104typedef struct _LbxQueryVersion {
105    CARD8	reqType;		/* always LbxReqCode */
106    CARD8	lbxReqType;		/* always X_LbxQueryVersion */
107    CARD16	length;
108} xLbxQueryVersionReq;
109#define sz_xLbxQueryVersionReq	4
110
111typedef struct {
112    BYTE	type;			/* X_Reply */
113    CARD8	unused;
114    CARD16	sequenceNumber;
115    CARD32	length;
116    CARD16	majorVersion;		/* major version of LBX protocol */
117    CARD16	minorVersion;		/* minor version of LBX protocol */
118    CARD32	pad0;
119    CARD32	pad1;
120    CARD32	pad2;
121    CARD32	pad3;
122    CARD32	pad4;
123} xLbxQueryVersionReply;
124#define sz_xLbxQueryVersionReply	32
125
126typedef struct _LbxStartProxy {
127    CARD8	reqType;	/* always LbxReqCode */
128    CARD8	lbxReqType;	/* always X_LbxStartProxy */
129    CARD16	length;
130} xLbxStartProxyReq;
131#define sz_xLbxStartProxyReq	    4
132
133typedef struct _LbxStopProxy {
134    CARD8	reqType;	/* always LbxReqCode */
135    CARD8	lbxReqType;	/* always X_LbxStopProxy */
136    CARD16	length;
137} xLbxStopProxyReq;
138#define sz_xLbxStopProxyReq	    4
139
140typedef struct _LbxSwitch {
141    CARD8	reqType;	/* always LbxReqCode */
142    CARD8	lbxReqType;	/* always X_LbxSwitch */
143    CARD16	length;
144    CARD32	client;		/* new client */
145} xLbxSwitchReq;
146#define sz_xLbxSwitchReq	8
147
148typedef struct _LbxNewClient {
149    CARD8	reqType;	/* always LbxReqCode */
150    CARD8	lbxReqType;	/* always X_LbxNewClient */
151    CARD16	length;
152    CARD32	client;		/* new client */
153} xLbxNewClientReq;
154#define sz_xLbxNewClientReq	8
155
156typedef struct _LbxCloseClient {
157    CARD8	reqType;	/* always LbxReqCode */
158    CARD8	lbxReqType;	/* always X_LbxCloseClient */
159    CARD16	length;
160    CARD32	client;		/* new client */
161} xLbxCloseClientReq;
162#define sz_xLbxCloseClientReq	8
163
164typedef struct _LbxModifySequence {
165    CARD8	reqType;	/* always LbxReqCode */
166    CARD8	lbxReqType;	/* always X_LbxModifySequence */
167    CARD16	length;
168    CARD32	adjust;
169} xLbxModifySequenceReq;
170#define sz_xLbxModifySequenceReq    8
171
172typedef struct _LbxAllowMotion {
173    CARD8	reqType;	/* always LbxReqCode */
174    CARD8	lbxReqType;	/* always X_LbxAllowMotion */
175    CARD16	length;
176    CARD32	num;
177} xLbxAllowMotionReq;
178#define sz_xLbxAllowMotionReq    8
179
180typedef struct {
181    CARD8	reqType;	/* always LbxReqCode */
182    CARD8	lbxReqType;	/* always X_LbxGrabCmap */
183    CARD16	length;
184    Colormap	cmap;
185} xLbxGrabCmapReq;
186#define sz_xLbxGrabCmapReq	8
187
188#define LBX_SMART_GRAB		0x80
189#define LBX_AUTO_RELEASE	0x40
190#define LBX_3CHANNELS		0x20
191#define LBX_2BYTE_PIXELS	0x10
192#define LBX_RGB_BITS_MASK	0x0f
193
194#define LBX_LIST_END		0
195#define LBX_PIXEL_PRIVATE	1
196#define LBX_PIXEL_SHARED	2
197#define LBX_PIXEL_RANGE_PRIVATE	3
198#define LBX_PIXEL_RANGE_SHARED	4
199#define LBX_NEXT_CHANNEL	5
200
201typedef struct {
202    BYTE	type;			/* X_Reply */
203    CARD8	flags;
204    CARD16	sequenceNumber;
205    CARD32	length;
206    CARD32	pad0;
207    CARD32	pad1;
208    CARD32	pad2;
209    CARD32	pad3;
210    CARD32	pad4;
211    CARD32	pad5;
212} xLbxGrabCmapReply;
213#define sz_xLbxGrabCmapReply	32
214#define sz_xLbxGrabCmapReplyHdr	8
215
216
217typedef struct {
218    CARD8	reqType;	/* always LbxReqCode */
219    CARD8	lbxReqType;	/* always X_LbxReleaseCmap */
220    CARD16	length;
221    Colormap	cmap;
222} xLbxReleaseCmapReq;
223#define sz_xLbxReleaseCmapReq	8
224
225typedef struct {
226    CARD8	reqType;	/* always LbxReqCode */
227    CARD8	lbxReqType;	/* always X_LbxAllocColor */
228    CARD16	length;
229    Colormap	cmap;
230    CARD32	pixel;
231    CARD16	red, green, blue;
232    CARD16	pad;
233} xLbxAllocColorReq;
234#define sz_xLbxAllocColorReq	20
235
236typedef struct _LbxIncrementPixel {
237    CARD8	reqType;	/* always LbxReqCode */
238    CARD8	lbxReqType;	/* always X_LbxIncrementPixel */
239    CARD16	length;
240    CARD32	cmap;
241    CARD32	pixel;
242} xLbxIncrementPixelReq;
243#define sz_xLbxIncrementPixelReq    12
244
245typedef struct _LbxDelta {
246    CARD8	reqType;	/* always LbxReqCode */
247    CARD8	lbxReqType;	/* always X_LbxDelta */
248    CARD16	length;
249    CARD8	diffs;		/* number of diffs */
250    CARD8	cindex;		/* cache index */
251				/* list of diffs follows */
252} xLbxDeltaReq;
253#define sz_xLbxDeltaReq    6
254
255typedef struct _LbxGetModifierMapping {
256    CARD8	reqType;	/* always LbxReqCode */
257    CARD8	lbxReqType;	/* always X_LbxGetModifierMapping */
258    CARD16	length;
259} xLbxGetModifierMappingReq;
260#define	sz_xLbxGetModifierMappingReq	4
261
262typedef struct {
263    BYTE	type;			/* X_Reply */
264    CARD8	keyspermod;
265    CARD16	sequenceNumber;
266    CARD32	length;
267    CARD32	tag;
268    CARD32	pad0;
269    CARD32	pad1;
270    CARD32	pad2;
271    CARD32	pad3;
272    CARD32	pad4;
273} xLbxGetModifierMappingReply;
274#define sz_xLbxGetModifierMappingReply	32
275
276typedef struct _LbxGetKeyboardMapping {
277    CARD8	reqType;	/* always LbxReqCode */
278    CARD8	lbxReqType;	/* always X_LbxGetKeyboardMapping */
279    CARD16	length;
280    KeyCode	firstKeyCode;
281    CARD8	count;
282    CARD16	pad1;
283} xLbxGetKeyboardMappingReq;
284#define	sz_xLbxGetKeyboardMappingReq	8
285
286typedef struct {
287    BYTE	type;			/* X_Reply */
288    CARD8	keysperkeycode;
289    CARD16	sequenceNumber;
290    CARD32	length;
291    CARD32	tag;
292    CARD32	pad0;
293    CARD32	pad1;
294    CARD32	pad2;
295    CARD32	pad3;
296    CARD32	pad4;
297} xLbxGetKeyboardMappingReply;
298#define sz_xLbxGetKeyboardMappingReply	32
299
300typedef struct _LbxQueryFont {
301    CARD8	reqType;	/* always LbxReqCode */
302    CARD8	lbxReqType;	/* always X_LbxQueryFont */
303    CARD16	length;
304    CARD32	fid;
305} xLbxQueryFontReq;
306#define	sz_xLbxQueryFontReq	8
307
308typedef struct _LbxInternAtoms {
309    CARD8	reqType;	/* always LbxReqCode */
310    CARD8	lbxReqType;	/* always X_LbxInternAtoms */
311    CARD16	length;
312    CARD16	num;
313} xLbxInternAtomsReq;
314#define sz_xLbxInternAtomsReq	6
315
316typedef struct {
317    BYTE	type;		/* X_Reply */
318    CARD8	unused;
319    CARD16	sequenceNumber;
320    CARD32	length;
321    CARD32	atomsStart;
322    CARD32	pad0;
323    CARD32	pad1;
324    CARD32	pad2;
325    CARD32	pad3;
326    CARD32	pad4;
327} xLbxInternAtomsReply;
328#define sz_xLbxInternAtomsReply		32
329#define sz_xLbxInternAtomsReplyHdr	8
330
331
332typedef struct _LbxGetWinAttrAndGeom {
333    CARD8	reqType;	/* always LbxReqCode */
334    CARD8	lbxReqType;	/* always X_LbxGetWinAttrAndGeom */
335    CARD16	length;
336    CARD32	id;		/* window id */
337} xLbxGetWinAttrAndGeomReq;
338#define sz_xLbxGetWinAttrAndGeomReq 8
339
340typedef struct {
341    BYTE type;  /* X_Reply */
342    CARD8 backingStore;
343    CARD16 sequenceNumber;
344    CARD32 length;		/* NOT 0; this is an extra-large reply */
345    VisualID visualID;
346#if defined(__cplusplus) || defined(c_plusplus)
347    CARD16 c_class;
348#else
349    CARD16 class;
350#endif
351    CARD8 bitGravity;
352    CARD8 winGravity;
353    CARD32 backingBitPlanes;
354    CARD32 backingPixel;
355    BOOL saveUnder;
356    BOOL mapInstalled;
357    CARD8 mapState;
358    BOOL override;
359    Colormap colormap;
360    CARD32 allEventMasks;
361    CARD32 yourEventMask;
362    CARD16 doNotPropagateMask;
363    CARD16 pad1;
364    Window root;
365    INT16 x, y;
366    CARD16 width, height;
367    CARD16 borderWidth;
368    CARD8 depth;
369    CARD8 pad2;
370} xLbxGetWinAttrAndGeomReply;
371#define sz_xLbxGetWinAttrAndGeomReply 60
372
373
374typedef struct {
375    CARD8	reqType;	/* always LbxReqCode */
376    CARD8	lbxReqType;	/* always X_LbxSync */
377    CARD16	length;
378} xLbxSyncReq;
379#define sz_xLbxSyncReq	4
380
381typedef struct {
382    BYTE	type;			/* X_Reply */
383    CARD8	pad0;
384    CARD16	sequenceNumber;
385    CARD32	length;
386    CARD32	pad1;
387    CARD32	pad2;
388    CARD32	pad3;
389    CARD32	pad4;
390    CARD32	pad5;
391    CARD32	pad6;
392} xLbxSyncReply;
393#define sz_xLbxSyncReply 32
394
395
396/* an LBX squished charinfo packs the data in a CARD32 as follows */
397#define	LBX_WIDTH_SHIFT		26
398#define	LBX_LEFT_SHIFT		20
399#define	LBX_RIGHT_SHIFT		13
400#define	LBX_ASCENT_SHIFT	7
401#define	LBX_DESCENT_SHIFT	0
402
403#define	LBX_WIDTH_BITS		6
404#define	LBX_LEFT_BITS		6
405#define	LBX_RIGHT_BITS		7
406#define	LBX_ASCENT_BITS		6
407#define	LBX_DESCENT_BITS	7
408
409#define	LBX_WIDTH_MASK		0xfc000000
410#define	LBX_LEFT_MASK		0x03f00000
411#define	LBX_RIGHT_MASK		0x000fe000
412#define	LBX_ASCENT_MASK		0x00001f80
413#define	LBX_DESCENT_MASK	0x0000007f
414
415#define	LBX_MASK_BITS(val, n)	((unsigned int) ((val) & ((1 << (n)) - 1)))
416
417typedef struct {
418    CARD32	metrics;
419} xLbxCharInfo;
420
421/* note that this is identical to xQueryFontReply except for missing
422 * first 2 words
423 */
424typedef struct {
425    xCharInfo minBounds;
426/* XXX do we need to leave this gunk? */
427#ifndef WORD64
428    CARD32 walign1;
429#endif
430    xCharInfo maxBounds;
431#ifndef WORD64
432    CARD32 walign2;
433#endif
434    CARD16 minCharOrByte2, maxCharOrByte2;
435    CARD16 defaultChar;
436    CARD16 nFontProps;	/* followed by this many xFontProp structures */
437    CARD8 drawDirection;
438    CARD8 minByte1, maxByte1;
439    BOOL allCharsExist;
440    INT16 fontAscent, fontDescent;
441    CARD32 nCharInfos;	/* followed by this many xLbxCharInfo structures */
442} xLbxFontInfo;
443
444typedef struct {
445    BYTE	type;			/* X_Reply */
446    CARD8	compression;
447    CARD16	sequenceNumber;
448    CARD32	length;
449    CARD32	tag;
450    CARD32	pad0;
451    CARD32	pad1;
452    CARD32	pad2;
453    CARD32	pad3;
454    CARD32	pad4;
455    /* X_QueryFont sticks much of the data in the base reply packet,
456     * but we hope that it won't be needed, (and it won't fit in 32 bytes
457     * with the tag anyways)
458     *
459     * if any additional data is needed, its sent in a xLbxFontInfo
460     */
461} xLbxQueryFontReply;
462#define sz_xLbxQueryFontReply	32
463
464typedef struct _LbxChangeProperty {
465    CARD8	reqType;	/* always LbxReqCode */
466    CARD8	lbxReqType;	/* always X_LbxChangeProperty */
467    CARD16	length;
468    Window	window;
469    Atom	property;
470    Atom	type;
471    CARD8	format;
472    CARD8	mode;
473    BYTE	pad[2];
474    CARD32	nUnits;
475} xLbxChangePropertyReq;
476#define	sz_xLbxChangePropertyReq	24
477
478typedef struct {
479    BYTE	type;			/* X_Reply */
480    CARD8	pad;
481    CARD16	sequenceNumber;
482    CARD32	length;
483    CARD32	tag;
484    CARD32	pad0;
485    CARD32	pad1;
486    CARD32	pad2;
487    CARD32	pad3;
488    CARD32	pad4;
489} xLbxChangePropertyReply;
490#define sz_xLbxChangePropertyReply	32
491
492typedef struct _LbxGetProperty {
493    CARD8	reqType;	/* always LbxReqCode */
494    CARD8	lbxReqType;	/* always X_LbxGetProperty */
495    CARD16	length;
496    Window	window;
497    Atom	property;
498    Atom	type;
499    CARD8	delete;
500    BYTE	pad[3];
501    CARD32	longOffset;
502    CARD32	longLength;
503} xLbxGetPropertyReq;
504#define	sz_xLbxGetPropertyReq	28
505
506typedef struct {
507    BYTE	type;			/* X_Reply */
508    CARD8	format;
509    CARD16	sequenceNumber;
510    CARD32	length;
511    Atom	propertyType;
512    CARD32	bytesAfter;
513    CARD32	nItems;
514    CARD32	tag;
515    CARD32	pad1;
516    CARD32	pad2;
517} xLbxGetPropertyReply;
518#define sz_xLbxGetPropertyReply	32
519
520typedef struct _LbxTagData {
521    CARD8	reqType;	/* always LbxReqCode */
522    CARD8	lbxReqType;	/* always X_LbxTagData */
523    CARD16	length;
524    XID 	tag;
525    CARD32	real_length;
526    /* data */
527} xLbxTagDataReq;
528#define	sz_xLbxTagDataReq	12
529
530typedef struct _LbxInvalidateTag {
531    CARD8	reqType;	/* always LbxReqCode */
532    CARD8	lbxReqType;	/* always X_LbxInvalidateTag */
533    CARD16	length;
534    CARD32	tag;
535} xLbxInvalidateTagReq;
536#define	sz_xLbxInvalidateTagReq	8
537
538typedef struct _LbxPutImage {
539    CARD8	reqType;	/* always LbxReqCode */
540    CARD8	lbxReqType;	/* always X_LbxPutImage */
541    CARD16	length;
542    CARD8	compressionMethod;
543    CARD8	cacheEnts;
544    CARD8	bitPacked;
545    /* rest is variable */
546} xLbxPutImageReq;
547#define sz_xLbxPutImageReq	7
548
549typedef struct {
550    CARD8	reqType;	/* always LbxReqCode */
551    CARD8	lbxReqType;	/* always X_LbxGetImage */
552    CARD16	length;
553    Drawable	drawable;
554    INT16	x, y;
555    CARD16	width, height;
556    CARD32	planeMask;
557    CARD8	format;
558    CARD8	pad1;
559    CARD16	pad2;
560} xLbxGetImageReq;
561
562#define sz_xLbxGetImageReq 24
563
564typedef struct {
565    BYTE type;			/* X_Reply */
566    CARD8 depth;
567    CARD16 sequenceNumber;
568    CARD32 lbxLength;
569    CARD32 xLength;
570    VisualID visual;
571    CARD8 compressionMethod;
572    CARD8 pad1;
573    CARD16 pad2;
574    CARD32 pad3;
575    CARD32 pad4;
576    CARD32 pad5;
577} xLbxGetImageReply;
578
579#define sz_xLbxGetImageReply 32
580
581/* Following used for LbxPolyPoint, LbxPolyLine, LbxPolySegment,
582   LbxPolyRectangle, LbxPolyArc, LbxPolyFillRectangle and LbxPolyFillArc */
583
584#define GFX_CACHE_SIZE  15
585
586#define GFXdCacheEnt(e)	    ((e) & 0xf)
587#define GFXgCacheEnt(e)	    (((e) >> 4) & 0xf)
588#define GFXCacheEnts(d,g)   (((d) & 0xf) | (((g) & 0xf) << 4))
589
590#define GFXCacheNone   0xf
591
592typedef struct _LbxPolyPoint {
593    CARD8	reqType;	/* always LbxReqCode */
594    CARD8	lbxReqType;
595    CARD16	length;
596    CARD8	cacheEnts;
597    CARD8	padBytes;
598} xLbxPolyPointReq;
599
600#define sz_xLbxPolyPointReq	6
601
602typedef xLbxPolyPointReq xLbxPolyLineReq;
603typedef xLbxPolyPointReq xLbxPolySegmentReq;
604typedef xLbxPolyPointReq xLbxPolyRectangleReq;
605typedef xLbxPolyPointReq xLbxPolyArcReq;
606typedef xLbxPolyPointReq xLbxPolyFillRectangleReq;
607typedef xLbxPolyPointReq xLbxPolyFillArcReq;
608
609#define sz_xLbxPolyLineReq		sz_xLbxPolyPointReq
610#define sz_xLbxPolySegmentReq		sz_xLbxPolyPointReq
611#define sz_xLbxPolyRectangleReq		sz_xLbxPolyPointReq
612#define sz_xLbxPolyArcReq		sz_xLbxPolyPointReq
613#define sz_xLbxPolyFillRectangleReq	sz_xLbxPolyPointReq
614#define sz_xLbxPolyFillArc		sz_xLbxPolyPointReq
615
616typedef struct _LbxFillPoly {
617    CARD8	reqType;	/* always LbxReqCode */
618    CARD8	lbxReqType;
619    CARD16	length;
620    CARD8	cacheEnts;
621    BYTE	shape;
622    CARD8	padBytes;
623} xLbxFillPolyReq;
624#define sz_xLbxFillPolyReq	7
625
626typedef struct _LbxCopyArea {
627    CARD8	reqType;	/* always LbxReqCode */
628    CARD8	lbxReqType;
629    CARD16	length;
630    CARD8	srcCache;	/* source drawable */
631    CARD8	cacheEnts;	/* dest drawable and gc */
632    /* followed by encoded src x, src y, dst x, dst y, width, height */
633} xLbxCopyAreaReq;
634
635#define sz_xLbxCopyAreaReq  6
636
637typedef struct _LbxCopyPlane {
638    CARD8	reqType;	/* always LbxReqCode */
639    CARD8	lbxReqType;
640    CARD16	length;
641    CARD32	bitPlane;
642    CARD8	srcCache;	/* source drawable */
643    CARD8	cacheEnts;	/* dest drawable and gc */
644    /* followed by encoded src x, src y, dst x, dst y, width, height */
645} xLbxCopyPlaneReq;
646
647#define sz_xLbxCopyPlaneReq  10
648
649typedef struct _LbxPolyText {
650    CARD8	reqType;	/* always LbxReqCode */
651    CARD8	lbxReqType;
652    CARD16	length;
653    CARD8	cacheEnts;
654    /* followed by encoded src x, src y coordinates and text elts */
655} xLbxPolyTextReq;
656
657#define sz_xLbxPolyTextReq  5
658
659typedef xLbxPolyTextReq xLbxPolyText8Req;
660typedef xLbxPolyTextReq xLbxPolyText16Req;
661
662#define sz_xLbxPolyTextReq	5
663#define sz_xLbxPolyText8Req	5
664#define sz_xLbxPolyText16Req	5
665
666typedef struct _LbxImageText {
667    CARD8	reqType;	/* always LbxReqCode */
668    CARD8	lbxReqType;
669    CARD16	length;
670    CARD8	cacheEnts;
671    CARD8	nChars;
672    /* followed by encoded src x, src y coordinates and string */
673} xLbxImageTextReq;
674
675typedef xLbxImageTextReq xLbxImageText8Req;
676typedef xLbxImageTextReq xLbxImageText16Req;
677
678#define sz_xLbxImageTextReq	6
679#define sz_xLbxImageText8Req	6
680#define sz_xLbxImageText16Req	6
681
682typedef struct {
683    CARD8       offset;
684    CARD8       diff;
685} xLbxDiffItem;
686#define sz_xLbxDiffItem    2
687
688typedef struct {
689    BYTE	type;		/* X_Reply */
690    CARD8	nOpts;
691    CARD16	sequenceNumber;
692    CARD32	length;
693    CARD32	optDataStart;
694    CARD32	pad0;
695    CARD32	pad1;
696    CARD32	pad2;
697    CARD32	pad3;
698    CARD32	pad4;
699} xLbxStartReply;
700#define sz_xLbxStartReply	32
701#define sz_xLbxStartReplyHdr	8
702
703typedef struct _LbxQueryExtension {
704    CARD8	reqType;	/* always LbxReqCode */
705    CARD8	lbxReqType;	/* always X_LbxQueryExtension */
706    CARD16	length;
707    CARD32	nbytes;
708} xLbxQueryExtensionReq;
709#define	sz_xLbxQueryExtensionReq	8
710
711typedef struct _LbxQueryExtensionReply {
712    BYTE	type;			/* X_Reply */
713    CARD8	numReqs;
714    CARD16	sequenceNumber;
715    CARD32	length;
716    BOOL	present;
717    CARD8	major_opcode;
718    CARD8	first_event;
719    CARD8	first_error;
720    CARD32	pad0;
721    CARD32	pad1;
722    CARD32	pad2;
723    CARD32	pad3;
724    CARD32	pad4;
725
726    /* reply & event generating requests */
727} xLbxQueryExtensionReply;
728#define sz_xLbxQueryExtensionReply	32
729
730
731typedef struct _LbxBeginLargeRequest {
732    CARD8	reqType;	/* always LbxReqCode */
733    CARD8	lbxReqType;	/* always X_LbxBeginLargeRequest */
734    CARD16	length;
735    CARD32	largeReqLength;
736} xLbxBeginLargeRequestReq;
737#define	sz_BeginLargeRequestReq 8
738
739typedef struct _LbxLargeRequestData {
740    CARD8	reqType;	/* always LbxReqCode */
741    CARD8	lbxReqType;	/* always X_LbxLargeRequestData */
742    CARD16	length;
743    /* followed by LISTofCARD8 data */
744} xLbxLargeRequestDataReq;
745#define	sz_LargeRequestDataReq 4
746
747typedef struct _LbxEndLargeRequest {
748    CARD8	reqType;	/* always LbxReqCode */
749    CARD8	lbxReqType;	/* always X_LbxEndLargeRequest */
750    CARD16	length;
751} xLbxEndLargeRequestReq;
752#define	sz_EndLargeRequestReq 4
753
754
755
756typedef struct _LbxSwitchEvent {
757    BYTE	type;		/* always eventBase + LbxEvent */
758    BYTE	lbxType;	/* LbxSwitchEvent */
759    CARD16	pad;
760    CARD32	client;
761} xLbxSwitchEvent;
762#define sz_xLbxSwitchEvent	8
763
764typedef struct _LbxCloseEvent {
765    BYTE	type;		/* always eventBase + LbxEvent */
766    BYTE	lbxType;	/* LbxCloseEvent */
767    CARD16	sequenceNumber;
768    CARD32	client;
769    CARD32	pad1;
770    CARD32	pad2;
771    CARD32	pad3;
772    CARD32	pad4;
773    CARD32	pad5;
774    CARD32	pad6;
775} xLbxCloseEvent;
776#define sz_xLbxCloseEvent	32
777
778typedef struct _LbxInvalidateTagEvent {
779    BYTE	type;		/* always eventBase + LbxEvent */
780    BYTE	lbxType;	/* LbxInvalidateTagEvent */
781    CARD16	sequenceNumber;
782    CARD32	tag;
783    CARD32	tagType;
784    CARD32	pad1;
785    CARD32	pad2;
786    CARD32	pad3;
787    CARD32	pad4;
788    CARD32	pad5;
789} xLbxInvalidateTagEvent;
790#define sz_xLbxInvalidateTagEvent 32
791
792typedef struct _LbxSendTagDataEvent {
793    BYTE	type;		/* always eventBase + LbxEvent */
794    BYTE	lbxType;	/* LbxSendTagDataEvent */
795    CARD16	sequenceNumber;
796    CARD32	tag;
797    CARD32	tagType;
798    CARD32	pad1;
799    CARD32	pad2;
800    CARD32	pad3;
801    CARD32	pad4;
802    CARD32	pad5;
803} xLbxSendTagDataEvent;
804#define sz_xLbxSendTagDataEvent 32
805
806typedef struct _LbxListenToOneEvent {
807    BYTE	type;		/* always eventBase + LbxEvent */
808    BYTE	lbxType;	/* LbxListenToOneEvent */
809    CARD16	sequenceNumber;
810    CARD32	client;
811    CARD32	pad1;
812    CARD32	pad2;
813    CARD32	pad3;
814    CARD32	pad4;
815    CARD32	pad5;
816    CARD32	pad6;
817} xLbxListenToOneEvent;
818#define sz_xLbxListenToOneEvent 32
819
820typedef struct _LbxListenToAllEvent {
821    BYTE	type;		/* always eventBase + LbxEvent */
822    BYTE	lbxType;	/* LbxListenToAllEvent */
823    CARD16	sequenceNumber;
824    CARD32	pad1;
825    CARD32	pad2;
826    CARD32	pad3;
827    CARD32	pad4;
828    CARD32	pad5;
829    CARD32	pad6;
830    CARD32	pad7;
831} xLbxListenToAllEvent;
832#define sz_xLbxListenToOneEvent 32
833
834typedef struct _LbxReleaseCmapEvent {
835    BYTE	type;		/* always eventBase + LbxEvent */
836    BYTE	lbxType;	/* LbxReleaseCmapEvent */
837    CARD16	sequenceNumber;
838    Colormap	colormap;
839    CARD32	pad1;
840    CARD32	pad2;
841    CARD32	pad3;
842    CARD32	pad4;
843    CARD32	pad5;
844    CARD32	pad6;
845} xLbxReleaseCmapEvent;
846#define sz_xLbxReleaseCmapEvent	32
847
848
849typedef struct _LbxFreeCellsEvent {
850    BYTE	type;		/* always eventBase + LbxEvent */
851    BYTE	lbxType;	/* LbxFreeCellsEvent */
852    CARD16	sequenceNumber;
853    Colormap	colormap;
854    CARD32	pixelStart;
855    CARD32	pixelEnd;
856    CARD32	pad1;
857    CARD32	pad2;
858    CARD32	pad3;
859    CARD32	pad4;
860} xLbxFreeCellsEvent;
861#define sz_xLbxFreeCellsEvent	32
862
863
864/*
865 * squished X event sizes.  If these change, be sure to update lbxquish.c
866 * and unsquish.c appropriately
867 *
868 * lbxsz_* is the padded squished length
869 * lbxupsz_* is the unpadded squished length
870 */
871
872#define	  lbxsz_KeyButtonEvent		32
873#define	lbxupsz_KeyButtonEvent		31
874
875#define	  lbxsz_EnterLeaveEvent		32
876#define	lbxupsz_EnterLeaveEvent		32
877
878#define	  lbxsz_FocusEvent		12
879#define	lbxupsz_FocusEvent		9
880
881#define	  lbxsz_KeymapEvent		32
882#define	lbxupsz_KeymapEvent		32
883
884#define	  lbxsz_ExposeEvent		20
885#define	lbxupsz_ExposeEvent		18
886
887#define	  lbxsz_GfxExposeEvent		24
888#define	lbxupsz_GfxExposeEvent		21
889
890#define	  lbxsz_NoExposeEvent		12
891#define	lbxupsz_NoExposeEvent		11
892
893#define	  lbxsz_VisibilityEvent		12
894#define	lbxupsz_VisibilityEvent		9
895
896#define	  lbxsz_CreateNotifyEvent	24
897#define	lbxupsz_CreateNotifyEvent	23
898
899#define	  lbxsz_DestroyNotifyEvent	12
900#define	lbxupsz_DestroyNotifyEvent	12
901
902#define	  lbxsz_UnmapNotifyEvent	16
903#define	lbxupsz_UnmapNotifyEvent	13
904
905#define	  lbxsz_MapNotifyEvent		16
906#define	lbxupsz_MapNotifyEvent		13
907
908#define	  lbxsz_MapRequestEvent		12
909#define	lbxupsz_MapRequestEvent		12
910
911#define	  lbxsz_ReparentEvent		24
912#define	lbxupsz_ReparentEvent		21
913
914#define	  lbxsz_ConfigureNotifyEvent	28
915#define	lbxupsz_ConfigureNotifyEvent	27
916
917#define	  lbxsz_ConfigureRequestEvent	28
918#define	lbxupsz_ConfigureRequestEvent	28
919
920#define	  lbxsz_GravityEvent		16
921#define	lbxupsz_GravityEvent		16
922
923#define	  lbxsz_ResizeRequestEvent	12
924#define	lbxupsz_ResizeRequestEvent	12
925
926#define	  lbxsz_CirculateEvent		20
927#define	lbxupsz_CirculateEvent		17
928
929#define	  lbxsz_PropertyEvent		20
930#define	lbxupsz_PropertyEvent		17
931
932#define	  lbxsz_SelectionClearEvent	16
933#define	lbxupsz_SelectionClearEvent	16
934
935#define	  lbxsz_SelectionRequestEvent	28
936#define	lbxupsz_SelectionRequestEvent	28
937
938#define	  lbxsz_SelectionNotifyEvent	24
939#define	lbxupsz_SelectionNotifyEvent	24
940
941#define	  lbxsz_ColormapEvent		16
942#define	lbxupsz_ColormapEvent		14
943
944#define	  lbxsz_MappingNotifyEvent	8
945#define	lbxupsz_MappingNotifyEvent	7
946
947#define	  lbxsz_ClientMessageEvent	32
948#define	lbxupsz_ClientMessageEvent	32
949
950#define	lbxsz_UnknownEvent		32
951
952#ifdef DEBUG
953
954#define DBG_SWITCH	0x00000001
955#define DBG_CLOSE	0x00000002
956#define DBG_IO		0x00000004
957#define DBG_READ_REQ	0x00000008
958#define DBG_LEN		0x00000010
959#define DBG_BLOCK	0x00000020
960#define DBG_CLIENT	0x00000040
961#define DBG_DELTA	0x00000080
962#endif
963/*
964 * Cancel the previous redefinition of the basic types, thus restoring their
965 * X.h definitions.
966 */
967
968#undef XID
969#undef Atom
970#undef Colormap
971#undef Drawable
972#undef VisualID
973#undef Window
974
975#endif	/* _LBXPROTO_H_ */
976