pub struct DisplayListBuilder {
Show 14 fields payload: DisplayListPayload, pub pipeline_id: PipelineId, pending_chunk: Vec<u8>, writing_to_chunk: bool, next_clip_index: usize, next_spatial_index: usize, next_clip_chain_id: u64, builder_start_time: u64, save_state: Option<SaveState>, cache_size: usize, serialized_content_buffer: Option<String>, state: BuildState, rf_mapper: ReferenceFrameMapper, spatial_nodes: Vec<SpatialNodeInfo>,
}

Fields§

§payload: DisplayListPayload§pipeline_id: PipelineId§pending_chunk: Vec<u8>§writing_to_chunk: bool§next_clip_index: usize§next_spatial_index: usize§next_clip_chain_id: u64§builder_start_time: u64§save_state: Option<SaveState>§cache_size: usize§serialized_content_buffer: Option<String>§state: BuildState§rf_mapper: ReferenceFrameMapper

Helper struct to map stacking context coords <-> reference frame coords.

§spatial_nodes: Vec<SpatialNodeInfo>

Minimal info about encountered spatial nodes to allow snapping during DL building

Implementations§

source§

impl DisplayListBuilder

source

pub fn new(pipeline_id: PipelineId) -> Self

source

fn reset(&mut self)

source

pub fn save(&mut self)

Saves the current display list state, so it may be restore()’d.

Conditions:
  • Doesn’t support popping clips that were pushed before the save.
  • Doesn’t support nested saves.
  • Must call clear_save() if the restore becomes unnecessary.
source

pub fn restore(&mut self)

Restores the state of the builder to when save() was last called.

source

pub fn clear_save(&mut self)

Discards the builder’s save (indicating the attempted operation was successful).

source

pub fn emit_display_list<W>( &mut self, indent: usize, range: Range<Option<usize>>, sink: W ) -> usizewhere W: Write,

Emits a debug representation of display items in the list, for debugging purposes. If the range’s start parameter is specified, only display items starting at that index (inclusive) will be printed. If the range’s end parameter is specified, only display items before that index (exclusive) will be printed. Calling this function with end <= start is allowed but is just a waste of CPU cycles. The function emits the debug representation of the selected display items, one per line, with the given indent, to the provided sink object. The return value is the total number of items in the display list, which allows the caller to subsequently invoke this function to only dump the newly-added items.

source

pub fn dump_serialized_display_list(&mut self)

Print the display items in the list to stdout.

source

fn add_to_display_list_dump<T: Debug>(&mut self, item: T)

source

fn default_section(&self) -> DisplayListSection

Returns the default section that DisplayListBuilder will write to, if no section is specified explicitly.

source

fn buffer_from_section(&mut self, section: DisplayListSection) -> &mut Vec<u8>

source

pub fn push_item_to_section( &mut self, item: &DisplayItem, section: DisplayListSection )

source

pub fn push_item(&mut self, item: &DisplayItem)

Add an item to the display list.

NOTE: It is usually preferable to use the specialized methods to push display items. Pushing unexpected or invalid items here may result in WebRender panicking or behaving in unexpected ways.

source

pub fn push_spatial_tree_item(&mut self, item: &SpatialTreeItem)

source

fn push_iter_impl<I>(data: &mut Vec<u8>, iter_source: I)where I: IntoIterator, I::IntoIter: ExactSizeIterator, I::Item: Poke,

source

pub fn push_iter<I>(&mut self, iter: I)where I: IntoIterator, I::IntoIter: ExactSizeIterator, I::Item: Poke,

Push items from an iterator to the display list.

NOTE: Pushing unexpected or invalid items to the display list may result in panic and confusion.

source

pub fn push_rect( &mut self, common: &CommonItemProperties, bounds: LayoutRect, color: ColorF )

source

pub fn push_rect_with_animation( &mut self, common: &CommonItemProperties, bounds: LayoutRect, color: PropertyBinding<ColorF> )

source

pub fn push_clear_rect( &mut self, common: &CommonItemProperties, bounds: LayoutRect )

source

pub fn push_hit_test( &mut self, rect: LayoutRect, clip_chain_id: ClipChainId, spatial_id: SpatialId, flags: PrimitiveFlags, tag: ItemTag )

source

pub fn push_line( &mut self, common: &CommonItemProperties, area: &LayoutRect, wavy_line_thickness: f32, orientation: LineOrientation, color: &ColorF, style: LineStyle )

source

pub fn push_image( &mut self, common: &CommonItemProperties, bounds: LayoutRect, image_rendering: ImageRendering, alpha_type: AlphaType, key: ImageKey, color: ColorF )

source

pub fn push_repeating_image( &mut self, common: &CommonItemProperties, bounds: LayoutRect, stretch_size: LayoutSize, tile_spacing: LayoutSize, image_rendering: ImageRendering, alpha_type: AlphaType, key: ImageKey, color: ColorF )

source

pub fn push_yuv_image( &mut self, common: &CommonItemProperties, bounds: LayoutRect, yuv_data: YuvData, color_depth: ColorDepth, color_space: YuvColorSpace, color_range: ColorRange, image_rendering: ImageRendering )

Push a yuv image. All planar data in yuv image should use the same buffer type.

source

pub fn push_text( &mut self, common: &CommonItemProperties, bounds: LayoutRect, glyphs: &[GlyphInstance], font_key: FontInstanceKey, color: ColorF, glyph_options: Option<GlyphOptions> )

source

pub fn create_gradient( &mut self, start_point: LayoutPoint, end_point: LayoutPoint, stops: Vec<GradientStop>, extend_mode: ExtendMode ) -> Gradient

NOTE: gradients must be pushed in the order they’re created because create_gradient stores the stops in anticipation.

source

pub fn create_radial_gradient( &mut self, center: LayoutPoint, radius: LayoutSize, stops: Vec<GradientStop>, extend_mode: ExtendMode ) -> RadialGradient

NOTE: gradients must be pushed in the order they’re created because create_gradient stores the stops in anticipation.

source

pub fn create_conic_gradient( &mut self, center: LayoutPoint, angle: f32, stops: Vec<GradientStop>, extend_mode: ExtendMode ) -> ConicGradient

NOTE: gradients must be pushed in the order they’re created because create_gradient stores the stops in anticipation.

source

pub fn push_border( &mut self, common: &CommonItemProperties, bounds: LayoutRect, widths: LayoutSideOffsets, details: BorderDetails )

source

pub fn push_box_shadow( &mut self, common: &CommonItemProperties, box_bounds: LayoutRect, offset: LayoutVector2D, color: ColorF, blur_radius: f32, spread_radius: f32, border_radius: BorderRadius, clip_mode: BoxShadowClipMode )

source

pub fn push_gradient( &mut self, common: &CommonItemProperties, bounds: LayoutRect, gradient: Gradient, tile_size: LayoutSize, tile_spacing: LayoutSize )

Pushes a linear gradient to be displayed.

The gradient itself is described in the gradient parameter. It is drawn on a “tile” with the dimensions from tile_size. These tiles are now repeated to the right and to the bottom infinitely. If tile_spacing is not zero spacers with the given dimensions are inserted between the tiles as seams.

The origin of the tiles is given in layout.rect.origin. If the gradient should only be displayed once limit the layout.rect.size to a single tile. The gradient is only visible within the local clip.

source

pub fn push_radial_gradient( &mut self, common: &CommonItemProperties, bounds: LayoutRect, gradient: RadialGradient, tile_size: LayoutSize, tile_spacing: LayoutSize )

Pushes a radial gradient to be displayed.

See push_gradient for explanation.

source

pub fn push_conic_gradient( &mut self, common: &CommonItemProperties, bounds: LayoutRect, gradient: ConicGradient, tile_size: LayoutSize, tile_spacing: LayoutSize )

Pushes a conic gradient to be displayed.

See push_gradient for explanation.

source

pub fn push_reference_frame( &mut self, origin: LayoutPoint, parent_spatial_id: SpatialId, transform_style: TransformStyle, transform: PropertyBinding<LayoutTransform>, kind: ReferenceFrameKind, key: SpatialTreeItemKey ) -> SpatialId

source

pub fn push_computed_frame( &mut self, origin: LayoutPoint, parent_spatial_id: SpatialId, scale_from: Option<LayoutSize>, vertical_flip: bool, rotation: Rotation, key: SpatialTreeItemKey ) -> SpatialId

source

pub fn pop_reference_frame(&mut self)

source

pub fn push_stacking_context( &mut self, origin: LayoutPoint, spatial_id: SpatialId, prim_flags: PrimitiveFlags, clip_chain_id: Option<ClipChainId>, transform_style: TransformStyle, mix_blend_mode: MixBlendMode, filters: &[FilterOp], filter_datas: &[FilterData], filter_primitives: &[FilterPrimitive], raster_space: RasterSpace, flags: StackingContextFlags )

source

pub fn push_simple_stacking_context( &mut self, origin: LayoutPoint, spatial_id: SpatialId, prim_flags: PrimitiveFlags )

Helper for examples/ code.

source

pub fn push_simple_stacking_context_with_filters( &mut self, origin: LayoutPoint, spatial_id: SpatialId, prim_flags: PrimitiveFlags, filters: &[FilterOp], filter_datas: &[FilterData], filter_primitives: &[FilterPrimitive] )

Helper for examples/ code.

source

pub fn pop_stacking_context(&mut self)

source

pub fn push_stops(&mut self, stops: &[GradientStop])

source

pub fn push_backdrop_filter( &mut self, common: &CommonItemProperties, filters: &[FilterOp], filter_datas: &[FilterData], filter_primitives: &[FilterPrimitive] )

source

pub fn push_filters( &mut self, filters: &[FilterOp], filter_datas: &[FilterData], filter_primitives: &[FilterPrimitive] )

source

fn generate_clip_index(&mut self) -> ClipId

source

fn generate_spatial_index(&mut self) -> SpatialId

source

fn generate_clip_chain_id(&mut self) -> ClipChainId

source

pub fn define_scroll_frame( &mut self, parent_space: SpatialId, external_id: ExternalScrollId, content_rect: LayoutRect, frame_rect: LayoutRect, external_scroll_offset: LayoutVector2D, scroll_offset_generation: APZScrollGeneration, has_scroll_linked_effect: HasScrollLinkedEffect, key: SpatialTreeItemKey ) -> SpatialId

source

pub fn define_clip_chain<I>( &mut self, parent: Option<ClipChainId>, clips: I ) -> ClipChainIdwhere I: IntoIterator<Item = ClipId>, I::IntoIter: ExactSizeIterator + Clone,

source

pub fn define_clip_image_mask( &mut self, spatial_id: SpatialId, image_mask: ImageMask, points: &[LayoutPoint], fill_rule: FillRule ) -> ClipId

source

pub fn define_clip_rect( &mut self, spatial_id: SpatialId, clip_rect: LayoutRect ) -> ClipId

source

pub fn define_clip_rounded_rect( &mut self, spatial_id: SpatialId, clip: ComplexClipRegion ) -> ClipId

source

pub fn define_sticky_frame( &mut self, parent_spatial_id: SpatialId, frame_rect: LayoutRect, margins: SideOffsets2D<Option<f32>, LayoutPixel>, vertical_offset_bounds: StickyOffsetBounds, horizontal_offset_bounds: StickyOffsetBounds, previously_applied_offset: LayoutVector2D, key: SpatialTreeItemKey ) -> SpatialId

source

pub fn push_iframe( &mut self, bounds: LayoutRect, clip_rect: LayoutRect, space_and_clip: &SpaceAndClipInfo, pipeline_id: PipelineId, ignore_missing_pipeline: bool )

source

pub fn push_shadow( &mut self, space_and_clip: &SpaceAndClipInfo, shadow: Shadow, should_inflate: bool )

source

pub fn pop_all_shadows(&mut self)

source

pub fn start_item_group(&mut self)

source

fn flush_pending_item_group(&mut self, key: ItemKey)

source

pub fn finish_item_group(&mut self, key: ItemKey) -> bool

source

pub fn cancel_item_group(&mut self, discard: bool)

source

pub fn push_reuse_items(&mut self, key: ItemKey)

source

fn push_retained_items(&mut self, key: ItemKey)

source

pub fn set_cache_size(&mut self, cache_size: usize)

source

pub fn begin(&mut self)

source

pub fn end(&mut self) -> (PipelineId, BuiltDisplayList)

source

fn current_offset(&mut self, spatial_id: SpatialId) -> LayoutVector2D

Retrieve the current offset to allow converting a stacking context relative coordinate to be relative to the owing reference frame, also considering any external scroll offset on the provided spatial node.

source

fn add_spatial_node_info( &mut self, id: SpatialId, accumulated_external_scroll_offset: LayoutVector2D )

Add info about a spatial node that is needed during DL building.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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, U> TryFrom<U> for Twhere 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 Twhere 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.