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