### Struct

# Pango.LayoutIter

#### Description [src]

    struct PangoLayoutIter {
      /* No available fields */
    }

A `PangoLayoutIter` can be used to iterate over the visual extents of a `PangoLayout`.

To obtain a `PangoLayoutIter`, use `pango_layout_get_iter()`.

The `PangoLayoutIter` structure is opaque, and has no user-visible fields.

#### Instance methods

###### pango_layout_iter_at_last_line

Determines whether `iter` is on the last line of the layout.

###### pango_layout_iter_copy

Copies a `PangoLayoutIter`.

###### pango_layout_iter_free

Frees an iterator that’s no longer in use.

###### pango_layout_iter_get_baseline

Gets the Y position of the current line’s baseline, in layout coordinates (origin at top left of the entire layout).

###### pango_layout_iter_get_char_extents

Gets the extents of the current character, in layout coordinates (origin is the top left of the entire layout). Only logical extents can sensibly be obtained for characters; ink extents make sense only down to the level of clusters.

###### pango_layout_iter_get_cluster_extents

Gets the extents of the current cluster, in layout coordinates (origin is the top left of the entire layout).

###### pango_layout_iter_get_index

Gets the current byte index. Note that iterating forward by char moves in visual order, not logical order, so indexes may not be sequential. Also, the index may be equal to the length of the text in the layout, if on the `NULL` run (see `pango_layout_iter_get_run()`).

###### pango_layout_iter_get_layout

Gets the layout associated with a `PangoLayoutIter`.

###### pango_layout_iter_get_layout_extents

Obtains the extents of the `PangoLayout` being iterated over. `ink_rect` or `logical_rect` can be `NULL` if you aren’t interested in them.

###### pango_layout_iter_get_line

Gets the current line.

###### pango_layout_iter_get_line_extents

Obtains the extents of the current line. `ink_rect` or `logical_rect` can be `NULL` if you aren’t interested in them. Extents are in layout coordinates (origin is the top-left corner of the entire `PangoLayout`). Thus the extents returned by this function will be the same width/height but not at the same x/y as the extents returned from `pango_layout_line_get_extents()`.

###### pango_layout_iter_get_line_readonly

Gets the current line for read-only access.

###### pango_layout_iter_get_line_yrange

Divides the vertical space in the `PangoLayout` being iterated over between the lines in the layout, and returns the space belonging to the current line. A line’s range includes the line’s logical extents, plus half of the spacing above and below the line, if `pango_layout_set_spacing()` has been called to set layout spacing. The Y positions are in layout coordinates (origin at top left of the entire layout).

###### pango_layout_iter_get_run

Gets the current run. When iterating by run, at the end of each line, there’s a position with a `NULL` run, so this function can return `NULL`. The `NULL` run at the end of each line ensures that all lines have at least one run, even lines consisting of only a newline.

###### pango_layout_iter_get_run_extents

Gets the extents of the current run in layout coordinates (origin is the top left of the entire layout).

###### pango_layout_iter_get_run_readonly

Gets the current run. When iterating by run, at the end of each line, there’s a position with a `NULL` run, so this function can return `NULL`. The `NULL` run at the end of each line ensures that all lines have at least one run, even lines consisting of only a newline.

###### pango_layout_iter_next_char

Moves `iter` forward to the next character in visual order. If `iter` was already at the end of the layout, returns `FALSE`.

###### pango_layout_iter_next_cluster

Moves `iter` forward to the next cluster in visual order. If `iter` was already at the end of the layout, returns `FALSE`.

###### pango_layout_iter_next_line

Moves `iter` forward to the start of the next line. If `iter` is already on the last line, returns `FALSE`.

###### pango_layout_iter_next_run

Moves `iter` forward to the next run in visual order. If `iter` was already at the end of the layout, returns `FALSE`.