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, }); } } }
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, }); } } }
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)); }
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)); } }
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, }); } }