Xlib Rendering

Xlib Rendering — Rendering a pixbuf to an X drawable.

Functions

Includes

#include <gdk-pixbuf/gdk-pixbuf.h>

Description

The &gdk-pixbuf; Xlib library provides several convenience functions to render pixbufs to X drawables. It uses XlibRGB to render the image data.

These functions are analogous to those for the GDK version of &gdk-pixbuf;.

Functions

gdk_pixbuf_xlib_render_threshold_alpha ()

void
gdk_pixbuf_xlib_render_threshold_alpha
                               (GdkPixbuf *pixbuf,
                                Pixmap bitmap,
                                int src_x,
                                int src_y,
                                int dest_x,
                                int dest_y,
                                int width,
                                int height,
                                int alpha_threshold);

Takes the opacity values in a rectangular portion of a pixbuf and thresholds them to produce a bi-level alpha mask that can be used as a clipping mask for a drawable.

Parameters

pixbuf

A pixbuf.

 

bitmap

Bitmap where the bilevel mask will be painted to.

 

src_x

Source X coordinate.

 

src_y

source Y coordinate.

 

dest_x

Destination X coordinate.

 

dest_y

Destination Y coordinate.

 

width

Width of region to threshold.

 

height

Height of region to threshold.

 

alpha_threshold

Opacity values below this will be painted as zero; all other values will be painted as one.

 

gdk_pixbuf_xlib_render_to_drawable ()

void
gdk_pixbuf_xlib_render_to_drawable (GdkPixbuf *pixbuf,
                                    Drawable drawable,
                                    GC gc,
                                    int src_x,
                                    int src_y,
                                    int dest_x,
                                    int dest_y,
                                    int width,
                                    int height,
                                    XlibRgbDither dither,
                                    int x_dither,
                                    int y_dither);

Renders a rectangular portion of a pixbuf to a drawable while using the specified GC. This is done using XlibRGB, so the specified drawable must have the XlibRGB visual and colormap. Note that this function will ignore the opacity information for images with an alpha channel; the GC must already have the clipping mask set if you want transparent regions to show through.

For an explanation of dither offsets, see the XlibRGB documentation. In brief, the dither offset is important when re-rendering partial regions of an image to a rendered version of the full image, or for when the offsets to a base position change, as in scrolling. The dither matrix has to be shifted for consistent visual results. If you do not have any of these cases, the dither offsets can be both zero.

Parameters

pixbuf

A pixbuf.

 

drawable

Destination drawable.

 

gc

GC used for rendering.

 

src_x

Source X coordinate within pixbuf.

 

src_y

Source Y coordinate within pixbuf.

 

dest_x

Destination X coordinate within drawable.

 

dest_y

Destination Y coordinate within drawable.

 

width

Width of region to render, in pixels.

 

height

Height of region to render, in pixels.

 

dither

Dithering mode for XlibRGB.

 

x_dither

X offset for dither.

 

y_dither

Y offset for dither.

 

gdk_pixbuf_xlib_render_to_drawable_alpha ()

void
gdk_pixbuf_xlib_render_to_drawable_alpha
                               (GdkPixbuf *pixbuf,
                                Drawable drawable,
                                int src_x,
                                int src_y,
                                int dest_x,
                                int dest_y,
                                int width,
                                int height,
                                GdkPixbufAlphaMode alpha_mode,
                                int alpha_threshold,
                                XlibRgbDither dither,
                                int x_dither,
                                int y_dither);

Renders a rectangular portion of a pixbuf to a drawable. This is done using XlibRGB, so the specified drawable must have the XlibRGB visual and colormap.

When used with GDK_PIXBUF_ALPHA_BILEVEL, this function has to create a bitmap out of the thresholded alpha channel of the image and, it has to set this bitmap as the clipping mask for the GC used for drawing. This can be a significant performance penalty depending on the size and the complexity of the alpha channel of the image. If performance is crucial, consider handling the alpha channel yourself (possibly by caching it in your application) and using gdk_pixbuf_xlib_render_to_drawable() or GdkRGB directly instead.

Parameters

pixbuf

A pixbuf.

 

drawable

Destination drawable.

 

src_x

Source X coordinate within pixbuf.

 

src_y

Source Y coordinates within pixbuf.

 

dest_x

Destination X coordinate within drawable.

 

dest_y

Destination Y coordinate within drawable.

 

width

Width of region to render, in pixels.

 

height

Height of region to render, in pixels.

 

alpha_mode

If the image does not have opacity information, this is ignored. Otherwise, specifies how to handle transparency when rendering.

 

alpha_threshold

If the image does have opacity information and alpha_mode is GDK_PIXBUF_ALPHA_BILEVEL, specifies the threshold value for opacity values.

 

dither

Dithering mode for XlibRGB.

 

x_dither

X offset for dither.

 

y_dither

Y offset for dither.

 

gdk_pixbuf_xlib_render_pixmap_and_mask ()

void
gdk_pixbuf_xlib_render_pixmap_and_mask
                               (GdkPixbuf *pixbuf,
                                Pixmap *pixmap_return,
                                Pixmap *mask_return,
                                int alpha_threshold);

Creates a pixmap and a mask bitmap which are returned in the pixmap_return and mask_return arguments, respectively, and renders a pixbuf and its corresponding tresholded alpha mask to them. This is merely a convenience function; applications that need to render pixbufs with dither offsets or to given drawables should use gdk_pixbuf_xlib_render_to_drawable_alpha() or gdk_pixbuf_xlib_render_to_drawable(), and gdk_pixbuf_xlib_render_threshold_alpha().

If the pixbuf does not have an alpha channel, then *mask_return will be set to None.

Parameters

pixbuf

A pixbuf.

 

pixmap_return

Return value for the created pixmap.

 

mask_return

Return value for the created mask.

 

alpha_threshold

Threshold value for opacity values.

 

Types and Values