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

Contents

- Exported types
- Methods
  - applyAttrs
  - copy
  - free
  - getLogicalWidths
  - letterSpace
  - split
- Properties
  - glyphs
  - item

Description

A `GlyphItem` is a pair of a `Item` and the glyphs resulting from shaping the text corresponding to an item. As an example of the usage of `GlyphItem`, the results of shaping text with `Layout` is a list of `LayoutLine`, each of which contains a list of `GlyphItem`.

Synopsis

- newtype GlyphItem = GlyphItem (ManagedPtr GlyphItem)
- newZeroGlyphItem :: MonadIO m => m GlyphItem
- noGlyphItem :: Maybe GlyphItem
- glyphItemApplyAttrs :: (HasCallStack, MonadIO m) => GlyphItem -> Text -> AttrList -> m [GlyphItem]
- glyphItemCopy :: (HasCallStack, MonadIO m) => GlyphItem -> m (Maybe GlyphItem)
- glyphItemFree :: (HasCallStack, MonadIO m) => GlyphItem -> m ()
- glyphItemGetLogicalWidths :: (HasCallStack, MonadIO m) => GlyphItem -> Text -> [Int32] -> m ()
- glyphItemLetterSpace :: (HasCallStack, MonadIO m) => GlyphItem -> Text -> [LogAttr] -> Int32 -> m ()
- glyphItemSplit :: (HasCallStack, MonadIO m) => GlyphItem -> Text -> Int32 -> m GlyphItem
- clearGlyphItemGlyphs :: MonadIO m => GlyphItem -> m ()
- getGlyphItemGlyphs :: MonadIO m => GlyphItem -> m (Maybe GlyphString)
- setGlyphItemGlyphs :: MonadIO m => GlyphItem -> Ptr GlyphString -> m ()
- clearGlyphItemItem :: MonadIO m => GlyphItem -> m ()
- getGlyphItemItem :: MonadIO m => GlyphItem -> m (Maybe Item)
- setGlyphItemItem :: MonadIO m => GlyphItem -> Ptr Item -> m ()

# Exported types

newtype GlyphItem Source #

Memory-managed wrapper type.

Constructors

GlyphItem (ManagedPtr GlyphItem) |

Instances

BoxedObject GlyphItem Source # |
Instance details Defined in GI.Pango.Structs.GlyphItem Methods boxedType :: GlyphItem -> IO GType Source #
tag ~ AttrSet => Constructible GlyphItem tag Source # |
Instance details Defined in GI.Pango.Structs.GlyphItem Methods new :: MonadIO m => (ManagedPtr GlyphItem -> GlyphItem) -> [AttrOp GlyphItem tag] -> m GlyphItem Source #

newZeroGlyphItem :: MonadIO m => m GlyphItem Source #

Construct a `GlyphItem` struct initialized to zero.

noGlyphItem :: Maybe GlyphItem Source #

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

# Methods

## applyAttrs

glyphItemApplyAttrs Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> GlyphItem | `glyphItem`: a shaped item
-> Text | `text`: text that `list` applies to
-> AttrList | `list`: a `AttrList`
-> m [GlyphItem] | Returns: a list of glyph items resulting from splitting `glyphItem`. Free the elements using `glyphItemFree`, the list using `g_slist_free()`.

Splits a shaped item (PangoGlyphItem) into multiple items based on an attribute list. The idea is that if you have attributes that don't affect shaping, such as color or underline, to avoid affecting shaping, you filter them out (`attrListFilter`), apply the shaping process and then reapply them to the result using this function.

All attributes that start or end inside a cluster are applied to that cluster; for instance, if half of a cluster is underlined and the other-half strikethrough, then the cluster will end up with both underline and strikethrough attributes. In these cases, it may happen that item->extra_attrs for some of the result items can have multiple attributes of the same type.

This function takes ownership of `glyphItem`; it will be reused as one of the elements in the list.

Since: 1.2

## copy

glyphItemCopy Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> GlyphItem | `orig`: a `GlyphItem`, may be `Nothing`
-> m (Maybe GlyphItem) | Returns: the newly allocated `GlyphItem`, which should be freed with `glyphItemFree`, or `Nothing` if `orig` was `Nothing`.

Make a deep copy of an existing `GlyphItem` structure.

Since: 1.20

## free

glyphItemFree Source #

Arguments

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

Frees a `GlyphItem` and resources to which it points.

Since: 1.6

## getLogicalWidths

glyphItemGetLogicalWidths Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> GlyphItem | `glyphItem`: a `GlyphItem`
-> Text | `text`: text that `glyphItem` corresponds to (glyph_item->item->offset is an offset from the start of `text`)
-> [Int32] | `logicalWidths`: an array whose length is the number of characters in glyph_item (equal to glyph_item->item->num_chars) to be filled in with the resulting character widths.
-> m () |

Given a `GlyphItem` and the corresponding text, determine the screen 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 `glyphStringGetLogicalWidths`.

Since: 1.26

## letterSpace

glyphItemLetterSpace Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> GlyphItem | `glyphItem`: a `GlyphItem`
-> Text | `text`: text that `glyphItem` corresponds to (glyph_item->item->offset is an offset from the start of `text`)
-> [LogAttr] | `logAttrs`: logical attributes for the item (the first logical attribute refers to the position before the first character in the item)
-> Int32 | `letterSpacing`: amount of letter spacing to add in Pango units. May be negative, though too large negative values will give ugly results.
-> m () |

Adds spacing between the graphemes of `glyphItem` to give the effect of typographic letter spacing.

Since: 1.6

## split

glyphItemSplit Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> GlyphItem | `orig`: a `Item`
-> Text | `text`: text to which positions in `orig` apply
-> Int32 | `splitIndex`: byte index of position to split item, relative to the start of the item
-> m GlyphItem | Returns: the newly allocated item representing text before `splitIndex`, which should be freed with `glyphItemFree`.

Modifies `orig` to cover only the text after `splitIndex`, and returns a new item that covers the text before `splitIndex` that used to be in `orig`. You can think of `splitIndex` as the length of the returned item. `splitIndex` may not be 0, and it may not be greater than or equal to the length of `orig` (that is, there must be at least one byte assigned to each item, you can't create a zero-length item).

This function is similar in function to `itemSplit` (and uses it internally.)

Since: 1.2

# Properties

## glyphs

corresponding `GlyphString`.

clearGlyphItemGlyphs :: MonadIO m => GlyphItem -> m () Source #

Set the value of the “`glyphs`” field to `Nothing`. When overloading is enabled, this is equivalent to

    clear #glyphs

getGlyphItemGlyphs :: MonadIO m => GlyphItem -> m (Maybe GlyphString) Source #

Get the value of the “`glyphs`” field. When overloading is enabled, this is equivalent to

    get glyphItem #glyphs

setGlyphItemGlyphs :: MonadIO m => GlyphItem -> Ptr GlyphString -> m () Source #

Set the value of the “`glyphs`” field. When overloading is enabled, this is equivalent to

    set glyphItem [ #glyphs := value ]

## item

corresponding `Item`.

clearGlyphItemItem :: MonadIO m => GlyphItem -> m () Source #

Set the value of the “`item`” field to `Nothing`. When overloading is enabled, this is equivalent to

    clear #item

getGlyphItemItem :: MonadIO m => GlyphItem -> m (Maybe Item) Source #

Get the value of the “`item`” field. When overloading is enabled, this is equivalent to

    get glyphItem #item

setGlyphItemItem :: MonadIO m => GlyphItem -> Ptr Item -> m () Source #

Set the value of the “`item`” field. When overloading is enabled, this is equivalent to

    set glyphItem [ #item := value ]