Struct TupleVariation

Source
pub struct TupleVariation<'a, T> { /* private fields */ }
Expand description

A single set of tuple variation data

Implementations§

Source§

impl<'a, T> TupleVariation<'a, T>
where T: TupleDelta,

Source

pub fn has_deltas_for_all_points(&self) -> bool

Returns true if this tuple provides deltas for all points in a glyph.

Source

pub fn point_numbers(&self) -> PackedPointNumbersIter<'a>

Source

pub fn peak(&self) -> Tuple<'a>

Returns the ‘peak’ tuple for this variation

Source

pub fn intermediate_start(&self) -> Option<Tuple<'a>>

Source

pub fn intermediate_end(&self) -> Option<Tuple<'a>>

Source

pub fn compute_scalar(&self, coords: &[F2Dot14]) -> Option<Fixed>

Compute the fixed point scalar for this tuple at the given location in variation space.

The coords slice must be of lesser or equal length to the number of axes. If it is less, missing (trailing) axes will be assumed to have zero values.

Returns None if this tuple is not applicable at the provided coordinates (e.g. if the resulting scalar is zero).

Source

pub fn compute_scalar_f32(&self, coords: &[F2Dot14]) -> Option<f32>

Compute the floating point scalar for this tuple at the given location in variation space.

The coords slice must be of lesser or equal length to the number of axes. If it is less, missing (trailing) axes will be assumed to have zero values.

Returns None if this tuple is not applicable at the provided coordinates (e.g. if the resulting scalar is zero).

Source

pub fn deltas(&self) -> TupleDeltaIter<'a, T>

Iterate over the deltas for this tuple.

This does not account for scaling. Returns only explicitly encoded deltas, e.g. an omission by IUP will not be present.

Source§

impl TupleVariation<'_, GlyphDelta>

Source

pub fn accumulate_dense_deltas<D: PointCoord>( &self, deltas: &mut [Point<D>], scalar: Fixed, ) -> Result<(), ReadError>

Reads the set of deltas from this tuple variation.

This is significantly faster than using the Self::deltas method but requires preallocated memory to store deltas and flags.

This method should only be used when the tuple variation is dense, that is, Self::has_deltas_for_all_points returns true.

The size of deltas must be the same as the target value set to which the variation is applied. For simple outlines, this is num_points + 4 and for composites it is num_components + 4 (where the + 4 is to accommodate phantom points).

The deltas slice will not be zeroed before accumulation and each delta will be multiplied by the given scalar.

Source

pub fn accumulate_sparse_deltas<D: PointCoord>( &self, deltas: &mut [Point<D>], flags: &mut [PointFlags], scalar: Fixed, ) -> Result<(), ReadError>

Reads the set of deltas from this tuple variation.

This is significantly faster than using the Self::deltas method but requires preallocated memory to store deltas and flags.

This method should only be used when the tuple variation is sparse, that is, Self::has_deltas_for_all_points returns false.

The size of deltas must be the same as the target value set to which the variation is applied. For simple outlines, this is num_points + 4 and for composites it is num_components + 4 (where the + 4 is to accommodate phantom points).

The deltas and flags slices must be the same size. Modifications to deltas will be sparse and for each entry that is modified, the PointMarker::HAS_DELTA marker will be set for the corresponding entry in the flags slice.

The deltas slice will not be zeroed before accumulation and each delta will be multiplied by the given scalar.

Trait Implementations§

Source§

impl<'a, T: Clone> Clone for TupleVariation<'a, T>

Source§

fn clone(&self) -> TupleVariation<'a, T>

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more

Auto Trait Implementations§

§

impl<'a, T> Freeze for TupleVariation<'a, T>

§

impl<'a, T> RefUnwindSafe for TupleVariation<'a, T>

§

impl<'a, T> Send for TupleVariation<'a, T>

§

impl<'a, T> Sync for TupleVariation<'a, T>

§

impl<'a, T> Unpin for TupleVariation<'a, T>

§

impl<'a, T> UnwindSafe for TupleVariation<'a, T>

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§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

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, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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.