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

source

pub fn as_ptr(&self) -> *mut PangoGlyphString

Return the inner pointer to the underlying C value.

source

pub unsafe fn from_glib_ptr_borrow<'a>( ptr: *const *const PangoGlyphString, ) -> &'a Self

Borrows the underlying C value.

source

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

source

pub fn new() -> GlyphString

Create a new GlyphString.

§Returns

the newly allocated GlyphString, which should be freed with Pango::GlyphString::free().

source

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

source

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

source

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.

source

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.

Glyph positions ## `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

source

pub fn set_size(&mut self, new_len: i32)

Resize a glyph string to the given length.

§new_len

the new length of the string

source

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

source

pub fn num_glyphs(&self) -> i32

source

pub fn glyph_info(&self) -> &[GlyphInfo]

source

pub fn glyph_info_mut(&mut self) -> &mut [GlyphInfo]

source

pub fn log_clusters(&self) -> &[i32]

source

pub fn log_clusters_mut(&mut self) -> &mut [i32]

source

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

source§

fn clone(&self) -> Self

Copies the boxed type with the type-specific copy function.

1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GlyphString

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GlyphString

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl From<GlyphString> for Value

source§

fn from(o: GlyphString) -> Self

Converts to this type from the input type.
source§

impl HasParamSpec for GlyphString

§

type ParamSpec = ParamSpecBoxed

§

type SetValue = GlyphString

Preferred value to be used as setter for the associated ParamSpec.
§

type BuilderFn = fn(_: &str) -> ParamSpecBoxedBuilder<'_, GlyphString>

source§

fn param_spec_builder() -> Self::BuilderFn

source§

impl Hash for GlyphString

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for GlyphString

source§

fn cmp(&self, other: &GlyphString) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for GlyphString

source§

fn eq(&self, other: &GlyphString) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for GlyphString

source§

fn partial_cmp(&self, other: &GlyphString) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl StaticType for GlyphString

source§

fn static_type() -> Type

Returns the type identifier of Self.
source§

impl Eq for GlyphString

source§

impl Send for GlyphString

source§

impl StructuralPartialEq for GlyphString

source§

impl Sync for GlyphString

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for T

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for T

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for T

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for T

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for T

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for T

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoClosureReturnValue for T
where T: Into<Value>,

source§

impl<T> Property for T
where T: HasParamSpec,

§

type Value = T

source§

impl<T> PropertyGet for T
where T: HasParamSpec,

§

type Value = T

source§

fn get<R, F>(&self, f: F) -> R
where F: Fn(&<T as PropertyGet>::Value) -> R,

source§

impl<T> StaticTypeExt for T
where T: StaticType,

source§

fn ensure_type()

Ensures that the type has been registered with the type system.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToSendValue for T
where T: Send + ToValue + ?Sized,

source§

fn to_send_value(&self) -> SendValue

Returns a SendValue clone of self.
source§

impl<T> TransparentType for T

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T> TryFromClosureReturnValue for T
where T: for<'a> FromValue<'a> + StaticType + 'static,

source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<'a, T, C, E> FromValueOptional<'a> for T
where T: FromValue<'a, Checker = C>, C: ValueTypeChecker<Error = ValueTypeMismatchOrNoneError<E>>, E: Error + Send + 'static,