Struct png::decoder::stream::StreamingDecoder
source · pub struct StreamingDecoder {
state: Option<State>,
current_chunk: ChunkState,
inflater: ZlibStream,
pub(crate) info: Option<Info<'static>>,
current_seq_no: Option<u32>,
have_idat: bool,
ready_for_idat_chunks: bool,
ready_for_fdat_chunks: bool,
have_iccp: bool,
decode_options: DecodeOptions,
pub(crate) limits: Limits,
}
Expand description
PNG StreamingDecoder (low-level interface)
By default, the decoder does not verify Adler-32 checksum computation. To
enable checksum verification, set it with StreamingDecoder::set_ignore_adler32
before starting decompression.
Fields§
§state: Option<State>
§current_chunk: ChunkState
§inflater: ZlibStream
The inflater state handling consecutive IDAT
and fdAT
chunks.
info: Option<Info<'static>>
The complete image info read from all prior chunks.
current_seq_no: Option<u32>
The animation chunk sequence number.
have_idat: bool
Whether we have already seen a start of an IDAT chunk. (Used to validate chunk ordering - some chunk types can only appear before or after an IDAT chunk.)
ready_for_idat_chunks: bool
Whether we are ready for a start of an IDAT
chunk sequence. Initially true
and set to
false
when the first sequence of consecutive IDAT
chunks ends.
ready_for_fdat_chunks: bool
Whether we are ready for a start of an fdAT
chunk sequence. Initially false
. Set to
true
after encountering an fcTL
chunk. Set to false
when a sequence of consecutive
fdAT
chunks ends.
have_iccp: bool
Whether we have already seen an iCCP chunk. Used to prevent parsing of duplicate iCCP chunks.
decode_options: DecodeOptions
§limits: Limits
Implementations§
source§impl StreamingDecoder
impl StreamingDecoder
sourcepub fn new() -> StreamingDecoder
pub fn new() -> StreamingDecoder
Creates a new StreamingDecoder
Allocates the internal buffers.
pub fn new_with_options(decode_options: DecodeOptions) -> StreamingDecoder
pub fn set_ignore_text_chunk(&mut self, ignore_text_chunk: bool)
pub fn set_ignore_iccp_chunk(&mut self, ignore_iccp_chunk: bool)
sourcepub fn ignore_adler32(&self) -> bool
pub fn ignore_adler32(&self) -> bool
Return whether the decoder is set to ignore the Adler-32 checksum.
sourcepub fn set_ignore_adler32(&mut self, ignore_adler32: bool) -> bool
pub fn set_ignore_adler32(&mut self, ignore_adler32: bool) -> bool
Set whether to compute and verify the Adler-32 checksum during
decompression. Return true
if the flag was successfully set.
The decoder defaults to true
.
This flag cannot be modified after decompression has started until the
StreamingDecoder
is reset.
sourcepub fn set_ignore_crc(&mut self, ignore_crc: bool)
pub fn set_ignore_crc(&mut self, ignore_crc: bool)
Set whether to compute and verify the Adler-32 checksum during decompression.
The decoder defaults to false
.
sourcepub fn set_skip_ancillary_crc_failures(
&mut self,
skip_ancillary_crc_failures: bool,
)
pub fn set_skip_ancillary_crc_failures( &mut self, skip_ancillary_crc_failures: bool, )
Ignore ancillary chunks if CRC fails
Defaults to true
sourcepub fn update(
&mut self,
buf: &[u8],
image_data: &mut Vec<u8>,
) -> Result<(usize, Decoded), DecodingError>
pub fn update( &mut self, buf: &[u8], image_data: &mut Vec<u8>, ) -> Result<(usize, Decoded), DecodingError>
Low level StreamingDecoder interface.
Allows to stream partial data to the encoder. Returns a tuple containing the bytes that have
been consumed from the input buffer and the current decoding result. If the decoded chunk
was an image data chunk, it also appends the read data to image_data
.