Struct pango::GlyphString
source · #[repr(transparent)]pub struct GlyphString { /* private fields */ }
Expand description
A GlyphString
is used to store strings of glyphs with geometry
and visual attribute information.
The storage for the glyph information is owned by the structure which simplifies memory management.
Implementations§
source§impl GlyphString
impl GlyphString
source§impl GlyphString
impl GlyphString
sourcepub fn new() -> GlyphString
pub fn new() -> GlyphString
Create a new GlyphString
.
Returns
the newly allocated GlyphString
, which
should be freed with Pango::GlyphString::free()
.
sourcepub fn extents(&mut self, font: &impl IsA<Font>) -> (Rectangle, Rectangle)
pub fn extents(&mut self, font: &impl IsA<Font>) -> (Rectangle, Rectangle)
Compute the logical and ink extents of a glyph string.
See the documentation for FontExt::glyph_extents()
for details
about the interpretation of the rectangles.
Examples of logical (red) and ink (green) rects:
font
a Font
Returns
ink_rect
rectangle used to store the extents of the glyph string as drawn
logical_rect
rectangle used to store the logical extents of the glyph string
sourcepub fn extents_range(
&mut self,
start: i32,
end: i32,
font: &impl IsA<Font>
) -> (Rectangle, Rectangle)
pub fn extents_range( &mut self, start: i32, end: i32, font: &impl IsA<Font> ) -> (Rectangle, Rectangle)
Computes the extents of a sub-portion of a glyph string.
The extents are relative to the start of the glyph string range (the origin of their coordinate system is at the start of the range, not at the start of the entire glyph string).
start
start index
end
end index (the range is the set of bytes with indices such that start <= index < end)
font
a Font
Returns
ink_rect
rectangle used to store the extents of the glyph string range as drawn
logical_rect
rectangle used to store the logical extents of the glyph string range
sourcepub fn width(&self) -> i32
pub fn width(&self) -> i32
Computes the logical width of the glyph string.
This can also be computed using extents()
.
However, since this only computes the width, it’s much faster. This
is in fact only a convenience function that computes the sum of
@geometry.width for each glyph in the @self.
Returns
the logical width of the glyph string.
sourcepub fn index_to_x(
&self,
text: &str,
analysis: &mut Analysis,
index_: i32,
trailing: bool
) -> i32
pub fn index_to_x( &self, text: &str, analysis: &mut Analysis, index_: i32, trailing: bool ) -> i32
Converts from character position to x position.
The X position is measured from the left edge of the run. Character positions are obtained using font metrics for ligatures where available, and computed by dividing up each cluster into equal portions, otherwise.
## `text` the text for the run ## `length` the number of bytes (not characters) in @text. ## `analysis` the analysis information return from [`itemize()`][crate::itemize()] ## `index_` the byte index within @text ## `trailing` whether we should compute the result for the beginning ([`false`]) or end ([`true`]) of the character.Returns
x_pos
location to store result
sourcepub fn x_to_index(
&self,
text: &str,
analysis: &mut Analysis,
x_pos: i32
) -> (i32, i32)
pub fn x_to_index( &self, text: &str, analysis: &mut Analysis, x_pos: i32 ) -> (i32, i32)
Convert from x offset to character position.
Character positions are computed by dividing up each cluster into equal portions. In scripts where positioning within a cluster is not allowed (such as Thai), the returned value may not be a valid cursor position; the caller must combine the result with the logical attributes for the text to compute the valid cursor position.
text
the text for the run
length
the number of bytes (not characters) in text.
analysis
the analysis information return from itemize()
x_pos
the x offset (in Pango units)
Returns
index_
location to store calculated byte index within @text
trailing
location to store a boolean indicating whether the user clicked on the leading or trailing edge of the character
source§impl GlyphString
impl GlyphString
pub fn num_glyphs(&self) -> i32
pub fn glyph_info(&self) -> &[GlyphInfo]
pub fn glyph_info_mut(&mut self) -> &mut [GlyphInfo]
pub fn log_clusters(&self) -> &[i32]
pub fn log_clusters_mut(&mut self) -> &mut [i32]
sourcepub fn logical_widths(&self, text: &str, rtl: bool) -> Vec<i32>
pub fn logical_widths(&self, text: &str, rtl: bool) -> Vec<i32>
Given a GlyphString
and corresponding text, determine the width
corresponding to each character.
When multiple characters compose a single cluster, the width of the entire cluster is divided equally among the characters.
See also GlyphItem::logical_widths()
.
text
the text corresponding to the glyphs
length
the length of @text, in bytes
embedding_level
the embedding level of the string
logical_widths
an array whose length is the number of
characters in text (equal to g_utf8_strlen (text, length)
unless
text has NUL
bytes) to be filled in with the resulting character widths.
Trait Implementations§
source§impl Clone for GlyphString
impl Clone for GlyphString
source§impl Debug for GlyphString
impl Debug for GlyphString
source§impl Default for GlyphString
impl Default for GlyphString
source§impl Hash for GlyphString
impl Hash for GlyphString
source§impl Ord for GlyphString
impl Ord for GlyphString
source§fn cmp(&self, other: &GlyphString) -> Ordering
fn cmp(&self, other: &GlyphString) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere Self: Sized,
source§impl PartialEq<GlyphString> for GlyphString
impl PartialEq<GlyphString> for GlyphString
source§fn eq(&self, other: &GlyphString) -> bool
fn eq(&self, other: &GlyphString) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd<GlyphString> for GlyphString
impl PartialOrd<GlyphString> for GlyphString
source§fn partial_cmp(&self, other: &GlyphString) -> Option<Ordering>
fn partial_cmp(&self, other: &GlyphString) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresource§impl StaticType for GlyphString
impl StaticType for GlyphString
source§fn static_type() -> Type
fn static_type() -> Type
Self
.impl Eq for GlyphString
impl Send for GlyphString
impl StructuralEq for GlyphString
impl StructuralPartialEq for GlyphString
impl Sync for GlyphString
Auto Trait Implementations§
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> StaticTypeExt for Twhere
T: StaticType,
impl<T> StaticTypeExt for Twhere T: StaticType,
source§fn ensure_type()
fn ensure_type()
source§impl<T> ToClosureReturnValue for Twhere
T: ToValue,
impl<T> ToClosureReturnValue for Twhere T: ToValue,
fn to_closure_return_value(&self) -> Option<Value>
source§impl<T> ToSendValue for Twhere
T: Send + ToValue + ?Sized,
impl<T> ToSendValue for Twhere T: Send + ToValue + ?Sized,
source§fn to_send_value(&self) -> SendValue
fn to_send_value(&self) -> SendValue
SendValue
clone of self
.