Struct pango::GlyphItemIter [−][src]
pub struct GlyphItemIter(_);
Expand description
A GlyphItemIter is an iterator over the clusters in a
GlyphItem. The <firstterm>forward 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
init_start() and
init_end(), for forward and backward iteration
respectively, and walked over using any desired mixture of
next_cluster() and
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 GlyphItemIter should be modified manually.
Implementations
Initializes a GlyphItemIter structure to point to the
last cluster in a glyph item.
See GlyphItemIter for details of cluster orders.
glyph_item
the glyph item to iterate over
text
text corresponding to the glyph item
Returns
false if there are no clusters in the glyph item
Initializes a GlyphItemIter structure to point to the
first cluster in a glyph item.
See GlyphItemIter for details of cluster orders.
glyph_item
the glyph item to iterate over
text
text corresponding to the glyph item
Returns
false if there are no clusters in the glyph item
Advances the iterator to the next cluster in the glyph item.
See GlyphItemIter for details of cluster orders.
Returns
true if the iterator was advanced, false if we were already on the
last cluster.
Moves the iterator to the preceding cluster in the glyph item.
See GlyphItemIter for details of cluster orders.
Returns
true if the iterator was moved, false if we were already on the
first cluster.
Trait Implementations
This method tests for self and other values to be equal, and is used
by ==. Read more
This method tests for !=.
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
Returns the type identifier of Self.
Auto Trait Implementations
impl RefUnwindSafe for GlyphItemIterimpl !Send for GlyphItemIterimpl !Sync for GlyphItemIterimpl Unpin for GlyphItemIterimpl UnwindSafe for GlyphItemIterBlanket Implementations
Mutably borrows from an owned value. Read more
impl<'a, T, C> FromValueOptional<'a> for T where
C: ValueTypeChecker<Error = ValueTypeMismatchOrNoneError>,
T: FromValue<'a, Checker = C>,