Line data Source code
1 : /* Cairo - a vector graphics library with display and print output
2 : *
3 : * Copyright © 2007 Red Hat, Inc.
4 : *
5 : * This library is free software; you can redistribute it and/or
6 : * modify it either under the terms of the GNU Lesser General Public
7 : * License version 2.1 as published by the Free Software Foundation
8 : * (the "LGPL") or, at your option, under the terms of the Mozilla
9 : * Public License Version 1.1 (the "MPL"). If you do not alter this
10 : * notice, a recipient may use your version of this file under either
11 : * the MPL or the LGPL.
12 : *
13 : * You should have received a copy of the LGPL along with this library
14 : * in the file COPYING-LGPL-2.1; if not, write to the Free Software
15 : * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA
16 : * You should have received a copy of the MPL along with this library
17 : * in the file COPYING-MPL-1.1
18 : *
19 : * The contents of this file are subject to the Mozilla Public License
20 : * Version 1.1 (the "License"); you may not use this file except in
21 : * compliance with the License. You may obtain a copy of the License at
22 : * http://www.mozilla.org/MPL/
23 : *
24 : * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
25 : * OF ANY KIND, either express or implied. See the LGPL or the MPL for
26 : * the specific language governing rights and limitations.
27 : *
28 : * The Original Code is the cairo graphics library.
29 : *
30 : * The Initial Developer of the Original Code is Red Hat, Inc.
31 : */
32 :
33 : #ifndef CAIRO_XLIB_XRENDER_PRIVATE_H
34 : #define CAIRO_XLIB_XRENDER_PRIVATE_H
35 :
36 : #include "cairo-features.h"
37 : #include "cairo-compiler-private.h"
38 :
39 : #include <X11/Xlib.h>
40 :
41 : /* These prototypes are used when defining interfaces missing from the
42 : * render headers. As it happens, it is the case that all libxrender
43 : * functions take a pointer as first argument. */
44 :
45 0 : __attribute__((__unused__)) static void _void_consume (void *p, ...) { }
46 0 : __attribute__((__unused__)) static void * _voidp_consume (void *p, ...) { return (void *)0; }
47 0 : __attribute__((__unused__)) static int _int_consume (void *p, ...) { return 0; }
48 0 : __attribute__((__unused__)) static void _void_consume_free (Display *p, XID n) { }
49 :
50 :
51 : #if CAIRO_HAS_XLIB_XRENDER_SURFACE
52 :
53 : #include "cairo-xlib-xrender.h"
54 :
55 : #include <X11/extensions/Xrender.h>
56 : #include <X11/extensions/renderproto.h>
57 :
58 : /* We require Render >= 0.6. The following defines were only added in
59 : * 0.10. Make sure they are defined.
60 : */
61 :
62 : /* Filters included in 0.10 */
63 : #ifndef FilterConvolution
64 : #define FilterConvolution "convolution"
65 : #endif
66 :
67 : /* Extended repeat attributes included in 0.10 */
68 : #ifndef RepeatNone
69 : #define RepeatNone 0
70 : #define RepeatNormal 1
71 : #define RepeatPad 2
72 : #define RepeatReflect 3
73 : #endif
74 :
75 :
76 : #ifndef PictOptBlendMinimum
77 : /*
78 : * Operators only available in version 0.11
79 : */
80 : #define PictOpBlendMinimum 0x30
81 : #define PictOpMultiply 0x30
82 : #define PictOpScreen 0x31
83 : #define PictOpOverlay 0x32
84 : #define PictOpDarken 0x33
85 : #define PictOpLighten 0x34
86 : #define PictOpColorDodge 0x35
87 : #define PictOpColorBurn 0x36
88 : #define PictOpHardLight 0x37
89 : #define PictOpSoftLight 0x38
90 : #define PictOpDifference 0x39
91 : #define PictOpExclusion 0x3a
92 : #define PictOpHSLHue 0x3b
93 : #define PictOpHSLSaturation 0x3c
94 : #define PictOpHSLColor 0x3d
95 : #define PictOpHSLLuminosity 0x3e
96 : #define PictOpBlendMaximum 0x3e
97 : #endif
98 :
99 : /* There doesn't appear to be a simple #define that we can conditionalize
100 : * on. Instead, use the version; gradients were introdiced in 0.10. */
101 : #if RENDER_MAJOR == 0 && RENDER_MINOR < 10
102 : #define XRenderCreateLinearGradient _int_consume
103 : #define XRenderCreateRadialGradient _int_consume
104 : #define XRenderCreateConicalGradient _int_consume
105 : typedef struct _XCircle {
106 : XFixed x;
107 : XFixed y;
108 : XFixed radius;
109 : } XCircle;
110 : typedef struct _XLinearGradient {
111 : XPointFixed p1;
112 : XPointFixed p2;
113 : } XLinearGradient;
114 :
115 : typedef struct _XRadialGradient {
116 : XCircle inner;
117 : XCircle outer;
118 : } XRadialGradient;
119 :
120 : typedef struct _XConicalGradient {
121 : XPointFixed center;
122 : XFixed angle; /* in degrees */
123 : } XConicalGradient;
124 : #endif
125 :
126 :
127 : #else /* !CAIRO_HAS_XLIB_XRENDER_SURFACE */
128 :
129 : /* Provide dummy symbols and macros to get it compile and take the fallback
130 : * route, just like as if Xrender is not available in the server at run-time. */
131 :
132 :
133 : /* Functions */
134 :
135 : #define XRenderQueryExtension _int_consume
136 : #define XRenderQueryVersion _int_consume
137 : #define XRenderQueryFormats _int_consume
138 : #define XRenderQuerySubpixelOrder _int_consume
139 : #define XRenderSetSubpixelOrder _int_consume
140 : #define XRenderFindVisualFormat _voidp_consume
141 : #define XRenderFindFormat _voidp_consume
142 : #define XRenderFindStandardFormat _voidp_consume
143 : #define XRenderQueryPictIndexValues _voidp_consume
144 : #define XRenderCreatePicture _int_consume
145 : #define XRenderChangePicture _void_consume
146 : #define XRenderSetPictureClipRectangles _void_consume
147 : #define XRenderSetPictureClipRegion _void_consume
148 : #define XRenderSetPictureTransform _void_consume
149 : #define XRenderFreePicture _void_consume_free
150 : #define XRenderComposite _void_consume
151 : #define XRenderCreateGlyphSet _int_consume
152 : #define XRenderReferenceGlyphSet _int_consume
153 : #define XRenderFreeGlyphSet _void_consume_free
154 : #define XRenderAddGlyphs _void_consume
155 : #define XRenderFreeGlyphs _void_consume
156 : #define XRenderCompositeString8 _void_consume
157 : #define XRenderCompositeString16 _void_consume
158 : #define XRenderCompositeString32 _void_consume
159 : #define XRenderCompositeText8 (cairo_xrender_composite_text_func_t) _void_consume
160 : #define XRenderCompositeText16 _void_consume
161 : #define XRenderCompositeText32 _void_consume
162 : #define XRenderFillRectangle _void_consume
163 : #define XRenderFillRectangles _void_consume
164 : #define XRenderCompositeTrapezoids _void_consume
165 : #define XRenderCompositeTriangles _void_consume
166 : #define XRenderCompositeTriStrip _void_consume
167 : #define XRenderCompositeTriFan _void_consume
168 : #define XRenderCompositeDoublePoly _void_consume
169 : #define XRenderParseColor _int_consume
170 : #define XRenderCreateCursor _int_consume
171 : #define XRenderQueryFilters _voidp_consume
172 : #define XRenderSetPictureFilter _void_consume
173 : #define XRenderCreateAnimCursor _int_consume
174 : #define XRenderAddTraps _void_consume
175 : #define XRenderCreateSolidFill _int_consume
176 : #define XRenderCreateLinearGradient _int_consume
177 : #define XRenderCreateRadialGradient _int_consume
178 : #define XRenderCreateConicalGradient _int_consume
179 :
180 : #define cairo_xlib_surface_create_with_xrender_format _voidp_consume
181 :
182 :
183 :
184 : /* The rest of this file is copied from various Xrender header files, with
185 : * the following copyright/license information:
186 : *
187 : * Copyright © 2000 SuSE, Inc.
188 : *
189 : * Permission to use, copy, modify, distribute, and sell this software and its
190 : * documentation for any purpose is hereby granted without fee, provided that
191 : * the above copyright notice appear in all copies and that both that
192 : * copyright notice and this permission notice appear in supporting
193 : * documentation, and that the name of SuSE not be used in advertising or
194 : * publicity pertaining to distribution of the software without specific,
195 : * written prior permission. SuSE makes no representations about the
196 : * suitability of this software for any purpose. It is provided "as is"
197 : * without express or implied warranty.
198 : *
199 : * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
200 : * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
201 : * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
202 : * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
203 : * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
204 : * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
205 : *
206 : * Author: Keith Packard, SuSE, Inc.
207 : */
208 :
209 :
210 : /* Copied from X11/extensions/render.h */
211 :
212 : typedef unsigned long Glyph;
213 : typedef unsigned long GlyphSet;
214 : typedef unsigned long Picture;
215 : typedef unsigned long PictFormat;
216 :
217 : #define BadPictFormat 0
218 : #define BadPicture 1
219 : #define BadPictOp 2
220 : #define BadGlyphSet 3
221 : #define BadGlyph 4
222 : #define RenderNumberErrors (BadGlyph+1)
223 :
224 : #define PictTypeIndexed 0
225 : #define PictTypeDirect 1
226 :
227 : #define PictOpMinimum 0
228 : #define PictOpClear 0
229 : #define PictOpSrc 1
230 : #define PictOpDst 2
231 : #define PictOpOver 3
232 : #define PictOpOverReverse 4
233 : #define PictOpIn 5
234 : #define PictOpInReverse 6
235 : #define PictOpOut 7
236 : #define PictOpOutReverse 8
237 : #define PictOpAtop 9
238 : #define PictOpAtopReverse 10
239 : #define PictOpXor 11
240 : #define PictOpAdd 12
241 : #define PictOpSaturate 13
242 : #define PictOpMaximum 13
243 :
244 : /*
245 : * Operators only available in version 0.2
246 : */
247 : #define PictOpDisjointMinimum 0x10
248 : #define PictOpDisjointClear 0x10
249 : #define PictOpDisjointSrc 0x11
250 : #define PictOpDisjointDst 0x12
251 : #define PictOpDisjointOver 0x13
252 : #define PictOpDisjointOverReverse 0x14
253 : #define PictOpDisjointIn 0x15
254 : #define PictOpDisjointInReverse 0x16
255 : #define PictOpDisjointOut 0x17
256 : #define PictOpDisjointOutReverse 0x18
257 : #define PictOpDisjointAtop 0x19
258 : #define PictOpDisjointAtopReverse 0x1a
259 : #define PictOpDisjointXor 0x1b
260 : #define PictOpDisjointMaximum 0x1b
261 :
262 : #define PictOpConjointMinimum 0x20
263 : #define PictOpConjointClear 0x20
264 : #define PictOpConjointSrc 0x21
265 : #define PictOpConjointDst 0x22
266 : #define PictOpConjointOver 0x23
267 : #define PictOpConjointOverReverse 0x24
268 : #define PictOpConjointIn 0x25
269 : #define PictOpConjointInReverse 0x26
270 : #define PictOpConjointOut 0x27
271 : #define PictOpConjointOutReverse 0x28
272 : #define PictOpConjointAtop 0x29
273 : #define PictOpConjointAtopReverse 0x2a
274 : #define PictOpConjointXor 0x2b
275 : #define PictOpConjointMaximum 0x2b
276 :
277 : /*
278 : * Operators only available in version 0.11
279 : */
280 : #define PictOpBlendMinimum 0x30
281 : #define PictOpMultiply 0x30
282 : #define PictOpScreen 0x31
283 : #define PictOpOverlay 0x32
284 : #define PictOpDarken 0x33
285 : #define PictOpLighten 0x34
286 : #define PictOpColorDodge 0x35
287 : #define PictOpColorBurn 0x36
288 : #define PictOpHardLight 0x37
289 : #define PictOpSoftLight 0x38
290 : #define PictOpDifference 0x39
291 : #define PictOpExclusion 0x3a
292 : #define PictOpHSLHue 0x3b
293 : #define PictOpHSLSaturation 0x3c
294 : #define PictOpHSLColor 0x3d
295 : #define PictOpHSLLuminosity 0x3e
296 : #define PictOpBlendMaximum 0x3e
297 :
298 : #define PolyEdgeSharp 0
299 : #define PolyEdgeSmooth 1
300 :
301 : #define PolyModePrecise 0
302 : #define PolyModeImprecise 1
303 :
304 : #define CPRepeat (1 << 0)
305 : #define CPAlphaMap (1 << 1)
306 : #define CPAlphaXOrigin (1 << 2)
307 : #define CPAlphaYOrigin (1 << 3)
308 : #define CPClipXOrigin (1 << 4)
309 : #define CPClipYOrigin (1 << 5)
310 : #define CPClipMask (1 << 6)
311 : #define CPGraphicsExposure (1 << 7)
312 : #define CPSubwindowMode (1 << 8)
313 : #define CPPolyEdge (1 << 9)
314 : #define CPPolyMode (1 << 10)
315 : #define CPDither (1 << 11)
316 : #define CPComponentAlpha (1 << 12)
317 : #define CPLastBit 12
318 :
319 : /* Filters included in 0.6 */
320 : #define FilterNearest "nearest"
321 : #define FilterBilinear "bilinear"
322 : /* Filters included in 0.10 */
323 : #define FilterConvolution "convolution"
324 :
325 : #define FilterFast "fast"
326 : #define FilterGood "good"
327 : #define FilterBest "best"
328 :
329 : #define FilterAliasNone -1
330 :
331 : /* Subpixel orders included in 0.6 */
332 : #define SubPixelUnknown 0
333 : #define SubPixelHorizontalRGB 1
334 : #define SubPixelHorizontalBGR 2
335 : #define SubPixelVerticalRGB 3
336 : #define SubPixelVerticalBGR 4
337 : #define SubPixelNone 5
338 :
339 : /* Extended repeat attributes included in 0.10 */
340 : #define RepeatNone 0
341 : #define RepeatNormal 1
342 : #define RepeatPad 2
343 : #define RepeatReflect 3
344 :
345 :
346 :
347 : /* Copied from X11/extensions/Xrender.h */
348 :
349 : typedef struct {
350 : short red;
351 : short redMask;
352 : short green;
353 : short greenMask;
354 : short blue;
355 : short blueMask;
356 : short alpha;
357 : short alphaMask;
358 : } XRenderDirectFormat;
359 :
360 : typedef struct {
361 : PictFormat id;
362 : int type;
363 : int depth;
364 : XRenderDirectFormat direct;
365 : Colormap colormap;
366 : } XRenderPictFormat;
367 :
368 : #define PictFormatID (1 << 0)
369 : #define PictFormatType (1 << 1)
370 : #define PictFormatDepth (1 << 2)
371 : #define PictFormatRed (1 << 3)
372 : #define PictFormatRedMask (1 << 4)
373 : #define PictFormatGreen (1 << 5)
374 : #define PictFormatGreenMask (1 << 6)
375 : #define PictFormatBlue (1 << 7)
376 : #define PictFormatBlueMask (1 << 8)
377 : #define PictFormatAlpha (1 << 9)
378 : #define PictFormatAlphaMask (1 << 10)
379 : #define PictFormatColormap (1 << 11)
380 :
381 : typedef struct _XRenderPictureAttributes {
382 : int repeat;
383 : Picture alpha_map;
384 : int alpha_x_origin;
385 : int alpha_y_origin;
386 : int clip_x_origin;
387 : int clip_y_origin;
388 : Pixmap clip_mask;
389 : Bool graphics_exposures;
390 : int subwindow_mode;
391 : int poly_edge;
392 : int poly_mode;
393 : Atom dither;
394 : Bool component_alpha;
395 : } XRenderPictureAttributes;
396 :
397 : typedef struct {
398 : unsigned short red;
399 : unsigned short green;
400 : unsigned short blue;
401 : unsigned short alpha;
402 : } XRenderColor;
403 :
404 : typedef struct _XGlyphInfo {
405 : unsigned short width;
406 : unsigned short height;
407 : short x;
408 : short y;
409 : short xOff;
410 : short yOff;
411 : } XGlyphInfo;
412 :
413 : typedef struct _XGlyphElt8 {
414 : GlyphSet glyphset;
415 : _Xconst char *chars;
416 : int nchars;
417 : int xOff;
418 : int yOff;
419 : } XGlyphElt8;
420 :
421 : typedef struct _XGlyphElt16 {
422 : GlyphSet glyphset;
423 : _Xconst unsigned short *chars;
424 : int nchars;
425 : int xOff;
426 : int yOff;
427 : } XGlyphElt16;
428 :
429 : typedef struct _XGlyphElt32 {
430 : GlyphSet glyphset;
431 : _Xconst unsigned int *chars;
432 : int nchars;
433 : int xOff;
434 : int yOff;
435 : } XGlyphElt32;
436 :
437 : typedef double XDouble;
438 :
439 : typedef struct _XPointDouble {
440 : XDouble x, y;
441 : } XPointDouble;
442 :
443 : #define XDoubleToFixed(f) ((XFixed) ((f) * 65536))
444 : #define XFixedToDouble(f) (((XDouble) (f)) / 65536)
445 :
446 : typedef int XFixed;
447 :
448 : typedef struct _XPointFixed {
449 : XFixed x, y;
450 : } XPointFixed;
451 :
452 : typedef struct _XLineFixed {
453 : XPointFixed p1, p2;
454 : } XLineFixed;
455 :
456 : typedef struct _XTriangle {
457 : XPointFixed p1, p2, p3;
458 : } XTriangle;
459 :
460 : typedef struct _XCircle {
461 : XFixed x;
462 : XFixed y;
463 : XFixed radius;
464 : } XCircle;
465 :
466 : typedef struct _XTrapezoid {
467 : XFixed top, bottom;
468 : XLineFixed left, right;
469 : } XTrapezoid;
470 :
471 : typedef struct _XTransform {
472 : XFixed matrix[3][3];
473 : } XTransform;
474 :
475 : typedef struct _XFilters {
476 : int nfilter;
477 : char **filter;
478 : int nalias;
479 : short *alias;
480 : } XFilters;
481 :
482 : typedef struct _XIndexValue {
483 : unsigned long pixel;
484 : unsigned short red, green, blue, alpha;
485 : } XIndexValue;
486 :
487 : typedef struct _XAnimCursor {
488 : Cursor cursor;
489 : unsigned long delay;
490 : } XAnimCursor;
491 :
492 : typedef struct _XSpanFix {
493 : XFixed left, right, y;
494 : } XSpanFix;
495 :
496 : typedef struct _XTrap {
497 : XSpanFix top, bottom;
498 : } XTrap;
499 :
500 : typedef struct _XLinearGradient {
501 : XPointFixed p1;
502 : XPointFixed p2;
503 : } XLinearGradient;
504 :
505 : typedef struct _XRadialGradient {
506 : XCircle inner;
507 : XCircle outer;
508 : } XRadialGradient;
509 :
510 : typedef struct _XConicalGradient {
511 : XPointFixed center;
512 : XFixed angle; /* in degrees */
513 : } XConicalGradient;
514 :
515 : #define PictStandardARGB32 0
516 : #define PictStandardRGB24 1
517 : #define PictStandardA8 2
518 : #define PictStandardA4 3
519 : #define PictStandardA1 4
520 : #define PictStandardNUM 5
521 :
522 :
523 :
524 : /* Copied from X11/extensions/renderproto.h */
525 :
526 : #include <X11/Xmd.h>
527 :
528 : #define Window CARD32
529 : #define Drawable CARD32
530 : #define Font CARD32
531 : #define Pixmap CARD32
532 : #define Cursor CARD32
533 : #define Colormap CARD32
534 : #define GContext CARD32
535 : #define Atom CARD32
536 : #define VisualID CARD32
537 : #define Time CARD32
538 : #define KeyCode CARD8
539 : #define KeySym CARD32
540 :
541 : #define Picture CARD32
542 : #define PictFormat CARD32
543 : #define Fixed INT32
544 : #define Glyphset CARD32
545 : #define Glyph CARD32
546 :
547 : /*
548 : * data structures
549 : */
550 :
551 : typedef struct {
552 : CARD16 red B16;
553 : CARD16 redMask B16;
554 : CARD16 green B16;
555 : CARD16 greenMask B16;
556 : CARD16 blue B16;
557 : CARD16 blueMask B16;
558 : CARD16 alpha B16;
559 : CARD16 alphaMask B16;
560 : } xDirectFormat;
561 :
562 : #define sz_xDirectFormat 16
563 :
564 : typedef struct {
565 : PictFormat id B32;
566 : CARD8 type;
567 : CARD8 depth;
568 : CARD16 pad1 B16;
569 : xDirectFormat direct;
570 : Colormap colormap;
571 : } xPictFormInfo;
572 :
573 : #define sz_xPictFormInfo 28
574 :
575 : typedef struct {
576 : VisualID visual;
577 : PictFormat format;
578 : } xPictVisual;
579 :
580 : #define sz_xPictVisual 8
581 :
582 : typedef struct {
583 : CARD8 depth;
584 : CARD8 pad1;
585 : CARD16 nPictVisuals B16;
586 : CARD32 pad2 B32;
587 : } xPictDepth;
588 :
589 : #define sz_xPictDepth 8
590 :
591 : typedef struct {
592 : CARD32 nDepth B32;
593 : PictFormat fallback B32;
594 : } xPictScreen;
595 :
596 : #define sz_xPictScreen 8
597 :
598 : typedef struct {
599 : CARD32 pixel B32;
600 : CARD16 red B16;
601 : CARD16 green B16;
602 : CARD16 blue B16;
603 : CARD16 alpha B16;
604 : } xIndexValue;
605 :
606 : #define sz_xIndexValue 12
607 :
608 : typedef struct {
609 : CARD16 red B16;
610 : CARD16 green B16;
611 : CARD16 blue B16;
612 : CARD16 alpha B16;
613 : } xRenderColor;
614 :
615 : #define sz_xRenderColor 8
616 :
617 : typedef struct {
618 : Fixed x B32;
619 : Fixed y B32;
620 : } xPointFixed;
621 :
622 : #define sz_xPointFixed 8
623 :
624 : typedef struct {
625 : xPointFixed p1;
626 : xPointFixed p2;
627 : } xLineFixed;
628 :
629 : #define sz_xLineFixed 16
630 :
631 : typedef struct {
632 : xPointFixed p1, p2, p3;
633 : } xTriangle;
634 :
635 : #define sz_xTriangle 24
636 :
637 : typedef struct {
638 : Fixed top B32;
639 : Fixed bottom B32;
640 : xLineFixed left;
641 : xLineFixed right;
642 : } xTrapezoid;
643 :
644 : #define sz_xTrapezoid 40
645 :
646 : typedef struct {
647 : CARD16 width B16;
648 : CARD16 height B16;
649 : INT16 x B16;
650 : INT16 y B16;
651 : INT16 xOff B16;
652 : INT16 yOff B16;
653 : } xGlyphInfo;
654 :
655 : #define sz_xGlyphInfo 12
656 :
657 : typedef struct {
658 : CARD8 len;
659 : CARD8 pad1;
660 : CARD16 pad2;
661 : INT16 deltax;
662 : INT16 deltay;
663 : } xGlyphElt;
664 :
665 : #define sz_xGlyphElt 8
666 :
667 : typedef struct {
668 : Fixed l, r, y;
669 : } xSpanFix;
670 :
671 : #define sz_xSpanFix 12
672 :
673 : typedef struct {
674 : xSpanFix top, bot;
675 : } xTrap;
676 :
677 : #define sz_xTrap 24
678 :
679 : /*
680 : * requests and replies
681 : */
682 : typedef struct {
683 : CARD8 reqType;
684 : CARD8 renderReqType;
685 : CARD16 length B16;
686 : CARD32 majorVersion B32;
687 : CARD32 minorVersion B32;
688 : } xRenderQueryVersionReq;
689 :
690 : #define sz_xRenderQueryVersionReq 12
691 :
692 : typedef struct {
693 : BYTE type; /* X_Reply */
694 : BYTE pad1;
695 : CARD16 sequenceNumber B16;
696 : CARD32 length B32;
697 : CARD32 majorVersion B32;
698 : CARD32 minorVersion B32;
699 : CARD32 pad2 B32;
700 : CARD32 pad3 B32;
701 : CARD32 pad4 B32;
702 : CARD32 pad5 B32;
703 : } xRenderQueryVersionReply;
704 :
705 : #define sz_xRenderQueryVersionReply 32
706 :
707 : typedef struct {
708 : CARD8 reqType;
709 : CARD8 renderReqType;
710 : CARD16 length B16;
711 : } xRenderQueryPictFormatsReq;
712 :
713 : #define sz_xRenderQueryPictFormatsReq 4
714 :
715 : typedef struct {
716 : BYTE type; /* X_Reply */
717 : BYTE pad1;
718 : CARD16 sequenceNumber B16;
719 : CARD32 length B32;
720 : CARD32 numFormats B32;
721 : CARD32 numScreens B32;
722 : CARD32 numDepths B32;
723 : CARD32 numVisuals B32;
724 : CARD32 numSubpixel B32; /* Version 0.6 */
725 : CARD32 pad5 B32;
726 : } xRenderQueryPictFormatsReply;
727 :
728 : #define sz_xRenderQueryPictFormatsReply 32
729 :
730 : typedef struct {
731 : CARD8 reqType;
732 : CARD8 renderReqType;
733 : CARD16 length B16;
734 : PictFormat format B32;
735 : } xRenderQueryPictIndexValuesReq;
736 :
737 : #define sz_xRenderQueryPictIndexValuesReq 8
738 :
739 : typedef struct {
740 : BYTE type; /* X_Reply */
741 : BYTE pad1;
742 : CARD16 sequenceNumber B16;
743 : CARD32 length B32;
744 : CARD32 numIndexValues;
745 : CARD32 pad2 B32;
746 : CARD32 pad3 B32;
747 : CARD32 pad4 B32;
748 : CARD32 pad5 B32;
749 : CARD32 pad6 B32;
750 : } xRenderQueryPictIndexValuesReply;
751 :
752 : #define sz_xRenderQueryPictIndexValuesReply 32
753 :
754 : typedef struct {
755 : CARD8 reqType;
756 : CARD8 renderReqType;
757 : CARD16 length B16;
758 : Picture pid B32;
759 : Drawable drawable B32;
760 : PictFormat format B32;
761 : CARD32 mask B32;
762 : } xRenderCreatePictureReq;
763 :
764 : #define sz_xRenderCreatePictureReq 20
765 :
766 : typedef struct {
767 : CARD8 reqType;
768 : CARD8 renderReqType;
769 : CARD16 length B16;
770 : Picture picture B32;
771 : CARD32 mask B32;
772 : } xRenderChangePictureReq;
773 :
774 : #define sz_xRenderChangePictureReq 12
775 :
776 : typedef struct {
777 : CARD8 reqType;
778 : CARD8 renderReqType;
779 : CARD16 length B16;
780 : Picture picture B32;
781 : INT16 xOrigin B16;
782 : INT16 yOrigin B16;
783 : } xRenderSetPictureClipRectanglesReq;
784 :
785 : #define sz_xRenderSetPictureClipRectanglesReq 12
786 :
787 : typedef struct {
788 : CARD8 reqType;
789 : CARD8 renderReqType;
790 : CARD16 length B16;
791 : Picture picture B32;
792 : } xRenderFreePictureReq;
793 :
794 : #define sz_xRenderFreePictureReq 8
795 :
796 : typedef struct {
797 : CARD8 reqType;
798 : CARD8 renderReqType;
799 : CARD16 length B16;
800 : CARD8 op;
801 : CARD8 pad1;
802 : CARD16 pad2 B16;
803 : Picture src B32;
804 : Picture mask B32;
805 : Picture dst B32;
806 : INT16 xSrc B16;
807 : INT16 ySrc B16;
808 : INT16 xMask B16;
809 : INT16 yMask B16;
810 : INT16 xDst B16;
811 : INT16 yDst B16;
812 : CARD16 width B16;
813 : CARD16 height B16;
814 : } xRenderCompositeReq;
815 :
816 : #define sz_xRenderCompositeReq 36
817 :
818 : typedef struct {
819 : CARD8 reqType;
820 : CARD8 renderReqType;
821 : CARD16 length B16;
822 : Picture src B32;
823 : Picture dst B32;
824 : CARD32 colorScale B32;
825 : CARD32 alphaScale B32;
826 : INT16 xSrc B16;
827 : INT16 ySrc B16;
828 : INT16 xDst B16;
829 : INT16 yDst B16;
830 : CARD16 width B16;
831 : CARD16 height B16;
832 : } xRenderScaleReq;
833 :
834 : #define sz_xRenderScaleReq 32
835 :
836 : typedef struct {
837 : CARD8 reqType;
838 : CARD8 renderReqType;
839 : CARD16 length B16;
840 : CARD8 op;
841 : CARD8 pad1;
842 : CARD16 pad2 B16;
843 : Picture src B32;
844 : Picture dst B32;
845 : PictFormat maskFormat B32;
846 : INT16 xSrc B16;
847 : INT16 ySrc B16;
848 : } xRenderTrapezoidsReq;
849 :
850 : #define sz_xRenderTrapezoidsReq 24
851 :
852 : typedef struct {
853 : CARD8 reqType;
854 : CARD8 renderReqType;
855 : CARD16 length B16;
856 : CARD8 op;
857 : CARD8 pad1;
858 : CARD16 pad2 B16;
859 : Picture src B32;
860 : Picture dst B32;
861 : PictFormat maskFormat B32;
862 : INT16 xSrc B16;
863 : INT16 ySrc B16;
864 : } xRenderTrianglesReq;
865 :
866 : #define sz_xRenderTrianglesReq 24
867 :
868 : typedef struct {
869 : CARD8 reqType;
870 : CARD8 renderReqType;
871 : CARD16 length B16;
872 : CARD8 op;
873 : CARD8 pad1;
874 : CARD16 pad2 B16;
875 : Picture src B32;
876 : Picture dst B32;
877 : PictFormat maskFormat B32;
878 : INT16 xSrc B16;
879 : INT16 ySrc B16;
880 : } xRenderTriStripReq;
881 :
882 : #define sz_xRenderTriStripReq 24
883 :
884 : typedef struct {
885 : CARD8 reqType;
886 : CARD8 renderReqType;
887 : CARD16 length B16;
888 : CARD8 op;
889 : CARD8 pad1;
890 : CARD16 pad2 B16;
891 : Picture src B32;
892 : Picture dst B32;
893 : PictFormat maskFormat B32;
894 : INT16 xSrc B16;
895 : INT16 ySrc B16;
896 : } xRenderTriFanReq;
897 :
898 : #define sz_xRenderTriFanReq 24
899 :
900 : typedef struct {
901 : CARD8 reqType;
902 : CARD8 renderReqType;
903 : CARD16 length B16;
904 : Glyphset gsid B32;
905 : PictFormat format B32;
906 : } xRenderCreateGlyphSetReq;
907 :
908 : #define sz_xRenderCreateGlyphSetReq 12
909 :
910 : typedef struct {
911 : CARD8 reqType;
912 : CARD8 renderReqType;
913 : CARD16 length B16;
914 : Glyphset gsid B32;
915 : Glyphset existing B32;
916 : } xRenderReferenceGlyphSetReq;
917 :
918 : #define sz_xRenderReferenceGlyphSetReq 24
919 :
920 : typedef struct {
921 : CARD8 reqType;
922 : CARD8 renderReqType;
923 : CARD16 length B16;
924 : Glyphset glyphset B32;
925 : } xRenderFreeGlyphSetReq;
926 :
927 : #define sz_xRenderFreeGlyphSetReq 8
928 :
929 : typedef struct {
930 : CARD8 reqType;
931 : CARD8 renderReqType;
932 : CARD16 length B16;
933 : Glyphset glyphset B32;
934 : CARD32 nglyphs;
935 : } xRenderAddGlyphsReq;
936 :
937 : #define sz_xRenderAddGlyphsReq 12
938 :
939 : typedef struct {
940 : CARD8 reqType;
941 : CARD8 renderReqType;
942 : CARD16 length B16;
943 : Glyphset glyphset B32;
944 : } xRenderFreeGlyphsReq;
945 :
946 : #define sz_xRenderFreeGlyphsReq 8
947 :
948 : typedef struct {
949 : CARD8 reqType;
950 : CARD8 renderReqType;
951 : CARD16 length B16;
952 : CARD8 op;
953 : CARD8 pad1;
954 : CARD16 pad2 B16;
955 : Picture src B32;
956 : Picture dst B32;
957 : PictFormat maskFormat B32;
958 : Glyphset glyphset B32;
959 : INT16 xSrc B16;
960 : INT16 ySrc B16;
961 : } xRenderCompositeGlyphsReq, xRenderCompositeGlyphs8Req,
962 : xRenderCompositeGlyphs16Req, xRenderCompositeGlyphs32Req;
963 :
964 : #define sz_xRenderCompositeGlyphs8Req 28
965 : #define sz_xRenderCompositeGlyphs16Req 28
966 : #define sz_xRenderCompositeGlyphs32Req 28
967 :
968 : /* 0.1 and higher */
969 :
970 : typedef struct {
971 : CARD8 reqType;
972 : CARD8 renderReqType;
973 : CARD16 length B16;
974 : CARD8 op;
975 : CARD8 pad1;
976 : CARD16 pad2 B16;
977 : Picture dst B32;
978 : xRenderColor color;
979 : } xRenderFillRectanglesReq;
980 :
981 : #define sz_xRenderFillRectanglesReq 20
982 :
983 : /* 0.5 and higher */
984 :
985 : typedef struct {
986 : CARD8 reqType;
987 : CARD8 renderReqType;
988 : CARD16 length B16;
989 : Cursor cid B32;
990 : Picture src B32;
991 : CARD16 x B16;
992 : CARD16 y B16;
993 : } xRenderCreateCursorReq;
994 :
995 : #define sz_xRenderCreateCursorReq 16
996 :
997 : /* 0.6 and higher */
998 :
999 : /*
1000 : * This can't use an array because 32-bit values may be in bitfields
1001 : */
1002 : typedef struct {
1003 : Fixed matrix11 B32;
1004 : Fixed matrix12 B32;
1005 : Fixed matrix13 B32;
1006 : Fixed matrix21 B32;
1007 : Fixed matrix22 B32;
1008 : Fixed matrix23 B32;
1009 : Fixed matrix31 B32;
1010 : Fixed matrix32 B32;
1011 : Fixed matrix33 B32;
1012 : } xRenderTransform;
1013 :
1014 : #define sz_xRenderTransform 36
1015 :
1016 : typedef struct {
1017 : CARD8 reqType;
1018 : CARD8 renderReqType;
1019 : CARD16 length B16;
1020 : Picture picture B32;
1021 : xRenderTransform transform;
1022 : } xRenderSetPictureTransformReq;
1023 :
1024 : #define sz_xRenderSetPictureTransformReq 44
1025 :
1026 : typedef struct {
1027 : CARD8 reqType;
1028 : CARD8 renderReqType;
1029 : CARD16 length B16;
1030 : Drawable drawable B32;
1031 : } xRenderQueryFiltersReq;
1032 :
1033 : #define sz_xRenderQueryFiltersReq 8
1034 :
1035 : typedef struct {
1036 : BYTE type; /* X_Reply */
1037 : BYTE pad1;
1038 : CARD16 sequenceNumber B16;
1039 : CARD32 length B32;
1040 : CARD32 numAliases B32; /* LISTofCARD16 */
1041 : CARD32 numFilters B32; /* LISTofSTRING8 */
1042 : CARD32 pad2 B32;
1043 : CARD32 pad3 B32;
1044 : CARD32 pad4 B32;
1045 : CARD32 pad5 B32;
1046 : } xRenderQueryFiltersReply;
1047 :
1048 : #define sz_xRenderQueryFiltersReply 32
1049 :
1050 : typedef struct {
1051 : CARD8 reqType;
1052 : CARD8 renderReqType;
1053 : CARD16 length B16;
1054 : Picture picture B32;
1055 : CARD16 nbytes B16; /* number of bytes in name */
1056 : CARD16 pad B16;
1057 : } xRenderSetPictureFilterReq;
1058 :
1059 : #define sz_xRenderSetPictureFilterReq 12
1060 :
1061 : /* 0.8 and higher */
1062 :
1063 : typedef struct {
1064 : Cursor cursor B32;
1065 : CARD32 delay B32;
1066 : } xAnimCursorElt;
1067 :
1068 : #define sz_xAnimCursorElt 8
1069 :
1070 : typedef struct {
1071 : CARD8 reqType;
1072 : CARD8 renderReqType;
1073 : CARD16 length B16;
1074 : Cursor cid B32;
1075 : } xRenderCreateAnimCursorReq;
1076 :
1077 : #define sz_xRenderCreateAnimCursorReq 8
1078 :
1079 : /* 0.9 and higher */
1080 :
1081 : typedef struct {
1082 : CARD8 reqType;
1083 : CARD8 renderReqType;
1084 : CARD16 length B16;
1085 : Picture picture;
1086 : INT16 xOff B16;
1087 : INT16 yOff B16;
1088 : } xRenderAddTrapsReq;
1089 :
1090 : #define sz_xRenderAddTrapsReq 12
1091 :
1092 : /* 0.10 and higher */
1093 :
1094 : typedef struct {
1095 : CARD8 reqType;
1096 : CARD8 renderReqType;
1097 : CARD16 length B16;
1098 : Picture pid B32;
1099 : xRenderColor color;
1100 : } xRenderCreateSolidFillReq;
1101 :
1102 : #define sz_xRenderCreateSolidFillReq 16
1103 :
1104 : typedef struct {
1105 : CARD8 reqType;
1106 : CARD8 renderReqType;
1107 : CARD16 length B16;
1108 : Picture pid B32;
1109 : xPointFixed p1;
1110 : xPointFixed p2;
1111 : CARD32 nStops;
1112 : } xRenderCreateLinearGradientReq;
1113 :
1114 : #define sz_xRenderCreateLinearGradientReq 28
1115 :
1116 : typedef struct {
1117 : CARD8 reqType;
1118 : CARD8 renderReqType;
1119 : CARD16 length B16;
1120 : Picture pid B32;
1121 : xPointFixed inner;
1122 : xPointFixed outer;
1123 : Fixed inner_radius;
1124 : Fixed outer_radius;
1125 : CARD32 nStops;
1126 : } xRenderCreateRadialGradientReq;
1127 :
1128 : #define sz_xRenderCreateRadialGradientReq 36
1129 :
1130 : typedef struct {
1131 : CARD8 reqType;
1132 : CARD8 renderReqType;
1133 : CARD16 length B16;
1134 : Picture pid B32;
1135 : xPointFixed center;
1136 : Fixed angle; /* in degrees */
1137 : CARD32 nStops;
1138 : } xRenderCreateConicalGradientReq;
1139 :
1140 : #define sz_xRenderCreateConicalGradientReq 24
1141 :
1142 : #undef Window
1143 : #undef Drawable
1144 : #undef Font
1145 : #undef Pixmap
1146 : #undef Cursor
1147 : #undef Colormap
1148 : #undef GContext
1149 : #undef Atom
1150 : #undef VisualID
1151 : #undef Time
1152 : #undef KeyCode
1153 : #undef KeySym
1154 :
1155 : #undef Picture
1156 : #undef PictFormat
1157 : #undef Fixed
1158 : #undef Glyphset
1159 : #undef Glyph
1160 :
1161 :
1162 : #endif /* CAIRO_HAS_XLIB_XRENDER_SURFACE */
1163 :
1164 : #endif /* CAIRO_XLIB_XRENDER_PRIVATE_H */
|