gi-pango-1.0.21: Pango bindings

CopyrightWill Thompson Iñaki García Etxebarria and Jonas Platte
LicenseLGPL-2.1
MaintainerIñaki García Etxebarria (inaki@blueleaf.cc)
Safe HaskellNone
LanguageHaskell2010

GI.Pango.Structs.LayoutIter

Contents

Description

A LayoutIter structure can be used to iterate over the visual extents of a Layout.

The LayoutIter structure is opaque, and has no user-visible fields.

Synopsis

Exported types

newtype LayoutIter Source #

Memory-managed wrapper type.

Instances
BoxedObject LayoutIter Source # 
Instance details

Defined in GI.Pango.Structs.LayoutIter

Methods

atLastLine

layoutIterAtLastLine Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m Bool

Returns: True if iter is on the last line.

Determines whether iter is on the last line of the layout.

copy

layoutIterCopy Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter, may be Nothing

-> m (Maybe LayoutIter)

Returns: the newly allocated LayoutIter, which should be freed with layoutIterFree, or Nothing if iter was Nothing.

Copies a LayoutIter.

Since: 1.20

free

layoutIterFree Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter, may be Nothing

-> m () 

Frees an iterator that's no longer in use.

getBaseline

layoutIterGetBaseline Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m Int32

Returns: baseline of current line.

Gets the Y position of the current line's baseline, in layout coordinates (origin at top left of the entire layout).

getCharExtents

layoutIterGetCharExtents Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m Rectangle 

Gets the extents of the current character, in layout coordinates (origin is the top left of the entire layout). Only logical extents can sensibly be obtained for characters; ink extents make sense only down to the level of clusters.

getClusterExtents

layoutIterGetClusterExtents Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m (Rectangle, Rectangle) 

Gets the extents of the current cluster, in layout coordinates (origin is the top left of the entire layout).

getIndex

layoutIterGetIndex Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m Int32

Returns: current byte index.

Gets the current byte index. Note that iterating forward by char moves in visual order, not logical order, so indexes may not be sequential. Also, the index may be equal to the length of the text in the layout, if on the Nothing run (see layoutIterGetRun).

getLayout

layoutIterGetLayout Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m Layout

Returns: the layout associated with iter.

Gets the layout associated with a LayoutIter.

Since: 1.20

getLayoutExtents

layoutIterGetLayoutExtents Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m (Rectangle, Rectangle) 

Obtains the extents of the Layout being iterated over. inkRect or logicalRect can be Nothing if you aren't interested in them.

getLine

layoutIterGetLine Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m LayoutLine

Returns: the current line.

Gets the current line.

Use the faster layoutIterGetLineReadonly if you do not plan to modify the contents of the line (glyphs, glyph widths, etc.).

getLineExtents

layoutIterGetLineExtents Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m (Rectangle, Rectangle) 

Obtains the extents of the current line. inkRect or logicalRect can be Nothing if you aren't interested in them. Extents are in layout coordinates (origin is the top-left corner of the entire Layout). Thus the extents returned by this function will be the same width/height but not at the same x/y as the extents returned from layoutLineGetExtents.

getLineReadonly

layoutIterGetLineReadonly Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m LayoutLine

Returns: the current line, that should not be modified.

Gets the current line for read-only access.

This is a faster alternative to layoutIterGetLine, but the user is not expected to modify the contents of the line (glyphs, glyph widths, etc.).

Since: 1.16

getLineYrange

layoutIterGetLineYrange Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m (Int32, Int32) 

Divides the vertical space in the Layout being iterated over between the lines in the layout, and returns the space belonging to the current line. A line's range includes the line's logical extents, plus half of the spacing above and below the line, if layoutSetSpacing has been called to set layout spacing. The Y positions are in layout coordinates (origin at top left of the entire layout).

getRun

layoutIterGetRun Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m (Maybe GlyphItem)

Returns: the current run.

Gets the current run. When iterating by run, at the end of each line, there's a position with a Nothing run, so this function can return Nothing. The Nothing run at the end of each line ensures that all lines have at least one run, even lines consisting of only a newline.

Use the faster layoutIterGetRunReadonly if you do not plan to modify the contents of the run (glyphs, glyph widths, etc.).

getRunExtents

layoutIterGetRunExtents Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m (Rectangle, Rectangle) 

Gets the extents of the current run in layout coordinates (origin is the top left of the entire layout).

getRunReadonly

layoutIterGetRunReadonly Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m (Maybe GlyphItem)

Returns: the current run, that should not be modified.

Gets the current run. When iterating by run, at the end of each line, there's a position with a Nothing run, so this function can return Nothing. The Nothing run at the end of each line ensures that all lines have at least one run, even lines consisting of only a newline.

This is a faster alternative to layoutIterGetRun, but the user is not expected to modify the contents of the run (glyphs, glyph widths, etc.).

Since: 1.16

nextChar

layoutIterNextChar Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m Bool

Returns: whether motion was possible.

Moves iter forward to the next character in visual order. If iter was already at the end of the layout, returns False.

nextCluster

layoutIterNextCluster Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m Bool

Returns: whether motion was possible.

Moves iter forward to the next cluster in visual order. If iter was already at the end of the layout, returns False.

nextLine

layoutIterNextLine Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m Bool

Returns: whether motion was possible.

Moves iter forward to the start of the next line. If iter is already on the last line, returns False.

nextRun

layoutIterNextRun Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> LayoutIter

iter: a LayoutIter

-> m Bool

Returns: whether motion was possible.

Moves iter forward to the next run in visual order. If iter was already at the end of the layout, returns False.