## Using RSVG with GdkPixbuf

Using RSVG with GdkPixbuf — How to render SVGs into GdkPixbufs, for easy use in GTK+ applications

## Functions

GdkPixbuf * | rsvg_handle_get_pixbuf ()
GdkPixbuf * | rsvg_handle_get_pixbuf_sub ()
GdkPixbuf * | rsvg_pixbuf_from_file ()
GdkPixbuf * | rsvg_pixbuf_from_file_at_zoom ()
GdkPixbuf * | rsvg_pixbuf_from_file_at_size ()
GdkPixbuf * | rsvg_pixbuf_from_file_at_max_size ()
GdkPixbuf * | rsvg_pixbuf_from_file_at_zoom_with_max ()

## Description

GdkPixbuf is a library for image loading and manipulation. It is part of the cross-platform GTK+ widget toolkit.

## Functions

### rsvg_handle_get_pixbuf ()

    GdkPixbuf *
    rsvg_handle_get_pixbuf (RsvgHandle *handle);

Returns the pixbuf loaded by `handle` . The pixbuf returned will be reffed, so the caller of this function must assume that ref. If insufficient data has been read to create the pixbuf, or an error occurred in loading, then `NULL` will be returned. Note that the pixbuf may not be complete until `rsvg_handle_close` has been called.

This function depends on the RsvgHandle's DPI to compute dimensions in pixels, so you should call `rsvg_handle_set_dpi()` beforehand.

#### Parameters

handle | An RsvgHandle |

#### Returns

the pixbuf loaded by `handle` , or `NULL`.

[transfer full][nullable]

### rsvg_handle_get_pixbuf_sub ()

    GdkPixbuf *
    rsvg_handle_get_pixbuf_sub (RsvgHandle *handle,
                                const char *id);

Creates a GdkPixbuf the same size as the entire SVG loaded into `handle` , but only renders the sub-element that has the specified `id` (and all its sub-sub-elements recursively). If `id` is NULL, this function renders the whole SVG.

This function depends on the RsvgHandle's DPI to compute dimensions in pixels, so you should call `rsvg_handle_set_dpi()` beforehand.

If you need to render an image which is only big enough to fit a particular sub-element of the SVG, consider using `rsvg_handle_render_cairo_sub()`, upon a surface that is just the size returned by `rsvg_handle_get_dimensions_sub()`. You will need to offset the rendering by the amount returned in `rsvg_handle_get_position_sub()`.

Element IDs should look like an URL fragment identifier; for example, pass "#foo" (hash `foo`) to get the geometry of the element that has an `id="foo"` attribute.

#### Parameters

handle | An RsvgHandle |
id | An element's id within the SVG, starting with "##" (a single hash character), for example, "#layer1". This notation corresponds to a URL's fragment ID. Alternatively, pass `NULL` to use the whole SVG. | [nullable]

#### Returns

a pixbuf, or `NULL` if an error occurs during rendering.

[transfer full][nullable]

Since: 2.14

### rsvg_pixbuf_from_file ()

    GdkPixbuf *
    rsvg_pixbuf_from_file (const gchar *filename,
                           GError **error);

`rsvg_pixbuf_from_file` is deprecated and should not be used in newly-written code.

Set up a cairo matrix and use `rsvg_handle_new_from_file()` + `rsvg_handle_render_cairo()` instead.

Loads a new GdkPixbuf from `filename` and returns it. The caller must assume the reference to the reurned pixbuf. If an error occurred, `error` is set and `NULL` is returned.

#### Parameters

filename | A file name |
error | return location for errors |

#### Returns

A newly allocated GdkPixbuf, or `NULL`

### rsvg_pixbuf_from_file_at_zoom ()

    GdkPixbuf *
    rsvg_pixbuf_from_file_at_zoom (const gchar *filename,
                                   double x_zoom,
                                   double y_zoom,
                                   GError **error);

`rsvg_pixbuf_from_file_at_zoom` is deprecated and should not be used in newly-written code.

Set up a cairo matrix and use `rsvg_handle_new_from_file()` + `rsvg_handle_render_cairo()` instead.

Loads a new GdkPixbuf from `filename` and returns it. This pixbuf is scaled from the size indicated by the file by a factor of `x_zoom` and `y_zoom` . The caller must assume the reference to the returned pixbuf. If an error occurred, `error` is set and `NULL` is returned.

#### Parameters

filename | A file name |
x_zoom | The horizontal zoom factor |
y_zoom | The vertical zoom factor |
error | return location for errors |

#### Returns

A newly allocated GdkPixbuf, or `NULL`

### rsvg_pixbuf_from_file_at_size ()

    GdkPixbuf *
    rsvg_pixbuf_from_file_at_size (const gchar *filename,
                                   gint width,
                                   gint height,
                                   GError **error);

`rsvg_pixbuf_from_file_at_size` is deprecated and should not be used in newly-written code.

Set up a cairo matrix and use `rsvg_handle_new_from_file()` + `rsvg_handle_render_cairo()` instead.

Loads a new GdkPixbuf from `filename` and returns it. This pixbuf is scaled from the size indicated to the new size indicated by `width` and `height` . If both of these are -1, then the default size of the image being loaded is used. The caller must assume the reference to the returned pixbuf. If an error occurred, `error` is set and `NULL` is returned.

#### Parameters

filename | A file name |
width | The new width, or -1 |
height | The new height, or -1 |
error | return location for errors |

#### Returns

A newly allocated GdkPixbuf, or `NULL`

### rsvg_pixbuf_from_file_at_max_size ()

    GdkPixbuf *
    rsvg_pixbuf_from_file_at_max_size (const gchar *filename,
                                       gint max_width,
                                       gint max_height,
                                       GError **error);

`rsvg_pixbuf_from_file_at_max_size` is deprecated and should not be used in newly-written code.

Set up a cairo matrix and use `rsvg_handle_new_from_file()` + `rsvg_handle_render_cairo()` instead.

Loads a new GdkPixbuf from `filename` and returns it. This pixbuf is uniformly scaled so that the it fits into a rectangle of size max_width * max_height. The caller must assume the reference to the returned pixbuf. If an error occurred, `error` is set and `NULL` is returned.

#### Parameters

filename | A file name |
max_width | The requested max width |
max_height | The requested max height |
error | return location for errors |

#### Returns

A newly allocated GdkPixbuf, or `NULL`

### rsvg_pixbuf_from_file_at_zoom_with_max ()

    GdkPixbuf *
    rsvg_pixbuf_from_file_at_zoom_with_max
                                   (const gchar *filename,
                                    double x_zoom,
                                    double y_zoom,
                                    gint max_width,
                                    gint max_height,
                                    GError **error);

`rsvg_pixbuf_from_file_at_zoom_with_max` is deprecated and should not be used in newly-written code.

Set up a cairo matrix and use `rsvg_handle_new_from_file()` + `rsvg_handle_render_cairo()` instead.

Loads a new GdkPixbuf from `filename` and returns it. This pixbuf is scaled from the size indicated by the file by a factor of `x_zoom` and `y_zoom` . If the resulting pixbuf would be larger than max_width/max_heigh it is uniformly scaled down to fit in that rectangle. The caller must assume the reference to the returned pixbuf. If an error occurred, `error` is set and `NULL` is returned.

#### Parameters

filename | A file name |
x_zoom | The horizontal zoom factor |
y_zoom | The vertical zoom factor |
max_width | The requested max width |
max_height | The requested max height |
error | return location for errors |

#### Returns

A newly allocated GdkPixbuf, or `NULL`