コード例 #1
0
ファイル: KSLT.cs プロジェクト: wchristian/Scarlet
        protected override Bitmap OnGetBitmap(int imageIndex, int paletteIndex)
        {
            KsltImageData imageData = ImageData[imageIndex];

            ImageBinary imageBinary = new ImageBinary();

            imageBinary.Width           = imageData.Width;
            imageBinary.Height          = imageData.Height;
            imageBinary.InputEndianness = Endian.LittleEndian;

            switch (imageData.PixelFormat)
            {
            case KsltPixelFormat.Argb8888:
                imageBinary.InputPixelFormat = PixelDataFormat.FormatArgb8888;
                break;

            case KsltPixelFormat.DXT5:
                imageBinary.InputPixelFormat  = PixelDataFormat.FormatDXT5;
                imageBinary.InputPixelFormat |= PixelDataFormat.PixelOrderingSwizzledVita;
                break;

            default: throw new NotImplementedException(string.Format("KSLT format 0x{0:X8}", (uint)imageData.PixelFormat));
            }

            imageBinary.AddInputPixels(imageData.PixelData);

            return(imageBinary.GetBitmap());
        }
コード例 #2
0
ファイル: KSLT.cs プロジェクト: wchristian/Scarlet
        protected override void OnOpen(EndianBinaryReader reader)
        {
            MagicNumber      = Encoding.ASCII.GetString(reader.ReadBytes(8));
            NumImages        = reader.ReadUInt32();
            FileSize         = reader.ReadUInt32();
            ImageNamesOffset = reader.ReadUInt32();
            ImageNamesSize   = reader.ReadUInt32();
            Unknown0x18      = reader.ReadBytes(0x28);

            ImageNameLengths = new uint[NumImages];
            ImageDataOffsets = new uint[NumImages];

            for (int i = 0; i < NumImages; i++)
            {
                ImageNameLengths[i] = reader.ReadUInt32();
                ImageDataOffsets[i] = reader.ReadUInt32();
            }

            ImageNames = new string[NumImages];
            reader.BaseStream.Seek(0x40 + ImageNamesOffset, SeekOrigin.Begin);
            for (int i = 0; i < NumImages; i++)
            {
                ImageNames[i] = Encoding.ASCII.GetString(reader.ReadBytes((int)ImageNameLengths[i] + 1)).TrimEnd('\0');
            }

            ImageData = new KsltImageData[NumImages];
            for (int i = 0; i < NumImages; i++)
            {
                reader.BaseStream.Seek(ImageDataOffsets[i], SeekOrigin.Begin);
                ImageData[i] = new KsltImageData(reader);
            }
        }