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>(
&self,
deltas: &mut [Point<D>],
scalar: Fixed,
) -> Result<(), ReadError>where
D: PointCoord,
pub fn accumulate_dense_deltas<D>(
&self,
deltas: &mut [Point<D>],
scalar: Fixed,
) -> Result<(), ReadError>where
D: PointCoord,
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>(
&self,
deltas: &mut [Point<D>],
flags: &mut [PointFlags],
scalar: Fixed,
) -> Result<(), ReadError>where
D: PointCoord,
pub fn accumulate_sparse_deltas<D>(
&self,
deltas: &mut [Point<D>],
flags: &mut [PointFlags],
scalar: Fixed,
) -> Result<(), ReadError>where
D: PointCoord,
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 for TupleVariation<'a, T>where
T: Clone,
impl<'a, T> Clone for TupleVariation<'a, T>where
T: Clone,
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 moreAuto 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<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T, Res> Apply<Res> for Twhere
T: ?Sized,
impl<T, Res> Apply<Res> for Twhere
T: ?Sized,
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters
when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self
into C
, using the provided parameters.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle
.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other
into Self
, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T
.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters
when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self
into C
, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self
into T
, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors
fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds
error is returned which contains
the unclamped color. Read more