Class LayoutIter

All Implemented Interfaces:
PointerInterface

public class LayoutIter extends Record
A `PangoLayoutIter` can be used to iterate over the visual
extents of a `PangoLayout`.

To obtain a `PangoLayoutIter`, use [method@Pango.Layout.get_iter].

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

https://docs.gtk.org/Pango/struct.LayoutIter.html

  • Constructor Details

  • Method Details

    • getClassHandler

      public static ClassHandler getClassHandler()
    • atLastLine

      public boolean atLastLine()
      Determines whether @iter is on the last line of the layout.
      Returns:
      %TRUE if @iter is on the last line
    • copy

      public LayoutIter copy()
      Copies a `PangoLayoutIter`.
      Returns:
      the newly allocated `PangoLayoutIter`
    • free

      public void free()
      Frees an iterator that's no longer in use.
    • getBaseline

      public int getBaseline()
      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.
      Returns:
      baseline of current line
    • getCharExtents

      public void getCharExtents(@Nonnull Rectangle logical_rect)
      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.
      Parameters:
      logical_rect - rectangle to fill with logical extents
    • getClusterExtents

      public void getClusterExtents(@Nullable Rectangle ink_rect, @Nullable Rectangle logical_rect)
      Gets the extents of the current cluster, in layout coordinates.

      Layout coordinates have the origin at the top left of the entire layout.
      Parameters:
      ink_rect - rectangle to fill with ink extents
      logical_rect - rectangle to fill with logical extents
    • getIndex

      public int getIndex()
      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 [method@Pango.LayoutIter.get_run]).
      Returns:
      current byte index
    • getLayout

      public Layout getLayout()
      Gets the layout associated with a `PangoLayoutIter`.
      Returns:
      the layout associated with @iter
    • getLayoutExtents

      public void getLayoutExtents(@Nullable Rectangle ink_rect, @Nullable Rectangle logical_rect)
      Obtains the extents of the `PangoLayout` being iterated over.
      Parameters:
      ink_rect - rectangle to fill with ink extents
      logical_rect - rectangle to fill with logical extents
    • getLine

      public LayoutLine getLine()
      Gets the current line.

      Use the faster [method@Pango.LayoutIter.get_line_readonly] if
      you do not plan to modify the contents of the line (glyphs,
      glyph widths, etc.).
      Returns:
      the current line
    • getLineExtents

      public void getLineExtents(@Nullable Rectangle ink_rect, @Nullable Rectangle logical_rect)
      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 from [method@Pango.LayoutLine.get_extents].
      Parameters:
      ink_rect - rectangle to fill with ink extents
      logical_rect - rectangle to fill with logical extents
    • getLineReadonly

      public LayoutLine getLineReadonly()
      Gets the current line for read-only access.

      This is a faster alternative to [method@Pango.LayoutIter.get_line],
      but the user is not expected to modify the contents of the line
      (glyphs, glyph widths, etc.).
      Returns:
      the current line, that should not be modified
    • getLineYrange

      public void getLineYrange(@Nullable Int y0_, @Nullable Int y1_)
      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 [method@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).

      Note: Since 1.44, Pango uses line heights for placing lines, and there
      may be gaps between the ranges returned by this function.
      Parameters:
      y0_ - start of line
      y1_ - end of line
    • getRun

      public GlyphItem getRun()
      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.

      Use the faster [method@Pango.LayoutIter.get_run_readonly] if you do not
      plan to modify the contents of the run (glyphs, glyph widths, etc.).
      Returns:
      the current run
    • getRunBaseline

      public int getRunBaseline()
      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.
      Returns:
    • getRunExtents

      public void getRunExtents(@Nullable Rectangle ink_rect, @Nullable Rectangle logical_rect)
      Gets the extents of the current run in layout coordinates.

      Layout coordinates have the origin at the top left of the entire layout.
      Parameters:
      ink_rect - rectangle to fill with ink extents
      logical_rect - rectangle to fill with logical extents
    • getRunReadonly

      public GlyphItem getRunReadonly()
      Gets the current run for read-only access.

      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.

      This is a faster alternative to [method@Pango.LayoutIter.get_run],
      but the user is not expected to modify the contents of the run (glyphs,
      glyph widths, etc.).
      Returns:
      the current run, that should not be modified
    • nextChar

      public boolean nextChar()
      Moves @iter forward to the next character in visual order.

      If @iter was already at the end of the layout, returns %FALSE.
      Returns:
      whether motion was possible
    • nextCluster

      public boolean nextCluster()
      Moves @iter forward to the next cluster in visual order.

      If @iter was already at the end of the layout, returns %FALSE.
      Returns:
      whether motion was possible
    • nextLine

      public boolean nextLine()
      Moves @iter forward to the start of the next line.

      If @iter is already on the last line, returns %FALSE.
      Returns:
      whether motion was possible
    • nextRun

      public boolean nextRun()
      Moves @iter forward to the next run in visual order.

      If @iter was already at the end of the layout, returns %FALSE.
      Returns:
      whether motion was possible
    • getTypeID

      public static long getTypeID()
    • getParentTypeID

      public static long getParentTypeID()
    • getTypeSize

      public static TypeSystem.TypeSize getTypeSize()
    • getParentTypeSize

      public static TypeSystem.TypeSize getParentTypeSize()
    • getInstanceSize

      public static int getInstanceSize()