Class LayoutLine

All Implemented Interfaces:
Proxy

@Generated("org.javagi.JavaGI") public class LayoutLine extends ProxyInstance

A PangoLayoutLine represents one of the lines resulting from laying out a paragraph via PangoLayout.

PangoLayoutLine structures are obtained by calling Layout.getLine(int) and are only valid until the text, attributes, or settings of the parent PangoLayout are modified.

  • Constructor Details

    • LayoutLine

      public LayoutLine(MemorySegment address)
      Create a LayoutLine proxy instance for the provided memory address.
      Parameters:
      address - the memory address of the native object
    • LayoutLine

      public LayoutLine(Arena arena)
      Allocate a new LayoutLine.
      Parameters:
      arena - to control the memory allocation scope
    • LayoutLine

      public LayoutLine()
      Allocate a new LayoutLine. The memory is allocated with Arena.ofAuto().
    • LayoutLine

      public LayoutLine(Layout layout, int startIndex, int length, SList<LayoutRun> runs, Arena arena)
      Allocate a new LayoutLine with the fields set to the provided values.
      Parameters:
      layout - value for the field layout
      startIndex - value for the field startIndex
      length - value for the field length
      runs - value for the field runs
      arena - to control the memory allocation scope
    • LayoutLine

      public LayoutLine(Layout layout, int startIndex, int length, SList<LayoutRun> runs)
      Allocate a new LayoutLine with the fields set to the provided values. The memory is allocated with Arena.ofAuto().
      Parameters:
      layout - value for the field layout
      startIndex - value for the field startIndex
      length - value for the field length
      runs - value for the field runs
  • Method Details

    • getType

      public static @Nullable Type getType()
      Get the GType of the LayoutLine class.
      Returns:
      the GType
    • getMemoryLayout

      public static MemoryLayout getMemoryLayout()
      The memory layout of the native struct.
      Returns:
      the memory layout
    • readLayout

      public Layout readLayout()
      Read the value of the field layout.
      Returns:
      The value of the field layout
    • writeLayout

      public void writeLayout(Layout layout)
      Write a value in the field layout.
      Parameters:
      layout - The new value for the field layout
    • readStartIndex

      public int readStartIndex()
      Read the value of the field start_index.
      Returns:
      The value of the field start_index
    • writeStartIndex

      public void writeStartIndex(int startIndex)
      Write a value in the field start_index.
      Parameters:
      startIndex - The new value for the field start_index
    • readLength

      public int readLength()
      Read the value of the field length.
      Returns:
      The value of the field length
    • writeLength

      public void writeLength(int length)
      Write a value in the field length.
      Parameters:
      length - The new value for the field length
    • readRuns

      public SList<LayoutRun> readRuns()
      Read the value of the field runs.
      Returns:
      The value of the field runs
    • writeRuns

      public void writeRuns(SList<LayoutRun> runs)
      Write a value in the field runs.
      Parameters:
      runs - The new value for the field runs
    • getExtents

      public void getExtents(@Nullable Rectangle inkRect, @Nullable Rectangle logicalRect)

      Computes the logical and ink extents of a layout line.

      See Font.getGlyphExtents(Glyph, Rectangle, Rectangle) for details about the interpretation of the rectangles.

      Parameters:
      inkRect - rectangle used to store the extents of the glyph string as drawn
      logicalRect - rectangle used to store the logical extents of the glyph string
    • getHeight

      public void getHeight(@Nullable Out<Integer> height)

      Computes the height of the line, as the maximum of the heights of fonts used in this line.

      Note that the actual baseline-to-baseline distance between lines of text is influenced by other factors, such as Layout.setSpacing(int) and Layout.setLineSpacing(float).

      Parameters:
      height - return location for the line height
      Since:
      1.44
    • getLength

      public int getLength()
      Returns the length of the line, in bytes.
      Returns:
      the length of the line
      Since:
      1.50
    • getPixelExtents

      public void getPixelExtents(@Nullable Rectangle inkRect, @Nullable Rectangle logicalRect)

      Computes the logical and ink extents of this LayoutLine in device units.

      This function just calls getExtents(Rectangle, Rectangle) followed by two Pango.extentsToPixels(Rectangle, Rectangle) calls, rounding inkRect and logicalRect such that the rounded rectangles fully contain the unrounded one (that is, passes them as first argument to Pango.extentsToPixels(Rectangle, Rectangle)).

      Parameters:
      inkRect - rectangle used to store the extents of the glyph string as drawn
      logicalRect - rectangle used to store the logical extents of the glyph string
    • getResolvedDirection

      public Direction getResolvedDirection()
      Returns the resolved direction of the line.
      Returns:
      the resolved direction of the line
      Since:
      1.50
    • getStartIndex

      public int getStartIndex()
      Returns the start index of the line, as byte index into the text of the layout.
      Returns:
      the start index of the line
      Since:
      1.50
    • getXRanges

      public void getXRanges(int startIndex, int endIndex, @Nullable Out<int[]> ranges)

      Gets a list of visual ranges corresponding to a given logical range.

      This list is not necessarily minimal - there may be consecutive ranges which are adjacent. The ranges will be sorted from left to right. The ranges are with respect to the left edge of the entire layout, not with respect to the line.

      Parameters:
      startIndex - Start byte index of the logical range. If this value is less than the start index for the line, then the first range will extend all the way to the leading edge of the layout. Otherwise, it will start at the leading edge of the first character.
      endIndex - Ending byte index of the logical range. If this value is greater than the end index for the line, then the last range will extend all the way to the trailing edge of the layout. Otherwise, it will end at the trailing edge of the last character.
      ranges - location to store a pointer to an array of ranges. The array will be of length 2*n_ranges, with each range starting at (*ranges)[2*n] and of width (*ranges)[2*n + 1] - (*ranges)[2*n]. This array must be freed with g_free(). The coordinates are relative to the layout and are in Pango units.
    • indexToX

      public void indexToX(int index, boolean trailing, Out<Integer> xPos)
      Converts an index within a line to a X position.
      Parameters:
      index - byte offset of a grapheme within the layout
      trailing - an integer indicating the edge of the grapheme to retrieve the position of. If > 0, the trailing edge of the grapheme, if 0, the leading of the grapheme
      xPos - location to store the x_offset (in Pango units)
    • isParagraphStart

      public boolean isParagraphStart()
      Returns whether this is the first line of the paragraph.
      Returns:
      true if this is the first line
      Since:
      1.50
    • ref

      public @Nullable LayoutLine ref()
      Increase the reference count of a PangoLayoutLine by one.
      Returns:
      the line passed in.
      Since:
      1.10
    • unref

      public void unref()

      Decrease the reference count of a PangoLayoutLine by one.

      If the result is zero, the line and all associated memory will be freed.

    • xToIndex

      public boolean xToIndex(int xPos, Out<Integer> index, Out<Integer> trailing)

      Converts from x offset to the byte index of the corresponding character within the text of the layout.

      If xPos is outside the line, index and trailing will point to the very first or very last position in the line. This determination is based on the resolved direction of the paragraph; for example, if the resolved direction is right-to-left, then an X position to the right of the line (after it) results in 0 being stored in index and trailing. An X position to the left of the line results in index pointing to the (logical) last grapheme in the line and trailing being set to the number of characters in that grapheme. The reverse is true for a left-to-right line.

      Parameters:
      xPos - the X offset (in Pango units) from the left edge of the line.
      index - location to store calculated byte index for the grapheme in which the user clicked
      trailing - location to store an integer indicating where in the grapheme the user clicked. It will either be zero, or the number of characters in the grapheme. 0 represents the leading edge of the grapheme.
      Returns:
      false if xPos was outside the line, true if inside