pub struct BackbufferCache {
pub pixels: Option<Arc<Vec<u8>>>,
pub lcd_alpha: Option<Arc<Vec<u8>>>,
pub width: u32,
pub height: u32,
pub dirty: bool,
pub theme_epoch: u64,
pub typography_epoch: u64,
}Expand description
A CPU bitmap owned by a widget that opts into backbuffer caching.
The framework re-rasterises when the cache’s explicit dirty flag is set or when global styling epochs change.
Fields§
§pixels: Option<Arc<Vec<u8>>>In Rgba mode: top-row-first RGBA8 pixels, straight alpha.
Blitted via DrawCtx::draw_image_rgba_arc.
In LcdCoverage mode: top-row-first colour plane — 3
bytes/pixel (R_premult, G_premult, B_premult) matching the
convention of crate::lcd_coverage::LcdBuffer::color_plane
flipped to top-down. The companion alpha plane lives in
Self::lcd_alpha.
lcd_alpha: Option<Arc<Vec<u8>>>LcdCoverage-mode companion to pixels: top-row-first per-channel
alpha plane (3 bytes/pixel, (R_alpha, G_alpha, B_alpha)).
None means this is a plain Rgba cache. When Some, the blit
step uses DrawCtx::draw_lcd_backbuffer_arc to preserve the
per-channel subpixel information through to the destination —
required for LCD chroma to survive the cache round-trip.
width: u32§height: u32§dirty: boolWhen true, the next paint will re-rasterise rather than reusing
pixels. Widgets set this from their mutation paths
(set_text, set_color, focus/hover changes, etc.) and the
framework clears it after a successful re-raster.
theme_epoch: u64Visuals epoch (see crate::theme::current_visuals_epoch) recorded
the last time this cache was populated. paint_subtree_backbuffered
compares it against the live epoch and forces a re-raster on mismatch,
so widgets whose text/fill colours come from ctx.visuals() refresh
automatically on a dark/light theme flip without needing every widget
to subscribe to theme-change events.
typography_epoch: u64Typography epoch (see
crate::font_settings::current_typography_epoch) — same
pattern as theme_epoch but for font / size scale / LCD /
hinting / gamma / width / interval / faux-* globals. Lets a
slider drag in the LCD Subpixel demo invalidate every cached
Label bitmap without bespoke hooks per widget.
Implementations§
Source§impl BackbufferCache
impl BackbufferCache
pub fn new() -> Self
Sourcepub fn invalidate(&mut self)
pub fn invalidate(&mut self)
Mark the cache dirty so the next paint re-rasterises.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for BackbufferCache
impl RefUnwindSafe for BackbufferCache
impl Send for BackbufferCache
impl Sync for BackbufferCache
impl Unpin for BackbufferCache
impl UnsafeUnpin for BackbufferCache
impl UnwindSafe for BackbufferCache
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> 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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().