gi-pango-1.0.23: Pango bindings

Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte
License | LGPL-2.1
Maintainer | Iñaki García Etxebarria
Safe Haskell | None
Language | Haskell2010

GI.Pango.Structs.AttrList

Contents

- Exported types
- Methods
  - Overloaded methods
  - change
  - copy
  - equal
  - filter
  - getAttributes
  - getIterator
  - insert
  - insertBefore
  - new
  - ref
  - splice
  - unref
  - update

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)
- attrListChange :: (HasCallStack, MonadIO m) => AttrList -> Attribute -> m ()
- attrListCopy :: (HasCallStack, MonadIO m) => AttrList -> m (Maybe AttrList)
- attrListEqual :: (HasCallStack, MonadIO m) => AttrList -> AttrList -> m Bool
- attrListFilter :: (HasCallStack, MonadIO m) => AttrList -> AttrFilterFunc -> m (Maybe AttrList)
- attrListGetAttributes :: (HasCallStack, MonadIO m) => AttrList -> m [Attribute]
- attrListGetIterator :: (HasCallStack, MonadIO m) => AttrList -> m AttrIterator
- 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 ()
- attrListUpdate :: (HasCallStack, MonadIO m) => AttrList -> Int32 -> Int32 -> Int32 -> m ()

# Exported types

newtype AttrList Source #

Memory-managed wrapper type.

Constructors

AttrList (ManagedPtr AttrList) |

#### Instances

Instances details

Eq AttrList Source # |
Instance details Defined in GI.Pango.Structs.AttrList Methods (==) :: AttrList -> AttrList -> Bool # (/=) :: AttrList -> AttrList -> Bool #
GBoxed AttrList Source # |
Instance details Defined in GI.Pango.Structs.AttrList
TypedObject AttrList Source # |
Instance details Defined in GI.Pango.Structs.AttrList Methods glibType :: IO GType Source #
ManagedPtrNewtype AttrList Source # |
Instance details Defined in GI.Pango.Structs.AttrList Methods toManagedPtr :: AttrList -> ManagedPtr AttrList Source #
IsGValue AttrList Source # | Convert `AttrList` to and from `GValue` with `toGValue` and `fromGValue`.
Instance details Defined in GI.Pango.Structs.AttrList Methods toGValue :: AttrList -> IO GValue Source # fromGValue :: GValue -> IO AttrList Source #
HasParentTypes AttrList Source # |
Instance details Defined in GI.Pango.Structs.AttrList
type ParentTypes AttrList Source # |
Instance details Defined in GI.Pango.Structs.AttrList type ParentTypes AttrList = '[] :: [Type]

# Methods

## Overloaded 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 an 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.

## equal

attrListEqual Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> AttrList | `list`: a `AttrList`
-> AttrList | `otherList`: the other `AttrList`
-> m Bool | Returns: `True` if the lists are equal, `False` if they aren't.

Checks whether `list` and `otherList` 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.

Since: 1.46

## 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

## getAttributes

attrListGetAttributes Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> AttrList | `list`: a `AttrList`
-> m [Attribute] | Returns: a list of all attributes in `list`. To free this value, call `attributeDestroy` on each value and `g_slist_free()` on the list.

Gets a list of all attributes in `list`.

Since: 1.44

## getIterator

attrListGetIterator Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> AttrList | `list`: a `AttrList`
-> m AttrIterator | Returns: the newly allocated `AttrIterator`, which should be freed with `attrIteratorDestroy`.

Create a iterator initialized to the beginning of the list. `list` must not be modified until this iterator is freed.

## 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.

## update

attrListUpdate Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> AttrList | `list`: a `AttrList`
-> Int32 | `pos`: the position of the change
-> Int32 | `remove`: the number of removed bytes
-> Int32 | `add`: the number of added bytes
-> m () |

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`.

Since: 1.44