/* * * 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. */ /** * @file Xrender.h * @brief XRender library API. */ #ifndef _XRENDER_H_ #define _XRENDER_H_ #include #include #include #include #include /** * @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 { /** 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 { /** 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; /*< 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) /** 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) /** Include Colormap field. @hideinitializer */ #define PictFormatColormap (1 << 11) /** @} */ /** * Picture rendering attributes. */ typedef struct _XRenderPictureAttributes { /** 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 { /** 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 { /** 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 { /** 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 { /** 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 { /** 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; /**@} */ /*< Utility number types. * */ /**@{ */ /** * 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; } XPointFixed; /** * Line described by two points. */ typedef struct _XLineFixed { XPointFixed p1, p2; } XLineFixed; /** * Triangle described by it's vertices. * @see XTrap */ typedef struct _XTriangle { 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; } XTrapezoid; /** * A transform matrix. */ typedef struct _XTransform { XFixed matrix[3][3]; } XTransform; /** * Group filters and filter aliases. */ typedef struct _XFilters { /** 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 { /** Index ID. */ unsigned long pixel; /** Color components. */ unsigned short red, green, blue, alpha; } XIndexValue; /** * A single cursor frame. */ typedef struct _XAnimCursor { /** Existing cursor. */ Cursor cursor; /** Animation delay. */ unsigned long delay; } XAnimCursor; /** * An horizontal line. */ typedef struct _XSpanFix { XFixed left, right, y; } XSpanFix; /** * A trapezoid defined by two lines. * @see XTriangle */ typedef struct _XTrap { 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 */ } XConicalGradient; _XFUNCPROTOBEGIN /** @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); /** * 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); _XFUNCPROTOEND #endif /* _XRENDER_H_ */