/// <summary> /// Construct instance with pending buffer /// </summary> /// <param name="pending"> /// Pending buffer to use /// </param>> public DeflaterEngine( DeflaterPending pending ) { this.pending = pending; huffman = new DeflaterHuffman( pending ); adler = new Adler32(); window = new byte[ 2 * WSIZE ]; head = new short[ HASH_SIZE ]; prev = new short[ WSIZE ]; // We start at index 1, to avoid an implementation deficiency, that // we cannot build a repeat pattern at index 0. blockStart = strstart = 1; }
/// <summary> /// Construct instance with pending buffer /// </summary> /// <param name="pending"> /// Pending buffer to use /// </param>> public DeflaterEngine(DeflaterPending pending) { this.pending = pending; huffman = new DeflaterHuffman(pending); adler = new Adler32(); window = new byte[2 * WSIZE]; head = new short[HASH_SIZE]; prev = new short[WSIZE]; // We start at index 1, to avoid an implementation deficiency, that // we cannot build a repeat pattern at index 0. blockStart = strstart = 1; }
/// <summary> /// Creates a new deflater with given compression level. /// </summary> /// <param name="level"> /// the compression level, a value between NO_COMPRESSION /// and BEST_COMPRESSION. /// </param> /// <param name="noZlibHeaderOrFooter"> /// true, if we should suppress the Zlib/RFC1950 header at the /// beginning and the adler checksum at the end of the output. This is /// useful for the GZIP/PKZIP formats. /// </param> /// <exception cref="System.ArgumentOutOfRangeException">if lvl is out of range.</exception> public Deflater(int level, bool noZlibHeaderOrFooter) { if (level == DEFAULT_COMPRESSION) { level = 6; } else if (level < NO_COMPRESSION || level > BEST_COMPRESSION) { throw new ArgumentOutOfRangeException("level"); } pending = new DeflaterPending(); engine = new DeflaterEngine(pending); this.noZlibHeaderOrFooter = noZlibHeaderOrFooter; SetStrategy(DeflateStrategy.Default); SetLevel(level); Reset(); }
/// <summary> /// Construct instance with pending buffer /// </summary> /// <param name="pending">Pending buffer to use</param> public DeflaterHuffman( DeflaterPending pending ) { this.pending = pending; literalTree = new Tree( this, LITERAL_NUM, 257, 15 ); distTree = new Tree( this, DIST_NUM, 1, 15 ); blTree = new Tree( this, BITLEN_NUM, 4, 7 ); d_buf = new short[ BUFSIZE ]; l_buf = new byte[ BUFSIZE ]; }
/// <summary> /// Creates a new deflater with given compression level. /// </summary> /// <param name="level"> /// the compression level, a value between NO_COMPRESSION /// and BEST_COMPRESSION. /// </param> /// <param name="noZlibHeaderOrFooter"> /// true, if we should suppress the Zlib/RFC1950 header at the /// beginning and the adler checksum at the end of the output. This is /// useful for the GZIP/PKZIP formats. /// </param> /// <exception cref="System.ArgumentOutOfRangeException">if lvl is out of range.</exception> public Deflater( int level, bool noZlibHeaderOrFooter ) { if( level == DEFAULT_COMPRESSION ) { level = 6; } else if( level < NO_COMPRESSION || level > BEST_COMPRESSION ) { throw new ArgumentOutOfRangeException( "level" ); } pending = new DeflaterPending(); engine = new DeflaterEngine( pending ); this.noZlibHeaderOrFooter = noZlibHeaderOrFooter; SetStrategy( DeflateStrategy.Default ); SetLevel( level ); Reset(); }