From fa972916c3754c2b8ba000f2e1c18f15290d6ad3 Mon Sep 17 00:00:00 2001 From: morkt Date: Thu, 7 Jul 2016 14:44:19 +0400 Subject: [PATCH] (AImageHeader): don't require input stream to be seekable. --- ArcFormats/Cyberworks/ArcDAT.cs | 3 +-- ArcFormats/Cyberworks/ImageTINK.cs | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ArcFormats/Cyberworks/ArcDAT.cs b/ArcFormats/Cyberworks/ArcDAT.cs index 7fed101c..08a2430c 100644 --- a/ArcFormats/Cyberworks/ArcDAT.cs +++ b/ArcFormats/Cyberworks/ArcDAT.cs @@ -213,8 +213,7 @@ namespace GameRes.Formats.Cyberworks int id = input.ReadByte(); if (id == scheme.Value2) { - using (var seekable = new SeekableStream (input)) - using (var reader = new AImageReader (seekable, scheme)) + using (var reader = new AImageReader (input, scheme)) { reader.Unpack(); return TgaStream.Create (reader.Info, reader.Data, scheme.Flipped); diff --git a/ArcFormats/Cyberworks/ImageTINK.cs b/ArcFormats/Cyberworks/ImageTINK.cs index 10115cda..725847be 100644 --- a/ArcFormats/Cyberworks/ImageTINK.cs +++ b/ArcFormats/Cyberworks/ImageTINK.cs @@ -116,12 +116,13 @@ namespace GameRes.Formats.Cyberworks if (src_stride * (int)Info.Height != data_size) throw new InvalidFormatException(); m_output = new byte[dst_stride * (int)Info.Height]; + var gap = new byte[src_stride-dst_stride]; int dst = 0; for (uint y = 0; y < Info.Height; ++y) { m_input.Read (m_output, dst, dst_stride); + m_input.Read (gap, 0, gap.Length); dst += dst_stride; - m_input.BaseStream.Seek (src_stride-dst_stride, SeekOrigin.Current); } } }