fixed stride calculation for 8-bit GGD images.

This commit is contained in:
morkt 2016-01-10 02:30:17 +04:00
parent a1ac261ce7
commit ca269364ae

View File

@ -2,7 +2,7 @@
//! \date Fri Aug 22 05:58:40 2014 //! \date Fri Aug 22 05:58:40 2014
//! \brief Digital Romance System image format implementation. //! \brief Digital Romance System image format implementation.
// //
// Copyright (C) 2014-2015 by morkt // Copyright (C) 2014-2016 by morkt
// //
// Permission is hereby granted, free of charge, to any person obtaining a copy // Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to // of this software and associated documentation files (the "Software"), to
@ -436,9 +436,7 @@ namespace GameRes.Formats.Ikura
public override ImageData Read (Stream file, ImageMetaData info) public override ImageData Read (Stream file, ImageMetaData info)
{ {
var meta = info as GgdMetaData; var meta = (GgdMetaData)info;
if (null == meta)
throw new ArgumentException ("DrgIndexedFormat.Read should be supplied with GgdMetaData", "info");
file.Position = meta.HeaderSize + 4; file.Position = meta.HeaderSize + 4;
var palette_data = new byte[0x400]; var palette_data = new byte[0x400];
if (palette_data.Length != file.Read (palette_data, 0, palette_data.Length)) if (palette_data.Length != file.Read (palette_data, 0, palette_data.Length))
@ -454,7 +452,8 @@ namespace GameRes.Formats.Ikura
{ {
reader.Unpack(); reader.Unpack();
var palette = new BitmapPalette (colors); var palette = new BitmapPalette (colors);
return ImageData.Create (info, PixelFormats.Indexed8, palette, reader.Data); int stride = ((int)meta.Width + 3) & ~3;
return ImageData.Create (info, PixelFormats.Indexed8, palette, reader.Data, stride);
} }
} }