예제 #1
0
	    /// <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;
	    }
예제 #2
0
        /// <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;
        }
예제 #3
0
        /// <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();
        }
예제 #4
0
		/// <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];
		}
예제 #5
0
	    /// <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();
	    }