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)
- newZeroGlyphItemIter :: MonadIO m => m GlyphItemIter
- noGlyphItemIter :: Maybe GlyphItemIter
- data GlyphItemIterCopyMethodInfo
- glyphItemIterCopy :: MonadIO m => GlyphItemIter -> m GlyphItemIter
- data GlyphItemIterFreeMethodInfo
- glyphItemIterFree :: MonadIO m => GlyphItemIter -> m ()
- data GlyphItemIterInitEndMethodInfo
- glyphItemIterInitEnd :: MonadIO m => GlyphItemIter -> GlyphItem -> Text -> m Bool
- data GlyphItemIterInitStartMethodInfo
- glyphItemIterInitStart :: MonadIO m => GlyphItemIter -> GlyphItem -> Text -> m Bool
- data GlyphItemIterNextClusterMethodInfo
- glyphItemIterNextCluster :: MonadIO m => GlyphItemIter -> m Bool
- data GlyphItemIterPrevClusterMethodInfo
- 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
newtype GlyphItemIter Source
newZeroGlyphItemIter :: MonadIO m => m GlyphItemIter Source
Construct a GlyphItemIter
struct initialized to zero.
Methods
glyphItemIterCopy
data GlyphItemIterCopyMethodInfo Source
((~) (TYPE Lifted) signature (m GlyphItemIter), MonadIO m) => MethodInfo (TYPE Lifted) GlyphItemIterCopyMethodInfo GlyphItemIter signature Source | |
glyphItemIterCopy :: MonadIO m => GlyphItemIter -> m GlyphItemIter Source
glyphItemIterFree
data GlyphItemIterFreeMethodInfo Source
((~) (TYPE Lifted) signature (m ()), MonadIO m) => MethodInfo (TYPE Lifted) GlyphItemIterFreeMethodInfo GlyphItemIter signature Source | |
glyphItemIterFree :: MonadIO m => GlyphItemIter -> m () Source
glyphItemIterInitEnd
data GlyphItemIterInitEndMethodInfo Source
((~) (TYPE Lifted) signature (GlyphItem -> Text -> m Bool), MonadIO m) => MethodInfo (TYPE Lifted) GlyphItemIterInitEndMethodInfo GlyphItemIter signature Source | |
glyphItemIterInitEnd :: MonadIO m => GlyphItemIter -> GlyphItem -> Text -> m Bool Source
glyphItemIterInitStart
data GlyphItemIterInitStartMethodInfo Source
((~) (TYPE Lifted) signature (GlyphItem -> Text -> m Bool), MonadIO m) => MethodInfo (TYPE Lifted) GlyphItemIterInitStartMethodInfo GlyphItemIter signature Source | |
glyphItemIterInitStart :: MonadIO m => GlyphItemIter -> GlyphItem -> Text -> m Bool Source
glyphItemIterNextCluster
data GlyphItemIterNextClusterMethodInfo Source
((~) (TYPE Lifted) signature (m Bool), MonadIO m) => MethodInfo (TYPE Lifted) GlyphItemIterNextClusterMethodInfo GlyphItemIter signature Source | |
glyphItemIterNextCluster :: MonadIO m => GlyphItemIter -> m Bool Source
glyphItemIterPrevCluster
data GlyphItemIterPrevClusterMethodInfo Source
((~) (TYPE Lifted) signature (m Bool), MonadIO m) => MethodInfo (TYPE Lifted) GlyphItemIterPrevClusterMethodInfo GlyphItemIter signature Source | |
glyphItemIterPrevCluster :: MonadIO m => GlyphItemIter -> m Bool Source