Skip to main content

Gradient

Struct Gradient 

Source
pub struct Gradient { /* private fields */ }
Expand description

A box’s gradient: see the module’s notes. Built by Gradient::to, Gradient::angle or Gradient::radial, or read from plain data by parse_with.

Implementations§

Source§

impl Gradient

Source

pub fn to<S>(side: Side, stops: impl IntoIterator<Item = S>) -> Gradient
where S: Into<Stop>,

A linear gradient towards a side or a corner of the box. To a corner the half-way line runs through the other two corners at any aspect, which is CSS’s to bottom right.

Source

pub fn angle<S>(turns: f32, stops: impl IntoIterator<Item = S>) -> Gradient
where S: Into<Stop>,

A linear gradient along turns, clockwise from east (0.25 is downwards), measured in the box’s unit square — so an eighth of a turn runs corner to corner whatever the box’s aspect, which CSS’s 45deg, measured in pixels, does not.

Source

pub fn radial<S>(stops: impl IntoIterator<Item = S>) -> Gradient
where S: Into<Stop>,

A radial gradient from the middle of the box out to its corners.

Source

pub fn radial_at<S>(at: Vec2, stops: impl IntoIterator<Item = S>) -> Gradient
where S: Into<Stop>,

A radial gradient from at — fractions of the box, (0.5, 0) the middle of its top edge — out to the corner farthest from it.

Source

pub fn is_drawable(&self) -> bool

Whether there is anything to paint: two stops or more, and a shape made of numbers.

Source

pub fn key(&self) -> u64

The key its raster is held under: equal for equal gradients, whatever box draws them.

Source

pub fn stops(&self) -> &[(Color, f32)]

The stops as resolved: a colour and its position, in order.

Source

pub fn raster_size(&self) -> (u32, u32)

The raster’s size in texels: a strip along the axis the gradient runs on, or the square.

Source

pub fn slot_size(&self) -> (u32, u32)

The texels its slot takes: Self::raster_size and a gutter of one all round.

Source

pub fn rasterize(&self) -> Vec<u8> ⓘ

The raster: Self::slot_size texels of straight RGBA, row after row, each the gradient at its texel’s centre. The quad draws the inner Self::raster_size of them; the gutter is the gradient carried on a texel past each edge, because the quad is stretched and sampled linearly, and at the box’s edge the sampler reads half a texel past the rect it was given — a strip one texel high would otherwise fade into whatever the atlas holds above and below it.

Source

pub fn color_in(&self, x: f32, y: f32) -> Color

The colour at a point of the box, as fractions of it: (0, 0) its top left, (1, 1) its bottom right. What the raster samples, and what a test of the stretched raster compares it with.

Source

pub fn color_at(&self, t: f32) -> Color

The colour t of the way along: the stops either side mixed in straight sRGB with the alpha premultiplied, as CSS mixes them, so a fade to transparent does not pass through grey. Before the first stop it is the first, past the last the last.

Trait Implementations§

Source§

impl Clone for Gradient

Source§

fn clone(&self) -> Gradient

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Gradient

Source§

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

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

impl PartialEq for Gradient

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Gradient

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more