Skip to main content

LayerFilter

Enum LayerFilter 

Source
pub enum LayerFilter {
    Blur {
        sigma: f32,
    },
    DropShadow {
        offset: (f32, f32),
        sigma: f32,
        color: AlphaColor<Srgb>,
    },
}
Expand description

A filter the engine can apply to an isolated layer.

Engine-internal on purpose: this is the vocabulary push_filter_layer records with, not a frust_scene command.

Variants§

§

Blur

A Gaussian blur of standard deviation sigma, in the layer’s own user space — the transform in force when the layer is opened scales it into device space.

Fields

§sigma: f32

The blur’s standard deviation. Zero blurs nothing.

§

DropShadow

A shadow-only drop shadow: the layer’s alpha, blurred by sigma, shifted by offset, and recoloured to color — never the layer’s own unfiltered content composited back over it (see drop_shadow’s own doc for why).

Fields

§offset: (f32, f32)

Horizontal, vertical offset of the shadow, in the layer’s own user space — the transform in force when the layer is opened scales it into device space, exactly as sigma is.

§sigma: f32

The shadow’s blur standard deviation. Zero blurs nothing, leaving a hard-edged, offset silhouette.

§color: AlphaColor<Srgb>

The shadow’s own colour. Its alpha scales the shadow’s own opacity; the layer’s colour never reaches the shadow.

Implementations§

Source§

impl LayerFilter

Source

pub fn filter_data(self, transform: Affine) -> Result<FilterData, EngineError>

The recorder-side description of this filter under transform.

This is what carries the filter’s expansion into the recording: a blurred layer’s tile-aligned bounds grow by 3σ on every side, because the blur paints outside the contents that produced it, and the page the layer is rendered into is sized from those grown bounds.

§Errors

EngineError::InvalidGeometry for a σ that is not finite, is negative, or is past MAX_BLUR_SIGMA — in the layer’s own user space or in the device space transform scales it into (a Self::DropShadow’s own offset held to the same finiteness) — and EngineError::InvalidTransform for a transform that is not finite — the same terms the compiler already refuses a draw’s own geometry and transform on, checked here because every quantity below is derived from both.

Trait Implementations§

Source§

impl Clone for LayerFilter

Source§

fn clone(&self) -> Self

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 Copy for LayerFilter

Source§

impl Debug for LayerFilter

Source§

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

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

impl PartialEq for LayerFilter

Source§

fn eq(&self, other: &Self) -> 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 LayerFilter

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> 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

Source§

fn simd_from(_simd: S, value: T) -> T

Source§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

Source§

fn simd_into(self, simd: S) -> T

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 = !

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> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

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