Пример #1
0
        public override ImageMetaData ReadMetaData(IBinaryStream stream)
        {
            var header = stream.ReadHeader(20);

            if (!header.AsciiEqual("*Pola*  "))
            {
                return(null);
            }
            int unpacked_size = header.ToInt32(8);

            using (var reader = new PolaReader(stream, 64))
            {
                reader.Unpack();
                using (var temp = BinaryStream.FromArray(reader.Data, stream.Name))
                {
                    var info = base.ReadMetaData(temp);
                    if (null == info)
                    {
                        return(null);
                    }
                    return(new PolaMetaData
                    {
                        Width = info.Width,
                        Height = info.Height,
                        BPP = info.BPP,
                        UnpackedSize = unpacked_size,
                    });
                }
            }
        }
Пример #2
0
        public override ImageMetaData ReadMetaData(Stream stream)
        {
            var header = new byte[20];

            if (20 != stream.Read(header, 0, 20))
            {
                return(null);
            }
            if (!Binary.AsciiEqual(header, "*Pola*  "))
            {
                return(null);
            }
            int unpacked_size = LittleEndian.ToInt32(header, 8);

            using (var reader = new PolaReader(stream, 64))
            {
                reader.Unpack();
                using (var temp = new MemoryStream(reader.Data))
                {
                    var info = base.ReadMetaData(temp);
                    if (null == info)
                    {
                        return(null);
                    }
                    return(new PolaMetaData
                    {
                        Width = info.Width,
                        Height = info.Height,
                        BPP = info.BPP,
                        UnpackedSize = unpacked_size,
                    });
                }
            }
        }
Пример #3
0
        public override ImageData Read(IBinaryStream stream, ImageMetaData info)
        {
            var meta = (PolaMetaData)info;

            stream.Position = meta.DataOffset;
            var reader = new PolaReader(stream, meta.UnpackedSize);

            reader.Unpack();
            using (var temp = BinaryStream.FromArray(reader.Data, stream.Name))
                return(base.Read(temp, info));
        }
Пример #4
0
        public override ImageData Read(Stream stream, ImageMetaData info)
        {
            var meta = info as PolaMetaData;

            if (null == meta)
            {
                throw new ArgumentException("PolaFormat.Read should be supplied with PolaMetaData", "info");
            }

            stream.Position = 0x14;
            using (var reader = new PolaReader(stream, meta.UnpackedSize))
            {
                reader.Unpack();
                using (var temp = new MemoryStream(reader.Data))
                    return(base.Read(temp, info));
            }
        }
Пример #5
0
        public override ImageMetaData ReadMetaData(IBinaryStream stream)
        {
            var header = stream.ReadHeader(20);

            if (!header.AsciiEqual("*Pola"))
            {
                return(null);
            }
            bool new_version   = header.AsciiEqual(5, "*  ");
            uint data_offset   = new_version ? 20u : 13u;
            int  unpacked_size = header.ToInt32(8);

            stream.Position = data_offset;
            var reader = new PolaReader(stream, 64);

            reader.Unpack();
            using (var temp = BinaryStream.FromArray(reader.Data, stream.Name))
            {
                var info = base.ReadMetaData(temp);
                if (null == info)
                {
                    return(null);
                }
                if (!new_version)
                {
                    unpacked_size = 0x10 + GetStride(info) * (int)info.Height;
                }
                return(new PolaMetaData
                {
                    Width = info.Width,
                    Height = info.Height,
                    BPP = info.BPP,
                    DataOffset = data_offset,
                    UnpackedSize = unpacked_size,
                });
            }
        }