mirror of
https://github.com/crskycode/GARbro.git
synced 2025-01-11 20:39:29 +08:00
(ED8): palette reading.
This commit is contained in:
parent
e384ec2ef7
commit
f7e5bf4202
@ -43,7 +43,7 @@ namespace GameRes.Formats.AdPack
|
|||||||
|
|
||||||
internal class Ed8MetaData : ImageMetaData
|
internal class Ed8MetaData : ImageMetaData
|
||||||
{
|
{
|
||||||
public uint PaletteSize;
|
public int PaletteSize;
|
||||||
public uint CompSize;
|
public uint CompSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -277,7 +277,7 @@ namespace GameRes.Formats.AdPack
|
|||||||
return null;
|
return null;
|
||||||
uint width = header.ToUInt16 (0x0e);
|
uint width = header.ToUInt16 (0x0e);
|
||||||
uint height = header.ToUInt16 (0x10);
|
uint height = header.ToUInt16 (0x10);
|
||||||
uint palette_size = header.ToUInt32 (0x12);
|
int palette_size = header.ToInt32 (0x12);
|
||||||
uint comp_size = header.ToUInt32 (0x16);
|
uint comp_size = header.ToUInt32 (0x16);
|
||||||
if (palette_size > 0x100)
|
if (palette_size > 0x100)
|
||||||
return null;
|
return null;
|
||||||
@ -295,7 +295,6 @@ namespace GameRes.Formats.AdPack
|
|||||||
public override ImageData Read (IBinaryStream stream, ImageMetaData info)
|
public override ImageData Read (IBinaryStream stream, ImageMetaData info)
|
||||||
{
|
{
|
||||||
var meta = (Ed8MetaData)info;
|
var meta = (Ed8MetaData)info;
|
||||||
stream.Position = 0x1a;
|
|
||||||
var reader = new Reader (stream.AsStream, meta);
|
var reader = new Reader (stream.AsStream, meta);
|
||||||
reader.Unpack();
|
reader.Unpack();
|
||||||
var palette = new BitmapPalette (reader.Palette);
|
var palette = new BitmapPalette (reader.Palette);
|
||||||
@ -322,21 +321,14 @@ namespace GameRes.Formats.AdPack
|
|||||||
public Reader (Stream file, Ed8MetaData info)
|
public Reader (Stream file, Ed8MetaData info)
|
||||||
{
|
{
|
||||||
m_width = (int)info.Width;
|
m_width = (int)info.Width;
|
||||||
int palette_size = (int)info.PaletteSize*3;
|
|
||||||
var palette_data = new byte[Math.Max (0x300, palette_size)];
|
|
||||||
if (palette_size != file.Read (palette_data, 0, palette_size))
|
|
||||||
throw new InvalidFormatException();
|
|
||||||
m_palette = new Color[0x100];
|
|
||||||
for (int i = 0; i < m_palette.Length; ++i)
|
|
||||||
{
|
|
||||||
m_palette[i] = Color.FromRgb (palette_data[i*3+2], palette_data[i*3+1], palette_data[i*3]);
|
|
||||||
}
|
|
||||||
m_input = file;
|
m_input = file;
|
||||||
m_data = new byte[info.Width * info.Height];
|
m_data = new byte[info.Width * info.Height];
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Unpack ()
|
public void Unpack ()
|
||||||
{
|
{
|
||||||
|
m_input.Position = 0x1A;
|
||||||
|
m_palette = ReadColorMap (m_input, 0x100, PaletteFormat.Bgr);
|
||||||
int data_pos = 0;
|
int data_pos = 0;
|
||||||
while (data_pos < m_data.Length)
|
while (data_pos < m_data.Length)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user