Remove BinaryReader from Dune2ShpReader.
This commit is contained in:
@@ -36,23 +36,23 @@ namespace OpenRA.FileFormats
|
|||||||
public readonly byte[] LookupTable;
|
public readonly byte[] LookupTable;
|
||||||
public byte[] Image;
|
public byte[] Image;
|
||||||
|
|
||||||
public Dune2ImageHeader(BinaryReader reader)
|
public Dune2ImageHeader(Stream s)
|
||||||
{
|
{
|
||||||
Flags = (Dune2ImageFlags)reader.ReadUInt16();
|
Flags = (Dune2ImageFlags)s.ReadUInt16();
|
||||||
Slices = reader.ReadByte();
|
Slices = s.ReadUInt8();
|
||||||
Width = reader.ReadUInt16();
|
Width = s.ReadUInt16();
|
||||||
Height = reader.ReadByte();
|
Height = s.ReadUInt8();
|
||||||
FileSize = reader.ReadUInt16();
|
FileSize = s.ReadUInt16();
|
||||||
DataSize = reader.ReadUInt16();
|
DataSize = s.ReadUInt16();
|
||||||
|
|
||||||
if (Flags == Dune2ImageFlags.L16_F80_F2_1 ||
|
if (Flags == Dune2ImageFlags.L16_F80_F2_1 ||
|
||||||
Flags == Dune2ImageFlags.L16_F80_F2_2 ||
|
Flags == Dune2ImageFlags.L16_F80_F2_2 ||
|
||||||
Flags == Dune2ImageFlags.Ln_F80_F2)
|
Flags == Dune2ImageFlags.Ln_F80_F2)
|
||||||
{
|
{
|
||||||
int n = Flags == Dune2ImageFlags.Ln_F80_F2 ? reader.ReadByte() : (byte)16;
|
int n = Flags == Dune2ImageFlags.Ln_F80_F2 ? s.ReadUInt8() : (byte)16;
|
||||||
LookupTable = new byte[n];
|
LookupTable = new byte[n];
|
||||||
for (int i = 0; i < n; i++)
|
for (int i = 0; i < n; i++)
|
||||||
LookupTable[i] = reader.ReadByte();
|
LookupTable[i] = s.ReadUInt8();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -78,16 +78,14 @@ namespace OpenRA.FileFormats
|
|||||||
|
|
||||||
List<Dune2ImageHeader> headers = new List<Dune2ImageHeader>();
|
List<Dune2ImageHeader> headers = new List<Dune2ImageHeader>();
|
||||||
|
|
||||||
public Dune2ShpReader(Stream stream)
|
public Dune2ShpReader(Stream s)
|
||||||
{
|
{
|
||||||
BinaryReader reader = new BinaryReader(stream);
|
ImageCount = s.ReadUInt16();
|
||||||
|
|
||||||
ImageCount = reader.ReadUInt16();
|
|
||||||
|
|
||||||
//Last offset is pointer to end of file.
|
//Last offset is pointer to end of file.
|
||||||
uint[] offsets = new uint[ImageCount + 1];
|
uint[] offsets = new uint[ImageCount + 1];
|
||||||
|
|
||||||
uint temp = reader.ReadUInt32();
|
uint temp = s.ReadUInt32();
|
||||||
|
|
||||||
//If fourth byte in file is non-zero, the offsets are two bytes each.
|
//If fourth byte in file is non-zero, the offsets are two bytes each.
|
||||||
bool twoByteOffsets = (temp & 0xFF0000) > 0;
|
bool twoByteOffsets = (temp & 0xFF0000) > 0;
|
||||||
@@ -100,13 +98,13 @@ namespace OpenRA.FileFormats
|
|||||||
offsets[0] = temp + 2;
|
offsets[0] = temp + 2;
|
||||||
|
|
||||||
for (int i = twoByteOffsets ? 2 : 1; i < ImageCount + 1; i++)
|
for (int i = twoByteOffsets ? 2 : 1; i < ImageCount + 1; i++)
|
||||||
offsets[i] = (twoByteOffsets ? reader.ReadUInt16() : reader.ReadUInt32()) + 2;
|
offsets[i] = (twoByteOffsets ? s.ReadUInt16() : s.ReadUInt32()) + 2;
|
||||||
|
|
||||||
for (int i = 0; i < ImageCount; i++)
|
for (int i = 0; i < ImageCount; i++)
|
||||||
{
|
{
|
||||||
reader.BaseStream.Seek(offsets[i], SeekOrigin.Begin);
|
s.Seek(offsets[i], SeekOrigin.Begin);
|
||||||
Dune2ImageHeader header = new Dune2ImageHeader(reader);
|
Dune2ImageHeader header = new Dune2ImageHeader(s);
|
||||||
byte[] imgData = reader.ReadBytes(header.FileSize);
|
byte[] imgData = s.ReadBytes(header.FileSize);
|
||||||
header.Image = new byte[header.Height * header.Width];
|
header.Image = new byte[header.Height * header.Width];
|
||||||
|
|
||||||
//Decode image data
|
//Decode image data
|
||||||
|
|||||||
Reference in New Issue
Block a user