pub struct AnimFrame {
pub pixels: Vec<u8>,
pub width: u32,
pub height: u32,
pub x: u32,
pub y: u32,
pub duration: u32,
pub blend: BlendingMethod,
pub dispose: DisposalMethod,
pub mode: AnimFrameMode,
}Expand description
A single animation frame to encode.
pixels is width * height * 4 interleaved 8-bit [R, G, B, A] bytes in
scan-line order — the same flat layout crate::WebpFrame::rgba decodes
to. x / y place the frame’s upper-left corner on the canvas (must be
even per §2.7.1.1, since the on-disk field is the coordinate / 2).
Fields§
§pixels: Vec<u8>width * height * 4 interleaved [R, G, B, A] bytes, scan order.
width: u32Frame width in pixels (≥ 1).
height: u32Frame height in pixels (≥ 1).
x: u32X coordinate of the frame’s upper-left corner on the canvas. Must be
even (§2.7.1.1 stores x / 2).
y: u32Y coordinate of the frame’s upper-left corner on the canvas. Must be
even (§2.7.1.1 stores y / 2).
duration: u32Display duration in 1-millisecond units (the §2.7.1.1 Frame Duration field).
blend: BlendingMethod§2.7.1.1 blending method (B bit).
dispose: DisposalMethod§2.7.1.1 disposal method (D bit).
mode: AnimFrameModePer-frame compression mode.
Implementations§
Source§impl AnimFrame
impl AnimFrame
Sourcepub fn new(width: u32, height: u32, pixels: Vec<u8>, duration: u32) -> Self
pub fn new(width: u32, height: u32, pixels: Vec<u8>, duration: u32) -> Self
Construct a top-left, overwrite-blended, non-disposed lossless frame from a flat RGBA buffer — the common case.
BlendingMethod::Overwrite (§2.7.1.1 B = 1) is the default so a
full-canvas frame round-trips byte-for-byte through
crate::decode_webp’s canvas-compositing path. Callers that want
§2.7.1.1 alpha-blending of a translucent sub-frame onto the existing
canvas must build the struct literally and set blend: BlendingMethod::AlphaBlend.