1/*
2 * Copyright © 2000 SuSE, Inc.
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 SuSE not be used in advertising or
9 * publicity pertaining to distribution of the software without specific,
10 * written prior permission.  SuSE 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 * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
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 * Author:  Keith Packard, SuSE, Inc.
22 */
23
24#ifndef _XRENDERP_H_
25#define _XRENDERP_H_
26
27#include <X11/Xmd.h>
28#include <X11/extensions/render.h>
29
30#define Window CARD32
31#define Drawable CARD32
32#define Font CARD32
33#define Pixmap CARD32
34#define Cursor CARD32
35#define Colormap CARD32
36#define GContext CARD32
37#define Atom CARD32
38#define VisualID CARD32
39#define Time CARD32
40#define KeyCode CARD8
41#define KeySym CARD32
42
43#define Picture	    CARD32
44#define PictFormat  CARD32
45#define Fixed	    INT32
46#define Glyphset    CARD32
47
48/*
49 * data structures
50 */
51
52typedef struct {
53    CARD16  red;
54    CARD16  redMask;
55    CARD16  green;
56    CARD16  greenMask;
57    CARD16  blue;
58    CARD16  blueMask;
59    CARD16  alpha;
60    CARD16  alphaMask;
61} xDirectFormat;
62
63#define sz_xDirectFormat    16
64
65typedef struct {
66    PictFormat	id;
67    CARD8	type;
68    CARD8	depth;
69    CARD16	pad1;
70    xDirectFormat   direct;
71    Colormap	colormap;
72} xPictFormInfo;
73
74#define sz_xPictFormInfo    28
75
76typedef struct {
77    VisualID	visual;
78    PictFormat	format;
79} xPictVisual;
80
81#define sz_xPictVisual	    8
82
83typedef struct {
84    CARD8	depth;
85    CARD8	pad1;
86    CARD16	nPictVisuals;
87    CARD32	pad2;
88} xPictDepth;
89
90#define sz_xPictDepth	8
91
92typedef struct {
93    CARD32	nDepth;
94    PictFormat	fallback;
95} xPictScreen;
96
97#define sz_xPictScreen	8
98
99typedef struct {
100    CARD32	pixel;
101    CARD16	red;
102    CARD16	green;
103    CARD16	blue;
104    CARD16	alpha;
105} xIndexValue;
106
107#define sz_xIndexValue	12
108
109typedef struct {
110    CARD16	red;
111    CARD16	green;
112    CARD16	blue;
113    CARD16	alpha;
114} xRenderColor;
115
116#define sz_xRenderColor	8
117
118typedef struct {
119    Fixed	x;
120    Fixed	y;
121} xPointFixed;
122
123#define sz_xPointFixed	8
124
125typedef struct {
126    xPointFixed	p1;
127    xPointFixed p2;
128} xLineFixed;
129
130#define sz_xLineFixed	16
131
132typedef struct {
133    xPointFixed	p1, p2, p3;
134} xTriangle;
135
136#define sz_xTriangle	24
137
138typedef struct {
139    Fixed	top;
140    Fixed	bottom;
141    xLineFixed	left;
142    xLineFixed	right;
143} xTrapezoid;
144
145#define sz_xTrapezoid	40
146
147typedef struct {
148    CARD16  width;
149    CARD16  height;
150    INT16   x;
151    INT16   y;
152    INT16   xOff;
153    INT16   yOff;
154} xGlyphInfo;
155
156#define sz_xGlyphInfo	12
157
158typedef struct {
159    CARD8   len;
160    CARD8   pad1;
161    CARD16  pad2;
162    INT16   deltax;
163    INT16   deltay;
164} xGlyphElt;
165
166#define sz_xGlyphElt	8
167
168typedef struct {
169    Fixed   l, r, y;
170} xSpanFix;
171
172#define sz_xSpanFix	12
173
174typedef struct {
175    xSpanFix	top, bot;
176} xTrap;
177
178#define sz_xTrap	24
179
180/*
181 * requests and replies
182 */
183typedef struct {
184    CARD8   reqType;
185    CARD8   renderReqType;
186    CARD16  length;
187    CARD32  majorVersion;
188    CARD32  minorVersion;
189} xRenderQueryVersionReq;
190
191#define sz_xRenderQueryVersionReq   12
192
193typedef struct {
194    BYTE    type;   /* X_Reply */
195    BYTE    pad1;
196    CARD16  sequenceNumber;
197    CARD32  length;
198    CARD32  majorVersion;
199    CARD32  minorVersion;
200    CARD32  pad2;
201    CARD32  pad3;
202    CARD32  pad4;
203    CARD32  pad5;
204} xRenderQueryVersionReply;
205
206#define sz_xRenderQueryVersionReply	32
207
208typedef struct {
209    CARD8   reqType;
210    CARD8   renderReqType;
211    CARD16  length;
212} xRenderQueryPictFormatsReq;
213
214#define sz_xRenderQueryPictFormatsReq	4
215
216typedef struct {
217    BYTE    type;   /* X_Reply */
218    BYTE    pad1;
219    CARD16  sequenceNumber;
220    CARD32  length;
221    CARD32  numFormats;
222    CARD32  numScreens;
223    CARD32  numDepths;
224    CARD32  numVisuals;
225    CARD32  numSubpixel;	    /* Version 0.6 */
226    CARD32  pad5;
227} xRenderQueryPictFormatsReply;
228
229#define sz_xRenderQueryPictFormatsReply	32
230
231typedef struct {
232    CARD8   reqType;
233    CARD8   renderReqType;
234    CARD16  length;
235    PictFormat	format;
236} xRenderQueryPictIndexValuesReq;
237
238#define sz_xRenderQueryPictIndexValuesReq   8
239
240typedef struct {
241    BYTE    type;   /* X_Reply */
242    BYTE    pad1;
243    CARD16  sequenceNumber;
244    CARD32  length;
245    CARD32  numIndexValues;
246    CARD32  pad2;
247    CARD32  pad3;
248    CARD32  pad4;
249    CARD32  pad5;
250    CARD32  pad6;
251} xRenderQueryPictIndexValuesReply;
252
253#define sz_xRenderQueryPictIndexValuesReply 32
254
255typedef struct {
256    CARD8	reqType;
257    CARD8	renderReqType;
258    CARD16	length;
259    Picture	pid;
260    Drawable	drawable;
261    PictFormat	format;
262    CARD32	mask;
263} xRenderCreatePictureReq;
264
265#define sz_xRenderCreatePictureReq	    20
266
267typedef struct {
268    CARD8	reqType;
269    CARD8	renderReqType;
270    CARD16	length;
271    Picture	picture;
272    CARD32	mask;
273} xRenderChangePictureReq;
274
275#define sz_xRenderChangePictureReq	    12
276
277typedef struct {
278    CARD8       reqType;
279    CARD8       renderReqType;
280    CARD16      length;
281    Picture     picture;
282    INT16       xOrigin;
283    INT16       yOrigin;
284} xRenderSetPictureClipRectanglesReq;
285
286#define sz_xRenderSetPictureClipRectanglesReq	    12
287
288typedef struct {
289    CARD8       reqType;
290    CARD8       renderReqType;
291    CARD16      length;
292    Picture     picture;
293} xRenderFreePictureReq;
294
295#define sz_xRenderFreePictureReq	    8
296
297typedef struct {
298    CARD8       reqType;
299    CARD8       renderReqType;
300    CARD16      length;
301    CARD8	op;
302    CARD8	pad1;
303    CARD16	pad2;
304    Picture	src;
305    Picture	mask;
306    Picture	dst;
307    INT16	xSrc;
308    INT16	ySrc;
309    INT16	xMask;
310    INT16	yMask;
311    INT16	xDst;
312    INT16	yDst;
313    CARD16	width;
314    CARD16	height;
315} xRenderCompositeReq;
316
317#define sz_xRenderCompositeReq		    36
318
319typedef struct {
320    CARD8       reqType;
321    CARD8       renderReqType;
322    CARD16      length;
323    Picture	src;
324    Picture	dst;
325    CARD32	colorScale;
326    CARD32	alphaScale;
327    INT16	xSrc;
328    INT16	ySrc;
329    INT16	xDst;
330    INT16	yDst;
331    CARD16	width;
332    CARD16	height;
333} xRenderScaleReq;
334
335#define sz_xRenderScaleReq			    32
336
337typedef struct {
338    CARD8       reqType;
339    CARD8       renderReqType;
340    CARD16      length;
341    CARD8	op;
342    CARD8	pad1;
343    CARD16	pad2;
344    Picture	src;
345    Picture	dst;
346    PictFormat	maskFormat;
347    INT16	xSrc;
348    INT16	ySrc;
349} xRenderTrapezoidsReq;
350
351#define sz_xRenderTrapezoidsReq			    24
352
353typedef struct {
354    CARD8       reqType;
355    CARD8       renderReqType;
356    CARD16      length;
357    CARD8	op;
358    CARD8	pad1;
359    CARD16	pad2;
360    Picture	src;
361    Picture	dst;
362    PictFormat	maskFormat;
363    INT16	xSrc;
364    INT16	ySrc;
365} xRenderTrianglesReq;
366
367#define sz_xRenderTrianglesReq			    24
368
369typedef struct {
370    CARD8       reqType;
371    CARD8       renderReqType;
372    CARD16      length;
373    CARD8	op;
374    CARD8	pad1;
375    CARD16	pad2;
376    Picture	src;
377    Picture	dst;
378    PictFormat	maskFormat;
379    INT16	xSrc;
380    INT16	ySrc;
381} xRenderTriStripReq;
382
383#define sz_xRenderTriStripReq			    24
384
385typedef struct {
386    CARD8       reqType;
387    CARD8       renderReqType;
388    CARD16      length;
389    CARD8	op;
390    CARD8	pad1;
391    CARD16	pad2;
392    Picture	src;
393    Picture	dst;
394    PictFormat	maskFormat;
395    INT16	xSrc;
396    INT16	ySrc;
397} xRenderTriFanReq;
398
399#define sz_xRenderTriFanReq			    24
400
401typedef struct {
402    CARD8       reqType;
403    CARD8       renderReqType;
404    CARD16      length;
405    Glyphset    gsid;
406    PictFormat  format;
407} xRenderCreateGlyphSetReq;
408
409#define sz_xRenderCreateGlyphSetReq		    12
410
411typedef struct {
412    CARD8       reqType;
413    CARD8       renderReqType;
414    CARD16      length;
415    Glyphset    gsid;
416    Glyphset    existing;
417} xRenderReferenceGlyphSetReq;
418
419#define sz_xRenderReferenceGlyphSetReq		    24
420
421typedef struct {
422    CARD8       reqType;
423    CARD8       renderReqType;
424    CARD16      length;
425    Glyphset    glyphset;
426} xRenderFreeGlyphSetReq;
427
428#define sz_xRenderFreeGlyphSetReq		    8
429
430typedef struct {
431    CARD8       reqType;
432    CARD8       renderReqType;
433    CARD16      length;
434    Glyphset    glyphset;
435    CARD32	nglyphs;
436} xRenderAddGlyphsReq;
437
438#define sz_xRenderAddGlyphsReq			    12
439
440typedef struct {
441    CARD8       reqType;
442    CARD8       renderReqType;
443    CARD16      length;
444    Glyphset    glyphset;
445} xRenderFreeGlyphsReq;
446
447#define sz_xRenderFreeGlyphsReq			    8
448
449typedef struct {
450    CARD8       reqType;
451    CARD8       renderReqType;
452    CARD16      length;
453    CARD8	op;
454    CARD8	pad1;
455    CARD16	pad2;
456    Picture	src;
457    Picture	dst;
458    PictFormat	maskFormat;
459    Glyphset	glyphset;
460    INT16	xSrc;
461    INT16	ySrc;
462} xRenderCompositeGlyphsReq, xRenderCompositeGlyphs8Req,
463xRenderCompositeGlyphs16Req, xRenderCompositeGlyphs32Req;
464
465#define sz_xRenderCompositeGlyphs8Req		    28
466#define sz_xRenderCompositeGlyphs16Req		    28
467#define sz_xRenderCompositeGlyphs32Req		    28
468
469/* 0.1 and higher */
470
471typedef struct {
472    CARD8	reqType;
473    CARD8       renderReqType;
474    CARD16      length;
475    CARD8	op;
476    CARD8	pad1;
477    CARD16	pad2;
478    Picture	dst;
479    xRenderColor    color;
480} xRenderFillRectanglesReq;
481
482#define sz_xRenderFillRectanglesReq		    20
483
484/* 0.5 and higher */
485
486typedef struct {
487    CARD8	reqType;
488    CARD8	renderReqType;
489    CARD16	length;
490    Cursor	cid;
491    Picture	src;
492    CARD16	x;
493    CARD16	y;
494} xRenderCreateCursorReq;
495
496#define sz_xRenderCreateCursorReq		    16
497
498/* 0.6 and higher */
499
500/*
501 * This can't use an array because 32-bit values may be in bitfields
502 */
503typedef struct {
504    Fixed	matrix11;
505    Fixed	matrix12;
506    Fixed	matrix13;
507    Fixed	matrix21;
508    Fixed	matrix22;
509    Fixed	matrix23;
510    Fixed	matrix31;
511    Fixed	matrix32;
512    Fixed	matrix33;
513} xRenderTransform;
514
515#define sz_xRenderTransform 36
516
517typedef struct {
518    CARD8		reqType;
519    CARD8		renderReqType;
520    CARD16		length;
521    Picture		picture;
522    xRenderTransform	transform;
523} xRenderSetPictureTransformReq;
524
525#define sz_xRenderSetPictureTransformReq	    44
526
527typedef struct {
528    CARD8		reqType;
529    CARD8		renderReqType;
530    CARD16		length;
531    Drawable		drawable;
532} xRenderQueryFiltersReq;
533
534#define sz_xRenderQueryFiltersReq		    8
535
536typedef struct {
537    BYTE    type;   /* X_Reply */
538    BYTE    pad1;
539    CARD16  sequenceNumber;
540    CARD32  length;
541    CARD32  numAliases;	/* LISTofCARD16 */
542    CARD32  numFilters;	/* LISTofSTRING8 */
543    CARD32  pad2;
544    CARD32  pad3;
545    CARD32  pad4;
546    CARD32  pad5;
547} xRenderQueryFiltersReply;
548
549#define sz_xRenderQueryFiltersReply		    32
550
551typedef struct {
552    CARD8		reqType;
553    CARD8		renderReqType;
554    CARD16		length;
555    Picture		picture;
556    CARD16		nbytes; /* number of bytes in name */
557    CARD16		pad;
558} xRenderSetPictureFilterReq;
559
560#define sz_xRenderSetPictureFilterReq		    12
561
562/* 0.8 and higher */
563
564typedef struct {
565    Cursor		cursor;
566    CARD32		delay;
567} xAnimCursorElt;
568
569#define sz_xAnimCursorElt			    8
570
571typedef struct {
572    CARD8		reqType;
573    CARD8		renderReqType;
574    CARD16		length;
575    Cursor		cid;
576} xRenderCreateAnimCursorReq;
577
578#define sz_xRenderCreateAnimCursorReq		    8
579
580/* 0.9 and higher */
581
582typedef struct {
583    CARD8		reqType;
584    CARD8		renderReqType;
585    CARD16		length;
586    Picture		picture;
587    INT16		xOff;
588    INT16		yOff;
589} xRenderAddTrapsReq;
590
591#define sz_xRenderAddTrapsReq			    12
592
593/* 0.10 and higher */
594
595typedef struct {
596    CARD8	reqType;
597    CARD8	renderReqType;
598    CARD16	length;
599    Picture	pid;
600    xRenderColor color;
601} xRenderCreateSolidFillReq;
602
603#define sz_xRenderCreateSolidFillReq                 16
604
605typedef struct {
606    CARD8	reqType;
607    CARD8	renderReqType;
608    CARD16	length;
609    Picture	pid;
610    xPointFixed p1;
611    xPointFixed p2;
612    CARD32      nStops;
613} xRenderCreateLinearGradientReq;
614
615#define sz_xRenderCreateLinearGradientReq                 28
616
617typedef struct {
618    CARD8	reqType;
619    CARD8	renderReqType;
620    CARD16	length;
621    Picture	pid;
622    xPointFixed inner;
623    xPointFixed outer;
624    Fixed       inner_radius;
625    Fixed       outer_radius;
626    CARD32      nStops;
627} xRenderCreateRadialGradientReq;
628
629#define sz_xRenderCreateRadialGradientReq                 36
630
631typedef struct {
632    CARD8	reqType;
633    CARD8	renderReqType;
634    CARD16	length;
635    Picture	pid;
636    xPointFixed center;
637    Fixed       angle; /* in degrees */
638    CARD32      nStops;
639} xRenderCreateConicalGradientReq;
640
641#define sz_xRenderCreateConicalGradientReq                 24
642
643#undef Window
644#undef Drawable
645#undef Font
646#undef Pixmap
647#undef Cursor
648#undef Colormap
649#undef GContext
650#undef Atom
651#undef VisualID
652#undef Time
653#undef KeyCode
654#undef KeySym
655
656#undef Picture
657#undef PictFormat
658#undef Fixed
659#undef Glyphset
660
661#endif /* _XRENDERP_H_ */
662