#[non_exhaustive]pub struct InPlacePixels<'a> {
pub bytes: &'a mut [u8],
pub width: u32,
pub rows: u32,
pub stride: usize,
pub descriptor: PixelDescriptor,
pub color: Option<Arc<ColorContext>>,
}Expand description
Everything a layout-changing in-place transform receives from
PixelBuffer::transform_in_place: the buffer’s backing bytes (from
the aligned base, including stride padding) plus its current
description. Plain data — constructible directly (e.g. by transform
unit tests exercising arbitrary strides); the staleness protection
lives in transform_in_place’s atomic adoption, not here.
#[non_exhaustive]: construct it with InPlacePixels::new (inside
transform_in_place the buffer does this for you). Sealing lets future
fields — a cancellation token, a separate anchor — be added without a break.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.bytes: &'a mut [u8]Full backing bytes from the aligned base.
width: u32Current width in pixels.
rows: u32Current row count.
stride: usizeCurrent byte stride between row starts.
descriptor: PixelDescriptorCurrent pixel format descriptor.
color: Option<Arc<ColorContext>>Current color context, if any.
Implementations§
Source§impl<'a> InPlacePixels<'a>
impl<'a> InPlacePixels<'a>
Sourcepub fn new(
bytes: &'a mut [u8],
width: u32,
rows: u32,
stride: usize,
descriptor: PixelDescriptor,
color: Option<Arc<ColorContext>>,
) -> InPlacePixels<'a>
pub fn new( bytes: &'a mut [u8], width: u32, rows: u32, stride: usize, descriptor: PixelDescriptor, color: Option<Arc<ColorContext>>, ) -> InPlacePixels<'a>
Construct directly — the escape hatch for a layout transform invoked
outside PixelBuffer::transform_in_place (e.g. a unit test exercising
an arbitrary stride). Inside transform_in_place the buffer builds this
for you from its own backing bytes and description.