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 GlyphItemIter
impl !Send for GlyphItemIter
impl !Sync for GlyphItemIter
impl Unpin for GlyphItemIter
impl UnwindSafe for GlyphItemIter
Blanket 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>,