WriteSymbol() public method

public WriteSymbol ( int code ) : void
code int
return void
            public void WriteTree(DeflaterHuffman.Tree blTree)
            {
                int num = -1;
                int i   = 0;

                while (i < this.numCodes)
                {
                    int num2 = 1;
                    int num3 = (int)this.length[i];
                    int num4;
                    int num5;
                    if (num3 == 0)
                    {
                        num4 = 138;
                        num5 = 3;
                    }
                    else
                    {
                        num4 = 6;
                        num5 = 3;
                        if (num != num3)
                        {
                            blTree.WriteSymbol(num3);
                            num2 = 0;
                        }
                    }
                    num = num3;
                    i++;
                    while (i < this.numCodes && num == (int)this.length[i])
                    {
                        i++;
                        if (++num2 >= num4)
                        {
                            break;
                        }
                    }
                    if (num2 < num5)
                    {
                        while (num2-- > 0)
                        {
                            blTree.WriteSymbol(num);
                        }
                    }
                    else if (num != 0)
                    {
                        blTree.WriteSymbol(16);
                        this.dh.pending.WriteBits(num2 - 3, 2);
                    }
                    else if (num2 <= 10)
                    {
                        blTree.WriteSymbol(17);
                        this.dh.pending.WriteBits(num2 - 3, 3);
                    }
                    else
                    {
                        blTree.WriteSymbol(18);
                        this.dh.pending.WriteBits(num2 - 11, 7);
                    }
                }
            }
Example #2
0
            public void WriteTree(DeflaterHuffman.Tree blTree)
            {
                int code  = -1;
                int index = 0;

                while (index < this.numCodes)
                {
                    int num;
                    int num2;
                    int num3 = 1;
                    int num6 = this.length[index];
                    if (num6 == 0)
                    {
                        num  = 0x8a;
                        num2 = 3;
                    }
                    else
                    {
                        num  = 6;
                        num2 = 3;
                        if (code != num6)
                        {
                            blTree.WriteSymbol(num6);
                            num3 = 0;
                        }
                    }
                    code = num6;
                    index++;
                    while ((index < this.numCodes) && (code == this.length[index]))
                    {
                        index++;
                        if (++num3 >= num)
                        {
                            break;
                        }
                    }
                    if (num3 < num2)
                    {
                        while (num3-- > 0)
                        {
                            blTree.WriteSymbol(code);
                        }
                    }
                    else if (code != 0)
                    {
                        blTree.WriteSymbol(0x10);
                        this.dh.pending.WriteBits(num3 - 3, 2);
                    }
                    else if (num3 <= 10)
                    {
                        blTree.WriteSymbol(0x11);
                        this.dh.pending.WriteBits(num3 - 3, 3);
                    }
                    else
                    {
                        blTree.WriteSymbol(0x12);
                        this.dh.pending.WriteBits(num3 - 11, 7);
                    }
                }
            }