Class GlyphString

java.lang.Object
org.javagi.base.ProxyInstance
org.gnome.pango.GlyphString
All Implemented Interfaces:
Proxy

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

A PangoGlyphString is used to store strings of glyphs with geometry and visual attribute information.

The storage for the glyph information is owned by the structure which simplifies memory management.

  • Constructor Details

    • GlyphString

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

      public GlyphString()
      Create a new PangoGlyphString.
  • Method Details

    • getType

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

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

      public int readNumGlyphs()
      Read the value of the field num_glyphs.
      Returns:
      The value of the field num_glyphs
    • writeNumGlyphs

      public void writeNumGlyphs(int numGlyphs)
      Write a value in the field num_glyphs.
      Parameters:
      numGlyphs - The new value for the field num_glyphs
    • readGlyphs

      public @Nullable GlyphInfo @Nullable [] readGlyphs()
      Read the value of the field glyphs.
      Returns:
      The value of the field glyphs
    • writeGlyphs

      public void writeGlyphs(@Nullable GlyphInfo @Nullable [] glyphs, Arena _arena)
      Write a value in the field glyphs.
      Parameters:
      glyphs - The new value for the field glyphs
      _arena - to control the memory allocation scope
    • readLogClusters

      public MemorySegment readLogClusters()
      Read the value of the field log_clusters.
      Returns:
      The value of the field log_clusters
    • writeLogClusters

      public void writeLogClusters(MemorySegment logClusters)
      Write a value in the field log_clusters.
      Parameters:
      logClusters - The new value for the field log_clusters
    • readSpace

      public int readSpace()
      Read the value of the field space.
      Returns:
      The value of the field space
    • writeSpace

      public void writeSpace(int space)
      Write a value in the field space.
      Parameters:
      space - The new value for the field space
    • copy

      public @Nullable GlyphString copy()
      Copy a glyph string and associated storage.
      Returns:
      the newly allocated PangoGlyphString
    • extents

      public void extents(Font font, @Nullable Rectangle inkRect, @Nullable Rectangle logicalRect)

      Compute the logical and ink extents of a glyph string.

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

      Examples of logical (red) and ink (green) rects:

      Parameters:
      font - a PangoFont
      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
    • extentsRange

      public void extentsRange(int start, int end, Font font, @Nullable Rectangle inkRect, @Nullable Rectangle logicalRect)

      Computes the extents of a sub-portion of a glyph string.

      The extents are relative to the start of the glyph string range (the origin of their coordinate system is at the start of the range, not at the start of the entire glyph string).

      Parameters:
      start - start index
      end - end index (the range is the set of bytes with indices such that start <= index < end)
      font - a PangoFont
      inkRect - rectangle used to store the extents of the glyph string range as drawn
      logicalRect - rectangle used to store the logical extents of the glyph string range
    • free

      public void free()
      Free a glyph string and associated storage.
    • getLogicalWidths

      public void getLogicalWidths(String text, int length, int embeddingLevel, @Nullable int @Nullable [] logicalWidths)

      Given a PangoGlyphString and corresponding text, determine the width corresponding to each character.

      When multiple characters compose a single cluster, the width of the entire cluster is divided equally among the characters.

      See also GlyphItem.getLogicalWidths(String, int[]).

      Parameters:
      text - the text corresponding to the glyphs
      length - the length of text, in bytes
      embeddingLevel - the embedding level of the string
      logicalWidths - an array whose length is the number of characters in text (equal to g_utf8_strlen (text, length) unless text has NUL bytes) to be filled in with the resulting character widths.
    • getWidth

      public int getWidth()

      Computes the logical width of the glyph string.

      This can also be computed using extents(Font, Rectangle, Rectangle). However, since this only computes the width, it's much faster. This is in fact only a convenience function that computes the sum of geometry.width for each glyph in the glyphs.

      Returns:
      the logical width of the glyph string.
      Since:
      1.14
    • indexToX

      public void indexToX(String text, int length, Analysis analysis, int index, boolean trailing, @Nullable Out<Integer> xPos)

      Converts from character position to x position.

      The X position is measured from the left edge of the run. Character positions are obtained using font metrics for ligatures where available, and computed by dividing up each cluster into equal portions, otherwise.

      Glyph positions
      Parameters:
      text - the text for the run
      length - the number of bytes (not characters) in text.
      analysis - the analysis information return from Pango.itemize(Context, String, int, int, AttrList, AttrIterator)
      index - the byte index within text
      trailing - whether we should compute the result for the beginning (false) or end (true) of the character.
      xPos - location to store result
    • indexToXFull

      public void indexToXFull(String text, int length, Analysis analysis, @Nullable LogAttr attrs, int index, boolean trailing, @Nullable Out<Integer> xPos)

      Converts from character position to x position.

      This variant of indexToX(String, int, Analysis, int, boolean, Out) additionally accepts a PangoLogAttr array. The grapheme boundary information in it can be used to disambiguate positioning inside some complex clusters.

      Parameters:
      text - the text for the run
      length - the number of bytes (not characters) in text.
      analysis - the analysis information return from Pango.itemize(Context, String, int, int, AttrList, AttrIterator)
      attrs - PangoLogAttr array for text
      index - the byte index within text
      trailing - whether we should compute the result for the beginning (false) or end (true) of the character.
      xPos - location to store result
      Since:
      1.50
    • setSize

      public void setSize(int newLen)
      Resize a glyph string to the given length.
      Parameters:
      newLen - the new length of the string
    • xToIndex

      public void xToIndex(String text, int length, Analysis analysis, int xPos, @Nullable Out<Integer> index, @Nullable Out<Integer> trailing)

      Convert from x offset to character position.

      Character positions are computed by dividing up each cluster into equal portions. In scripts where positioning within a cluster is not allowed (such as Thai), the returned value may not be a valid cursor position; the caller must combine the result with the logical attributes for the text to compute the valid cursor position.

      Parameters:
      text - the text for the run
      length - the number of bytes (not characters) in text.
      analysis - the analysis information return from Pango.itemize(Context, String, int, int, AttrList, AttrIterator)
      xPos - the x offset (in Pango units)
      index - location to store calculated byte index within text
      trailing - location to store a boolean indicating whether the user clicked on the leading or trailing edge of the character