FreakySources.Code.AsciimationDataGenerator.GetCompressedFrameBytes C# (CSharp) Méthode

GetCompressedFrameBytes() private méthode

private GetCompressedFrameBytes ( HuffmanTree tree, Frame frame, CompressedFrame compressedFrame ) : byte[]
tree HuffmanTree
frame Frame
compressedFrame CompressedFrame
Résultat byte[]
        private byte[] GetCompressedFrameBytes(HuffmanTree tree, Frame frame, CompressedFrame compressedFrame)
        {
            int transBitPos = 0;
            var transZipBytes = new byte[frame.Bytes.Length * 10];
            Utils.AddInt(transZipBytes, ref transBitPos, frame.RepeatCount, 7);
            Utils.AddInt(transZipBytes, ref transBitPos, (int)compressedFrame.FrameType, 3);
            Utils.AddInt(transZipBytes, ref transBitPos, compressedFrame.FrameChanges.Count, 7);
            for (int i = 0; i < compressedFrame.FrameChanges.Count; i++)
            {
                var change = compressedFrame.FrameChanges[i];
                Utils.AddInt(transZipBytes, ref transBitPos, (int)change.Type, 2);
                Utils.AddInt(transZipBytes, ref transBitPos, GetPos(change.X, change.Y), 10);

                if (change.Type == FrameChangeType.One)
                    Utils.AddIntReversed(transZipBytes, ref transBitPos, tree.CompressedBytes[change.Chars[0]]);
                else
                {
                    Utils.AddInt(transZipBytes, ref transBitPos, change.Length,
                        change.Type == FrameChangeType.Horizontal ? 7 : 4);
                    //HuffmanRle.Encode(tree, change.Chars.Select(c => (byte)c).ToArray(), ref transBitPos, transZipBytes, 5, 4);
                    for (int j = 0; j < change.Chars.Count; j++)
                        Utils.AddIntReversed(transZipBytes, ref transBitPos, tree.CompressedBytes[change.Chars[j]]);
                    /*if (i == 0 && compressedFrame.FrameType != FrameType.Basic && compressedFrame.FrameType != FrameType.Transitional)
                        HuffmanRle.Encode(tree, change.Chars.Select(c => (byte)c).ToArray(), ref transBitPos, transZipBytes, 5, 4);
                    else
                        for (int j = 0; j < change.Chars.Count; j++)
                            Utils.AddIntReversed(transZipBytes, ref transBitPos, tree.CompressedBytes[change.Chars[j]]);*/
                }
            }
            return transZipBytes.Take((transBitPos + 7) / 8).ToArray();
        }