## XLib-XRender Backend XLib-XRender Backend — X Window System rendering using XLib and the X Render extension |

## Synopsis

    #define             CAIRO_HAS_XLIB_XRENDER_SURFACE
    cairo_surface_t *   cairo_xlib_surface_create_with_xrender_format
                                                            (Display *dpy,
                                                             Drawable drawable,
                                                             Screen *screen,
                                                             XRenderPictFormat *format,
                                                             int width,
                                                             int height);
    XRenderPictFormat * cairo_xlib_surface_get_xrender_format
                                                            (cairo_surface_t *surface);

## Description

The XLib surface is used to render cairo graphics to X Window System windows and pixmaps using the XLib and Xrender libraries.

Note that the XLib surface automatically takes advantage of X Render extension if it is available.

## Details

### CAIRO_HAS_XLIB_XRENDER_SURFACE

    #define CAIRO_HAS_XLIB_XRENDER_SURFACE 1

Defined if the XLib/XRender surface functions are available. This macro can be used to conditionally compile backend-specific code.

Since 1.6

### cairo_xlib_surface_create_with_xrender_format ()

    cairo_surface_t *   cairo_xlib_surface_create_with_xrender_format
                                                            (Display *dpy,
                                                             Drawable drawable,
                                                             Screen *screen,
                                                             XRenderPictFormat *format,
                                                             int width,
                                                             int height);

Creates an Xlib surface that draws to the given drawable. The way that colors are represented in the drawable is specified by the provided picture format.

Note: If `drawable` is a Window, then the function `cairo_xlib_surface_set_size()` must be called whenever the size of the window changes.

`dpy` : | an X Display
`drawable` : | an X Drawable, (a Pixmap or a Window)
`screen` : | the X Screen associated with `drawable`
`format` : | the picture format to use for drawing to `drawable`. The depth of `format` must match the depth of the drawable.
`width` : | the current width of `drawable`.
`height` : | the current height of `drawable`.
Returns : | the newly created surface

Since 1.0

### cairo_xlib_surface_get_xrender_format ()

    XRenderPictFormat * cairo_xlib_surface_get_xrender_format
                                                            (cairo_surface_t *surface);

Gets the X Render picture format that `surface` uses for rendering with the X Render extension. If the surface was created by `cairo_xlib_surface_create_with_xrender_format()` originally, the return value is the format passed to that constructor.

`surface` : | an xlib surface
Returns : | the XRenderPictFormat* associated with `surface`, or `NULL` if the surface is not an xlib surface or if the X Render extension is not available.

Since 1.6

## See Also

cairo_surface_t