#![deny(missing_docs)]
#![doc(html_root_url = "https://docs.rs/brotli2/0.2")]
extern crate brotli_sys;
extern crate libc;
#[cfg(test)]
extern crate rand;
#[cfg(test)]
extern crate quickcheck;
pub mod raw;
pub mod bufread;
pub mod read;
pub mod write;
#[repr(isize)]
#[derive(Copy,Clone,Debug,PartialEq,Eq)]
pub enum CompressMode {
Generic = brotli_sys::BROTLI_MODE_GENERIC as isize,
Text = brotli_sys::BROTLI_MODE_TEXT as isize,
Font = brotli_sys::BROTLI_MODE_FONT as isize,
}
#[derive(Clone,Debug)]
pub struct CompressParams {
mode: u32,
quality: u32,
lgwin: u32,
lgblock: u32,
}
impl CompressParams {
pub fn new() -> CompressParams {
CompressParams {
mode: brotli_sys::BROTLI_DEFAULT_MODE,
quality: brotli_sys::BROTLI_DEFAULT_QUALITY,
lgwin: brotli_sys::BROTLI_DEFAULT_WINDOW,
lgblock: 0,
}
}
pub fn mode(&mut self, mode: CompressMode) -> &mut CompressParams {
self.mode = mode as u32;
self
}
pub fn quality(&mut self, quality: u32) -> &mut CompressParams {
self.quality = quality;
self
}
pub fn lgwin(&mut self, lgwin: u32) -> &mut CompressParams {
self.lgwin = lgwin;
self
}
pub fn lgblock(&mut self, lgblock: u32) -> &mut CompressParams {
self.lgblock = lgblock;
self
}
#[inline]
pub fn get_lgblock_readable(&self) -> usize {
1usize << self.lgblock
}
#[inline]
pub fn get_lgblock(&self) -> u32 {
self.lgblock.clone()
}
#[inline]
pub fn get_lgwin_readable(&self) -> usize {
1usize << self.lgwin
}
#[inline]
pub fn get_lgwin(&self) -> u32 {
self.lgwin.clone()
}
}