public ArraySegment<byte>[] ReadBlocksDecompressed(uint Block, int Count)
{
if (Block + Count >= NumberOfBlocks)
{
Count = (int)(NumberOfBlocks - Block);
}
if (Count <= 0)
{
return new ArraySegment<byte>[0];
}
else
{
var Segments = ReadBlocksCompressed(Block, Count);
for (int n = 0; n < Count; n++)
{
if (Blocks[Block + n].IsCompressed)
{
Segments[n] = new ArraySegment<byte>(new DeflateStream(
new MemoryStream(Segments[n].Array, Segments[n].Offset, Segments[n].Count),
CompressionMode.Decompress
).ReadBytes((int)this.Header.BlockSize));
}
}
return Segments;
}
}