#[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, panicking if the bytes and geometry disagree.
Prefer try_new when the geometry is supplied by an
untrusted caller. Inside PixelBuffer::transform_in_place the buffer
constructs this from its already-validated state.
§Panics
Panics for the same invalid geometry, undersized backing storage, or
alignment errors reported by try_new.
Sourcepub fn try_new(
bytes: &'a mut [u8],
width: u32,
rows: u32,
stride: usize,
descriptor: PixelDescriptor,
color: Option<Arc<ColorContext>>,
) -> Result<InPlacePixels<'a>, At<BufferError>>
pub fn try_new( bytes: &'a mut [u8], width: u32, rows: u32, stride: usize, descriptor: PixelDescriptor, color: Option<Arc<ColorContext>>, ) -> Result<InPlacePixels<'a>, At<BufferError>>
Construct directly after validating storage, stride, and alignment.
This applies the same invariants as PixelSliceMut::new, preventing
malformed transform inputs from reaching row-oriented conversion code.