pub struct Gradient<C, T = Vec<(<C as Mix>::Scalar, C)>>(_, _)
where
C: Mix + Clone,
T: AsRef<[(C::Scalar, C)]>;
Expand description
A linear interpolation between colors.
It’s used to smoothly transition between a series of colors, that can be
either evenly spaced or have customized positions. The gradient is
continuous between the control points, but it’s possible to iterate over a
number of evenly spaced points using the take
method. Any point outside
the domain of the gradient will have the same color as the closest control
point.
Implementations
sourceimpl<C, T> Gradient<C, T> where
C: Mix + Clone,
T: AsRef<[(C::Scalar, C)]>,
impl<C, T> Gradient<C, T> where
C: Mix + Clone,
T: AsRef<[(C::Scalar, C)]>,
sourcepub fn get(&self, i: C::Scalar) -> C
pub fn get(&self, i: C::Scalar) -> C
Get a color from the gradient. The color of the closest control point
will be returned if i
is outside the domain.
sourcepub fn with_domain(colors: T) -> Gradient<C, T>
pub fn with_domain(colors: T) -> Gradient<C, T>
Create a gradient of colors with custom spacing and domain. There must be at least one color and they are expected to be ordered by their position value.
sourcepub fn take(&self, n: usize) -> Take<'_, C, T>ⓘNotable traits for Take<'a, C, T>impl<'a, C, T> Iterator for Take<'a, C, T> where
C::Scalar: FromF64,
C: Mix + Clone,
T: AsRef<[(C::Scalar, C)]>, type Item = C;
pub fn take(&self, n: usize) -> Take<'_, C, T>ⓘNotable traits for Take<'a, C, T>impl<'a, C, T> Iterator for Take<'a, C, T> where
C::Scalar: FromF64,
C: Mix + Clone,
T: AsRef<[(C::Scalar, C)]>, type Item = C;
C::Scalar: FromF64,
C: Mix + Clone,
T: AsRef<[(C::Scalar, C)]>, type Item = C;
Take n
evenly spaced colors from the gradient, as an iterator. The
iterator includes both ends of the gradient, for n > 1
, or just
the lower end of the gradient for n = 0
.
For example, take(5)
will include point 0.0 of the gradient, three
intermediate colors, and point 1.0 spaced apart at 1/4 the distance
between colors 0.0 and 1.0 on the gradient.
use approx::assert_relative_eq;
use palette::{Gradient, LinSrgb};
let gradient = Gradient::new(vec![
LinSrgb::new(1.0, 1.0, 0.0),
LinSrgb::new(0.0, 0.0, 1.0),
]);
let taken_colors: Vec<_> = gradient.take(5).collect();
let colors = vec![
LinSrgb::new(1.0, 1.0, 0.0),
LinSrgb::new(0.75, 0.75, 0.25),
LinSrgb::new(0.5, 0.5, 0.5),
LinSrgb::new(0.25, 0.25, 0.75),
LinSrgb::new(0.0, 0.0, 1.0),
];
for (c1, c2) in taken_colors.iter().zip(colors.iter()) {
assert_relative_eq!(c1, c2);
}
Trait Implementations
sourceimpl<C: Clone, T: Clone> Clone for Gradient<C, T> where
C: Mix + Clone,
T: AsRef<[(C::Scalar, C)]>,
impl<C: Clone, T: Clone> Clone for Gradient<C, T> where
C: Mix + Clone,
T: AsRef<[(C::Scalar, C)]>,
Auto Trait Implementations
impl<C, T> RefUnwindSafe for Gradient<C, T> where
C: RefUnwindSafe,
T: RefUnwindSafe,
impl<C, T> Send for Gradient<C, T> where
C: Send,
T: Send,
impl<C, T> Sync for Gradient<C, T> where
C: Sync,
T: Sync,
impl<C, T> Unpin for Gradient<C, T> where
C: Unpin,
T: Unpin,
impl<C, T> UnwindSafe for Gradient<C, T> where
C: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
sourceimpl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S where
T: FloatComponent,
Swp: WhitePoint,
Dwp: WhitePoint,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S where
T: FloatComponent,
Swp: WhitePoint,
Dwp: WhitePoint,
D: AdaptFrom<S, Swp, Dwp, T>,
sourcefn adapt_into_using<M>(self, method: M) -> D where
M: TransformMatrix<Swp, Dwp, T>,
fn adapt_into_using<M>(self, method: M) -> D where
M: TransformMatrix<Swp, Dwp, T>,
Convert the source color to the destination color using the specified method Read more
sourcefn adapt_into(self) -> D
fn adapt_into(self) -> D
Convert the source color to the destination color using the bradford method by default Read more
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T, U> IntoColor<U> for T where
U: FromColor<T>,
impl<T, U> IntoColor<U> for T where
U: FromColor<T>,
sourcefn into_color(self) -> U
fn into_color(self) -> U
Convert into T with values clamped to the color defined bounds Read more
sourceimpl<T, U> IntoColorUnclamped<U> for T where
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for T where
U: FromColorUnclamped<T>,
sourcefn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Convert into T. The resulting color might be invalid in its color space Read more
sourceimpl<T, U> TryIntoColor<U> for T where
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for T where
U: TryFromColor<T>,
sourcefn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
Convert into T, returning ok if the color is inside of its defined
range, otherwise an OutOfBounds
error is returned which contains
the unclamped color. Read more