Exemplo n.º 1
0
        }                                                                 // '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);
            }
        }
Exemplo n.º 2
0
        }                                                                 // '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);
        }
Exemplo n.º 3
0
        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));
                }
        }
Exemplo n.º 4
0
 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);
 }
Exemplo n.º 5
0
 public Hg2Reader(Stream input, Hg2MetaData info) : base(input, info)
 {
     m_hg2 = info;
 }