get_intrinsic_size_in_pixels


Description:

[ Version ( since = "2.52" ) ]
public bool get_intrinsic_size_in_pixels (out double out_width, out double out_height)

Converts an SVG document's intrinsic dimensions to pixels, and returns the result.

This function is able to extract the size in pixels from an SVG document if the document has both `width` and `height` attributes with physical units (px, in, cm, mm, pt, pc) or font-based units (em, ex). For physical units, the dimensions are normalized to pixels using the dots-per-inch (DPI) value set previously with [method@Rsvg.Handle.set_dpi]. For font-based units, this function uses the computed value of the `font-size` property for the toplevel `<svg>` element. In those cases, this function returns `TRUE`.

This function is not able to extract the size in pixels directly from the intrinsic dimensions of the SVG document if the `width` or `height` are in percentage units (or if they do not exist, in which case the SVG spec mandates that they default to 100%), as these require a < firstterm>viewport</firstterm> to be resolved to a final size. In this case, the function returns `FALSE`.

For example, the following document fragment has intrinsic dimensions that will resolve to 20x30 pixels.

``` <svg xmlns="http://www.w3.org/2000/svg" width="20" height="30"/> ```

Similarly, if the DPI is set to 96, this document will resolve to 192×288 pixels (i.e. 96×2 × 96×3).

``` <svg xmlns="http://www.w3.org/2000/svg" width="2in" height="3in"/> ```

The dimensions of the following documents cannot be resolved to pixels directly, and this function would return `FALSE` for them:

``` <!-- Needs a viewport against which to compute the percentages. --> <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%"/>

<!-- Does not have intrinsic width/height, just a 1:2 aspect ratio which needs to be fitted within a viewport. --> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 200"/> ```

Instead of querying an SVG document's size, applications are encouraged to render SVG documents to a size chosen by the application, by passing a suitably-sized viewport to [method@Rsvg.Handle.render_document].

Parameters:

this

An [class@Rsvg.Handle]

out_width

Will be set to the computed width; you should round this up to get integer pixels.

out_height

Will be set to the computed height; you should round this up to get integer pixels.

Returns:

`TRUE` if the dimensions could be converted directly to pixels; in this case out_width and out_height will be set accordingly. Note that the dimensions are floating-point numbers, so your application can know the exact size of an SVG document. To get integer dimensions, you should use `ceil()` to round up to the nearest integer (just using `round()`, may may chop off pixels with fractional coverage). If the dimensions cannot be converted to pixels, returns `FALSE` and puts 0.0 in both out_width and out_height.