} // 'HG-2' public override ImageMetaData ReadMetaData(Stream stream) { stream.Position = 8; using (var header = new ArcView.Reader(stream)) { var info = new Hg2MetaData(); int type = header.ReadInt32(); if (0x25 == type) { info.HeaderSize = 0x58; } else if (0x20 == type) { info.HeaderSize = 0x50; } else { return(null); } info.Width = header.ReadUInt32(); info.Height = header.ReadUInt32(); info.BPP = header.ReadInt32(); header.BaseStream.Seek(8, SeekOrigin.Current); info.DataPacked = header.ReadInt32(); info.DataUnpacked = header.ReadInt32(); info.CtlPacked = header.ReadInt32(); info.CtlUnpacked = header.ReadInt32(); header.BaseStream.Seek(8, SeekOrigin.Current); info.CanvasWidth = header.ReadUInt32(); info.CanvasHeight = header.ReadUInt32(); info.OffsetX = header.ReadInt32(); info.OffsetY = header.ReadInt32(); return(info); } }
} // 'HG-2' public override ImageMetaData ReadMetaData(IBinaryStream stream) { stream.Position = 8; var info = new Hg2MetaData(); int type = stream.ReadInt32(); if (0x25 == type) { info.HeaderSize = 0x58; } else if (0x20 == type) { info.HeaderSize = 0x50; } else { return(null); } info.Width = stream.ReadUInt32(); info.Height = stream.ReadUInt32(); info.BPP = stream.ReadInt32(); stream.Seek(8, SeekOrigin.Current); info.DataPacked = stream.ReadInt32(); info.DataUnpacked = stream.ReadInt32(); info.CtlPacked = stream.ReadInt32(); info.CtlUnpacked = stream.ReadInt32(); stream.Seek(8, SeekOrigin.Current); info.CanvasWidth = stream.ReadUInt32(); info.CanvasHeight = stream.ReadUInt32(); info.OffsetX = stream.ReadInt32(); info.OffsetY = stream.ReadInt32(); return(info); }
public override Stream OpenEntry(ArcFile arc, Entry entry) { // emulate TGA image var offset = entry.Offset; var info = new Hg2MetaData { HeaderSize = 0x4C, Width = arc.File.View.ReadUInt32(offset), Height = arc.File.View.ReadUInt32(offset + 4), BPP = arc.File.View.ReadInt32(offset + 8), DataPacked = arc.File.View.ReadInt32(offset + 0x14), DataUnpacked = arc.File.View.ReadInt32(offset + 0x18), CtlPacked = arc.File.View.ReadInt32(offset + 0x1C), CtlUnpacked = arc.File.View.ReadInt32(offset + 0x20), CanvasWidth = arc.File.View.ReadUInt32(offset + 0x2C), CanvasHeight = arc.File.View.ReadUInt32(offset + 0x30), OffsetX = arc.File.View.ReadInt32(offset + 0x34), OffsetY = arc.File.View.ReadInt32(offset + 0x38), }; using (var input = arc.File.CreateStream(entry.Offset, entry.Size)) using (var reader = new Hg2Reader(input, info)) { return(TgaStream.Create(info, reader.Unpack(), true)); } }
public override IImageDecoder OpenImage (ArcFile arc, Entry entry) { var offset = entry.Offset; var info = new Hg2MetaData { HeaderSize = 0x4C, Width = arc.File.View.ReadUInt32 (offset), Height = arc.File.View.ReadUInt32 (offset+4), BPP = arc.File.View.ReadInt32 (offset+8), DataPacked = arc.File.View.ReadInt32 (offset+0x14), DataUnpacked= arc.File.View.ReadInt32 (offset+0x18), CtlPacked = arc.File.View.ReadInt32 (offset+0x1C), CtlUnpacked = arc.File.View.ReadInt32 (offset+0x20), CanvasWidth = arc.File.View.ReadUInt32 (offset+0x2C), CanvasHeight= arc.File.View.ReadUInt32 (offset+0x30), OffsetX = arc.File.View.ReadInt32 (offset+0x34), OffsetY = arc.File.View.ReadInt32 (offset+0x38), }; var input = arc.File.CreateStream (entry.Offset, entry.Size); return new Hg2Reader (input, info); }
public Hg2Reader(Stream input, Hg2MetaData info) : base(input, info) { m_hg2 = info; }