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 <literal>foo</literal>) to get the geometry of the element that has an <literal>id="foo"</literal> 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.

API ordering: This function must be called on a fully-loaded @handle. See the section <ulink url="#API-ordering">API ordering</ulink> for details.

Panics: this function will panic if the @handle is not fully-loaded.

class Handle
bool
getGeometryForLayer

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 RsvgRectangle*

Viewport size at which the whole SVG would be fitted.

outInkRect RsvgRectangle

Place to store the ink rectangle of the element.

outLogicalRect RsvgRectangle

Place to store the logical rectangle of the element.

Throws

GException on failure.

Meta

Since

2.46