Copyright | Will Thompson and Iñaki García Etxebarria |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
A PangoLayoutIter
can be used to iterate over the visual
extents of a PangoLayout
.
To obtain a PangoLayoutIter
, use layoutGetIter
.
The PangoLayoutIter
structure is opaque, and has no user-visible fields.
Synopsis
- newtype LayoutIter = LayoutIter (ManagedPtr LayoutIter)
- layoutIterAtLastLine :: (HasCallStack, MonadIO m) => LayoutIter -> m Bool
- layoutIterCopy :: (HasCallStack, MonadIO m) => LayoutIter -> m (Maybe LayoutIter)
- layoutIterFree :: (HasCallStack, MonadIO m) => LayoutIter -> m ()
- layoutIterGetBaseline :: (HasCallStack, MonadIO m) => LayoutIter -> m Int32
- layoutIterGetCharExtents :: (HasCallStack, MonadIO m) => LayoutIter -> m Rectangle
- layoutIterGetClusterExtents :: (HasCallStack, MonadIO m) => LayoutIter -> m (Rectangle, Rectangle)
- layoutIterGetIndex :: (HasCallStack, MonadIO m) => LayoutIter -> m Int32
- layoutIterGetLayout :: (HasCallStack, MonadIO m) => LayoutIter -> m Layout
- layoutIterGetLayoutExtents :: (HasCallStack, MonadIO m) => LayoutIter -> m (Rectangle, Rectangle)
- layoutIterGetLine :: (HasCallStack, MonadIO m) => LayoutIter -> m LayoutLine
- layoutIterGetLineExtents :: (HasCallStack, MonadIO m) => LayoutIter -> m (Rectangle, Rectangle)
- layoutIterGetLineReadonly :: (HasCallStack, MonadIO m) => LayoutIter -> m LayoutLine
- layoutIterGetLineYrange :: (HasCallStack, MonadIO m) => LayoutIter -> m (Int32, Int32)
- layoutIterGetRun :: (HasCallStack, MonadIO m) => LayoutIter -> m (Maybe GlyphItem)
- layoutIterGetRunBaseline :: (HasCallStack, MonadIO m) => LayoutIter -> m Int32
- layoutIterGetRunExtents :: (HasCallStack, MonadIO m) => LayoutIter -> m (Rectangle, Rectangle)
- layoutIterGetRunReadonly :: (HasCallStack, MonadIO m) => LayoutIter -> m (Maybe GlyphItem)
- layoutIterNextChar :: (HasCallStack, MonadIO m) => LayoutIter -> m Bool
- layoutIterNextCluster :: (HasCallStack, MonadIO m) => LayoutIter -> m Bool
- layoutIterNextLine :: (HasCallStack, MonadIO m) => LayoutIter -> m Bool
- layoutIterNextRun :: (HasCallStack, MonadIO m) => LayoutIter -> m Bool
Exported types
newtype LayoutIter Source #
Memory-managed wrapper type.
Instances
Eq LayoutIter Source # | |
Defined in GI.Pango.Structs.LayoutIter (==) :: LayoutIter -> LayoutIter -> Bool # (/=) :: LayoutIter -> LayoutIter -> Bool # | |
GBoxed LayoutIter Source # | |
Defined in GI.Pango.Structs.LayoutIter | |
ManagedPtrNewtype LayoutIter Source # | |
Defined in GI.Pango.Structs.LayoutIter | |
TypedObject LayoutIter Source # | |
Defined in GI.Pango.Structs.LayoutIter | |
HasParentTypes LayoutIter Source # | |
Defined in GI.Pango.Structs.LayoutIter | |
IsGValue (Maybe LayoutIter) Source # | Convert |
Defined in GI.Pango.Structs.LayoutIter gvalueGType_ :: IO GType # gvalueSet_ :: Ptr GValue -> Maybe LayoutIter -> IO () # gvalueGet_ :: Ptr GValue -> IO (Maybe LayoutIter) # | |
type ParentTypes LayoutIter Source # | |
Defined in GI.Pango.Structs.LayoutIter |
Methods
Click to display all available methods, including inherited ones
Methods
atLastLine, copy, free, nextChar, nextCluster, nextLine, nextRun.
Getters
getBaseline, getCharExtents, getClusterExtents, getIndex, getLayout, getLayoutExtents, getLine, getLineExtents, getLineReadonly, getLineYrange, getRun, getRunBaseline, getRunExtents, getRunReadonly.
Setters
None.
atLastLine
:: (HasCallStack, MonadIO m) | |
=> LayoutIter |
|
-> m Bool | Returns: |
Determines whether iter
is on the last line of the layout.
copy
:: (HasCallStack, MonadIO m) | |
=> LayoutIter |
|
-> m (Maybe LayoutIter) | Returns: the newly allocated |
Copies a PangoLayoutIter
.
Since: 1.20
free
:: (HasCallStack, MonadIO m) | |
=> LayoutIter |
|
-> m () |
Frees an iterator that's no longer in use.
getBaseline
layoutIterGetBaseline Source #
:: (HasCallStack, MonadIO m) | |
=> LayoutIter |
|
-> m Int32 | Returns: baseline of current line |
Gets the Y position of the current line's baseline, in layout coordinates.
Layout coordinates have the origin at the top left of the entire layout.
getCharExtents
layoutIterGetCharExtents Source #
:: (HasCallStack, MonadIO m) | |
=> LayoutIter |
|
-> m Rectangle |
Gets the extents of the current character, in layout coordinates.
Layout coordinates have the origin at 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 #
:: (HasCallStack, MonadIO m) | |
=> LayoutIter |
|
-> m (Rectangle, Rectangle) |
Gets the extents of the current cluster, in layout coordinates.
Layout coordinates have the origin at the top left of the entire layout.
getIndex
:: (HasCallStack, MonadIO m) | |
=> 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
:: (HasCallStack, MonadIO m) | |
=> LayoutIter |
|
-> m Layout | Returns: the layout associated with |
Gets the layout associated with a PangoLayoutIter
.
Since: 1.20
getLayoutExtents
layoutIterGetLayoutExtents Source #
:: (HasCallStack, MonadIO m) | |
=> LayoutIter |
|
-> m (Rectangle, Rectangle) |
Obtains the extents of the PangoLayout
being iterated over.
getLine
:: (HasCallStack, MonadIO m) | |
=> 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 #
:: (HasCallStack, MonadIO m) | |
=> LayoutIter |
|
-> m (Rectangle, Rectangle) |
Obtains the extents of the current line.
Extents are in layout coordinates (origin is the top-left corner
of the entire PangoLayout
). 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 #
:: (HasCallStack, MonadIO m) | |
=> 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 #
:: (HasCallStack, MonadIO m) | |
=> LayoutIter |
|
-> m (Int32, Int32) |
Divides the vertical space in the PangoLayout
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).
Note: Since 1.44, Pango uses line heights for placing lines, and there may be gaps between the ranges returned by this function.
getRun
:: (HasCallStack, MonadIO m) | |
=> 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.).
getRunBaseline
layoutIterGetRunBaseline Source #
:: (HasCallStack, MonadIO m) | |
=> LayoutIter |
|
-> m Int32 |
Gets the Y position of the current run's baseline, in layout coordinates.
Layout coordinates have the origin at the top left of the entire layout.
The run baseline can be different from the line baseline, for example due to superscript or subscript positioning.
Since: 1.50
getRunExtents
layoutIterGetRunExtents Source #
:: (HasCallStack, MonadIO m) | |
=> LayoutIter |
|
-> m (Rectangle, Rectangle) |
Gets the extents of the current run in layout coordinates.
Layout coordinates have the origin at the top left of the entire layout.
getRunReadonly
layoutIterGetRunReadonly Source #
:: (HasCallStack, MonadIO m) | |
=> LayoutIter |
|
-> m (Maybe GlyphItem) | Returns: the current run, that should not be modified |
Gets the current run for read-only access.
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
:: (HasCallStack, MonadIO m) | |
=> 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 #
:: (HasCallStack, MonadIO m) | |
=> 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
:: (HasCallStack, MonadIO m) | |
=> 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
:: (HasCallStack, MonadIO m) | |
=> 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
.