Exemplo n.º 1
0
        private void WriteFreeListBMPFile()
        {
            // write freelist to end of blocks and update master block
            if (_freeList != null)
            {
                _freeList.Optimize();
                var o = _freeList.Serialize();
                var b = fastBinaryJSON.BJSON.ToBJSON(o, new fastBinaryJSON.BJSONParameters {
                    UseExtensions = false
                });

                var len    = b.Length;
                var offset = 0;
                // write master block
                SeekBlock(0);
                _lastBlockNumber++;
                WriteBlockBytes(new byte[] { (byte)'F', (byte)'L' }, 0, 2);
                WriteBlockBytes(Helper.GetBytes(_lastBlockNumber, false), 0, 4);
                WriteBlockBytes(Helper.GetBytes(len, false), 0, 4);
                // seek to end of file
                SeekBlock(_lastBlockNumber);
                while (len > 0)
                {
                    WriteBlockBytes(new byte[] { (byte)'F', (byte)'L' }, 0, 2);
                    WriteBlockBytes(b, offset, len > _BLOCKSIZE ? _BLOCKSIZE - 2 : len);
                    len -= (_BLOCKSIZE - 2);
                }
            }
        }
Exemplo n.º 2
0
        private long SaveBitmapToFile(MGRB bmp)
        {
            long off = _lastBitmapOffset;
            var  dat = bmp.Serialize();
            var  hdr = new byte[_hdrlen];
            var  b   = fastBinaryJSON.BJSON.ToBJSON(dat, new fastBinaryJSON.BJSONParameters {
                UseExtensions = false
            });

            hdr[0] = (byte)'b';
            hdr[1] = (byte)'m';
            hdr[2] = 0; // uncompressed

            if (Global.CompressBitmapBytes)
            {
                hdr[2] = 1;
                b      = MiniLZO.Compress(b);
            }

            var s = Helper.GetBytes(b.Length, false);

            Buffer.BlockCopy(s, 0, hdr, 3, 4);

            _bitmapFileWrite.Write(hdr, 0, hdr.Length);
            _lastBitmapOffset += hdr.Length;

            _bitmapFileWrite.Write(b, 0, b.Length);
            _lastBitmapOffset += b.Length;

            return(off);
        }
Exemplo n.º 3
0
 private void WriteFile()
 {
     lock (_lock)
     {
         _bits.Optimize();
         var o = _bits.Serialize();
         var b = fastBinaryJSON.BJSON.ToBJSON(o, new fastBinaryJSON.BJSONParameters {
             UseExtensions = false
         });
         File.WriteAllBytes(_path + _filename, b);
     }
 }