gi-pango-1.0.19: Pango bindings

Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte
License | LGPL-2.1
Maintainer | Iñaki García Etxebarria (garetxe@gmail.com)
Safe Haskell | None
Language | Haskell2010

GI.Pango.Structs.AttrList

Contents

- Exported types
- Methods
  - change
  - copy
  - filter
  - insert
  - insertBefore
  - new
  - ref
  - splice
  - unref

Description

The `AttrList` structure represents a list of attributes that apply to a section of text. The attributes are, in general, allowed to overlap in an arbitrary fashion, however, if the attributes are manipulated only through `attrListChange`, the overlap between properties will meet stricter criteria.

Since the `AttrList` 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 `AttrList` for more than one paragraph of text.

Synopsis

- newtype AttrList = AttrList (ManagedPtr AttrList)
- noAttrList :: Maybe AttrList
- attrListChange :: (HasCallStack, MonadIO m) => AttrList -> Attribute -> m ()
- attrListCopy :: (HasCallStack, MonadIO m) => AttrList -> m (Maybe AttrList)
- attrListFilter :: (HasCallStack, MonadIO m) => AttrList -> AttrFilterFunc -> m (Maybe AttrList)
- attrListInsert :: (HasCallStack, MonadIO m) => AttrList -> Attribute -> m ()
- attrListInsertBefore :: (HasCallStack, MonadIO m) => AttrList -> Attribute -> m ()
- attrListNew :: (HasCallStack, MonadIO m) => m AttrList
- attrListRef :: (HasCallStack, MonadIO m) => AttrList -> m AttrList
- attrListSplice :: (HasCallStack, MonadIO m) => AttrList -> AttrList -> Int32 -> Int32 -> m ()
- attrListUnref :: (HasCallStack, MonadIO m) => AttrList -> m ()

# Exported types

newtype AttrList Source #

Memory-managed wrapper type.

Constructors

AttrList (ManagedPtr AttrList) |

Instances

BoxedObject AttrList Source # |
Instance details Defined in GI.Pango.Structs.AttrList Methods boxedType :: AttrList -> IO GType Source #

noAttrList :: Maybe AttrList Source #

A convenience alias for `Nothing` :: `Maybe` `AttrList`.

# Methods

## change

attrListChange Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> AttrList | `list`: a `AttrList`
-> Attribute | `attr`: the attribute to insert. Ownership of this value is assumed by the list.
-> m () |

Insert the given attribute into the `AttrList`. 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 `attrListInsert` for creating a attribute list in order (potentially much slower for large lists). However, `attrListInsert` is not suitable for continually changing a set of attributes since it never removes or combines existing attributes.

## copy

attrListCopy Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> AttrList | `list`: a `AttrList`, may be `Nothing`
-> m (Maybe AttrList) | Returns: the newly allocated `AttrList`, with a reference count of one, which should be freed with `attrListUnref`. Returns `Nothing` if `list` was `Nothing`.

Copy `list` and return an identical new list.

## filter

attrListFilter Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> AttrList | `list`: a `AttrList`
-> AttrFilterFunc | `func`: callback function; returns `True` if an attribute should be filtered out.
-> m (Maybe AttrList) | Returns: the new `AttrList` or `Nothing` if no attributes of the given types were found.

Given a `AttrList` and callback function, removes any elements of `list` for which `func` returns `True` and inserts them into a new list.

Since: 1.2

## insert

attrListInsert Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> AttrList | `list`: a `AttrList`
-> Attribute | `attr`: the attribute to insert. Ownership of this value is assumed by the list.
-> m () |

Insert the given attribute into the `AttrList`. It will be inserted after all other attributes with a matching `startIndex`.

## insertBefore

attrListInsertBefore Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> AttrList | `list`: a `AttrList`
-> Attribute | `attr`: the attribute to insert. Ownership of this value is assumed by the list.
-> m () |

Insert the given attribute into the `AttrList`. It will be inserted before all other attributes with a matching `startIndex`.

## new

attrListNew Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> m AttrList | Returns: the newly allocated `AttrList`, which should be freed with `attrListUnref`.

Create a new empty attribute list with a reference count of one.

## ref

attrListRef Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> AttrList | `list`: a `AttrList`, may be `Nothing`
-> m AttrList | Returns: The attribute list passed in

Increase the reference count of the given attribute list by one.

Since: 1.10

## splice

attrListSplice Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> AttrList | `list`: a `AttrList`
-> AttrList | `other`: another `AttrList`
-> Int32 | `pos`: the position in `list` at which to insert `other`
-> Int32 | `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)
-> m () |

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 `attrListChange` with a copy of each attribute in `other` in sequence (offset in position by `pos`).

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

## unref

attrListUnref Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> AttrList | `list`: a `AttrList`, may be `Nothing`
-> m () |

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.