117ca54c3Smrg/************************************************************ 217ca54c3Smrg 317ca54c3SmrgCopyright 1989, 1998 The Open Group 417ca54c3Smrg 517ca54c3SmrgPermission to use, copy, modify, distribute, and sell this software and its 617ca54c3Smrgdocumentation for any purpose is hereby granted without fee, provided that 717ca54c3Smrgthe above copyright notice appear in all copies and that both that 817ca54c3Smrgcopyright notice and this permission notice appear in supporting 917ca54c3Smrgdocumentation. 1017ca54c3Smrg 1117ca54c3SmrgThe above copyright notice and this permission notice shall be included in 1217ca54c3Smrgall copies or substantial portions of the Software. 1317ca54c3Smrg 1417ca54c3SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1517ca54c3SmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1617ca54c3SmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1717ca54c3SmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 1817ca54c3SmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 1917ca54c3SmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2017ca54c3Smrg 2117ca54c3SmrgExcept as contained in this notice, the name of The Open Group shall not be 2217ca54c3Smrgused in advertising or otherwise to promote the sale, use or other dealings 2317ca54c3Smrgin this Software without prior written authorization from The Open Group. 2417ca54c3Smrg 2517ca54c3Smrg********************************************************/ 2617ca54c3Smrg 2717ca54c3Smrg#ifndef _SHAPEPROTO_H_ 2817ca54c3Smrg#define _SHAPEPROTO_H_ 2917ca54c3Smrg 3017ca54c3Smrg#include <X11/extensions/shapeconst.h> 3117ca54c3Smrg 3217ca54c3Smrg/* 3317ca54c3Smrg * Protocol requests constants and alignment values 3417ca54c3Smrg * These would really be in SHAPE's X.h and Xproto.h equivalents 3517ca54c3Smrg */ 3617ca54c3Smrg 3717ca54c3Smrg#define Window CARD32 3817ca54c3Smrg#define Time CARD32 3917ca54c3Smrg 4017ca54c3Smrg#define X_ShapeQueryVersion 0 4117ca54c3Smrg#define X_ShapeRectangles 1 4217ca54c3Smrg#define X_ShapeMask 2 4317ca54c3Smrg#define X_ShapeCombine 3 4417ca54c3Smrg#define X_ShapeOffset 4 4517ca54c3Smrg#define X_ShapeQueryExtents 5 4617ca54c3Smrg#define X_ShapeSelectInput 6 4717ca54c3Smrg#define X_ShapeInputSelected 7 4817ca54c3Smrg#define X_ShapeGetRectangles 8 4917ca54c3Smrg 5017ca54c3Smrgtypedef struct _ShapeQueryVersion { 5117ca54c3Smrg CARD8 reqType; /* always ShapeReqCode */ 5217ca54c3Smrg CARD8 shapeReqType; /* always X_ShapeQueryVersion */ 53ea1d6981Smrg CARD16 length; 5417ca54c3Smrg} xShapeQueryVersionReq; 5517ca54c3Smrg#define sz_xShapeQueryVersionReq 4 5617ca54c3Smrg 5717ca54c3Smrgtypedef struct { 5817ca54c3Smrg BYTE type; /* X_Reply */ 5917ca54c3Smrg CARD8 unused; /* not used */ 60ea1d6981Smrg CARD16 sequenceNumber; 61ea1d6981Smrg CARD32 length; 62ea1d6981Smrg CARD16 majorVersion; /* major version of SHAPE protocol */ 63ea1d6981Smrg CARD16 minorVersion; /* minor version of SHAPE protocol */ 64ea1d6981Smrg CARD32 pad0; 65ea1d6981Smrg CARD32 pad1; 66ea1d6981Smrg CARD32 pad2; 67ea1d6981Smrg CARD32 pad3; 68ea1d6981Smrg CARD32 pad4; 6917ca54c3Smrg} xShapeQueryVersionReply; 7017ca54c3Smrg#define sz_xShapeQueryVersionReply 32 7117ca54c3Smrg 7217ca54c3Smrgtypedef struct _ShapeRectangles { 7317ca54c3Smrg CARD8 reqType; /* always ShapeReqCode */ 7417ca54c3Smrg CARD8 shapeReqType; /* always X_ShapeRectangles */ 75ea1d6981Smrg CARD16 length; 7617ca54c3Smrg CARD8 op; /* Set, ... */ 7717ca54c3Smrg CARD8 destKind; /* ShapeBounding or ShapeClip */ 7817ca54c3Smrg CARD8 ordering; /* UnSorted, YSorted, YXSorted, YXBanded */ 7917ca54c3Smrg CARD8 pad0; /* not used */ 80ea1d6981Smrg Window dest; 81ea1d6981Smrg INT16 xOff; 82ea1d6981Smrg INT16 yOff; 8317ca54c3Smrg} xShapeRectanglesReq; /* followed by xRects */ 8417ca54c3Smrg#define sz_xShapeRectanglesReq 16 8517ca54c3Smrg 8617ca54c3Smrgtypedef struct _ShapeMask { 8717ca54c3Smrg CARD8 reqType; /* always ShapeReqCode */ 8817ca54c3Smrg CARD8 shapeReqType; /* always X_ShapeMask */ 89ea1d6981Smrg CARD16 length; 9017ca54c3Smrg 9117ca54c3Smrg CARD8 op; /* Set, ... */ 9217ca54c3Smrg CARD8 destKind; /* ShapeBounding or ShapeClip */ 93ea1d6981Smrg CARD16 junk; /* not used */ 9417ca54c3Smrg 95ea1d6981Smrg Window dest; 96ea1d6981Smrg INT16 xOff; 97ea1d6981Smrg INT16 yOff; 98ea1d6981Smrg CARD32 src; /* 1 bit pixmap */ 9917ca54c3Smrg} xShapeMaskReq; 10017ca54c3Smrg#define sz_xShapeMaskReq 20 10117ca54c3Smrg 10217ca54c3Smrgtypedef struct _ShapeCombine { 10317ca54c3Smrg CARD8 reqType; /* always ShapeReqCode */ 10417ca54c3Smrg CARD8 shapeReqType; /* always X_ShapeCombine */ 105ea1d6981Smrg CARD16 length; 10617ca54c3Smrg CARD8 op; /* Set, ... */ 10717ca54c3Smrg CARD8 destKind; /* ShapeBounding or ShapeClip */ 10817ca54c3Smrg CARD8 srcKind; /* ShapeBounding or ShapeClip */ 10917ca54c3Smrg CARD8 junk; /* not used */ 110ea1d6981Smrg Window dest; 111ea1d6981Smrg INT16 xOff; 112ea1d6981Smrg INT16 yOff; 113ea1d6981Smrg Window src; 11417ca54c3Smrg} xShapeCombineReq; 11517ca54c3Smrg#define sz_xShapeCombineReq 20 11617ca54c3Smrg 11717ca54c3Smrgtypedef struct _ShapeOffset { 11817ca54c3Smrg CARD8 reqType; /* always ShapeReqCode */ 11917ca54c3Smrg CARD8 shapeReqType; /* always X_ShapeOffset */ 120ea1d6981Smrg CARD16 length; 12117ca54c3Smrg CARD8 destKind; /* ShapeBounding or ShapeClip */ 12217ca54c3Smrg CARD8 junk1; /* not used */ 123ea1d6981Smrg CARD16 junk2; /* not used */ 124ea1d6981Smrg Window dest; 125ea1d6981Smrg INT16 xOff; 126ea1d6981Smrg INT16 yOff; 12717ca54c3Smrg} xShapeOffsetReq; 12817ca54c3Smrg#define sz_xShapeOffsetReq 16 12917ca54c3Smrg 13017ca54c3Smrgtypedef struct _ShapeQueryExtents { 13117ca54c3Smrg CARD8 reqType; /* always ShapeReqCode */ 13217ca54c3Smrg CARD8 shapeReqType; /* always X_ShapeQueryExtents */ 133ea1d6981Smrg CARD16 length; 134ea1d6981Smrg Window window; 13517ca54c3Smrg} xShapeQueryExtentsReq; 13617ca54c3Smrg#define sz_xShapeQueryExtentsReq 8 13717ca54c3Smrg 13817ca54c3Smrgtypedef struct { 13917ca54c3Smrg BYTE type; /* X_Reply */ 14017ca54c3Smrg CARD8 unused; /* not used */ 141ea1d6981Smrg CARD16 sequenceNumber; 142ea1d6981Smrg CARD32 length; /* 0 */ 14317ca54c3Smrg CARD8 boundingShaped; /* window has bounding shape */ 14417ca54c3Smrg CARD8 clipShaped; /* window has clip shape */ 145ea1d6981Smrg CARD16 unused1; 146ea1d6981Smrg INT16 xBoundingShape; /* extents of bounding shape */ 147ea1d6981Smrg INT16 yBoundingShape; 148ea1d6981Smrg CARD16 widthBoundingShape; 149ea1d6981Smrg CARD16 heightBoundingShape; 150ea1d6981Smrg INT16 xClipShape; /* extents of clip shape */ 151ea1d6981Smrg INT16 yClipShape; 152ea1d6981Smrg CARD16 widthClipShape; 153ea1d6981Smrg CARD16 heightClipShape; 154ea1d6981Smrg CARD32 pad1; 15517ca54c3Smrg} xShapeQueryExtentsReply; 15617ca54c3Smrg#define sz_xShapeQueryExtentsReply 32 15717ca54c3Smrg 15817ca54c3Smrgtypedef struct _ShapeSelectInput { 15917ca54c3Smrg CARD8 reqType; /* always ShapeReqCode */ 16017ca54c3Smrg CARD8 shapeReqType; /* always X_ShapeSelectInput */ 161ea1d6981Smrg CARD16 length; 162ea1d6981Smrg Window window; 16317ca54c3Smrg BYTE enable; /* xTrue -> send events */ 16417ca54c3Smrg BYTE pad1; 165ea1d6981Smrg CARD16 pad2; 16617ca54c3Smrg} xShapeSelectInputReq; 16717ca54c3Smrg#define sz_xShapeSelectInputReq 12 16817ca54c3Smrg 16917ca54c3Smrgtypedef struct _ShapeNotify { 17017ca54c3Smrg BYTE type; /* always eventBase + ShapeNotify */ 17117ca54c3Smrg BYTE kind; /* either ShapeBounding or ShapeClip */ 172ea1d6981Smrg CARD16 sequenceNumber; 173ea1d6981Smrg Window window; 174ea1d6981Smrg INT16 x; 175ea1d6981Smrg INT16 y; /* extents of new shape */ 176ea1d6981Smrg CARD16 width; 177ea1d6981Smrg CARD16 height; 178ea1d6981Smrg Time time; /* time of change */ 17917ca54c3Smrg BYTE shaped; /* set when a shape actual exists */ 18017ca54c3Smrg BYTE pad0; 181ea1d6981Smrg CARD16 pad1; 182ea1d6981Smrg CARD32 pad2; 183ea1d6981Smrg CARD32 pad3; 18417ca54c3Smrg} xShapeNotifyEvent; 18517ca54c3Smrg#define sz_xShapeNotifyEvent 32 18617ca54c3Smrg 18717ca54c3Smrgtypedef struct _ShapeInputSelected { 18817ca54c3Smrg CARD8 reqType; /* always ShapeReqCode */ 18917ca54c3Smrg CARD8 shapeReqType; /* always X_ShapeInputSelected */ 190ea1d6981Smrg CARD16 length; 191ea1d6981Smrg Window window; 19217ca54c3Smrg} xShapeInputSelectedReq; 19317ca54c3Smrg#define sz_xShapeInputSelectedReq 8 19417ca54c3Smrg 19517ca54c3Smrgtypedef struct { 19617ca54c3Smrg BYTE type; /* X_Reply */ 19717ca54c3Smrg CARD8 enabled; /* current status */ 198ea1d6981Smrg CARD16 sequenceNumber; 199ea1d6981Smrg CARD32 length; /* 0 */ 200ea1d6981Smrg CARD32 pad1; /* unused */ 201ea1d6981Smrg CARD32 pad2; 202ea1d6981Smrg CARD32 pad3; 203ea1d6981Smrg CARD32 pad4; 204ea1d6981Smrg CARD32 pad5; 205ea1d6981Smrg CARD32 pad6; 20617ca54c3Smrg} xShapeInputSelectedReply; 20717ca54c3Smrg#define sz_xShapeInputSelectedReply 32 20817ca54c3Smrg 20917ca54c3Smrgtypedef struct _ShapeGetRectangles { 21017ca54c3Smrg CARD8 reqType; /* always ShapeReqCode */ 21117ca54c3Smrg CARD8 shapeReqType; /* always X_ShapeGetRectangles */ 212ea1d6981Smrg CARD16 length; 213ea1d6981Smrg Window window; 21417ca54c3Smrg CARD8 kind; /* ShapeBounding or ShapeClip */ 21517ca54c3Smrg CARD8 junk1; 216ea1d6981Smrg CARD16 junk2; 21717ca54c3Smrg} xShapeGetRectanglesReq; 21817ca54c3Smrg#define sz_xShapeGetRectanglesReq 12 21917ca54c3Smrg 22017ca54c3Smrgtypedef struct { 22117ca54c3Smrg BYTE type; /* X_Reply */ 22217ca54c3Smrg CARD8 ordering; /* UnSorted, YSorted, YXSorted, YXBanded */ 223ea1d6981Smrg CARD16 sequenceNumber; 224ea1d6981Smrg CARD32 length; /* not zero */ 225ea1d6981Smrg CARD32 nrects; /* number of rectangles */ 226ea1d6981Smrg CARD32 pad1; 227ea1d6981Smrg CARD32 pad2; 228ea1d6981Smrg CARD32 pad3; 229ea1d6981Smrg CARD32 pad4; 230ea1d6981Smrg CARD32 pad5; 23117ca54c3Smrg} xShapeGetRectanglesReply; /* followed by xRectangles */ 23217ca54c3Smrg#define sz_xShapeGetRectanglesReply 32 23317ca54c3Smrg 23417ca54c3Smrg#undef Window 23517ca54c3Smrg#undef Time 23617ca54c3Smrg 23717ca54c3Smrg#endif /* _SHAPEPROTO_H_ */ 238