Subversion Repositories Kolibri OS

Rev

Rev 1892 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

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