#![forbid(unsafe_code)]
extern crate alloc;
extern crate std;
whereat::define_at_crate_info!();
mod chunk;
mod codec;
mod decode;
mod decoder;
pub mod detect;
mod encode;
mod encoder;
mod error;
#[cfg(any(feature = "quantize", feature = "imagequant", feature = "quantette"))]
mod indexed;
mod optimize;
mod quantize;
mod simd;
mod types;
pub use codec::{
PngAnimationFrameDecoder, PngAnimationFrameEncoder, PngDecodeJob, PngDecoder, PngDecoderConfig,
PngEncodeJob, PngEncoder, PngEncoderConfig,
};
#[allow(deprecated)]
pub use decode::PngLimits;
pub use decode::{
ApngDecodeOutput, ApngFrame, ApngFrameInfo, PhysUnit, PngBackground, PngChromaticities,
PngDecodeConfig, PngDecodeOutput, PngInfo, PngTime, PngWarning, SignificantBits, TextChunk,
decode, decode_apng, probe,
};
pub use encode::{
ApngEncodeConfig, ApngFrameInput, EncodeConfig, encode_apng, encode_gray8, encode_gray16,
encode_rgb8, encode_rgb16, encode_rgba8, encode_rgba16,
};
pub use error::PngError;
#[cfg(any(feature = "quantize", feature = "imagequant", feature = "quantette"))]
pub use indexed::{
ApngEncodeParams, AutoEncodeResult, QualityGate, encode_apng_auto, encode_apng_indexed,
encode_auto, encode_indexed,
};
#[cfg(feature = "imagequant")]
pub use quantize::ImagequantQuantizer;
#[cfg(feature = "quantette")]
pub use quantize::QuantetteQuantizer;
#[cfg(feature = "quantize")]
pub use quantize::ZenquantQuantizer;
#[cfg(any(feature = "quantize", feature = "imagequant", feature = "quantette"))]
pub use quantize::default_quantizer;
pub use quantize::{
MultiFrameOutput, QuantizeOutput, Quantizer, available_backends, quantizer_by_name,
};
pub use types::{Compression, Filter};
#[cfg(feature = "_dev")]
#[doc(hidden)]
pub use crate::encode::{encode_rgb8_with_stats, encode_rgba8_with_stats};
#[cfg(feature = "_dev")]
#[doc(hidden)]
pub use crate::encoder::{PhaseStat, PhaseStats};
#[cfg(feature = "_dev")]
#[doc(hidden)]
pub fn __bench_unfilter_row(filter_type: u8, row: &mut [u8], prev: &[u8], bpp: usize) {
simd::bench_unfilter_row(filter_type, row, prev, bpp);
}