LayoutIter#
- class LayoutIter(*args, **kwargs)#
A PangoLayoutIter
can be used to iterate over the visual
extents of a PangoLayout
.
To obtain a PangoLayoutIter
, use get_iter
.
The PangoLayoutIter
structure is opaque, and has no user-visible fields.
Methods#
- class LayoutIter
-
- get_baseline() int #
Gets the Y position of the current line’s baseline, in layout coordinates.
Layout coordinates have the origin at the top left of the entire layout.
- get_char_extents() Rectangle #
Gets the extents of the current character, in layout coordinates.
Layout coordinates have the origin at 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.
- get_cluster_extents() tuple[Rectangle, Rectangle] #
Gets the extents of the current cluster, in layout coordinates.
Layout coordinates have the origin at the top left of the entire layout.
- get_index() int #
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
None
run (seeget_run
).
- get_layout() Layout | None #
Gets the layout associated with a
PangoLayoutIter
.Added in version 1.20.
- get_layout_extents() tuple[Rectangle, Rectangle] #
Obtains the extents of the
PangoLayout
being iterated over.
- get_line() LayoutLine | None #
Gets the current line.
Use the faster
get_line_readonly
if you do not plan to modify the contents of the line (glyphs, glyph widths, etc.).
- get_line_extents() tuple[Rectangle, Rectangle] #
Obtains the extents of the current line.
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 fromget_extents
.
- get_line_readonly() LayoutLine | None #
Gets the current line for read-only access.
This is a faster alternative to
get_line
, but the user is not expected to modify the contents of the line (glyphs, glyph widths, etc.).Added in version 1.16.
- get_line_yrange() tuple[int, int] #
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
set_spacing
has been called to set layout spacing. The Y positions are in layout coordinates (origin at top left of the entire layout).Note: Since 1.44, Pango uses line heights for placing lines, and there may be gaps between the ranges returned by this function.
- get_run() GlyphItem | None #
Gets the current run.
When iterating by run, at the end of each line, there’s a position with a
None
run, so this function can returnNone
. TheNone
run at the end of each line ensures that all lines have at least one run, even lines consisting of only a newline.Use the faster
get_run_readonly
if you do not plan to modify the contents of the run (glyphs, glyph widths, etc.).
- get_run_baseline() int #
Gets the Y position of the current run’s baseline, in layout coordinates.
Layout coordinates have the origin at the top left of the entire layout.
The run baseline can be different from the line baseline, for example due to superscript or subscript positioning.
Added in version 1.50.
- get_run_extents() tuple[Rectangle, Rectangle] #
Gets the extents of the current run in layout coordinates.
Layout coordinates have the origin at the top left of the entire layout.
- get_run_readonly() GlyphItem | None #
Gets the current run for read-only access.
When iterating by run, at the end of each line, there’s a position with a
None
run, so this function can returnNone
. TheNone
run at the end of each line ensures that all lines have at least one run, even lines consisting of only a newline.This is a faster alternative to
get_run
, but the user is not expected to modify the contents of the run (glyphs, glyph widths, etc.).Added in version 1.16.
- next_char() bool #
Moves
iter
forward to the next character in visual order.If
iter
was already at the end of the layout, returnsFalse
.
- next_cluster() bool #
Moves
iter
forward to the next cluster in visual order.If
iter
was already at the end of the layout, returnsFalse
.