### Method

# Rsvg Handleget_geometry_for_layer

#### Declaration [src]

    gboolean
    rsvg_handle_get_geometry_for_layer (
      RsvgHandle* handle,
      const char* id,
      const RsvgRectangle* viewport,
      RsvgRectangle* out_ink_rect,
      RsvgRectangle* out_logical_rect,
      GError** error
    )

#### Description [src]

Computes the ink rectangle and logical rectangle of an SVG element, or the whole SVG, as if the whole SVG were rendered to a specific viewport.

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.

The “ink rectangle” is the bounding box that would be painted for fully-stroked and filled elements.

The “logical rectangle” just takes into account the unstroked paths and text outlines.

Note that these bounds are not minimum bounds; for example, clipping paths are not taken into account.

You can pass `NULL` for the `id` if you want to measure all the elements in the SVG, i.e. to measure everything from the root element.

This operation is not constant-time, as it involves going through all the child elements.

Available since: | 2.46

#### Parameters

`id` | `const char*`
| 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 compute the geometry for the whole SVG.
| The argument can be `NULL`.
| The data is owned by the caller of the function.
| The value is a NUL terminated UTF-8 string.
`viewport` | `RsvgRectangle`
| Viewport size at which the whole SVG would be fitted.
| The data is owned by the caller of the function.
`out_ink_rect` | `RsvgRectangle`
| Place to store the ink rectangle of the element.
| The argument will be set by the function.
| The argument can be `NULL`.
| The data is owned by the caller of the function.
`out_logical_rect` | `RsvgRectangle`
| Place to store the logical rectangle of the element.
| The argument will be set by the function.
| The argument can be `NULL`.
| The data is owned by the caller of the function.
`error` | `GError **`
| The return location for a `GError*`, or `NULL`.

#### Return value

Returns: | `gboolean`
| `TRUE` if the geometry could be obtained, or `FALSE` on error. Errors are returned in the `error` argument. API ordering: This function must be called on a fully-loaded `handle`. See the section “API ordering” for details. Panics: this function will panic if the `handle` is not fully-loaded.