pub struct DisplayList { /* private fields */ }Expand description
A recorded list of rendering commands that can be replayed onto a pixmap.
The display list captures rendering operations so they can be executed later, potentially multiple times or at different scales. This is useful for caching page rendering results, implementing tiled rendering, and print preview.
Implementations§
Source§impl DisplayList
impl DisplayList
Sourcepub fn new(width: u32, height: u32) -> Self
pub fn new(width: u32, height: u32) -> Self
Create a new empty display list with the given target dimensions.
Sourcepub fn push(&mut self, cmd: DisplayCommand)
pub fn push(&mut self, cmd: DisplayCommand)
Record a command.
Sourcepub fn commands(&self) -> &[DisplayCommand]
pub fn commands(&self) -> &[DisplayCommand]
Get all commands.
Sourcepub fn replay(&self, pixmap: &mut Pixmap)
pub fn replay(&self, pixmap: &mut Pixmap)
Replay all commands onto a pixmap using the identity transform.
Sourcepub fn replay_with_transform(
&self,
pixmap: &mut Pixmap,
extra_transform: Transform,
)
pub fn replay_with_transform( &self, pixmap: &mut Pixmap, extra_transform: Transform, )
Replay all commands onto a pixmap with an extra transform applied to every drawing operation. This is useful for rendering at different scales or offsets without re-recording the display list.
Sourcepub fn bounds(&self) -> Option<Rect>
pub fn bounds(&self) -> Option<Rect>
Compute the axis-aligned bounding box that encloses all paths in the
display list. Returns None if no paths have been recorded.
Sourcepub fn optimize(&mut self)
pub fn optimize(&mut self)
Remove redundant command sequences that have no visual effect.
Currently optimizes:
- Consecutive
Save/Restorepairs with nothing between them. - Consecutive
BeginGroup/EndGrouppairs with nothing between them.
Sourcepub fn render_tile(
&self,
tile_left: f32,
tile_top: f32,
tile_width: u32,
tile_height: u32,
) -> Option<Pixmap>
pub fn render_tile( &self, tile_left: f32, tile_top: f32, tile_width: u32, tile_height: u32, ) -> Option<Pixmap>
Render a rectangular tile of the display list.
The tile is specified by its top-left corner (tile_left, tile_top)
in the display list’s coordinate system, and its dimensions in pixels.
The display list is replayed with a translation so that the tile region
maps to (0, 0) on the output pixmap.
Returns None if the pixmap cannot be created (e.g. zero dimensions).
Sourcepub fn render_tiled(&self, tile_size: u32, background: Color) -> Option<Pixmap>
pub fn render_tiled(&self, tile_size: u32, background: Color) -> Option<Pixmap>
Render the display list as a grid of tiles and composite them into a single output pixmap. This can reduce peak memory usage compared to rendering the full page at once when combined with command culling.
Returns None if the output pixmap cannot be created.
Trait Implementations§
Source§impl Clone for DisplayList
impl Clone for DisplayList
Source§fn clone(&self) -> DisplayList
fn clone(&self) -> DisplayList
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for DisplayList
impl RefUnwindSafe for DisplayList
impl Send for DisplayList
impl Sync for DisplayList
impl Unpin for DisplayList
impl UnsafeUnpin for DisplayList
impl UnwindSafe for DisplayList
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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