summaryrefslogtreecommitdiff
path: root/include/X11
diff options
context:
space:
mode:
authorOliver Hattshire <hattshire@gmail.com>2022-09-11 16:41:36 +0000
committerThomas E. Dickey <dickey@his.com>2022-09-11 16:41:36 +0000
commita7d99992bff95237a1e51ce5c6cbf9429516b9eb (patch)
treea42b752234bf17cbcdc0ed1d7a1343cf0b033e48 /include/X11
parent869d2b7ae8deda46f8ea6fba226455533683b0e4 (diff)
WIP: Documentation
Diffstat (limited to 'include/X11')
-rw-r--r--include/X11/extensions/Xrender.h1340
1 files changed, 935 insertions, 405 deletions
diff --git a/include/X11/extensions/Xrender.h b/include/X11/extensions/Xrender.h
index 1d1cd08..63770c9 100644
--- a/include/X11/extensions/Xrender.h
+++ b/include/X11/extensions/Xrender.h
@@ -22,177 +22,396 @@
* Author: Keith Packard, SuSE, Inc.
*/
+/**
+ * @file Xrender.h
+ * @brief XRender library API.
+ */
+
#ifndef _XRENDER_H_
#define _XRENDER_H_
-#include <X11/Xlib.h>
#include <X11/Xfuncproto.h>
+#include <X11/Xlib.h>
#include <X11/Xosdefs.h>
#include <X11/Xutil.h>
#include <X11/extensions/render.h>
+/**
+ * @mainpage libXrender API Documentation.
+ *
+ * Dummy text down here.
+ */
+
+/**
+ * The direct component of a PictFormat.
+ *
+ * It contains a binary description of the color format used by the Picture.
+ *
+ * * A Zero bit alphaMask is declared to have an opaque alpha everywhere.
+ * * A Zero bit redMask, greenMask and blueMask is declared to have red, green,
+ * blue == 0 everywhere.
+ * * If any of redMask, greenMask or blueMask are zero, all other masks are
+ * zero.
+ */
typedef struct {
- short red;
- short redMask;
- short green;
- short greenMask;
- short blue;
- short blueMask;
- short alpha;
- short alphaMask;
+ /// Red component binary displacement.
+ short red;
+ /// Red component bit mask.
+ short redMask;
+ /// Green component binary displacement.
+ short green;
+ /// Green component bit mask.
+ short greenMask;
+ /// Blue component binary displacement.
+ short blue;
+ /// Blue component bit mask.
+ short blueMask;
+ /// Alpha component binary displacement.
+ short alpha;
+ /// Alpha component bit mask.
+ short alphaMask;
} XRenderDirectFormat;
+/**
+ * A Picture pixel format description.
+ *
+ * It describes the format used by the server to display colors.
+ *
+ * There are two types:
+ * * Direct: Doesn't have a Colormap and the DirectFormat structure describes
+ * the pixel format.
+ * * Indexed: Has a Colormap and it's DirectFormat structure is filled with
+ * zeros.
+ */
typedef struct {
- PictFormat id;
- int type;
- int depth;
- XRenderDirectFormat direct;
- Colormap colormap;
+ /// XID of this structure server instance.
+ PictFormat id;
+ /// Color management type.
+ int type;
+ /// Pixel bit depth.
+ int depth;
+ /// Color component description.
+ XRenderDirectFormat direct;
+ /// XID of the map of indexed colors on the server.
+ Colormap colormap;
} XRenderPictFormat;
-#define PictFormatID (1 << 0)
-#define PictFormatType (1 << 1)
-#define PictFormatDepth (1 << 2)
-#define PictFormatRed (1 << 3)
-#define PictFormatRedMask (1 << 4)
-#define PictFormatGreen (1 << 5)
+/*< XRenderPictFormat template field masks.
+ * @{
+ */
+/// Include ID field. @hideinitializer
+#define PictFormatID (1 << 0)
+/// Include Type field. @hideinitializer
+#define PictFormatType (1 << 1)
+/// Include Depth field. @hideinitializer
+#define PictFormatDepth (1 << 2)
+
+//<--- XRenderPictFormat->direct fields.
+/// Include Direct->Red field. @hideinitializer
+#define PictFormatRed (1 << 3)
+/// Include Direct->RedMask field. @hideinitializer
+#define PictFormatRedMask (1 << 4)
+/// Include Direct->Green field. @hideinitializer
+#define PictFormatGreen (1 << 5)
+/// Include Direct->GreenMask field. @hideinitializer
#define PictFormatGreenMask (1 << 6)
-#define PictFormatBlue (1 << 7)
-#define PictFormatBlueMask (1 << 8)
-#define PictFormatAlpha (1 << 9)
+/// Include Direct->Blue field. @hideinitializer
+#define PictFormatBlue (1 << 7)
+/// Include Direct->BlueMask field. @hideinitializer
+#define PictFormatBlueMask (1 << 8)
+/// Include Direct->Alpha field. @hideinitializer
+#define PictFormatAlpha (1 << 9)
+/// Include Direct->AlphaMask field. @hideinitializer
#define PictFormatAlphaMask (1 << 10)
-#define PictFormatColormap (1 << 11)
+/// Include Colormap field. @hideinitializer
+#define PictFormatColormap (1 << 11)
+/// @}
+
+/**
+ * Picture rendering attributes.
+ */
typedef struct _XRenderPictureAttributes {
- int repeat;
- Picture alpha_map;
- int alpha_x_origin;
- int alpha_y_origin;
- int clip_x_origin;
- int clip_y_origin;
- Pixmap clip_mask;
- Bool graphics_exposures;
- int subwindow_mode;
- int poly_edge;
- int poly_mode;
- Atom dither;
- Bool component_alpha;
+ /// How to repeat the picture.
+ int repeat;
+
+ /// A replacement alpha-map. Must be a pixmap-containing Picture.
+ Picture alpha_map;
+ /// Horizontal displacement of the replacement alpha-map.
+ int alpha_x_origin;
+ /// Vertical displacement of the replacement alpha-map.
+ int alpha_y_origin;
+
+ /// Horizontal displacement of the clip mask.
+ int clip_x_origin;
+ /// Vertical displacement of the clip mask.
+ int clip_y_origin;
+ /// A r/w restriction to the drawable.
+ Pixmap clip_mask;
+
+ /// Whether to receive GraphicsExpose events. @note Ignored field.
+ Bool graphics_exposures;
+ /// How to clip pixels on subwindow overlap.
+ int subwindow_mode;
+ /// Alpha mask generation mode.
+ int poly_edge;
+ /// Alpha value rasterization mode.
+ int poly_mode;
+ /// Dithering mode. @note Ignored field.
+ Atom dither;
+ /// Treat alpha channels independently.
+ Bool component_alpha;
} XRenderPictureAttributes;
+/** An alpha-blended color with premultiplied components.
+ *
+ * Values are in the range from 0 to 65535 inclusive, scaled down to the right
+ * hardware values by the server. Colors must be premultiplied by alpha by the
+ * client in all cases but gradient operations.
+ */
typedef struct {
- unsigned short red;
- unsigned short green;
- unsigned short blue;
- unsigned short alpha;
+ /// Red color channel.
+ unsigned short red;
+ /// Green color channel.
+ unsigned short green;
+ /// Blue color channel.
+ unsigned short blue;
+ /// Alpha color channel.
+ unsigned short alpha;
} XRenderColor;
+/**
+ * Glyph positioning and sizing information.
+ *
+ * A glyph is positioned by taking the requested position and substracting the
+ * center offset.
+ */
typedef struct _XGlyphInfo {
- unsigned short width;
- unsigned short height;
- short x;
- short y;
- short xOff;
- short yOff;
+ /// Glyph width.
+ unsigned short width;
+ /// Glyph height.
+ unsigned short height;
+
+ /// Horizontal Glyph center offset relative to the upper-left corner.
+ short x;
+ /// Vertical Glyph center offset relative to the upper-left corner.
+ short y;
+
+ /// Horizontal margin to the next Glyph.
+ short xOff;
+ /// Vertical margin to the next Glyph.
+ short yOff;
} XGlyphInfo;
+/*< Glyph Elements.
+ * Group of glyphs to be rendered.
+ * While selecting the right element type, you should use as a reference the
+ * largest identifier in Elt->glyphset.
+ */
+/// @{
+
+/**
+ * 8-bit Glyph Element.
+ */
typedef struct _XGlyphElt8 {
- GlyphSet glyphset;
- _Xconst char *chars;
- int nchars;
- int xOff;
- int yOff;
+ /// Set of available glyphs.
+ GlyphSet glyphset;
+
+ /// 8-bit glyph id array.
+ _Xconst char *chars;
+ /// Glyph array size.
+ int nchars;
+
+ /// Horizontal offset.
+ int xOff;
+ /// Vertical offset.
+ int yOff;
} XGlyphElt8;
+/**
+ * 16-bit Glyph Element.
+ */
typedef struct _XGlyphElt16 {
- GlyphSet glyphset;
- _Xconst unsigned short *chars;
- int nchars;
- int xOff;
- int yOff;
+ /// Set of available glyphs.
+ GlyphSet glyphset;
+
+ /// 16-bit glyph id array.
+ _Xconst unsigned short *chars;
+ /// Glyph array size.
+ int nchars;
+
+ /// Horizontal offset.
+ int xOff;
+ /// Vertical offset.
+ int yOff;
} XGlyphElt16;
+/**
+ * 32-bit Glyph Element.
+ */
typedef struct _XGlyphElt32 {
- GlyphSet glyphset;
- _Xconst unsigned int *chars;
- int nchars;
- int xOff;
- int yOff;
+ /// Set of available glyphs.
+ GlyphSet glyphset;
+
+ /// 32-bit glyph id array.
+ _Xconst unsigned int *chars;
+ /// Glyph array size.
+ int nchars;
+
+ /// Horizontal offset.
+ int xOff;
+ /// Vertical offset.
+ int yOff;
} XGlyphElt32;
+///@}
-typedef double XDouble;
-
-typedef struct _XPointDouble {
- XDouble x, y;
-} XPointDouble;
+/*< Utility number types.
+ *
+ */
+///@{
-#define XDoubleToFixed(f) ((XFixed) ((f) * 65536))
-#define XFixedToDouble(f) (((XDouble) (f)) / 65536)
+/**
+ * Floating-point number.
+ */
+typedef double XDouble;
+/**
+ * Fixed-point number.
+ */
typedef int XFixed;
+/// Turn XDouble into XFixed. @hideinitializer
+#define XDoubleToFixed(f) ((XFixed)((f)*65536))
+/// Turn XFixed into XDouble. @hideinitializer
+#define XFixedToDouble(f) (((XDouble)(f)) / 65536)
+/// @}
+
+/**
+ * Point coordinates stored as floats.
+ */
+typedef struct _XPointDouble {
+ XDouble x, y;
+} XPointDouble;
+
+/**
+ * Point coordinates as integers.
+ */
typedef struct _XPointFixed {
- XFixed x, y;
+ XFixed x, y;
} XPointFixed;
+/**
+ * Line described by two points.
+ */
typedef struct _XLineFixed {
- XPointFixed p1, p2;
+ XPointFixed p1, p2;
} XLineFixed;
+/**
+ * Triangle described by it's vertices.
+ * @see XTrap
+ */
typedef struct _XTriangle {
- XPointFixed p1, p2, p3;
+ XPointFixed p1, p2, p3;
} XTriangle;
+/**
+ * Circle described by it's center point and a radius.
+ */
typedef struct _XCircle {
XFixed x;
XFixed y;
XFixed radius;
} XCircle;
+/** A trapezoid.
+ *
+ * @deprecated Use XTrap instead
+ * @see
+ * * XTriangle
+ * * XTrap
+ */
typedef struct _XTrapezoid {
- XFixed top, bottom;
- XLineFixed left, right;
+ XFixed top, bottom;
+ XLineFixed left, right;
} XTrapezoid;
+/**
+ * A transform matrix.
+ */
typedef struct _XTransform {
- XFixed matrix[3][3];
+ XFixed matrix[3][3];
} XTransform;
+/**
+ * Group filters and filter aliases.
+ */
typedef struct _XFilters {
- int nfilter;
- char **filter;
- int nalias;
- short *alias;
+ /// Filter names count.
+ int nfilter;
+ /// Filter names array.
+ char **filter;
+ /// Aliases array count.
+ int nalias;
+ /// Array of «Index in .filter of the aliased filter or 0xffff».
+ short *alias;
} XFilters;
+/**
+ * The value of an indexed color.
+ */
typedef struct _XIndexValue {
- unsigned long pixel;
- unsigned short red, green, blue, alpha;
+ /// Index ID.
+ unsigned long pixel;
+ /// Color components.
+ unsigned short red, green, blue, alpha;
} XIndexValue;
+/**
+ * A single cursor frame.
+ */
typedef struct _XAnimCursor {
- Cursor cursor;
- unsigned long delay;
+ /// Existing cursor.
+ Cursor cursor;
+ /// Animation delay.
+ unsigned long delay;
} XAnimCursor;
+/**
+ * An horizontal line.
+ */
typedef struct _XSpanFix {
- XFixed left, right, y;
+ XFixed left, right, y;
} XSpanFix;
+/**
+ * A trapezoid defined by two lines.
+ * @see XTriangle
+ */
typedef struct _XTrap {
- XSpanFix top, bottom;
+ XSpanFix top, bottom;
} XTrap;
+/**
+ * Linear gradient shape.
+ */
typedef struct _XLinearGradient {
XPointFixed p1;
XPointFixed p2;
} XLinearGradient;
+/**
+ * Radial gradient shape.
+ */
typedef struct _XRadialGradient {
XCircle inner;
XCircle outer;
} XRadialGradient;
+/**
+ * Conical gradient shape.
+ */
typedef struct _XConicalGradient {
XPointFixed center;
XFixed angle; /* in degrees */
@@ -200,328 +419,639 @@ typedef struct _XConicalGradient {
_XFUNCPROTOBEGIN
-Bool XRenderQueryExtension (Display *dpy, int *event_basep, int *error_basep);
-
-Status XRenderQueryVersion (Display *dpy,
- int *major_versionp,
- int *minor_versionp);
-
-Status XRenderQueryFormats (Display *dpy);
-
-int XRenderQuerySubpixelOrder (Display *dpy, int screen);
-
-Bool XRenderSetSubpixelOrder (Display *dpy, int screen, int subpixel);
-
-XRenderPictFormat *
-XRenderFindVisualFormat (Display *dpy, _Xconst Visual *visual);
-
-XRenderPictFormat *
-XRenderFindFormat (Display *dpy,
- unsigned long mask,
- _Xconst XRenderPictFormat *templ,
- int count);
-
-#define PictStandardARGB32 0
-#define PictStandardRGB24 1
-#define PictStandardA8 2
-#define PictStandardA4 3
-#define PictStandardA1 4
-#define PictStandardNUM 5
-
-XRenderPictFormat *
-XRenderFindStandardFormat (Display *dpy,
- int format);
-
-XIndexValue *
-XRenderQueryPictIndexValues(Display *dpy,
- _Xconst XRenderPictFormat *format,
- int *num);
-
-Picture
-XRenderCreatePicture (Display *dpy,
- Drawable drawable,
- _Xconst XRenderPictFormat *format,
- unsigned long valuemask,
- _Xconst XRenderPictureAttributes *attributes);
-
-void
-XRenderChangePicture (Display *dpy,
- Picture picture,
- unsigned long valuemask,
- _Xconst XRenderPictureAttributes *attributes);
-
-void
-XRenderSetPictureClipRectangles (Display *dpy,
- Picture picture,
- int xOrigin,
- int yOrigin,
- _Xconst XRectangle *rects,
- int n);
-
-void
-XRenderSetPictureClipRegion (Display *dpy,
- Picture picture,
- Region r);
-
-void
-XRenderSetPictureTransform (Display *dpy,
- Picture picture,
- XTransform *transform);
-
-void
-XRenderFreePicture (Display *dpy,
- Picture picture);
-
-void
-XRenderComposite (Display *dpy,
- int op,
- Picture src,
- Picture mask,
- Picture dst,
- int src_x,
- int src_y,
- int mask_x,
- int mask_y,
- int dst_x,
- int dst_y,
- unsigned int width,
- unsigned int height);
-
-GlyphSet
-XRenderCreateGlyphSet (Display *dpy, _Xconst XRenderPictFormat *format);
-
-GlyphSet
-XRenderReferenceGlyphSet (Display *dpy, GlyphSet existing);
-
-void
-XRenderFreeGlyphSet (Display *dpy, GlyphSet glyphset);
-
-void
-XRenderAddGlyphs (Display *dpy,
- GlyphSet glyphset,
- _Xconst Glyph *gids,
- _Xconst XGlyphInfo *glyphs,
- int nglyphs,
- _Xconst char *images,
- int nbyte_images);
-
-void
-XRenderFreeGlyphs (Display *dpy,
- GlyphSet glyphset,
- _Xconst Glyph *gids,
- int nglyphs);
-
-void
-XRenderCompositeString8 (Display *dpy,
- int op,
- Picture src,
- Picture dst,
- _Xconst XRenderPictFormat *maskFormat,
- GlyphSet glyphset,
- int xSrc,
- int ySrc,
- int xDst,
- int yDst,
- _Xconst char *string,
- int nchar);
-
-void
-XRenderCompositeString16 (Display *dpy,
- int op,
- Picture src,
- Picture dst,
- _Xconst XRenderPictFormat *maskFormat,
- GlyphSet glyphset,
- int xSrc,
- int ySrc,
- int xDst,
- int yDst,
- _Xconst unsigned short *string,
- int nchar);
-
-void
-XRenderCompositeString32 (Display *dpy,
- int op,
- Picture src,
- Picture dst,
- _Xconst XRenderPictFormat *maskFormat,
- GlyphSet glyphset,
- int xSrc,
- int ySrc,
- int xDst,
- int yDst,
- _Xconst unsigned int *string,
- int nchar);
-
-void
-XRenderCompositeText8 (Display *dpy,
- int op,
- Picture src,
- Picture dst,
- _Xconst XRenderPictFormat *maskFormat,
- int xSrc,
- int ySrc,
- int xDst,
- int yDst,
- _Xconst XGlyphElt8 *elts,
- int nelt);
-
-void
-XRenderCompositeText16 (Display *dpy,
- int op,
- Picture src,
- Picture dst,
- _Xconst XRenderPictFormat *maskFormat,
- int xSrc,
- int ySrc,
- int xDst,
- int yDst,
- _Xconst XGlyphElt16 *elts,
- int nelt);
-
-void
-XRenderCompositeText32 (Display *dpy,
- int op,
- Picture src,
- Picture dst,
- _Xconst XRenderPictFormat *maskFormat,
- int xSrc,
- int ySrc,
- int xDst,
- int yDst,
- _Xconst XGlyphElt32 *elts,
- int nelt);
-
-void
-XRenderFillRectangle (Display *dpy,
- int op,
- Picture dst,
- _Xconst XRenderColor *color,
- int x,
- int y,
- unsigned int width,
- unsigned int height);
-
-void
-XRenderFillRectangles (Display *dpy,
- int op,
- Picture dst,
- _Xconst XRenderColor *color,
- _Xconst XRectangle *rectangles,
- int n_rects);
-
-void
-XRenderCompositeTrapezoids (Display *dpy,
- int op,
- Picture src,
- Picture dst,
- _Xconst XRenderPictFormat *maskFormat,
- int xSrc,
- int ySrc,
- _Xconst XTrapezoid *traps,
- int ntrap);
-
-void
-XRenderCompositeTriangles (Display *dpy,
- int op,
- Picture src,
- Picture dst,
- _Xconst XRenderPictFormat *maskFormat,
- int xSrc,
- int ySrc,
- _Xconst XTriangle *triangles,
- int ntriangle);
-
-void
-XRenderCompositeTriStrip (Display *dpy,
- int op,
- Picture src,
- Picture dst,
- _Xconst XRenderPictFormat *maskFormat,
- int xSrc,
- int ySrc,
- _Xconst XPointFixed *points,
- int npoint);
-
-void
-XRenderCompositeTriFan (Display *dpy,
- int op,
- Picture src,
- Picture dst,
- _Xconst XRenderPictFormat *maskFormat,
- int xSrc,
- int ySrc,
- _Xconst XPointFixed *points,
- int npoint);
-
-void
-XRenderCompositeDoublePoly (Display *dpy,
- int op,
- Picture src,
- Picture dst,
- _Xconst XRenderPictFormat *maskFormat,
- int xSrc,
- int ySrc,
- int xDst,
- int yDst,
- _Xconst XPointDouble *fpoints,
- int npoints,
- int winding);
-Status
-XRenderParseColor(Display *dpy,
- char *spec,
- XRenderColor *def);
-
-Cursor
-XRenderCreateCursor (Display *dpy,
- Picture source,
- unsigned int x,
- unsigned int y);
-
-XFilters *
-XRenderQueryFilters (Display *dpy, Drawable drawable);
-
-void
-XRenderSetPictureFilter (Display *dpy,
- Picture picture,
- const char *filter,
- XFixed *params,
- int nparams);
-
-Cursor
-XRenderCreateAnimCursor (Display *dpy,
- int ncursor,
- XAnimCursor *cursors);
-
-
-void
-XRenderAddTraps (Display *dpy,
- Picture picture,
- int xOff,
- int yOff,
- _Xconst XTrap *traps,
- int ntrap);
-
-Picture XRenderCreateSolidFill (Display *dpy,
- const XRenderColor *color);
-
-Picture XRenderCreateLinearGradient (Display *dpy,
- const XLinearGradient *gradient,
- const XFixed *stops,
- const XRenderColor *colors,
- int nstops);
+/** @defgroup queries Early check queries.
+ * @{
+ */
+
+/**
+ * Ask for the Render extension presence and its base numbers.
+ *
+ * @param dpy Connection to the X server.
+ * @param[out] event_basep first event number for the extension.
+ * @param[out] error_basep first error number for the extension.
+ * @return True if Render is present.
+ */
+Bool XRenderQueryExtension(Display *dpy, int *event_basep, int *error_basep);
+
+/**
+ * Ask for the extension version.
+ *
+ * @param dpy Connection to the X server.
+ * @param[out] major_versionp Extension's major version.
+ * @param[out] minor_versionp Extension's major version.
+ * @return Status «1» on success.
+ */
+Status XRenderQueryVersion(Display *dpy, int *major_versionp,
+ int *minor_versionp);
+
+/**
+ * Check for and cache compatible picture formats.
+ *
+ * @param dpy Connection to the X server.
+ * @return Status «1» on success.
+ */
+Status XRenderQueryFormats(Display *dpy);
+
+/**
+ * Ask for the current subpixel order of a screen.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] screen Target screen number.
+ * @return SubPixelUnknown on error, else a subpixel order.
+ */
+int XRenderQuerySubpixelOrder(Display *dpy, int screen);
+
+/**
+ * Change the subpixel order of a screen.
+ *
+ * @param dpy Connection to the X server
+ * @param[in] screen Target screen number.
+ * @param[in] subpixel Requested subpixel order.
+ * @return True if the operation was successful.
+ */
+Bool XRenderSetSubpixelOrder(Display *dpy, int screen, int subpixel);
+/// @}
+
+/**
+ * Ask for the Picture format for a Visual.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] visual Reference Visual object.
+ * @return The requested Picture format.
+ */
+XRenderPictFormat *XRenderFindVisualFormat(Display *dpy,
+ _Xconst Visual *visual);
+
+/**
+ * Ask for matching Picture formats from a template.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] mask `templ` fields mask to use.
+ * @param[in] templ Requested Picture format template.
+ * @param[in] count Skip `count` formats.
+ * @return NULL if no matching format found, else a Picture format.
+ */
+XRenderPictFormat *XRenderFindFormat(Display *dpy, unsigned long mask,
+ _Xconst XRenderPictFormat *templ,
+ int count);
+
+/** Standard format specifiers.
+ * @{
+ */
+/// 8-bit RGB with Alpha. @hideinitializer
+#define PictStandardARGB32 0
+/// 8-bit RGB. @hideinitializer
+#define PictStandardRGB24 1
+/// 8-bit Alpha map. @hideinitializer
+#define PictStandardA8 2
+/// 4-bit Alpha map. @hideinitializer
+#define PictStandardA4 3
+/// 1-bit Alpha map. @hideinitializer
+#define PictStandardA1 4
+/// Supported standard formats count. @hideinitializer
+#define PictStandardNUM 5
+/// @}
+
+/**
+ * Ask for a predefined standard picture format.
+ *
+ * This is a shorthand to XRenderFindFormat for finding common formats.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] format Desired format specifier.
+ * @return NULL if no matching format found, else a Picture format.
+ */
+XRenderPictFormat *XRenderFindStandardFormat(Display *dpy, int format);
+
+/**
+ * Ask for the indexed colors of a Picture format.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] format Queried picture format.
+ * @param[out] num Size of the output array.
+ * @return An array of XIndexValue.
+ */
+XIndexValue *XRenderQueryPictIndexValues(Display *dpy,
+ _Xconst XRenderPictFormat *format,
+ int *num);
+
+/**
+ * Creates a Picture for a drawable.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] drawable Target Drawable.
+ * @param[in] format Format for the Picture.
+ * @param[in] valuemask `attributes` fields mask to use.
+ * @param[in] attributes Desired attributes for the Picture.
+ * @return A Picture tied to the drawable.
+ */
+Picture XRenderCreatePicture(Display *dpy, Drawable drawable,
+ _Xconst XRenderPictFormat *format,
+ unsigned long valuemask,
+ _Xconst XRenderPictureAttributes *attributes);
+
+/**
+ * Free allocated structures for a Picture.
+ *
+ * @warning A freed Picture shouldn't be used again.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] picture Target Picture.
+ */
+void XRenderFreePicture(Display *dpy, Picture picture);
+
+/**
+ * Change a Picture's attributes structure.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] picture Target Picture.
+ * @param[in] valuemask `attributes` fields mask to use.
+ * @param[in] attributes Desired attributes for the Picture.
+ */
+void XRenderChangePicture(Display *dpy, Picture picture,
+ unsigned long valuemask,
+ _Xconst XRenderPictureAttributes *attributes);
+
+/**
+ * Change a Picture's clip mask to the specified rectangles.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] picture Target Picture.
+ * @param[in] xOrigin Horizontal mask origin.
+ * @param[in] yOrigin Vertical mask origin.
+ * @param[in] rects Array of rectangles to clip with.
+ * @param[in] n `rects` array size.
+ */
+void XRenderSetPictureClipRectangles(Display *dpy, Picture picture, int xOrigin,
+ int yOrigin, _Xconst XRectangle *rects,
+ int n);
+
+/**
+ * Change a Picture's clip mask to the specified Region.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] picture Target Picture.
+ * @param[in] r Region to clip with.
+ */
+void XRenderSetPictureClipRegion(Display *dpy, Picture picture, Region r);
+
+/**
+ * Change a Picture's Transform matrix.
+ *
+ * @param dpy Connection to the X server
+ * @param[in] picture Target Picture.
+ * @param[in] transform Transform matrix to use.
+ */
+void XRenderSetPictureTransform(Display *dpy, Picture picture,
+ XTransform *transform);
+
+/**
+ * Combines two Pictures with the specified compositing operation.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] op Compositing operation to perform.
+ * @param[in] src Picture to combine with.
+ * @param[in] mask Composition mask.
+ * @param[in] dst Picture to combine into.
+ * @param[in] src_x Horizontal `src` origin offset.
+ * @param[in] src_y Vertical `src` origin offset
+ * @param[in] mask_x Horizontal `mask` origin offset.
+ * @param[in] mask_y Vertical `mask` origin offset.
+ * @param[in] dst_x Horizontal `dst` origin offset.
+ * @param[in] dst_y Vertical `dst` origin offset.
+ * @param[in] width Maximum composition width.
+ * @param[in] height Maximum composition height.
+ */
+void XRenderComposite(Display *dpy, int op, Picture src, Picture mask,
+ Picture dst, int src_x, int src_y, int mask_x, int mask_y,
+ int dst_x, int dst_y, unsigned int width,
+ unsigned int height);
+
+/**
+ * Create a Glyph Set.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] format Desired format for the Glyphs Picture.
+ * @return A GlyphSet.
+ */
+GlyphSet XRenderCreateGlyphSet(Display *dpy, _Xconst XRenderPictFormat *format);
+
+/**
+ * Generate a new reference for an existing Glyph Set.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] existing Target Glyph Set.
+ * @return A GlyphSet identical to `existing`.
+ */
+GlyphSet XRenderReferenceGlyphSet(Display *dpy, GlyphSet existing);
+
+/**
+ * Free allocated structures for a GlyphSet.
+ *
+ * If there's more references to the underlying GlyphSet structures, this will
+ * remove only the specified GlyphSet reference.
+ *
+ * @warning A freed GlyphSet shouldn't be used again.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] glyphset Target GlyphSet.
+ */
+void XRenderFreeGlyphSet(Display *dpy, GlyphSet glyphset);
+
+/**
+ * Add new Glyphs to a GlyphSet.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] glyphset Glyph storage destination.
+ * @param[in] gids Array of ids for the new Glyphs.
+ * @param[in] glyphs Array of new Glyphs info.
+ * @param[in] nglyphs Number of Glyphs to add.
+ * @param[in] images Byte array containing the Glyphs graphics.
+ * @param[in] nbyte_images Size of the `images` byte array.
+ */
+void XRenderAddGlyphs(Display *dpy, GlyphSet glyphset, _Xconst Glyph *gids,
+ _Xconst XGlyphInfo *glyphs, int nglyphs,
+ _Xconst char *images, int nbyte_images);
+
+/**
+ * Free allocated Glyphs.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] glyphset GlyphSet storing the Glyphs.
+ * @param[in] gids Identifier array of the Glyphs to dellocate.
+ * @param[in] nglyphs Glyph count.
+ */
+void XRenderFreeGlyphs(Display *dpy, GlyphSet glyphset, _Xconst Glyph *gids,
+ int nglyphs);
+
+/**
+ * Draw a 8-bit character string into a Picture.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] op Compositing operation to perform.
+ * @param[in] src Picture to combine with.
+ * @param[in] dst Picture to combine into.
+ * @param[in] maskFormat Picture format of the generated Picture mask.
+ * @param[in] glyphset Glyph Source.
+ * @param[in] xSrc Horizontal `src` origin offset.
+ * @param[in] ySrc Vertical `src` origin offset.
+ * @param[in] xDst Horizontal `dst` origin offset.
+ * @param[in] yDst Vertical `dst` origin offset.
+ * @param[in] string String to clip to.
+ * @param[in] nchar String length.
+ */
+void XRenderCompositeString8(Display *dpy, int op, Picture src, Picture dst,
+ _Xconst XRenderPictFormat *maskFormat,
+ GlyphSet glyphset, int xSrc, int ySrc, int xDst,
+ int yDst, _Xconst char *string, int nchar);
+
+/**
+ * Draw a 16-bit character string into a Picture.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] op Compositing operation to perform.
+ * @param[in] src Picture to combine with.
+ * @param[in] dst Picture to combine into.
+ * @param[in] maskFormat Picture format of the generated Picture mask.
+ * @param[in] glyphset Glyph Source.
+ * @param[in] xSrc Horizontal `src` origin offset.
+ * @param[in] ySrc Vertical `src` origin offset.
+ * @param[in] xDst Horizontal `dst` origin offset.
+ * @param[in] yDst Vertical `dst` origin offset.
+ * @param[in] string String to clip to.
+ * @param[in] nchar String length.
+ */
+void XRenderCompositeString16(Display *dpy, int op, Picture src, Picture dst,
+ _Xconst XRenderPictFormat *maskFormat,
+ GlyphSet glyphset, int xSrc, int ySrc, int xDst,
+ int yDst, _Xconst unsigned short *string,
+ int nchar);
+
+/**
+ * Draw a 32-bit character string into a Picture.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] op Compositing operation to perform.
+ * @param[in] src Picture to combine with.
+ * @param[in] dst Picture to combine into.
+ * @param[in] maskFormat Picture format of the generated Picture mask.
+ * @param[in] glyphset Glyph Source.
+ * @param[in] xSrc Horizontal `src` origin offset.
+ * @param[in] ySrc Vertical `src` origin offset.
+ * @param[in] xDst Horizontal `dst` origin offset.
+ * @param[in] yDst Vertical `dst` origin offset.
+ * @param[in] string String to clip to.
+ * @param[in] nchar String length.
+ */
+void XRenderCompositeString32(Display *dpy, int op, Picture src, Picture dst,
+ _Xconst XRenderPictFormat *maskFormat,
+ GlyphSet glyphset, int xSrc, int ySrc, int xDst,
+ int yDst, _Xconst unsigned int *string,
+ int nchar);
+
+/**
+ * Draw several 8-bit Glyph Elements into a Picture.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] op Compositing operation to perform.
+ * @param[in] src Picture to combine with.
+ * @param[in] dst Picture to combine into.
+ * @param[in] maskFormat Picture format of the generated Picture mask.
+ * @param[in] xSrc Horizontal `src` origin offset.
+ * @param[in] ySrc Vertical `src` origin offset.
+ * @param[in] xDst Horizontal `dst` origin offset.
+ * @param[in] yDst Vertical `dst` origin offset.
+ * @param[in] elts Glyph Elements array to clip with.
+ * @param[in] nelt Glyph Elements array size.
+ */
+void XRenderCompositeText8(Display *dpy, int op, Picture src, Picture dst,
+ _Xconst XRenderPictFormat *maskFormat, int xSrc,
+ int ySrc, int xDst, int yDst,
+ _Xconst XGlyphElt8 *elts, int nelt);
+
+/**
+ * Draw several 16-bit Glyph Elements into a Picture.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] op Compositing operation to perform.
+ * @param[in] src Picture to combine with.
+ * @param[in] dst Picture to combine into.
+ * @param[in] maskFormat Picture format of the generated Picture mask.
+ * @param[in] xSrc Horizontal `src` origin offset.
+ * @param[in] ySrc Vertical `src` origin offset.
+ * @param[in] xDst Horizontal `dst` origin offset.
+ * @param[in] yDst Vertical `dst` origin offset.
+ * @param[in] elts Glyph Elements array to clip with.
+ * @param[in] nelt Glyph Elements array size.
+ */
+void XRenderCompositeText16(Display *dpy, int op, Picture src, Picture dst,
+ _Xconst XRenderPictFormat *maskFormat, int xSrc,
+ int ySrc, int xDst, int yDst,
+ _Xconst XGlyphElt16 *elts, int nelt);
+
+/**
+ * Draw several 32-bit Glyph Elements into a Picture.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] op Compositing operation to perform.
+ * @param[in] src Picture to combine with.
+ * @param[in] dst Picture to combine into.
+ * @param[in] maskFormat Picture format of the generated Picture mask.
+ * @param[in] xSrc Horizontal `src` origin offset.
+ * @param[in] ySrc Vertical `src` origin offset.
+ * @param[in] xDst Horizontal `dst` origin offset.
+ * @param[in] yDst Vertical `dst` origin offset.
+ * @param[in] elts Glyph Elements to clip with.
+ * @param[in] nelt Glyph Elements array size.
+ */
+void XRenderCompositeText32(Display *dpy, int op, Picture src, Picture dst,
+ _Xconst XRenderPictFormat *maskFormat, int xSrc,
+ int ySrc, int xDst, int yDst,
+ _Xconst XGlyphElt32 *elts, int nelt);
+
+/**
+ * Fill a Rectangle with the given color.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] op Compositing operation to perform.
+ * @param[in] dst Picture to draw into.
+ * @param[in] color Color to fill with.
+ * @param[in] x Horizontal offset.
+ * @param[in] y Vertical offset.
+ * @param[in] width Rectangle width.
+ * @param[in] height Rectangle height.
+ */
+void XRenderFillRectangle(Display *dpy, int op, Picture dst,
+ _Xconst XRenderColor *color, int x, int y,
+ unsigned int width, unsigned int height);
-Picture XRenderCreateRadialGradient (Display *dpy,
- const XRadialGradient *gradient,
+/**
+ * Fill a bunch of Rectangle with the given color.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] op Compositing operation to perform.
+ * @param[in] dst Picture to draw into.
+ * @param[in] color Color to fill with.
+ * @param[in] rectangles Array of Rectangles to fill.
+ * @param[in] n_rects `rectangles` array size.
+ */
+void XRenderFillRectangles(Display *dpy, int op, Picture dst,
+ _Xconst XRenderColor *color,
+ _Xconst XRectangle *rectangles, int n_rects);
+
+/**
+ * Combine two Pictures using a bunch of Trapezoids as the mask.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] op Compositing operation to perform.
+ * @param[in] src Picture to combine with.
+ * @param[in] dst Picture to combine into.
+ * @param[in] maskFormat Picture format of the generated Picture mask.
+ * @param[in] xSrc Horizontal `src` origin offset.
+ * @param[in] ySrc Vertical `src` origin offset.
+ * @param[in] traps Array of Trapezoids to clip with.
+ * @param[in] ntrap `traps` Array size.
+ */
+void XRenderCompositeTrapezoids(Display *dpy, int op, Picture src, Picture dst,
+ _Xconst XRenderPictFormat *maskFormat, int xSrc,
+ int ySrc, _Xconst XTrapezoid *traps, int ntrap);
+
+/**
+ * Combine two Pictures using a bunch of Triangles as the mask.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] op Compositing operation to perform.
+ * @param[in] src Picture to combine with.
+ * @param[in] dst Picture to combine into.
+ * @param[in] maskFormat Picture format of the generated Picture mask.
+ * @param[in] xSrc Horizontal `src` origin offset.
+ * @param[in] ySrc Vertical `src` origin offset.
+ * @param[in] triangles Array of Triangles to clip with.
+ * @param[in] ntriangle `triangles` array size.
+ */
+void XRenderCompositeTriangles(Display *dpy, int op, Picture src, Picture dst,
+ _Xconst XRenderPictFormat *maskFormat, int xSrc,
+ int ySrc, _Xconst XTriangle *triangles,
+ int ntriangle);
+
+/**
+ * Combine two Pictures using a Triangle Strip as the mask.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] op Compositing operation to perform.
+ * @param[in] src Picture to combine with.
+ * @param[in] dst Picture to combine into.
+ * @param[in] maskFormat Picture format of the generated Picture mask.
+ * @param[in] xSrc Horizontal `src` origin offset.
+ * @param[in] ySrc Vertical `src` origin offset.
+ * @param[in] points Array of Points to create Triangles with.
+ * @param[in] npoint `points` array size.
+ */
+void XRenderCompositeTriStrip(Display *dpy, int op, Picture src, Picture dst,
+ _Xconst XRenderPictFormat *maskFormat, int xSrc,
+ int ySrc, _Xconst XPointFixed *points,
+ int npoint);
+
+/**
+ * Combine two Pictures using a Triangle Fan as the mask.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] op Compositing operation to perform.
+ * @param[in] src Picture to combine with.
+ * @param[in] dst Picture to combine into.
+ * @param[in] maskFormat Picture format of the generated Picture mask.
+ * @param[in] xSrc Horizontal `src` origin offset.
+ * @param[in] ySrc Vertical `src` origin offset.
+ * @param[in] points Array of Points to create Triangles with.
+ * @param[in] npoint `points` array size.
+ */
+void XRenderCompositeTriFan(Display *dpy, int op, Picture src, Picture dst,
+ _Xconst XRenderPictFormat *maskFormat, int xSrc,
+ int ySrc, _Xconst XPointFixed *points, int npoint);
+
+/**
+ * Combine two Pictures using a Polygon as the mask.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] op Compositing operation to perform.
+ * @param[in] src Picture to combine with.
+ * @param[in] dst Picture to combine into.
+ * @param[in] maskFormat Picture format of the generated Picture mask.
+ * @param[in] xSrc Horizontal `src` origin offset.
+ * @param[in] ySrc Vertical `src` origin offset.
+ * @param[in] xDst Horizontal `dst` origin offset.
+ * @param[in] yDst Vertical `dst` origin offset.
+ * @param[in] fpoints Array of DoublePoints to create a Polygon with.
+ * @param[in] npoints `points` array size.
+ * @param winding Unused.
+ */
+void XRenderCompositeDoublePoly(Display *dpy, int op, Picture src, Picture dst,
+ _Xconst XRenderPictFormat *maskFormat, int xSrc,
+ int ySrc, int xDst, int yDst,
+ _Xconst XPointDouble *fpoints, int npoints,
+ int winding);
+
+/**
+ * Parse a color string.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] spec Null-terminated string.
+ * @param[out] def Parsing result.
+ * @return Status «1» on success.
+ */
+Status XRenderParseColor(Display *dpy, char *spec, XRenderColor *def);
+
+/**
+ * Creates a cursor looking like a Picture.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] source Picture defining the cursor look.
+ * @param[in] x Horizontal offset.
+ * @param[in] y Vertical offset.
+ * @return A Cursor.
+ */
+Cursor XRenderCreateCursor(Display *dpy, Picture source, unsigned int x,
+ unsigned int y);
+
+/**
+ * Ask for Filters applicable to some Drawable.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] drawable Target Drawable.
+ * @return Available Filters and Aliases.
+ */
+XFilters *XRenderQueryFilters(Display *dpy, Drawable drawable);
+
+/**
+ * Set the current filter of a Picture.
+ *
+ * @note On Picture creation, the «Nearest» filter is set by default.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] picture Target.
+ * @param[in] filter Filter name.
+ * @param[in] params Filter parameters array.
+ * @param[in] nparams `params` array size.
+ */
+void XRenderSetPictureFilter(Display *dpy, Picture picture, const char *filter,
+ XFixed *params, int nparams);
+
+/**
+ * Create an animated Cursor from the given Cursor frames.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] ncursor Cursor frames count.
+ * @param[in] cursors Cursor frames array.
+ * @return An animated Cursor.
+ */
+Cursor XRenderCreateAnimCursor(Display *dpy, int ncursor, XAnimCursor *cursors);
+
+/**
+ * Add the given Trapezoids to a single-channel Picture.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] picture An alpha-only Picture.
+ * @param[in] xOff Horizontal offset.
+ * @param[in] yOff Vertical offset.
+ * @param[in] traps Array of trapezoids.
+ * @param[in] ntrap `traps` array size.
+ */
+void XRenderAddTraps(Display *dpy, Picture picture, int xOff, int yOff,
+ _Xconst XTrap *traps, int ntrap);
+
+/**
+ * Create a Picture filled with a single Color.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] color Desired filling.
+ * @return A single Color Picture.
+ */
+Picture XRenderCreateSolidFill(Display *dpy, const XRenderColor *color);
+
+/**
+ * Create a Picture filled with a Linear Gradient.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] gradient Gradient geometry.
+ * @param[in] stops Stop sections.
+ * @param[in] colors Stop colors.
+ * @param[in] nstops Stops count.
+ * @return A Picture filled with a Linear Gradient.
+ */
+Picture XRenderCreateLinearGradient(Display *dpy,
+ const XLinearGradient *gradient,
+ const XFixed *stops,
+ const XRenderColor *colors, int nstops);
+
+/**
+ * Create a Picture filled with a Radial Gradient.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] gradient Gradient geometry.
+ * @param[in] stops Stop sections.
+ * @param[in] colors Stop colors.
+ * @param[in] nstops Stops count.
+ * @return A Picture filled with a Radial Gradient.
+ */
+Picture XRenderCreateRadialGradient(Display *dpy,
+ const XRadialGradient *gradient,
+ const XFixed *stops,
+ const XRenderColor *colors, int nstops);
+
+/**
+ * Create a Picture filled with a Conical Gradient.
+ *
+ * @param dpy Connection to the X server.
+ * @param[in] gradient Gradient geometry.
+ * @param[in] stops Stop sections.
+ * @param[in] colors Stop colors.
+ * @param[in] nstops Stops count.
+ * @return A Picture filled with a Conical Gradient.
+ */
+Picture XRenderCreateConicalGradient(Display *dpy,
+ const XConicalGradient *gradient,
const XFixed *stops,
- const XRenderColor *colors,
- int nstops);
-
-Picture XRenderCreateConicalGradient (Display *dpy,
- const XConicalGradient *gradient,
- const XFixed *stops,
- const XRenderColor *colors,
- int nstops);
+ const XRenderColor *colors, int nstops);
_XFUNCPROTOEND