pub mod blocksplitter;
pub mod cache;
pub mod deflate;
pub mod deflate_size;
pub mod gzip;
pub mod hash;
pub mod katajainen;
pub mod lz77;
pub mod squeeze;
pub mod symbols;
pub mod tree;
pub mod zlib;
#[cfg(test)]
mod tests;
#[cfg(all(test, feature = "oracle"))]
mod oracle_tests;
#[derive(Clone, Debug)]
pub struct ZopfliOptions {
pub verbose: i32,
pub verbose_more: i32,
pub numiterations: i32,
pub blocksplitting: i32,
pub blocksplittingmax: i32,
pub thread_budget: u32,
}
impl Default for ZopfliOptions {
fn default() -> Self {
Self {
verbose: 0,
verbose_more: 0,
numiterations: 15,
blocksplitting: 1,
blocksplittingmax: 15,
thread_budget: 0,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum ZopfliFormat {
#[allow(dead_code)]
Gzip,
#[allow(dead_code)]
Zlib,
Deflate,
}
pub fn compress(options: &ZopfliOptions, format: ZopfliFormat, in_: &[u8]) -> Vec<u8> {
let mut out = Vec::new();
match format {
ZopfliFormat::Gzip => gzip::gzip_compress(options, in_, &mut out),
ZopfliFormat::Zlib => zlib::zlib_compress(options, in_, &mut out),
ZopfliFormat::Deflate => {
deflate::deflate(options, 2, true, in_, 0, &mut out);
}
}
out
}