示例#1
0
        public TPL(byte[] file)
        {
            EndianBinaryReader er = new EndianBinaryReader(new MemoryStream(file), Endianness.BigEndian);
            bool OK;

            Header = new TPLHeader(er, out OK);
            if (!OK)
            {
                System.Windows.Forms.MessageBox.Show("Error 1"); goto end;
            }
            ImageHeaderOffsets   = new UInt32[Header.NrImages];
            PaletteHeaderOffsets = new UInt32[Header.NrImages];
            for (int i = 0; i < Header.NrImages; i++)
            {
                ImageHeaderOffsets[i]   = er.ReadUInt32();
                PaletteHeaderOffsets[i] = er.ReadUInt32();
            }
            Images   = new TPLImageHeader[Header.NrImages];
            Palettes = new TPLPaletteHeader[Header.NrImages];
            for (int i = 0; i < Header.NrImages; i++)
            {
                er.BaseStream.Position = ImageHeaderOffsets[i];
                Images[i] = new TPLImageHeader(er);
                if (PaletteHeaderOffsets[i] != 0)
                {
                    er.BaseStream.Position = PaletteHeaderOffsets[i];
                    Palettes[i]            = new TPLPaletteHeader(er);
                }
            }
end:
            er.Close();
        }
示例#2
0
 private static byte[] GetImageData(FileReader reader, TPLImageHeader image)
 {
     return(reader.getSection(image.ImageOffset,
                              (uint)Decode_Gamecube.GetDataSizeWithMips(image.Format, image.Width, image.Height, image.MaxLOD)));
 }