Class AttrList

All Implemented Interfaces:
PointerInterface

public class AttrList extends Record
A `PangoAttrList` represents a list of attributes that apply to a section
of text.

The attributes in a `PangoAttrList` are, in general, allowed to overlap in
an arbitrary fashion. However, if the attributes are manipulated only through
[method@Pango.AttrList.change], the overlap between properties will meet
stricter criteria.

Since the `PangoAttrList` structure is stored as a linear list, it is not
suitable for storing attributes for large amounts of text. In general, you
should not use a single `PangoAttrList` for more than one paragraph of text.

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

  • Constructor Details

    • AttrList

      public AttrList(PointerContainer pointer)
    • AttrList

      public AttrList()
      Create a new empty attribute list with a reference
      count of one.
  • Method Details

    • getClassHandler

      public static ClassHandler getClassHandler()
    • change

      public void change(@Nonnull Attribute attr)
      Insert the given attribute into the `PangoAttrList`.

      It will replace any attributes of the same type
      on that segment and be merged with any adjoining
      attributes that are identical.

      This function is slower than [method@Pango.AttrList.insert]
      for creating an attribute list in order (potentially
      much slower for large lists). However,
      [method@Pango.AttrList.insert] is not suitable for
      continually changing a set of attributes since it
      never removes or combines existing attributes.
      Parameters:
      attr - the attribute to insert
    • copy

      public AttrList copy()
      Copy @list and return an identical new list.
      Returns:
      the newly allocated `PangoAttrList`, with a reference count of one, which should be freed with [method@Pango.AttrList.unref]. Returns %NULL if @list was %NULL.
    • equal

      public boolean equal(@Nonnull AttrList other_list)
      Checks whether @list and @other_list contain the same
      attributes and whether those attributes apply to the
      same ranges.

      Beware that this will return wrong values if any list
      contains duplicates.
      Parameters:
      other_list - the other `PangoAttrList`
      Returns:
      %TRUE if the lists are equal, %FALSE if they aren't
    • filter

      public AttrList filter(AttrList.OnAttrFilterFunc func, @Nullable Pointer data)
      Given a `PangoAttrList` and callback function, removes
      any elements of @list for which @func returns %TRUE and
      inserts them into a new list.
      Parameters:
      func - callback function; returns %TRUE if an attribute should be filtered out
      data - Data to be passed to @func
      Returns:
      the new `PangoAttrList` or %NULL if no attributes of the given types were found
    • getAttributes

      public SList getAttributes()
      Gets a list of all attributes in @list.
      Returns:
      a list of all attributes in @list. To free this value, call [method@Pango.Attribute.destroy] on each value and g_slist_free() on the list.
    • getIterator

      public AttrIterator getIterator()
      Create a iterator initialized to the beginning of the list.

      @list must not be modified until this iterator is freed.
      Returns:
      the newly allocated `PangoAttrIterator`, which should be freed with [method@Pango.AttrIterator.destroy]
    • insert

      public void insert(@Nonnull Attribute attr)
      Insert the given attribute into the `PangoAttrList`.

      It will be inserted after all other attributes with a
      matching @start_index.
      Parameters:
      attr - the attribute to insert
    • insertBefore

      public void insertBefore(@Nonnull Attribute attr)
      Insert the given attribute into the `PangoAttrList`.

      It will be inserted before all other attributes with a
      matching @start_index.
      Parameters:
      attr - the attribute to insert
    • ref

      public AttrList ref()
      Increase the reference count of the given attribute
      list by one.
      Returns:
      The attribute list passed in
    • splice

      public void splice(@Nonnull AttrList other, int pos, int len)
      This function opens up a hole in @list, fills it
      in with attributes from the left, and then merges
      @other on top of the hole.

      This operation is equivalent to stretching every attribute
      that applies at position @pos in @list by an amount @len,
      and then calling [method@Pango.AttrList.change] with a copy
      of each attribute in @other in sequence (offset in position
      by @pos, and limited in length to @len).

      This operation proves useful for, for instance, inserting
      a pre-edit string in the middle of an edit buffer.

      For backwards compatibility, the function behaves differently
      when @len is 0. In this case, the attributes from @other are
      not imited to @len, and are just overlayed on top of @list.

      This mode is useful for merging two lists of attributes together.
      Parameters:
      other - another `PangoAttrList`
      pos - the position in @list at which to insert @other
      len - the length of the spliced segment. (Note that this must be specified since the attributes in @other may only be present at some subsection of this range)
    • toStr

      public Str toStr()
      Serializes a `PangoAttrList` to a string.

      In the resulting string, serialized attributes are separated by newlines or commas.
      Individual attributes are serialized to a string of the form

      START END TYPE VALUE

      Where START and END are the indices (with -1 being accepted in place
      of MAXUINT), TYPE is the nickname of the attribute value type, e.g.
      _weight_ or _stretch_, and the value is serialized according to its type:

      - enum values as nick or numeric value
      - boolean values as _true_ or _false_
      - integers and floats as numbers
      - strings as string, optionally quoted
      - font features as quoted string
      - PangoLanguage as string
      - PangoFontDescription as serialized by [method@Pango.FontDescription.to_string], quoted
      - PangoColor as serialized by [method@Pango.Color.to_string]

      Examples:

      ```
      0 10 foreground red, 5 15 weight bold, 0 200 font-desc "Sans 10"
      ```

      ```
      0 -1 weight 700
      0 100 family Times
      ```

      To parse the returned value, use [func@Pango.AttrList.from_string].

      Note that shape attributes can not be serialized.
      Returns:
      a newly allocated string
    • unref

      public void unref()
      Decrease the reference count of the given attribute
      list by one.

      If the result is zero, free the attribute list
      and the attributes it contains.
    • update

      public void update(int pos, int remove, int add)
      Update indices of attributes in @list for a change in the
      text they refer to.

      The change that this function applies is removing @remove
      bytes at position @pos and inserting @add bytes instead.

      Attributes that fall entirely in the (@pos, @pos + @remove)
      range are removed.

      Attributes that start or end inside the (@pos, @pos + @remove)
      range are shortened to reflect the removal.

      Attributes start and end positions are updated if they are
      behind @pos + @remove.
      Parameters:
      pos - the position of the change
      remove - the number of removed bytes
      add - the number of added bytes
    • fromString

      public static AttrList fromString(@Nonnull Str text)
      Deserializes a `PangoAttrList` from a string.

      This is the counterpart to [method@Pango.AttrList.to_string].
      See that functions for details about the format.
      Parameters:
      text - a string
      Returns:
      a new `PangoAttrList`
    • 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()