Handle.getGeometryForLayer

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.

Parameters

id string

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.

viewport rsvg.types.Rectangle

Viewport size at which the whole SVG would be fitted.

outInkRect rsvg.types.Rectangle

Place to store the ink rectangle of the element.

outLogicalRect rsvg.types.Rectangle

Place to store the logical rectangle of the element.

Return Value

Type: bool

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.