/* * * 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_ */