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 |
A #PangoGlyphItemIter is an iterator over the clusters in a
#PangoGlyphItem. The firsttermforward direction/firstterm of the
iterator is the logical direction of text. That is, with increasing
start_index and
start_char values. If glyph_item is right-to-left
(that is, if literal
glyph_item->item->analysis.level/literal is odd),
then start_glyph decreases as the iterator moves forward. Moreover,
in right-to-left cases,
start_glyph is greater than @end_glyph.
An iterator should be initialized using either of pango_glyph_item_iter_init_start() and pango_glyph_item_iter_init_end(), for forward and backward iteration respectively, and walked over using any desired mixture of pango_glyph_item_iter_next_cluster() and pango_glyph_item_iter_prev_cluster(). A common idiom for doing a forward iteration over the clusters is: programlisting PangoGlyphItemIter cluster_iter; gboolean have_cluster;
for (have_cluster = pango_glyph_item_iter_init_start (&cluster_iter, glyph_item, text); have_cluster; have_cluster = pango_glyph_item_iter_next_cluster (&cluster_iter)) { ... } /programlisting
Note that text is the start of the text for layout, which is then
indexed by literal
glyph_item->item->offset/literal to get to the
text of glyph_item. The
start_index and end_index values can directly
index into
text. The start_glyph,
end_glyph, start_char, and
end_char
values however are zero-based for the @glyph_item. For each cluster, the
item pointed at by the start variables is included in the cluster while
the one pointed at by end variables is not.
None of the members of a #PangoGlyphItemIter should be modified manually.
- newtype GlyphItemIter = GlyphItemIter (ForeignPtr GlyphItemIter)
- noGlyphItemIter :: Maybe GlyphItemIter
- glyphItemIterCopy :: MonadIO m => GlyphItemIter -> m GlyphItemIter
- glyphItemIterFree :: MonadIO m => GlyphItemIter -> m ()
- glyphItemIterInitEnd :: MonadIO m => GlyphItemIter -> GlyphItem -> Text -> m Bool
- glyphItemIterInitStart :: MonadIO m => GlyphItemIter -> GlyphItem -> Text -> m Bool
- glyphItemIterNextCluster :: MonadIO m => GlyphItemIter -> m Bool
- glyphItemIterPrevCluster :: MonadIO m => GlyphItemIter -> m Bool
- glyphItemIterReadEndChar :: GlyphItemIter -> IO Int32
- glyphItemIterReadEndGlyph :: GlyphItemIter -> IO Int32
- glyphItemIterReadEndIndex :: GlyphItemIter -> IO Int32
- glyphItemIterReadGlyphItem :: GlyphItemIter -> IO GlyphItem
- glyphItemIterReadStartChar :: GlyphItemIter -> IO Int32
- glyphItemIterReadStartGlyph :: GlyphItemIter -> IO Int32
- glyphItemIterReadStartIndex :: GlyphItemIter -> IO Int32
- glyphItemIterReadText :: GlyphItemIter -> IO Text
Exported types
Methods
glyphItemIterCopy
glyphItemIterCopy :: MonadIO m => GlyphItemIter -> m GlyphItemIter Source
glyphItemIterFree
glyphItemIterFree :: MonadIO m => GlyphItemIter -> m () Source
glyphItemIterInitEnd
glyphItemIterInitEnd :: MonadIO m => GlyphItemIter -> GlyphItem -> Text -> m Bool Source
glyphItemIterInitStart
glyphItemIterInitStart :: MonadIO m => GlyphItemIter -> GlyphItem -> Text -> m Bool Source
glyphItemIterNextCluster
glyphItemIterNextCluster :: MonadIO m => GlyphItemIter -> m Bool Source
glyphItemIterPrevCluster
glyphItemIterPrevCluster :: MonadIO m => GlyphItemIter -> m Bool Source