Struct pango::GlyphString
source · 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.
GLib type: Boxed type with copy-on-clone semantics.
Implementations§
source§impl GlyphString
impl GlyphString
sourcepub fn as_ptr(&self) -> *mut PangoGlyphString
pub fn as_ptr(&self) -> *mut PangoGlyphString
Return the inner pointer to the underlying C value.
sourcepub unsafe fn from_glib_ptr_borrow<'a>(
ptr: *const *const PangoGlyphString,
) -> &'a Self
pub unsafe fn from_glib_ptr_borrow<'a>( ptr: *const *const PangoGlyphString, ) -> &'a Self
Borrows the underlying C value.
sourcepub unsafe fn from_glib_ptr_borrow_mut<'a>(
ptr: *mut *mut PangoGlyphString,
) -> &'a mut Self
pub unsafe fn from_glib_ptr_borrow_mut<'a>( ptr: *mut *mut PangoGlyphString, ) -> &'a mut Self
Borrows the underlying C value mutably.
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: &Analysis,
index_: i32,
trailing: bool,
) -> i32
pub fn index_to_x( &self, text: &str, analysis: &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: &Analysis,
x_pos: i32,
) -> (i32, i32)
pub fn x_to_index( &self, text: &str, analysis: &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 From<GlyphString> for Value
impl From<GlyphString> for Value
source§fn from(o: GlyphString) -> Self
fn from(o: GlyphString) -> Self
source§impl HasParamSpec for GlyphString
impl HasParamSpec for GlyphString
type ParamSpec = ParamSpecBoxed
§type SetValue = GlyphString
type SetValue = GlyphString
type BuilderFn = fn(_: &str) -> ParamSpecBoxedBuilder<'_, GlyphString>
fn param_spec_builder() -> Self::BuilderFn
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 for GlyphString
impl PartialEq 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 for GlyphString
impl PartialOrd 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 StructuralPartialEq for GlyphString
impl Sync for GlyphString
Auto Trait Implementations§
impl Freeze for GlyphString
impl RefUnwindSafe for GlyphString
impl Unpin for GlyphString
impl UnwindSafe for GlyphString
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)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> IntoClosureReturnValue for T
impl<T> IntoClosureReturnValue for T
fn into_closure_return_value(self) -> Option<Value>
source§impl<T> PropertyGet for Twhere
T: HasParamSpec,
impl<T> PropertyGet for Twhere
T: HasParamSpec,
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> ToSendValue for T
impl<T> ToSendValue for T
source§fn to_send_value(&self) -> SendValue
fn to_send_value(&self) -> SendValue
SendValue
clone of self
.