Enum webrender::picture::PictureCompositeMode

source ·
pub enum PictureCompositeMode {
    MixBlend(MixBlendMode),
    Filter(Filter),
    ComponentTransferFilter(Handle<FilterDataIntern>),
    Blit(BlitReason),
    TileCache {
        slice_id: SliceId,
    },
    SvgFilter(Vec<FilterPrimitive>, Vec<SFilterData>),
    SVGFEGraph(Vec<(FilterGraphNode, FilterGraphOp)>),
    IntermediateSurface,
}
Expand description

Specifies how this Picture should be composited onto the target it belongs to.

Variants§

§

MixBlend(MixBlendMode)

Apply CSS mix-blend-mode effect.

§

Filter(Filter)

Apply a CSS filter (except component transfer).

§

ComponentTransferFilter(Handle<FilterDataIntern>)

Apply a component transfer filter.

§

Blit(BlitReason)

Draw to intermediate surface, copy straight across. This is used for CSS isolation, and plane splitting.

§

TileCache

Used to cache a picture as a series of tiles.

Fields

§slice_id: SliceId
§

SvgFilter(Vec<FilterPrimitive>, Vec<SFilterData>)

Apply an SVG filter

§

SVGFEGraph(Vec<(FilterGraphNode, FilterGraphOp)>)

Apply an SVG filter graph

§

IntermediateSurface

A surface that is used as an input to another primitive

Implementations§

source§

impl PictureCompositeMode

source

pub fn get_rect( &self, surface: &SurfaceInfo, sub_rect: Option<LayoutRect>, ) -> LayoutRect

source

pub fn get_coverage( &self, surface: &SurfaceInfo, sub_rect: Option<LayoutRect>, ) -> LayoutRect

source

pub fn kind(&self) -> &'static str

Returns a static str describing the type of PictureCompositeMode (and filter type if applicable)

source

pub fn get_coverage_svgfe( &self, filters: &[(FilterGraphNode, FilterGraphOp)], surface_rect: LayoutRect, surface_rect_is_source: bool, skip_subregion_clips: bool, ) -> (LayoutRect, LayoutRect, LayoutRect)

Here we compute the source and target rects for SVGFEGraph by walking the whole graph and propagating subregions based on the provided invalidation rect (in either source or target space), and we want it to be a tight fit so we don’t waste time applying multiple filters to pixels that do not contribute to the invalidated rect.

The interesting parts of the handling of SVG filters are:

  • scene_building.rs : wrap_prim_with_filters
  • picture.rs : get_coverage_svgfe (you are here)
  • render_task.rs : new_svg_filter_graph
  • render_target.rs : add_svg_filter_node_instances

Trait Implementations§

source§

impl Clone for PictureCompositeMode

source§

fn clone(&self) -> PictureCompositeMode

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for PictureCompositeMode

source§

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

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

impl Serialize for PictureCompositeMode

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

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> 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> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> ToOwned for T
where T: Clone,

§

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

§

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

§

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.