text: /*
   * Copyright © 2000 SuSE, Inc.
   *
   * Permission to use, copy, modify, distribute, and sell this software and its
   * documentation for any purpose is hereby granted without fee, provided that
   * the above copyright notice appear in all copies and that both that
   * copyright notice and this permission notice appear in supporting
   * documentation, and that the name of SuSE not be used in advertising or
   * publicity pertaining to distribution of the software without specific,
   * written prior permission.  SuSE makes no representations about the
   * suitability of this software for any purpose.  It is provided "as is"
   * without express or implied warranty.
   *
   * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
   * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
   * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
   * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   *
   * Author:  Keith Packard, SuSE, Inc.
   */
  
  #ifndef _XRENDERP_H_
  #define _XRENDERP_H_
  
  #include <X11/Xmd.h>
  #include <X11/extensions/render.h>
  
  #define Window CARD32
  #define Drawable CARD32
  #define Font CARD32
  #define Pixmap CARD32
  #define Cursor CARD32
  #define Colormap CARD32
  #define GContext CARD32
  #define Atom CARD32
  #define VisualID CARD32
  #define Time CARD32
  #define KeyCode CARD8
  #define KeySym CARD32
  
  #define Picture	    CARD32
  #define PictFormat  CARD32
  #define Fixed	    INT32
  #define Glyphset    CARD32
  
  /*
   * data structures
   */
  
  typedef struct {
      CARD16  red B16;
      CARD16  redMask B16;
      CARD16  green B16;
      CARD16  greenMask B16;
      CARD16  blue B16;
      CARD16  blueMask B16;
      CARD16  alpha B16;
      CARD16  alphaMask B16;
  } xDirectFormat;
  
  #define sz_xDirectFormat    16
  
  typedef struct {
      PictFormat	id B32;
      CARD8	type;
      CARD8	depth;
      CARD16	pad1 B16;
      xDirectFormat   direct;
      Colormap	colormap;
  } xPictFormInfo;
  
  #define sz_xPictFormInfo    28
  
  typedef struct {
      VisualID	visual;
      PictFormat	format;
  } xPictVisual;
  
  #define sz_xPictVisual	    8
  
  typedef struct {
      CARD8	depth;
      CARD8	pad1;
      CARD16	nPictVisuals B16;
      CARD32	pad2 B32;
  } xPictDepth;
  
  #define sz_xPictDepth	8
  
  typedef struct {
      CARD32	nDepth B32;
      PictFormat	fallback B32;
  } xPictScreen;
  
  #define sz_xPictScreen	8
  
  typedef struct {
      CARD32	pixel B32;
      CARD16	red B16;
      CARD16	green B16;
      CARD16	blue B16;
      CARD16	alpha B16;
  } xIndexValue;
  
  #define sz_xIndexValue	12
  
  typedef struct {
      CARD16	red B16;
      CARD16	green B16;
      CARD16	blue B16;
      CARD16	alpha B16;
  } xRenderColor;
  
  #define sz_xRenderColor	8
  
  typedef struct {
      Fixed	x B32;
      Fixed	y B32;
  } xPointFixed;
  
  #define sz_xPointFixed	8
  
  typedef struct {
      xPointFixed	p1;
      xPointFixed p2;
  } xLineFixed;
  
  #define sz_xLineFixed	16
  
  typedef struct {
      xPointFixed	p1, p2, p3;
  } xTriangle;
  
  #define sz_xTriangle	24
  
  typedef struct {
      Fixed	top B32;
      Fixed	bottom B32;
      xLineFixed	left;
      xLineFixed	right;
  } xTrapezoid;
  
  #define sz_xTrapezoid	40
  
  typedef struct {
      CARD16  width B16;
      CARD16  height B16;
      INT16   x B16;
      INT16   y B16;
      INT16   xOff B16;
      INT16   yOff B16;
  } xGlyphInfo;
  
  #define sz_xGlyphInfo	12
  
  typedef struct {
      CARD8   len;
      CARD8   pad1;
      CARD16  pad2;
      INT16   deltax;
      INT16   deltay;
  } xGlyphElt;
  
  #define sz_xGlyphElt	8
  
  typedef struct {
      Fixed   l, r, y;
  } xSpanFix;
  
  #define sz_xSpanFix	12
  
  typedef struct {
      xSpanFix	top, bot;
  } xTrap;
  
  #define sz_xTrap	24
  
  /*
   * requests and replies
   */
  typedef struct {
      CARD8   reqType;
      CARD8   renderReqType;
      CARD16  length B16;
      CARD32  majorVersion B32;
      CARD32  minorVersion B32;
  } xRenderQueryVersionReq;
  
  #define sz_xRenderQueryVersionReq   12
  
  typedef struct {
      BYTE    type;   /* X_Reply */
      BYTE    pad1;
      CARD16  sequenceNumber B16;
      CARD32  length B32;
      CARD32  majorVersion B32;
      CARD32  minorVersion B32;
      CARD32  pad2 B32;
      CARD32  pad3 B32;
      CARD32  pad4 B32;
      CARD32  pad5 B32;
  } xRenderQueryVersionReply;
  
  #define sz_xRenderQueryVersionReply	32
  
  typedef struct {
      CARD8   reqType;
      CARD8   renderReqType;
      CARD16  length B16;
  } xRenderQueryPictFormatsReq;
  
  #define sz_xRenderQueryPictFormatsReq	4
  
  typedef struct {
      BYTE    type;   /* X_Reply */
      BYTE    pad1;
      CARD16  sequenceNumber B16;
      CARD32  length B32;
      CARD32  numFormats B32;
      CARD32  numScreens B32;
      CARD32  numDepths B32;
      CARD32  numVisuals B32;
      CARD32  numSubpixel B32;	    /* Version 0.6 */
      CARD32  pad5 B32;
  } xRenderQueryPictFormatsReply;
  
  #define sz_xRenderQueryPictFormatsReply	32
  
  typedef struct {
      CARD8   reqType;
      CARD8   renderReqType;
      CARD16  length B16;
      PictFormat	format B32;
  } xRenderQueryPictIndexValuesReq;
  
  #define sz_xRenderQueryPictIndexValuesReq   8
  
  typedef struct {
      BYTE    type;   /* X_Reply */
      BYTE    pad1;
      CARD16  sequenceNumber B16;
      CARD32  length B32;
      CARD32  numIndexValues;
      CARD32  pad2 B32;
      CARD32  pad3 B32;
      CARD32  pad4 B32;
      CARD32  pad5 B32;
      CARD32  pad6 B32;
  } xRenderQueryPictIndexValuesReply;
  
  #define sz_xRenderQueryPictIndexValuesReply 32
  
  typedef struct {
      CARD8	reqType;
      CARD8	renderReqType;
      CARD16	length B16;
      Picture	pid B32;
      Drawable	drawable B32;
      PictFormat	format B32;
      CARD32	mask B32;
  } xRenderCreatePictureReq;
  
  #define sz_xRenderCreatePictureReq	    20
  
  typedef struct {
      CARD8	reqType;
      CARD8	renderReqType;
      CARD16	length B16;
      Picture	picture B32;
      CARD32	mask B32;
  } xRenderChangePictureReq;
  
  #define sz_xRenderChangePictureReq	    12
  
  typedef struct {
      CARD8       reqType;
      CARD8       renderReqType;
      CARD16      length B16;
      Picture     picture B32;
      INT16	xOrigin B16;
      INT16	yOrigin B16;
  } xRenderSetPictureClipRectanglesReq;
  
  #define sz_xRenderSetPictureClipRectanglesReq	    12
  
  typedef struct {
      CARD8       reqType;
      CARD8       renderReqType;
      CARD16      length B16;
      Picture     picture B32;
  } xRenderFreePictureReq;
  
  #define sz_xRenderFreePictureReq	    8
  
  typedef struct {
      CARD8       reqType;
      CARD8       renderReqType;
      CARD16      length B16;
      CARD8	op;
      CARD8	pad1;
      CARD16	pad2 B16;
      Picture	src B32;
      Picture	mask B32;
      Picture	dst B32;
      INT16	xSrc B16;
      INT16	ySrc B16;
      INT16	xMask B16;
      INT16	yMask B16;
      INT16	xDst B16;
      INT16	yDst B16;
      CARD16	width B16;
      CARD16	height B16;
  } xRenderCompositeReq;
  
  #define sz_xRenderCompositeReq		    36
  
  typedef struct {
      CARD8       reqType;
      CARD8       renderReqType;
      CARD16      length B16;
      Picture	src B32;
      Picture	dst B32;
      CARD32	colorScale B32;
      CARD32	alphaScale B32;
      INT16	xSrc B16;
      INT16	ySrc B16;
      INT16	xDst B16;
      INT16	yDst B16;
      CARD16	width B16;
      CARD16	height B16;
  } xRenderScaleReq;
  
  #define sz_xRenderScaleReq			    32
  
  typedef struct {
      CARD8       reqType;
      CARD8       renderReqType;
      CARD16      length B16;
      CARD8	op;
      CARD8	pad1;
      CARD16	pad2 B16;
      Picture	src B32;
      Picture	dst B32;
      PictFormat	maskFormat B32;
      INT16	xSrc B16;
      INT16	ySrc B16;
  } xRenderTrapezoidsReq;
  
  #define sz_xRenderTrapezoidsReq			    24
  
  typedef struct {
      CARD8       reqType;
      CARD8       renderReqType;
      CARD16      length B16;
      CARD8	op;
      CARD8	pad1;
      CARD16	pad2 B16;
      Picture	src B32;
      Picture	dst B32;
      PictFormat	maskFormat B32;
      INT16	xSrc B16;
      INT16	ySrc B16;
  } xRenderTrianglesReq;
  
  #define sz_xRenderTrianglesReq			    24
  
  typedef struct {
      CARD8       reqType;
      CARD8       renderReqType;
      CARD16      length B16;
      CARD8	op;
      CARD8	pad1;
      CARD16	pad2 B16;
      Picture	src B32;
      Picture	dst B32;
      PictFormat	maskFormat B32;
      INT16	xSrc B16;
      INT16	ySrc B16;
  } xRenderTriStripReq;
  
  #define sz_xRenderTriStripReq			    24
  
  typedef struct {
      CARD8       reqType;
      CARD8       renderReqType;
      CARD16      length B16;
      CARD8	op;
      CARD8	pad1;
      CARD16	pad2 B16;
      Picture	src B32;
      Picture	dst B32;
      PictFormat	maskFormat B32;
      INT16	xSrc B16;
      INT16	ySrc B16;
  } xRenderTriFanReq;
  
  #define sz_xRenderTriFanReq			    24
  
  typedef struct {
      CARD8       reqType;
      CARD8       renderReqType;
      CARD16      length B16;
      Glyphset	gsid B32;
      PictFormat	format B32;
  } xRenderCreateGlyphSetReq;
  
  #define sz_xRenderCreateGlyphSetReq		    12
  
  typedef struct {
      CARD8       reqType;
      CARD8       renderReqType;
      CARD16      length B16;
      Glyphset    gsid B32;
      Glyphset    existing B32;
  } xRenderReferenceGlyphSetReq;
  
  #define sz_xRenderReferenceGlyphSetReq		    24
  
  typedef struct {
      CARD8       reqType;
      CARD8       renderReqType;
      CARD16      length B16;
      Glyphset    glyphset B32;
  } xRenderFreeGlyphSetReq;
  
  #define sz_xRenderFreeGlyphSetReq		    8
  
  typedef struct {
      CARD8       reqType;
      CARD8       renderReqType;
      CARD16      length B16;
      Glyphset    glyphset B32;
      CARD32	nglyphs;
  } xRenderAddGlyphsReq;
  
  #define sz_xRenderAddGlyphsReq			    12
  
  typedef struct {
      CARD8       reqType;
      CARD8       renderReqType;
      CARD16      length B16;
      Glyphset    glyphset B32;
  } xRenderFreeGlyphsReq;
  
  #define sz_xRenderFreeGlyphsReq			    8
  
  typedef struct {
      CARD8       reqType;
      CARD8       renderReqType;
      CARD16      length B16;
      CARD8	op;
      CARD8	pad1;
      CARD16	pad2 B16;
      Picture	src B32;
      Picture	dst B32;
      PictFormat	maskFormat B32;
      Glyphset    glyphset B32;
      INT16	xSrc B16;
      INT16	ySrc B16;
  } xRenderCompositeGlyphsReq, xRenderCompositeGlyphs8Req,
  xRenderCompositeGlyphs16Req, xRenderCompositeGlyphs32Req;
  
  #define sz_xRenderCompositeGlyphs8Req		    28
  #define sz_xRenderCompositeGlyphs16Req		    28
  #define sz_xRenderCompositeGlyphs32Req		    28
  
  /* 0.1 and higher */
  
  typedef struct {
      CARD8	reqType;
      CARD8       renderReqType;
      CARD16      length B16;
      CARD8	op;
      CARD8	pad1;
      CARD16	pad2 B16;
      Picture	dst B32;
      xRenderColor    color;
  } xRenderFillRectanglesReq;
  
  #define sz_xRenderFillRectanglesReq		    20
  
  /* 0.5 and higher */
  
  typedef struct {
      CARD8	reqType;
      CARD8	renderReqType;
      CARD16	length B16;
      Cursor	cid B32;
      Picture	src B32;
      CARD16	x B16;
      CARD16	y B16;
  } xRenderCreateCursorReq;
  
  #define sz_xRenderCreateCursorReq		    16
  
  /* 0.6 and higher */
  
  /*
   * This can't use an array because 32-bit values may be in bitfields
   */
  typedef struct {
      Fixed	matrix11 B32;
      Fixed	matrix12 B32;
      Fixed	matrix13 B32;
      Fixed	matrix21 B32;
      Fixed	matrix22 B32;
      Fixed	matrix23 B32;
      Fixed	matrix31 B32;
      Fixed	matrix32 B32;
      Fixed	matrix33 B32;
  } xRenderTransform;
  
  #define sz_xRenderTransform 36
  
  typedef struct {
      CARD8		reqType;
      CARD8		renderReqType;
      CARD16		length B16;
      Picture		picture B32;
      xRenderTransform	transform;
  } xRenderSetPictureTransformReq;
  
  #define sz_xRenderSetPictureTransformReq	    44
  
  typedef struct {
      CARD8		reqType;
      CARD8		renderReqType;
      CARD16		length B16;
      Drawable		drawable B32;
  } xRenderQueryFiltersReq;
  
  #define sz_xRenderQueryFiltersReq		    8
  
  typedef struct {
      BYTE    type;   /* X_Reply */
      BYTE    pad1;
      CARD16  sequenceNumber B16;
      CARD32  length B32;
      CARD32  numAliases B32;	/* LISTofCARD16 */
      CARD32  numFilters B32;	/* LISTofSTRING8 */
      CARD32  pad2 B32;
      CARD32  pad3 B32;
      CARD32  pad4 B32;
      CARD32  pad5 B32;
  } xRenderQueryFiltersReply;
  
  #define sz_xRenderQueryFiltersReply		    32
  
  typedef struct {
      CARD8		reqType;
      CARD8		renderReqType;
      CARD16		length B16;
      Picture		picture B32;
      CARD16		nbytes B16; /* number of bytes in name */
      CARD16		pad B16;
  } xRenderSetPictureFilterReq;
  
  #define sz_xRenderSetPictureFilterReq		    12
  
  /* 0.8 and higher */
  
  typedef struct {
      Cursor		cursor B32;
      CARD32		delay B32;
  } xAnimCursorElt;
  
  #define sz_xAnimCursorElt			    8
  
  typedef struct {
      CARD8		reqType;
      CARD8		renderReqType;
      CARD16		length B16;
      Cursor		cid B32;
  } xRenderCreateAnimCursorReq;
  
  #define sz_xRenderCreateAnimCursorReq		    8
  
  /* 0.9 and higher */
  
  typedef struct {
      CARD8		reqType;
      CARD8		renderReqType;
      CARD16		length B16;
      Picture		picture;
      INT16		xOff B16;
      INT16		yOff B16;
  } xRenderAddTrapsReq;
  
  #define sz_xRenderAddTrapsReq			    12
  
  /* 0.10 and higher */
  
  typedef struct {
      CARD8	reqType;
      CARD8	renderReqType;
      CARD16	length B16;
      Picture	pid B32;
      xRenderColor color;
  } xRenderCreateSolidFillReq;
  
  #define sz_xRenderCreateSolidFillReq                 16
  
  typedef struct {
      CARD8	reqType;
      CARD8	renderReqType;
      CARD16	length B16;
      Picture	pid B32;
      xPointFixed p1;
      xPointFixed p2;
      CARD32      nStops;
  } xRenderCreateLinearGradientReq;
  
  #define sz_xRenderCreateLinearGradientReq                 28
  
  typedef struct {
      CARD8	reqType;
      CARD8	renderReqType;
      CARD16	length B16;
      Picture	pid B32;
      xPointFixed inner;
      xPointFixed outer;
      Fixed       inner_radius;
      Fixed       outer_radius;
      CARD32      nStops;
  } xRenderCreateRadialGradientReq;
  
  #define sz_xRenderCreateRadialGradientReq                 36
  
  typedef struct {
      CARD8	reqType;
      CARD8	renderReqType;
      CARD16	length B16;
      Picture	pid B32;
      xPointFixed center;
      Fixed       angle; /* in degrees */
      CARD32      nStops;
  } xRenderCreateConicalGradientReq;
  
  #define sz_xRenderCreateConicalGradientReq                 24
  
  #undef Window
  #undef Drawable
  #undef Font
  #undef Pixmap
  #undef Cursor
  #undef Colormap
  #undef GContext
  #undef Atom
  #undef VisualID
  #undef Time
  #undef KeyCode
  #undef KeySym
  
  #undef Picture
  #undef PictFormat
  #undef Fixed
  #undef Glyphset
  
  #endif /* _XRENDERP_H_ */
  