public DeflaterHuffman(PendingBuffer pending)
 {
     this.pending = pending;
     literalTree  = new Tree(this, LiteralNum, 257, 15);
     distTree     = new Tree(this, DistNum, 1, 15);
     blTree       = new Tree(this, BitlenNum, 4, 7);
     dBuf         = new short[Bufsize];
     lBuf         = new byte[Bufsize];
 }
Exemple #2
0
 public unsafe Deflater(int level, int tooFar)
 {
     if (level < NoCompression || level > BestCompression)
     {
         throw new ArgumentOutOfRangeException("level");
     }
     if (tooFar < 0 || tooFar > 32767)
     {
         throw new ArgumentOutOfRangeException("tooFar");
     }
     this.level = level;
     pending    = new PendingBuffer(DeflaterConstants.PendingBufSize);
     engine     = new DeflaterEngine(pending, level, tooFar);
     state      = BusyState;
     pending.Reset();
     fixed(byte *mem = engine.memFix)
     {
         engine.Reset(mem);
     }
 }
 public DeflaterEngine(PendingBuffer pending, int lvl, int tooFar = 4096)
 {
     this.pending  = pending;
     huffman       = new DeflaterHuffman(pending);
     blockStart    = strstart = 1;
     goodLength    = DeflaterConstants.GoodLength[lvl];
     maxLazy       = DeflaterConstants.MaxLazy[lvl];
     niceLength    = DeflaterConstants.NiceLength[lvl];
     maxChain      = DeflaterConstants.MaxChain[lvl];
     comprFunc     = DeflaterConstants.ComprFunc[lvl];
     insH          = 0;
     matchStart    = 0;
     matchLen      = 0;
     prevAvailable = false;
     lookahead     = 0;
     totalIn       = 0;
     inputBuf      = null;
     inputOff      = 0;
     inputEnd      = 0;
     TooFar        = tooFar;
 }