Ejemplo n.º 1
0
        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            var header = file.ReadHeader(8);

            if (!header.AsciiEqual("YP"))
            {
                return(null);
            }
            int unpacked_size = header.ToInt24(2);
            int packed_size   = header.ToInt24(5);
            var data          = LzUnpack(file, 0x36);

            using (var bmp = new BinMemoryStream(data, file.Name))
            {
                var info = Bmp.ReadMetaData(bmp);
                if (null == info)
                {
                    return(info);
                }
                return(new YpMetaData {
                    Width = info.Width,
                    Height = info.Height,
                    BPP = info.BPP,
                    UnpackedSize = unpacked_size,
                });
            }
        }
Ejemplo n.º 2
0
        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            var header = file.ReadHeader(0x29);

            if (header.Length != 0x29)
            {
                return(null);
            }
            var gps = new GpsMetaData
            {
                Width        = header.ToUInt32(0x19),
                Height       = header.ToUInt32(0x1D),
                Compression  = header[0x10],
                UnpackedSize = header.ToInt32(0x11),
                PackedSize   = header.ToInt32(0x15),
            };

            // read BMP header
            using (var stream = OpenGpsStream(file, gps.Compression, 0x54))
                using (var input = BinaryStream.FromStream(stream, file.Name))
                {
                    var bmp_info = Bmp.ReadMetaData(input);
                    if (null == bmp_info)
                    {
                        return(null);
                    }
                    gps.BPP = bmp_info.BPP;
                    return(gps);
                }
        }
Ejemplo n.º 3
0
        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            var bmp_header = Decompress(file, 0x36);

            using (var bmp = new BinMemoryStream(bmp_header))
                return(Bmp.ReadMetaData(bmp));
        }
Ejemplo n.º 4
0
        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            var header = file.ReadHeader(8);

            using (var zstream = new ZLibStream(file.AsStream, CompressionMode.Decompress, true))
                using (var bmp = new BinaryStream(zstream, file.Name))
                    return(Bmp.ReadMetaData(bmp));
        }
Ejemplo n.º 5
0
 public override ImageMetaData ReadMetaData(IBinaryStream file)
 {
     if ((file.Signature & 0xFFFF) != 0x444D) // 'MD'
     {
         return(null);
     }
     using (var bmp = OpenBitmap(file))
         return(Bmp.ReadMetaData(bmp));
 }
Ejemplo n.º 6
0
        public override ImageMetaData ReadMetaData(IBinaryStream stream)
        {
            int count = stream.ReadInt16();

            if (count <= 0 || count >= 0x100)
            {
                return(null);
            }
            int offset;

            if (count > 1)
            {
                offset = stream.ReadInt32();
                if (offset != 2 + count * 4)
                {
                    return(null);
                }
            }
            else
            {
                offset = 2;
            }
            stream.Position = offset;
            int unpacked_size = stream.ReadInt32();
            int packed_size   = stream.ReadInt32();

            offset += 8;
            if (offset + packed_size > stream.Length)
            {
                return(null);
            }
            byte[] header = new byte[0x36];
            if (0x36 != MgrOpener.Decompress(stream.AsStream, header) ||
                header[0] != 'B' || header[1] != 'M')
            {
                return(null);
            }
            using (var bmp = new BinMemoryStream(header, stream.Name))
            {
                var info = Bmp.ReadMetaData(bmp);
                if (null == info)
                {
                    return(null);
                }
                return(new MgrMetaData
                {
                    Width = info.Width,
                    Height = info.Height,
                    BPP = info.BPP,
                    Offset = offset,
                    PackedSize = packed_size,
                    UnpackedSize = unpacked_size,
                });
            }
        }
Ejemplo n.º 7
0
        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            var header = file.ReadHeader(2);

            if ('N' != header[0] || 'G' != header[1])
            {
                return(null);
            }
            using (var bmp = OpenAsBitmap(file))
                return(Bmp.ReadMetaData(bmp));
        }
Ejemplo n.º 8
0
        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            var header = file.ReadHeader(0xA);

            if (!((header[4] & 0xF) == 0xF && header.AsciiEqual(5, "BM")))
            {
                return(null);
            }
            using (var input = OpenBitmapStream(file))
                return(Bmp.ReadMetaData(input));
        }
Ejemplo n.º 9
0
        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            var header = file.ReadHeader(0x20);

            if (!header.AsciiEqual("Virgin Snow Compressed Data 1.0"))
            {
                return(null);
            }
            using (var bmp = UnpackStream(file))
                return(Bmp.ReadMetaData(bmp));
        }
Ejemplo n.º 10
0
        public override ImageMetaData ReadMetaData(IBinaryStream stream)
        {
            var header = stream.ReadHeader(2);

            if (header[0] != 0xBD || header[1] != 0x59)
            {
                return(null);
            }
            using (var bmp = OpenEncrypted(stream))
                return(Bmp.ReadMetaData(bmp));
        }
Ejemplo n.º 11
0
        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            var header = file.ReadHeader(0xB);

            if (!header.AsciiEqual("CSF"))
            {
                return(null);
            }
            using (var input = UnpackedStream(file))
                return(Bmp.ReadMetaData(input));
        }
Ejemplo n.º 12
0
        public override ImageMetaData ReadMetaData(IBinaryStream stream)
        {
            var header = ReadHeader(stream);

            if (null == header)
            {
                return(null);
            }
            using (var bmp = new BinMemoryStream(header, stream.Name))
                return(Bmp.ReadMetaData(bmp));
        }
Ejemplo n.º 13
0
        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            var header = file.ReadHeader(2);

            if ((header[0] ^ 0xFF) != 'B' || (header[1] ^ 0xFF) != 'M')
            {
                return(null);
            }
            using (var bmp = DeobfuscateStream(file))
                return(Bmp.ReadMetaData(bmp));
        }
Ejemplo n.º 14
0
 public override ImageMetaData ReadMetaData(IBinaryStream stream)
 {
     stream.Position = 0x0e;
     using (var lz = new LzssStream(stream.AsStream, LzssMode.Decompress, true))
     {
         lz.Config.FrameSize    = 0x1000;
         lz.Config.FrameFill    = 0x20;
         lz.Config.FrameInitPos = 0x1000 - 0x10;
         using (var bmp = new BinaryStream(lz, stream.Name))
             return(Bmp.ReadMetaData(bmp));
     }
 }
Ejemplo n.º 15
0
        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            var header = file.ReadHeader(2);

            if (!header.AsciiEqual("NY"))
            {
                return(null);
            }
            file.Position = 0;
            using (var input = OpenGtoStream(file))
                return(Bmp.ReadMetaData(input));
        }
Ejemplo n.º 16
0
        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            var header = file.ReadHeader(5);

            if (!header.AsciiEqual(0, "CP") || (header[2] & 0xC0) != 0xC0 ||
                !header.AsciiEqual(3, "BM"))
            {
                return(null);
            }
            using (var bmp = OpenCompressed(file))
                return(Bmp.ReadMetaData(bmp));
        }
Ejemplo n.º 17
0
        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            var header = file.ReadHeader(2);

            if (header[0] != 0xBD || header[1] != 0xB2)
            {
                return(null);
            }
            file.Position = 0;
            using (var input = DecryptStream(file))
                return(Bmp.ReadMetaData(input));
        }
Ejemplo n.º 18
0
        public override ImageMetaData ReadMetaData(IBinaryStream stream)
        {
            int c1 = stream.ReadByte();
            int c2 = stream.ReadByte();

            if ('M' != c1 || ('B' != c2 && 'C' != c2))
            {
                return(null);
            }
            using (var bmp = OpenAsBitmap(stream))
                return(Bmp.ReadMetaData(bmp));
        }
Ejemplo n.º 19
0
        public override ImageMetaData ReadMetaData(IBinaryStream stream)
        {
            int first = stream.PeekByte() ^ 0x21;

            if (first != 0x78) // doesn't look like zlib stream
            {
                return(null);
            }

            using (var input = new XoredStream(stream.AsStream, 0x21, true))
                using (var zstream = new ZLibStream(input, CompressionMode.Decompress))
                    using (var bmp = new BinaryStream(zstream, stream.Name))
                        return(Bmp.ReadMetaData(bmp));
        }
Ejemplo n.º 20
0
        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            if (!file.Name.HasExtension(".pbm"))
            {
                return(null);
            }
            var header = file.ReadHeader(8);

            if (!header.AsciiEqual(5, "BM"))
            {
                return(null);
            }
            using (var bmp = OpenBitmapStream(file, header.ToUInt32(0)))
                return(Bmp.ReadMetaData(bmp));
        }
Ejemplo n.º 21
0
        public override ImageMetaData ReadMetaData(IBinaryStream stream)
        {
            if (!stream.Name.HasExtension(".alo"))
            {
                return(null);
            }
            var header = stream.ReadHeader(2);

            if (0 != header[0] || 0 != header[1])
            {
                return(null);
            }
            using (var bmp = OpenAsBitmap(stream))
                return(Bmp.ReadMetaData(bmp));
        }
Ejemplo n.º 22
0
        public override ImageMetaData ReadMetaData(IBinaryStream stream)
        {
            int signature = ~stream.ReadInt32();
            int mode      = (signature & 0x70) >> 4; // v6

            if (0 != (mode & 4))
            {
                return(null);
            }
            int flag = signature & 0xF; // v7
            int data_size, data_offset;

            if (0 != (signature & 0x80))
            {
                data_offset = 4;
                data_size   = Binary.BigEndian(signature) & 0xFFFFFF;
            }
            else
            {
                data_offset = 8;
                data_size   = Binary.BigEndian(stream.ReadInt32());
            }
            if (data_size <= 0 || data_size > 0xFFFFFF) // arbitrary max BMP size
            {
                return(null);
            }
            var reader = new Reader(stream, 0x36, mode, flag);  // size of BMP header

            reader.Unpack();
            using (var bmp = new BinMemoryStream(reader.Data, stream.Name))
            {
                var info = Bmp.ReadMetaData(bmp);
                if (null == info)
                {
                    return(null);
                }
                return(new EgnMetaData
                {
                    Width = info.Width,
                    Height = info.Height,
                    BPP = info.BPP,
                    Mode = mode,
                    Flag = flag,
                    DataOffset = data_offset,
                    UnpackedSize = data_size,
                });
            }
        }
Ejemplo n.º 23
0
        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            if (!file.Name.HasExtension(".bpe") || file.Signature < 0x36)
            {
                return(null);
            }
            file.Position = 4;
            var unpacked = Decompress(file, 0x36);

            if (!unpacked.AsciiEqual("BM"))
            {
                return(null);
            }
            using (var bmp = new BinMemoryStream(unpacked, file.Name))
                return(Bmp.ReadMetaData(bmp));
        }
Ejemplo n.º 24
0
        public override ImageData Read(IBinaryStream file, ImageMetaData info)
        {
            ImageData base_img;

            using (var input = new StreamRegion(file.AsStream, 0x24, true))
                using (var bmp = new BinaryStream(input, file.Name))
                {
                    var bmp_info = Bmp.ReadMetaData(bmp) as BmpMetaData;
                    if (null == bmp_info)
                    {
                        throw new InvalidFormatException();
                    }
                    bmp.Position  = 0;
                    base_img      = Bmp.Read(bmp, bmp_info);
                    file.Position = 0x24 + bmp_info.ImageLength;
                    if (file.PeekByte() == -1)
                    {
                        return(base_img);
                    }
                }
            using (var input = new StreamRegion(file.AsStream, file.Position, true))
                using (var bmp = new BinaryStream(input, file.Name))
                {
                    var bmp_info = Bmp.ReadMetaData(bmp) as BmpMetaData;
                    if (null == bmp_info)
                    {
                        return(base_img);
                    }
                    bmp.Position = 0;
                    var alpha_img = Bmp.Read(bmp, bmp_info);
                    var alpha_bmp = new FormatConvertedBitmap(alpha_img.Bitmap, PixelFormats.Gray8, null, 0);
                    var alpha     = new byte[alpha_bmp.PixelWidth * alpha_bmp.PixelHeight];
                    alpha_bmp.CopyPixels(alpha, alpha_bmp.PixelWidth, 0);

                    var base_bmp = new FormatConvertedBitmap(base_img.Bitmap, PixelFormats.Bgr32, null, 0);
                    int stride   = base_bmp.PixelWidth * 4;
                    var pixels   = new byte[stride * base_bmp.PixelHeight];
                    base_bmp.CopyPixels(pixels, stride, 0);
                    int asrc = 0;
                    for (int dst = 3; dst < pixels.Length; dst += 4)
                    {
                        pixels[dst] = alpha[asrc++];
                    }
                    return(ImageData.Create(info, PixelFormats.Bgra32, null, pixels, stride));
                }
        }
Ejemplo n.º 25
0
        public override ImageData Read(IBinaryStream file, ImageMetaData info)
        {
            var meta = (FgMetaData)info;

            using (var input = new StreamRegion(file.AsStream, meta.DataOffset, meta.DataLength, true))
                using (var bmp = new BinaryStream(input, file.Name))
                {
                    var bmp_info = Bmp.ReadMetaData(bmp);
                    if (null == bmp_info)
                    {
                        throw new InvalidFormatException();
                    }
                    bmp.Position     = 0;
                    bmp_info.OffsetX = meta.OffsetX;
                    bmp_info.OffsetY = meta.OffsetY;
                    return(Bmp.Read(bmp, bmp_info));
                }
        }
Ejemplo n.º 26
0
        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            var header = file.ReadHeader(10);

            if (!header.AsciiEqual(8, "BM"))
            {
                return(null);
            }
            using (var bmp = OpenBmpStream(file))
            {
                var info = Bmp.ReadMetaData(bmp);
                if (null == info || info.Width != header.ToUInt32(0) || info.Height != header.ToUInt32(4))
                {
                    return(null);
                }
                return(info);
            }
        }
Ejemplo n.º 27
0
 public override ImageMetaData ReadMetaData(IBinaryStream stream)
 {
     stream.Position = 0x0e;
     using (var lz = new LzssReader(stream.AsStream, 100, 54))  // extract BMP header
     {
         lz.FrameSize    = 0x1000;
         lz.FrameFill    = 0x20;
         lz.FrameInitPos = 0x1000 - 0x10;
         lz.Unpack();
         var header = lz.Data;
         for (int i = 0; i < 54; ++i)
         {
             header[i] ^= 0xff;
         }
         using (var bmp = new BinMemoryStream(header, stream.Name))
             return(Bmp.ReadMetaData(bmp));
     }
 }
Ejemplo n.º 28
0
        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            if (file.Signature != 0)
            {
                return(null);
            }
            var header = file.ReadHeader(14);

            if (!header.AsciiEqual(8, "BM"))
            {
                return(null);
            }
            if (header.ToUInt32(4) != header.ToUInt32(10))
            {
                return(null);
            }
            using (var region = new StreamRegion(file.AsStream, 8, true))
                using (var bmp = new BinaryStream(region, file.Name))
                    return(Bmp.ReadMetaData(bmp));
        }
Ejemplo n.º 29
0
        }                                                                 // 'TRIz'

        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            var header     = file.ReadHeader(8);
            var bmp_header = new byte[56];

            Unpack(file, bmp_header);
            using (var bmp = new BinMemoryStream(bmp_header, file.Name))
            {
                var bmp_info = Bmp.ReadMetaData(bmp);
                if (null == bmp_info)
                {
                    return(null);
                }
                return(new TriMetaData {
                    Width = bmp_info.Width,
                    Height = bmp_info.Height,
                    BPP = bmp_info.BPP,
                    UnpackedSize = header.ToInt32(4) ^ 0x65641538,
                });
            }
        }
Ejemplo n.º 30
0
        public override ImageMetaData ReadMetaData(IBinaryStream file)
        {
            var  header        = file.ReadHeader(0x10);
            bool is_compressed = (header[12] & 7) != 0;

            using (var input = OpenLzss(file, 0x42, is_compressed))
            {
                var info = Bmp.ReadMetaData(input);
                if (null == info)
                {
                    return(null);
                }
                return(new LzsMetaData {
                    Width = info.Width,
                    Height = info.Height,
                    BPP = info.BPP,
                    IsCompressed = is_compressed,
                    UnpackedSize = header.ToInt32(8),
                });
            }
        }