Skip to main content

Filter

Struct Filter 

Source
pub struct Filter {
    pub graph: Arc<FilterGraph>,
}
Expand description

The main filter system.

A filter combines a graph of filter primitives with optional spatial bounds. If bounds are specified, the filter only applies within that region.

Fields§

§graph: Arc<FilterGraph>

Filter graph defining the effect pipeline.

Implementations§

Source§

impl Filter

Source

pub fn from_function(function: FilterFunction) -> Self

Create a simple filter system from a filter function.

Converts a high-level CSS-style filter function into a filter graph. Use this for simple effects like blur, brightness, etc.

Source

pub fn from_primitive(primitive: FilterPrimitive) -> Self

Create a filter system from a filter primitive.

Creates a simple filter graph with a single primitive. Use this for direct access to low-level SVG filter operations.

Source

pub fn filter_expansion(&self, transform: &Affine) -> Rect

Calculate how far the filtered output can extend beyond the source content.

The returned Rect is an expansion around the source content bounds, expressed in device space after applying the linear part of transform. Negative x0/y0 values expand to the left/top; positive x1/y1 values expand to the right/bottom.

§Arguments
  • transform - The transform applied to this filter layer
Source

pub fn source_expansion(&self, transform: &Affine) -> Rect

Calculate how far the source input must extend outside the visible source bounds to render the filter correctly.

In most cases (for example for Gaussian blurs), this is the same as Filter::filter_expansion. However, it isn’t the same for drop shadows. Let’s say we have a drop shadow of dx = 20 and dy = 20. In this case, the filter expansion rect will be [0, 0, 20, 20], meaning we need to extend our pixmap 20 pixels to the right/bottom to fully render the filter effect. Filter::source_expansion will instead return [-20, -20, 0, 0]. For example, let’s say the rect is placed in such a way that the drop shadow starts at (0, 0). In this case, we need to expand the source area by twenty pixels to the top/left to ensure that the drop shadow is not cut off.

Trait Implementations§

Source§

impl Clone for Filter

Source§

fn clone(&self) -> Filter

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 Filter

Source§

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

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

impl PartialEq for Filter

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for Filter

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<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, 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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.