Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }