using System;
using System.Collections.Generic;
using System.Text;
namespace QiHe.CodeLib.Compress.DeflateFormat
{
public partial class HuffmanCodes
{
HuffmanTree AlphabetHuffmanCode;
HuffmanTree DistanceHuffmanCode;
public HuffmanCodes(int[] alphabetCodeLengths, int[] distanceCodeLengths)
{
AlphabetHuffmanCode = HuffmanTree.FromCodeLengths(alphabetCodeLengths);
DistanceHuffmanCode = HuffmanTree.FromCodeLengths(distanceCodeLengths);
}
public static readonly HuffmanCodes Default = CreateDefaultCodes();
private static HuffmanCodes CreateDefaultCodes()
{
int[] alphabetCodeLengths = new int[288];
for (int n = 0; n < 144; n++)
{
alphabetCodeLengths[n] = 8;
}
for (int n = 144; n < 256; n++)
{
alphabetCodeLengths[n] = 9;
}
for (int n = 256; n < 280; n++)
{
alphabetCodeLengths[n] = 7;
}
for (int n = 280; n < 288; n++)
{
alphabetCodeLengths[n] = 8;
}
int[] distanceCodeLengths = new int[32];
for (int n = 0; n < 32; n++)
{
distanceCodeLengths[n] = 5;
}
return new HuffmanCodes(alphabetCodeLengths, distanceCodeLengths);
}
static readonly int[] CodeLengthOrder = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 };
}
}