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,
impl<'a, T> TupleVariation<'a, T>where
T: TupleDelta,
Sourcepub fn has_deltas_for_all_points(&self) -> bool
pub fn has_deltas_for_all_points(&self) -> bool
Returns true if this tuple provides deltas for all points in a glyph.
pub fn point_numbers(&self) -> PackedPointNumbersIter<'a> ⓘ
pub fn intermediate_start(&self) -> Option<Tuple<'a>>
pub fn intermediate_end(&self) -> Option<Tuple<'a>>
Sourcepub fn compute_scalar(&self, coords: &[F2Dot14]) -> Option<Fixed>
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).
Sourcepub fn compute_scalar_f32(&self, coords: &[F2Dot14]) -> Option<f32>
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).
Sourcepub fn deltas(&self) -> TupleDeltaIter<'a, T> ⓘ
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>
impl TupleVariation<'_, GlyphDelta>
Sourcepub fn accumulate_dense_deltas<D: PointCoord>(
&self,
deltas: &mut [Point<D>],
scalar: Fixed,
) -> Result<(), ReadError>
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
.
Sourcepub fn accumulate_sparse_deltas<D: PointCoord>(
&self,
deltas: &mut [Point<D>],
flags: &mut [PointFlags],
scalar: Fixed,
) -> Result<(), ReadError>
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>
impl<'a, T: Clone> Clone for TupleVariation<'a, T>
Source§fn clone(&self) -> TupleVariation<'a, T>
fn clone(&self) -> TupleVariation<'a, T>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more