Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-30 10:26:29

0001 /*
0002  * Copyright 1992 Network Computing Devices
0003  *
0004  * Permission to use, copy, modify, distribute, and sell this software and its
0005  * documentation for any purpose is hereby granted without fee, provided that
0006  * the above copyright notice appear in all copies and that both that
0007  * copyright notice and this permission notice appear in supporting
0008  * documentation, and that the name of NCD. not be used in advertising or
0009  * publicity pertaining to distribution of the software without specific,
0010  * written prior permission.  NCD. makes no representations about the
0011  * suitability of this software for any purpose.  It is provided "as is"
0012  * without express or implied warranty.
0013  *
0014  * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
0015  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
0016  * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
0017  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
0018  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
0019  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
0020  *
0021  */
0022 
0023 #ifndef _LBXPROTO_H_
0024 #define _LBXPROTO_H_
0025 
0026 #include <X11/extensions/lbx.h>
0027 /*
0028  * NOTE:  any changes or additions to the opcodes needs to be reflected
0029  * in the lbxCacheable array in Xserver/lbx/lbxmain.c
0030  */
0031 
0032 #define X_LbxQueryVersion       0
0033 #define X_LbxStartProxy         1
0034 #define X_LbxStopProxy          2
0035 #define X_LbxSwitch         3
0036 #define X_LbxNewClient          4
0037 #define X_LbxCloseClient        5
0038 #define X_LbxModifySequence     6
0039 #define X_LbxAllowMotion        7
0040 #define X_LbxIncrementPixel     8
0041 #define X_LbxDelta          9
0042 #define X_LbxGetModifierMapping     10
0043 #define X_LbxInvalidateTag      12
0044 #define X_LbxPolyPoint          13
0045 #define X_LbxPolyLine           14
0046 #define X_LbxPolySegment        15
0047 #define X_LbxPolyRectangle      16
0048 #define X_LbxPolyArc            17
0049 #define X_LbxFillPoly           18
0050 #define X_LbxPolyFillRectangle      19
0051 #define X_LbxPolyFillArc        20
0052 #define X_LbxGetKeyboardMapping     21
0053 #define X_LbxQueryFont          22
0054 #define X_LbxChangeProperty     23
0055 #define X_LbxGetProperty        24
0056 #define X_LbxTagData            25
0057 
0058 #define X_LbxCopyArea           26
0059 #define X_LbxCopyPlane          27
0060 #define X_LbxPolyText8          28
0061 #define X_LbxPolyText16         29
0062 #define X_LbxImageText8         30
0063 #define X_LbxImageText16        31
0064 
0065 #define X_LbxQueryExtension     32
0066 #define X_LbxPutImage           33
0067 #define X_LbxGetImage           34
0068 
0069 #define X_LbxBeginLargeRequest      35
0070 #define X_LbxLargeRequestData       36
0071 #define X_LbxEndLargeRequest        37
0072 
0073 #define X_LbxInternAtoms        38
0074 #define X_LbxGetWinAttrAndGeom      39
0075 
0076 #define X_LbxGrabCmap           40
0077 #define X_LbxReleaseCmap        41
0078 #define X_LbxAllocColor         42
0079 
0080 #define X_LbxSync           43
0081 
0082 /*
0083  * Redefine some basic types used by structures defined herein.  This removes
0084  * any possibility on 64-bit architectures of one entity viewing communicated
0085  * data as 32-bit quantities and another entity viewing the same data as 64-bit
0086  * quantities.
0087  */
0088 #define XID CARD32
0089 #define Atom CARD32
0090 #define Colormap CARD32
0091 #define Drawable CARD32
0092 #define VisualID CARD32
0093 #define Window CARD32
0094 
0095 typedef struct {
0096     BOOL    success;        /* TRUE */
0097     BOOL    changeType;
0098     CARD16  majorVersion B16,
0099         minorVersion B16;
0100     CARD16  length B16;     /* 1/4 additional bytes in setup info */
0101     CARD32  tag B32;
0102 } xLbxConnSetupPrefix;
0103 
0104 typedef struct _LbxQueryVersion {
0105     CARD8   reqType;        /* always LbxReqCode */
0106     CARD8   lbxReqType;     /* always X_LbxQueryVersion */
0107     CARD16  length B16;
0108 } xLbxQueryVersionReq;
0109 #define sz_xLbxQueryVersionReq  4
0110 
0111 typedef struct {
0112     BYTE    type;           /* X_Reply */
0113     CARD8   unused;
0114     CARD16  sequenceNumber B16;
0115     CARD32  length B32;
0116     CARD16  majorVersion B16;   /* major version of LBX protocol */
0117     CARD16  minorVersion B16;   /* minor version of LBX protocol */
0118     CARD32  pad0 B32;
0119     CARD32  pad1 B32;
0120     CARD32  pad2 B32;
0121     CARD32  pad3 B32;
0122     CARD32  pad4 B32;
0123 } xLbxQueryVersionReply;
0124 #define sz_xLbxQueryVersionReply    32
0125 
0126 typedef struct _LbxStartProxy {
0127     CARD8   reqType;    /* always LbxReqCode */
0128     CARD8   lbxReqType; /* always X_LbxStartProxy */
0129     CARD16  length B16;
0130 } xLbxStartProxyReq;
0131 #define sz_xLbxStartProxyReq        4
0132 
0133 typedef struct _LbxStopProxy {
0134     CARD8   reqType;    /* always LbxReqCode */
0135     CARD8   lbxReqType; /* always X_LbxStopProxy */
0136     CARD16  length B16;
0137 } xLbxStopProxyReq;
0138 #define sz_xLbxStopProxyReq     4
0139 
0140 typedef struct _LbxSwitch {
0141     CARD8   reqType;    /* always LbxReqCode */
0142     CARD8   lbxReqType; /* always X_LbxSwitch */
0143     CARD16  length B16;
0144     CARD32  client B32; /* new client */
0145 } xLbxSwitchReq;
0146 #define sz_xLbxSwitchReq    8
0147 
0148 typedef struct _LbxNewClient {
0149     CARD8   reqType;    /* always LbxReqCode */
0150     CARD8   lbxReqType; /* always X_LbxNewClient */
0151     CARD16  length B16;
0152     CARD32  client B32; /* new client */
0153 } xLbxNewClientReq;
0154 #define sz_xLbxNewClientReq 8
0155 
0156 typedef struct _LbxCloseClient {
0157     CARD8   reqType;    /* always LbxReqCode */
0158     CARD8   lbxReqType; /* always X_LbxCloseClient */
0159     CARD16  length B16;
0160     CARD32  client B32; /* new client */
0161 } xLbxCloseClientReq;
0162 #define sz_xLbxCloseClientReq   8
0163 
0164 typedef struct _LbxModifySequence {
0165     CARD8   reqType;    /* always LbxReqCode */
0166     CARD8   lbxReqType; /* always X_LbxModifySequence */
0167     CARD16  length B16;
0168     CARD32  adjust B32;
0169 } xLbxModifySequenceReq;
0170 #define sz_xLbxModifySequenceReq    8
0171 
0172 typedef struct _LbxAllowMotion {
0173     CARD8   reqType;    /* always LbxReqCode */
0174     CARD8   lbxReqType; /* always X_LbxAllowMotion */
0175     CARD16  length B16;
0176     CARD32  num B32;
0177 } xLbxAllowMotionReq;
0178 #define sz_xLbxAllowMotionReq    8
0179 
0180 typedef struct {
0181     CARD8   reqType;    /* always LbxReqCode */
0182     CARD8   lbxReqType; /* always X_LbxGrabCmap */
0183     CARD16  length B16;
0184     Colormap    cmap B32;
0185 } xLbxGrabCmapReq;
0186 #define sz_xLbxGrabCmapReq  8
0187 
0188 #define LBX_SMART_GRAB      0x80
0189 #define LBX_AUTO_RELEASE    0x40
0190 #define LBX_3CHANNELS       0x20
0191 #define LBX_2BYTE_PIXELS    0x10
0192 #define LBX_RGB_BITS_MASK   0x0f
0193 
0194 #define LBX_LIST_END        0
0195 #define LBX_PIXEL_PRIVATE   1
0196 #define LBX_PIXEL_SHARED    2
0197 #define LBX_PIXEL_RANGE_PRIVATE 3
0198 #define LBX_PIXEL_RANGE_SHARED  4
0199 #define LBX_NEXT_CHANNEL    5
0200 
0201 typedef struct {
0202     BYTE    type;           /* X_Reply */
0203     CARD8   flags;
0204     CARD16  sequenceNumber B16;
0205     CARD32  length B32;
0206     CARD32  pad0 B16;
0207     CARD32  pad1 B32;
0208     CARD32  pad2 B32;
0209     CARD32  pad3 B32;
0210     CARD32  pad4 B32;
0211     CARD32  pad5 B16;
0212 } xLbxGrabCmapReply;
0213 #define sz_xLbxGrabCmapReply    32
0214 #define sz_xLbxGrabCmapReplyHdr 8
0215 
0216 
0217 typedef struct {
0218     CARD8   reqType;    /* always LbxReqCode */
0219     CARD8   lbxReqType; /* always X_LbxReleaseCmap */
0220     CARD16  length B16;
0221     Colormap    cmap B32;
0222 } xLbxReleaseCmapReq;
0223 #define sz_xLbxReleaseCmapReq   8
0224 
0225 typedef struct {
0226     CARD8   reqType;    /* always LbxReqCode */
0227     CARD8   lbxReqType; /* always X_LbxAllocColor */
0228     CARD16  length B16;
0229     Colormap    cmap B32;
0230     CARD32  pixel B32;
0231     CARD16  red B16, green B16, blue B16;
0232     CARD16  pad B16;
0233 } xLbxAllocColorReq;
0234 #define sz_xLbxAllocColorReq    20
0235 
0236 typedef struct _LbxIncrementPixel {
0237     CARD8   reqType;    /* always LbxReqCode */
0238     CARD8   lbxReqType; /* always X_LbxIncrementPixel */
0239     CARD16  length B16;
0240     CARD32  cmap B32;
0241     CARD32  pixel B32;
0242 } xLbxIncrementPixelReq;
0243 #define sz_xLbxIncrementPixelReq    12
0244 
0245 typedef struct _LbxDelta {
0246     CARD8   reqType;    /* always LbxReqCode */
0247     CARD8   lbxReqType; /* always X_LbxDelta */
0248     CARD16  length B16;
0249     CARD8   diffs;      /* number of diffs */
0250     CARD8   cindex;     /* cache index */
0251                 /* list of diffs follows */
0252 } xLbxDeltaReq;
0253 #define sz_xLbxDeltaReq    6
0254 
0255 typedef struct _LbxGetModifierMapping {
0256     CARD8   reqType;    /* always LbxReqCode */
0257     CARD8   lbxReqType; /* always X_LbxGetModifierMapping */
0258     CARD16  length B16;
0259 } xLbxGetModifierMappingReq;
0260 #define sz_xLbxGetModifierMappingReq    4
0261 
0262 typedef struct {
0263     BYTE    type;           /* X_Reply */
0264     CARD8   keyspermod;
0265     CARD16  sequenceNumber B16;
0266     CARD32  length B32;
0267     CARD32  tag B32;
0268     CARD32  pad0 B32;
0269     CARD32  pad1 B32;
0270     CARD32  pad2 B32;
0271     CARD32  pad3 B32;
0272     CARD32  pad4 B32;
0273 } xLbxGetModifierMappingReply;
0274 #define sz_xLbxGetModifierMappingReply  32
0275 
0276 typedef struct _LbxGetKeyboardMapping {
0277     CARD8   reqType;    /* always LbxReqCode */
0278     CARD8   lbxReqType; /* always X_LbxGetKeyboardMapping */
0279     CARD16  length B16;
0280     KeyCode firstKeyCode;
0281     CARD8   count;
0282     CARD16  pad1 B16;
0283 } xLbxGetKeyboardMappingReq;
0284 #define sz_xLbxGetKeyboardMappingReq    8
0285 
0286 typedef struct {
0287     BYTE    type;           /* X_Reply */
0288     CARD8   keysperkeycode;
0289     CARD16  sequenceNumber B16;
0290     CARD32  length B32;
0291     CARD32  tag B32;
0292     CARD32  pad0 B32;
0293     CARD32  pad1 B32;
0294     CARD32  pad2 B32;
0295     CARD32  pad3 B32;
0296     CARD32  pad4 B32;
0297 } xLbxGetKeyboardMappingReply;
0298 #define sz_xLbxGetKeyboardMappingReply  32
0299 
0300 typedef struct _LbxQueryFont {
0301     CARD8   reqType;    /* always LbxReqCode */
0302     CARD8   lbxReqType; /* always X_LbxQueryFont */
0303     CARD16  length B16;
0304     CARD32  fid B32;
0305 } xLbxQueryFontReq;
0306 #define sz_xLbxQueryFontReq 8
0307 
0308 typedef struct _LbxInternAtoms {
0309     CARD8   reqType;    /* always LbxReqCode */
0310     CARD8   lbxReqType; /* always X_LbxInternAtoms */
0311     CARD16  length B16;
0312     CARD16  num B16;
0313 } xLbxInternAtomsReq;
0314 #define sz_xLbxInternAtomsReq   6
0315 
0316 typedef struct {
0317     BYTE    type;       /* X_Reply */
0318     CARD8   unused;
0319     CARD16  sequenceNumber B16;
0320     CARD32  length B32;
0321     CARD32  atomsStart B32;
0322     CARD32  pad0 B32;
0323     CARD32  pad1 B32;
0324     CARD32  pad2 B32;
0325     CARD32  pad3 B32;
0326     CARD32  pad4 B32;
0327 } xLbxInternAtomsReply;
0328 #define sz_xLbxInternAtomsReply     32
0329 #define sz_xLbxInternAtomsReplyHdr  8
0330 
0331 
0332 typedef struct _LbxGetWinAttrAndGeom {
0333     CARD8   reqType;    /* always LbxReqCode */
0334     CARD8   lbxReqType; /* always X_LbxGetWinAttrAndGeom */
0335     CARD16  length B16;
0336     CARD32  id B32;     /* window id */
0337 } xLbxGetWinAttrAndGeomReq;
0338 #define sz_xLbxGetWinAttrAndGeomReq 8
0339 
0340 typedef struct {
0341     BYTE type;  /* X_Reply */
0342     CARD8 backingStore;
0343     CARD16 sequenceNumber B16;
0344     CARD32 length B32;  /* NOT 0; this is an extra-large reply */
0345     VisualID visualID B32;
0346 #if defined(__cplusplus) || defined(c_plusplus)
0347     CARD16 c_class B16;
0348 #else
0349     CARD16 class B16;
0350 #endif
0351     CARD8 bitGravity;
0352     CARD8 winGravity;
0353     CARD32 backingBitPlanes B32;
0354     CARD32 backingPixel B32;
0355     BOOL saveUnder;
0356     BOOL mapInstalled;
0357     CARD8 mapState;
0358     BOOL override;
0359     Colormap colormap B32;
0360     CARD32 allEventMasks B32;
0361     CARD32 yourEventMask B32;
0362     CARD16 doNotPropagateMask B16;
0363     CARD16 pad1 B16;
0364     Window root B32;
0365     INT16 x B16, y B16;
0366     CARD16 width B16, height B16;
0367     CARD16 borderWidth B16;
0368     CARD8 depth;
0369     CARD8 pad2;
0370 } xLbxGetWinAttrAndGeomReply;
0371 #define sz_xLbxGetWinAttrAndGeomReply 60
0372 
0373 
0374 typedef struct {
0375     CARD8   reqType;    /* always LbxReqCode */
0376     CARD8   lbxReqType; /* always X_LbxSync */
0377     CARD16  length B16;
0378 } xLbxSyncReq;
0379 #define sz_xLbxSyncReq  4
0380 
0381 typedef struct {
0382     BYTE    type;           /* X_Reply */
0383     CARD8   pad0;
0384     CARD16  sequenceNumber B16;
0385     CARD32  length B32;
0386     CARD32  pad1 B32;
0387     CARD32  pad2 B32;
0388     CARD32  pad3 B32;
0389     CARD32  pad4 B32;
0390     CARD32  pad5 B32;
0391     CARD32  pad6 B32;
0392 } xLbxSyncReply;
0393 #define sz_xLbxSyncReply 32
0394 
0395 
0396 /* an LBX squished charinfo packs the data in a CARD32 as follows */
0397 #define LBX_WIDTH_SHIFT     26
0398 #define LBX_LEFT_SHIFT      20
0399 #define LBX_RIGHT_SHIFT     13
0400 #define LBX_ASCENT_SHIFT    7
0401 #define LBX_DESCENT_SHIFT   0
0402 
0403 #define LBX_WIDTH_BITS      6
0404 #define LBX_LEFT_BITS       6
0405 #define LBX_RIGHT_BITS      7
0406 #define LBX_ASCENT_BITS     6
0407 #define LBX_DESCENT_BITS    7
0408 
0409 #define LBX_WIDTH_MASK      0xfc000000
0410 #define LBX_LEFT_MASK       0x03f00000
0411 #define LBX_RIGHT_MASK      0x000fe000
0412 #define LBX_ASCENT_MASK     0x00001f80
0413 #define LBX_DESCENT_MASK    0x0000007f
0414 
0415 #define LBX_MASK_BITS(val, n)   ((unsigned int) ((val) & ((1 << (n)) - 1)))
0416 
0417 typedef struct {
0418     CARD32  metrics B32;
0419 } xLbxCharInfo;
0420 
0421 /* note that this is identical to xQueryFontReply except for missing
0422  * first 2 words
0423  */
0424 typedef struct {
0425     xCharInfo minBounds;
0426 /* XXX do we need to leave this gunk? */
0427 #ifndef WORD64
0428     CARD32 walign1 B32;
0429 #endif
0430     xCharInfo maxBounds;
0431 #ifndef WORD64
0432     CARD32 walign2 B32;
0433 #endif
0434     CARD16 minCharOrByte2 B16, maxCharOrByte2 B16;
0435     CARD16 defaultChar B16;
0436     CARD16 nFontProps B16;  /* followed by this many xFontProp structures */
0437     CARD8 drawDirection;
0438     CARD8 minByte1, maxByte1;
0439     BOOL allCharsExist;
0440     INT16 fontAscent B16, fontDescent B16;
0441     CARD32 nCharInfos B32; /* followed by this many xLbxCharInfo structures */
0442 } xLbxFontInfo;
0443 
0444 typedef struct {
0445     BYTE    type;           /* X_Reply */
0446     CARD8   compression;
0447     CARD16  sequenceNumber B16;
0448     CARD32  length B32;
0449     CARD32  tag B32;
0450     CARD32  pad0 B32;
0451     CARD32  pad1 B32;
0452     CARD32  pad2 B32;
0453     CARD32  pad3 B32;
0454     CARD32  pad4 B32;
0455     /* X_QueryFont sticks much of the data in the base reply packet,
0456      * but we hope that it won't be needed, (and it won't fit in 32 bytes
0457      * with the tag anyways)
0458      *
0459      * if any additional data is needed, its sent in a xLbxFontInfo
0460      */
0461 } xLbxQueryFontReply;
0462 #define sz_xLbxQueryFontReply   32
0463 
0464 typedef struct _LbxChangeProperty {
0465     CARD8   reqType;    /* always LbxReqCode */
0466     CARD8   lbxReqType; /* always X_LbxChangeProperty */
0467     CARD16  length B16;
0468     Window  window B32;
0469     Atom    property B32;
0470     Atom    type B32;
0471     CARD8   format;
0472     CARD8   mode;
0473     BYTE    pad[2];
0474     CARD32  nUnits B32;
0475 } xLbxChangePropertyReq;
0476 #define sz_xLbxChangePropertyReq    24
0477 
0478 typedef struct {
0479     BYTE    type;           /* X_Reply */
0480     CARD8   pad;
0481     CARD16  sequenceNumber B16;
0482     CARD32  length B32;
0483     CARD32  tag B32;
0484     CARD32  pad0 B32;
0485     CARD32  pad1 B32;
0486     CARD32  pad2 B32;
0487     CARD32  pad3 B32;
0488     CARD32  pad4 B32;
0489 } xLbxChangePropertyReply;
0490 #define sz_xLbxChangePropertyReply  32
0491 
0492 typedef struct _LbxGetProperty {
0493     CARD8   reqType;    /* always LbxReqCode */
0494     CARD8   lbxReqType; /* always X_LbxGetProperty */
0495     CARD16  length B16;
0496     Window  window B32;
0497     Atom    property B32;
0498     Atom    type B32;
0499     CARD8   delete;
0500     BYTE    pad[3];
0501     CARD32  longOffset B32;
0502     CARD32  longLength B32;
0503 } xLbxGetPropertyReq;
0504 #define sz_xLbxGetPropertyReq   28
0505 
0506 typedef struct {
0507     BYTE    type;           /* X_Reply */
0508     CARD8   format;
0509     CARD16  sequenceNumber B16;
0510     CARD32  length B32;
0511     Atom    propertyType B32;
0512     CARD32  bytesAfter B32;
0513     CARD32  nItems B32;
0514     CARD32  tag B32;
0515     CARD32  pad1 B32;
0516     CARD32  pad2 B32;
0517 } xLbxGetPropertyReply;
0518 #define sz_xLbxGetPropertyReply 32
0519 
0520 typedef struct _LbxTagData {
0521     CARD8   reqType;    /* always LbxReqCode */
0522     CARD8   lbxReqType; /* always X_LbxTagData */
0523     CARD16  length B16;
0524     XID     tag B32;
0525     CARD32  real_length B32;
0526     /* data */
0527 } xLbxTagDataReq;
0528 #define sz_xLbxTagDataReq   12
0529 
0530 typedef struct _LbxInvalidateTag {
0531     CARD8   reqType;    /* always LbxReqCode */
0532     CARD8   lbxReqType; /* always X_LbxInvalidateTag */
0533     CARD16  length B16;
0534     CARD32  tag B32;
0535 } xLbxInvalidateTagReq;
0536 #define sz_xLbxInvalidateTagReq 8
0537 
0538 typedef struct _LbxPutImage {
0539     CARD8   reqType;    /* always LbxReqCode */
0540     CARD8   lbxReqType; /* always X_LbxPutImage */
0541     CARD16  length B16;
0542     CARD8   compressionMethod;
0543     CARD8   cacheEnts;
0544     CARD8   bitPacked;
0545     /* rest is variable */
0546 } xLbxPutImageReq;
0547 #define sz_xLbxPutImageReq  7
0548 
0549 typedef struct {
0550     CARD8   reqType;    /* always LbxReqCode */
0551     CARD8   lbxReqType; /* always X_LbxGetImage */
0552     CARD16  length B16;
0553     Drawable    drawable B32;
0554     INT16   x B16, y B16;
0555     CARD16  width B16, height B16;
0556     CARD32  planeMask B32;
0557     CARD8   format;
0558     CARD8   pad1;
0559     CARD16  pad2 B16;
0560 } xLbxGetImageReq;
0561 
0562 #define sz_xLbxGetImageReq 24
0563 
0564 typedef struct {
0565     BYTE type;          /* X_Reply */
0566     CARD8 depth;
0567     CARD16 sequenceNumber B16;
0568     CARD32 lbxLength B32;
0569     CARD32 xLength B32;
0570     VisualID visual B32;
0571     CARD8 compressionMethod;
0572     CARD8 pad1;
0573     CARD16 pad2 B16;
0574     CARD32 pad3 B32;
0575     CARD32 pad4 B32;
0576     CARD32 pad5 B32;
0577 } xLbxGetImageReply;
0578 
0579 #define sz_xLbxGetImageReply 32
0580 
0581 /* Following used for LbxPolyPoint, LbxPolyLine, LbxPolySegment,
0582    LbxPolyRectangle, LbxPolyArc, LbxPolyFillRectangle and LbxPolyFillArc */
0583 
0584 #define GFX_CACHE_SIZE  15
0585 
0586 #define GFXdCacheEnt(e)     ((e) & 0xf)
0587 #define GFXgCacheEnt(e)     (((e) >> 4) & 0xf)
0588 #define GFXCacheEnts(d,g)   (((d) & 0xf) | (((g) & 0xf) << 4))
0589 
0590 #define GFXCacheNone   0xf
0591 
0592 typedef struct _LbxPolyPoint {
0593     CARD8   reqType;    /* always LbxReqCode */
0594     CARD8   lbxReqType;
0595     CARD16  length B16;
0596     CARD8   cacheEnts;
0597     CARD8   padBytes;
0598 } xLbxPolyPointReq;
0599 
0600 #define sz_xLbxPolyPointReq 6
0601 
0602 typedef xLbxPolyPointReq xLbxPolyLineReq;
0603 typedef xLbxPolyPointReq xLbxPolySegmentReq;
0604 typedef xLbxPolyPointReq xLbxPolyRectangleReq;
0605 typedef xLbxPolyPointReq xLbxPolyArcReq;
0606 typedef xLbxPolyPointReq xLbxPolyFillRectangleReq;
0607 typedef xLbxPolyPointReq xLbxPolyFillArcReq;
0608 
0609 #define sz_xLbxPolyLineReq      sz_xLbxPolyPointReq
0610 #define sz_xLbxPolySegmentReq       sz_xLbxPolyPointReq
0611 #define sz_xLbxPolyRectangleReq     sz_xLbxPolyPointReq
0612 #define sz_xLbxPolyArcReq       sz_xLbxPolyPointReq
0613 #define sz_xLbxPolyFillRectangleReq sz_xLbxPolyPointReq
0614 #define sz_xLbxPolyFillArc      sz_xLbxPolyPointReq
0615 
0616 typedef struct _LbxFillPoly {
0617     CARD8   reqType;    /* always LbxReqCode */
0618     CARD8   lbxReqType;
0619     CARD16  length B16;
0620     CARD8   cacheEnts;
0621     BYTE    shape;
0622     CARD8   padBytes;
0623 } xLbxFillPolyReq;
0624 #define sz_xLbxFillPolyReq  7
0625 
0626 typedef struct _LbxCopyArea {
0627     CARD8   reqType;    /* always LbxReqCode */
0628     CARD8   lbxReqType;
0629     CARD16  length B16;
0630     CARD8   srcCache;   /* source drawable */
0631     CARD8   cacheEnts;  /* dest drawable and gc */
0632     /* followed by encoded src x, src y, dst x, dst y, width, height */
0633 } xLbxCopyAreaReq;
0634 
0635 #define sz_xLbxCopyAreaReq  6
0636 
0637 typedef struct _LbxCopyPlane {
0638     CARD8   reqType;    /* always LbxReqCode */
0639     CARD8   lbxReqType;
0640     CARD16  length B16;
0641     CARD32  bitPlane B32;
0642     CARD8   srcCache;   /* source drawable */
0643     CARD8   cacheEnts;  /* dest drawable and gc */
0644     /* followed by encoded src x, src y, dst x, dst y, width, height */
0645 } xLbxCopyPlaneReq;
0646 
0647 #define sz_xLbxCopyPlaneReq  10
0648 
0649 typedef struct _LbxPolyText {
0650     CARD8   reqType;    /* always LbxReqCode */
0651     CARD8   lbxReqType;
0652     CARD16  length B16;
0653     CARD8   cacheEnts;
0654     /* followed by encoded src x, src y coordinates and text elts */
0655 } xLbxPolyTextReq;
0656 
0657 #define sz_xLbxPolyTextReq  5
0658 
0659 typedef xLbxPolyTextReq xLbxPolyText8Req;
0660 typedef xLbxPolyTextReq xLbxPolyText16Req;
0661 
0662 #define sz_xLbxPolyTextReq  5
0663 #define sz_xLbxPolyText8Req 5
0664 #define sz_xLbxPolyText16Req    5
0665 
0666 typedef struct _LbxImageText {
0667     CARD8   reqType;    /* always LbxReqCode */
0668     CARD8   lbxReqType;
0669     CARD16  length B16;
0670     CARD8   cacheEnts;
0671     CARD8   nChars;
0672     /* followed by encoded src x, src y coordinates and string */
0673 } xLbxImageTextReq;
0674 
0675 typedef xLbxImageTextReq xLbxImageText8Req;
0676 typedef xLbxImageTextReq xLbxImageText16Req;
0677 
0678 #define sz_xLbxImageTextReq 6
0679 #define sz_xLbxImageText8Req    6
0680 #define sz_xLbxImageText16Req   6
0681 
0682 typedef struct {
0683     CARD8       offset;
0684     CARD8       diff;
0685 } xLbxDiffItem;
0686 #define sz_xLbxDiffItem    2
0687 
0688 typedef struct {
0689     BYTE    type;       /* X_Reply */
0690     CARD8   nOpts;
0691     CARD16  sequenceNumber B16;
0692     CARD32  length B32;
0693     CARD32  optDataStart B32;
0694     CARD32  pad0 B32;
0695     CARD32  pad1 B32;
0696     CARD32  pad2 B32;
0697     CARD32  pad3 B32;
0698     CARD32  pad4 B32;
0699 } xLbxStartReply;
0700 #define sz_xLbxStartReply   32
0701 #define sz_xLbxStartReplyHdr    8
0702 
0703 typedef struct _LbxQueryExtension {
0704     CARD8   reqType;    /* always LbxReqCode */
0705     CARD8   lbxReqType; /* always X_LbxQueryExtension */
0706     CARD16  length B16;
0707     CARD32  nbytes B32;
0708 } xLbxQueryExtensionReq;
0709 #define sz_xLbxQueryExtensionReq    8
0710 
0711 typedef struct _LbxQueryExtensionReply {
0712     BYTE    type;           /* X_Reply */
0713     CARD8   numReqs;
0714     CARD16  sequenceNumber B16;
0715     CARD32  length B32;
0716     BOOL    present;
0717     CARD8   major_opcode;
0718     CARD8   first_event;
0719     CARD8   first_error;
0720     CARD32  pad0 B32;
0721     CARD32  pad1 B32;
0722     CARD32  pad2 B32;
0723     CARD32  pad3 B32;
0724     CARD32  pad4 B32;
0725 
0726     /* reply & event generating requests */
0727 } xLbxQueryExtensionReply;
0728 #define sz_xLbxQueryExtensionReply  32
0729 
0730 
0731 typedef struct _LbxBeginLargeRequest {
0732     CARD8   reqType;    /* always LbxReqCode */
0733     CARD8   lbxReqType; /* always X_LbxBeginLargeRequest */
0734     CARD16  length B16;
0735     CARD32  largeReqLength B32;
0736 } xLbxBeginLargeRequestReq;
0737 #define sz_BeginLargeRequestReq 8
0738 
0739 typedef struct _LbxLargeRequestData {
0740     CARD8   reqType;    /* always LbxReqCode */
0741     CARD8   lbxReqType; /* always X_LbxLargeRequestData */
0742     CARD16  length B16;
0743     /* followed by LISTofCARD8 data */
0744 } xLbxLargeRequestDataReq;
0745 #define sz_LargeRequestDataReq 4
0746 
0747 typedef struct _LbxEndLargeRequest {
0748     CARD8   reqType;    /* always LbxReqCode */
0749     CARD8   lbxReqType; /* always X_LbxEndLargeRequest */
0750     CARD16  length B16;
0751 } xLbxEndLargeRequestReq;
0752 #define sz_EndLargeRequestReq 4
0753 
0754 
0755 
0756 typedef struct _LbxSwitchEvent {
0757     BYTE    type;       /* always eventBase + LbxEvent */
0758     BYTE    lbxType;    /* LbxSwitchEvent */
0759     CARD16  pad B16;
0760     CARD32  client B32;
0761 } xLbxSwitchEvent;
0762 #define sz_xLbxSwitchEvent  8
0763 
0764 typedef struct _LbxCloseEvent {
0765     BYTE    type;       /* always eventBase + LbxEvent */
0766     BYTE    lbxType;    /* LbxCloseEvent */
0767     CARD16  sequenceNumber B16;
0768     CARD32  client B32;
0769     CARD32  pad1 B32;
0770     CARD32  pad2 B32;
0771     CARD32  pad3 B32;
0772     CARD32  pad4 B32;
0773     CARD32  pad5 B32;
0774     CARD32  pad6 B32;
0775 } xLbxCloseEvent;
0776 #define sz_xLbxCloseEvent   32
0777 
0778 typedef struct _LbxInvalidateTagEvent {
0779     BYTE    type;       /* always eventBase + LbxEvent */
0780     BYTE    lbxType;    /* LbxInvalidateTagEvent */
0781     CARD16  sequenceNumber B16;
0782     CARD32  tag B32;
0783     CARD32  tagType B32;
0784     CARD32  pad1 B32;
0785     CARD32  pad2 B32;
0786     CARD32  pad3 B32;
0787     CARD32  pad4 B32;
0788     CARD32  pad5 B32;
0789 } xLbxInvalidateTagEvent;
0790 #define sz_xLbxInvalidateTagEvent 32
0791 
0792 typedef struct _LbxSendTagDataEvent {
0793     BYTE    type;       /* always eventBase + LbxEvent */
0794     BYTE    lbxType;    /* LbxSendTagDataEvent */
0795     CARD16  sequenceNumber B16;
0796     CARD32  tag B32;
0797     CARD32  tagType B32;
0798     CARD32  pad1 B32;
0799     CARD32  pad2 B32;
0800     CARD32  pad3 B32;
0801     CARD32  pad4 B32;
0802     CARD32  pad5 B32;
0803 } xLbxSendTagDataEvent;
0804 #define sz_xLbxSendTagDataEvent 32
0805 
0806 typedef struct _LbxListenToOneEvent {
0807     BYTE    type;       /* always eventBase + LbxEvent */
0808     BYTE    lbxType;    /* LbxListenToOneEvent */
0809     CARD16  sequenceNumber B16;
0810     CARD32  client B32;
0811     CARD32  pad1 B32;
0812     CARD32  pad2 B32;
0813     CARD32  pad3 B32;
0814     CARD32  pad4 B32;
0815     CARD32  pad5 B32;
0816     CARD32  pad6 B32;
0817 } xLbxListenToOneEvent;
0818 #define sz_xLbxListenToOneEvent 32
0819 
0820 typedef struct _LbxListenToAllEvent {
0821     BYTE    type;       /* always eventBase + LbxEvent */
0822     BYTE    lbxType;    /* LbxListenToAllEvent */
0823     CARD16  sequenceNumber B16;
0824     CARD32  pad1 B32;
0825     CARD32  pad2 B32;
0826     CARD32  pad3 B32;
0827     CARD32  pad4 B32;
0828     CARD32  pad5 B32;
0829     CARD32  pad6 B32;
0830     CARD32  pad7 B32;
0831 } xLbxListenToAllEvent;
0832 #define sz_xLbxListenToOneEvent 32
0833 
0834 typedef struct _LbxReleaseCmapEvent {
0835     BYTE    type;       /* always eventBase + LbxEvent */
0836     BYTE    lbxType;    /* LbxReleaseCmapEvent */
0837     CARD16  sequenceNumber B16;
0838     Colormap    colormap B32;
0839     CARD32  pad1 B32;
0840     CARD32  pad2 B32;
0841     CARD32  pad3 B32;
0842     CARD32  pad4 B32;
0843     CARD32  pad5 B32;
0844     CARD32  pad6 B32;
0845 } xLbxReleaseCmapEvent;
0846 #define sz_xLbxReleaseCmapEvent 32
0847 
0848 
0849 typedef struct _LbxFreeCellsEvent {
0850     BYTE    type;       /* always eventBase + LbxEvent */
0851     BYTE    lbxType;    /* LbxFreeCellsEvent */
0852     CARD16  sequenceNumber B16;
0853     Colormap    colormap B32;
0854     CARD32  pixelStart B32;
0855     CARD32  pixelEnd B32;
0856     CARD32  pad1 B32;
0857     CARD32  pad2 B32;
0858     CARD32  pad3 B32;
0859     CARD32  pad4 B32;
0860 } xLbxFreeCellsEvent;
0861 #define sz_xLbxFreeCellsEvent   32
0862 
0863 
0864 /*
0865  * squished X event sizes.  If these change, be sure to update lbxquish.c
0866  * and unsquish.c appropriately
0867  *
0868  * lbxsz_* is the padded squished length
0869  * lbxupsz_* is the unpadded squished length
0870  */
0871 
0872 #define   lbxsz_KeyButtonEvent      32
0873 #define lbxupsz_KeyButtonEvent      31
0874 
0875 #define   lbxsz_EnterLeaveEvent     32
0876 #define lbxupsz_EnterLeaveEvent     32
0877 
0878 #define   lbxsz_FocusEvent      12
0879 #define lbxupsz_FocusEvent      9
0880 
0881 #define   lbxsz_KeymapEvent     32
0882 #define lbxupsz_KeymapEvent     32
0883 
0884 #define   lbxsz_ExposeEvent     20
0885 #define lbxupsz_ExposeEvent     18
0886 
0887 #define   lbxsz_GfxExposeEvent      24
0888 #define lbxupsz_GfxExposeEvent      21
0889 
0890 #define   lbxsz_NoExposeEvent       12
0891 #define lbxupsz_NoExposeEvent       11
0892 
0893 #define   lbxsz_VisibilityEvent     12
0894 #define lbxupsz_VisibilityEvent     9
0895 
0896 #define   lbxsz_CreateNotifyEvent   24
0897 #define lbxupsz_CreateNotifyEvent   23
0898 
0899 #define   lbxsz_DestroyNotifyEvent  12
0900 #define lbxupsz_DestroyNotifyEvent  12
0901 
0902 #define   lbxsz_UnmapNotifyEvent    16
0903 #define lbxupsz_UnmapNotifyEvent    13
0904 
0905 #define   lbxsz_MapNotifyEvent      16
0906 #define lbxupsz_MapNotifyEvent      13
0907 
0908 #define   lbxsz_MapRequestEvent     12
0909 #define lbxupsz_MapRequestEvent     12
0910 
0911 #define   lbxsz_ReparentEvent       24
0912 #define lbxupsz_ReparentEvent       21
0913 
0914 #define   lbxsz_ConfigureNotifyEvent    28
0915 #define lbxupsz_ConfigureNotifyEvent    27
0916 
0917 #define   lbxsz_ConfigureRequestEvent   28
0918 #define lbxupsz_ConfigureRequestEvent   28
0919 
0920 #define   lbxsz_GravityEvent        16
0921 #define lbxupsz_GravityEvent        16
0922 
0923 #define   lbxsz_ResizeRequestEvent  12
0924 #define lbxupsz_ResizeRequestEvent  12
0925 
0926 #define   lbxsz_CirculateEvent      20
0927 #define lbxupsz_CirculateEvent      17
0928 
0929 #define   lbxsz_PropertyEvent       20
0930 #define lbxupsz_PropertyEvent       17
0931 
0932 #define   lbxsz_SelectionClearEvent 16
0933 #define lbxupsz_SelectionClearEvent 16
0934 
0935 #define   lbxsz_SelectionRequestEvent   28
0936 #define lbxupsz_SelectionRequestEvent   28
0937 
0938 #define   lbxsz_SelectionNotifyEvent    24
0939 #define lbxupsz_SelectionNotifyEvent    24
0940 
0941 #define   lbxsz_ColormapEvent       16
0942 #define lbxupsz_ColormapEvent       14
0943 
0944 #define   lbxsz_MappingNotifyEvent  8
0945 #define lbxupsz_MappingNotifyEvent  7
0946 
0947 #define   lbxsz_ClientMessageEvent  32
0948 #define lbxupsz_ClientMessageEvent  32
0949 
0950 #define lbxsz_UnknownEvent      32
0951 
0952 #ifdef DEBUG
0953 
0954 #define DBG_SWITCH  0x00000001
0955 #define DBG_CLOSE   0x00000002
0956 #define DBG_IO      0x00000004
0957 #define DBG_READ_REQ    0x00000008
0958 #define DBG_LEN     0x00000010
0959 #define DBG_BLOCK   0x00000020
0960 #define DBG_CLIENT  0x00000040
0961 #define DBG_DELTA   0x00000080
0962 #endif
0963 /*
0964  * Cancel the previous redefinition of the basic types, thus restoring their
0965  * X.h definitions.
0966  */
0967 
0968 #undef XID
0969 #undef Atom
0970 #undef Colormap
0971 #undef Drawable
0972 #undef VisualID
0973 #undef Window
0974 
0975 #endif  /* _LBXPROTO_H_ */