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