private void Load() { if (TheStore.TheFile.Length >= BitmapToPos(Ix + 1)) { TheStore.TheFile.Position = BitmapToPos(Ix); if (StreamUtils.ReadInt8(TheStore.TheFile) != (byte)Store.SectorTypes.Bitmap) { InitializeBitmapSector(); return; } var nextix = StreamUtils.ReadInt32(TheStore.TheFile); SectorData = StreamUtils.Read(TheStore.TheFile, (int)TheStore.SectorDataSize); if (nextix != Store.LAST_SECTOR_IN_CHAIN) { NextBitmap = new BitmapSector(TheStore, nextix, SectorSize); } else { NextBitmap = null; } } else { InitializeBitmapSector(); } }
public static byte[] BCGZipDecompress(BufLen buf) { var reader = new BufRefLen(buf); using (var ms = new MemoryStream()) { // Skip gzip header var gzheader = reader.ReadBufLen(10); var flag = gzheader.Peek8(3); if ((flag & 0x04) != 0) { reader.Seek(reader.Read16()); // "Extra" } if ((flag & 0x08) != 0) { while (reader.Read8() != 0) { ; // "Name" } } if ((flag & 0x10) != 0) { while (reader.Read8() != 0) { ; // "Comment" } } if ((flag & 0x02) != 0) { reader.Read16(); // "CRC16" } ms.Write(reader.BaseArray, reader.BaseArrayOffset, reader.Length); ms.Position = 0; using (var gzs = new ZInputStream(ms, true)) { var gzdata = StreamUtils.Read(gzs); return(gzdata); } } }