handle magic byte offsets in data format filters
This commit is contained in:
parent
4f05e15621
commit
ba02cf575e
@ -154,15 +154,15 @@ namespace UniversalEditor
|
||||
byte[] cmp = new byte[bytes.Length];
|
||||
|
||||
long offset = accessor.Position;
|
||||
if (i < mvarMagicByteOffsets.Length)
|
||||
if (i < MagicByteOffsets.Length)
|
||||
{
|
||||
if (mvarMagicByteOffsets[i] < 0)
|
||||
if (MagicByteOffsets[i] < 0)
|
||||
{
|
||||
accessor.Seek(mvarMagicByteOffsets[i], SeekOrigin.End);
|
||||
accessor.Seek(MagicByteOffsets[i], SeekOrigin.End);
|
||||
}
|
||||
else
|
||||
{
|
||||
accessor.Seek(mvarMagicByteOffsets[i], SeekOrigin.Begin);
|
||||
accessor.Seek(MagicByteOffsets[i], SeekOrigin.Begin);
|
||||
}
|
||||
}
|
||||
accessor.Reader.Read(cmp, 0, cmp.Length);
|
||||
@ -223,8 +223,7 @@ namespace UniversalEditor
|
||||
return false;
|
||||
}
|
||||
|
||||
private int[] mvarMagicByteOffsets = new int[0];
|
||||
public int[] MagicByteOffsets { get { return mvarMagicByteOffsets; } set { mvarMagicByteOffsets = value; } }
|
||||
public int[] MagicByteOffsets { get; set; } = new int[0];
|
||||
|
||||
public string ContentType { get; set; } = null;
|
||||
public string PerceivedType { get; set; }
|
||||
|
||||
@ -936,6 +936,13 @@ namespace UniversalEditor.DataFormats.UEPackage
|
||||
if (tagMagicByteSequence == null) continue;
|
||||
if (tagMagicByteSequence.FullName != "MagicByteSequence") continue;
|
||||
|
||||
int offset = 0;
|
||||
MarkupAttribute attOffset = tagMagicByteSequence.Attributes["Offset"];
|
||||
if (attOffset != null)
|
||||
{
|
||||
offset = Int32.Parse(attOffset.Value);
|
||||
}
|
||||
|
||||
List<byte?> magicByteSequence = new List<byte?>();
|
||||
|
||||
foreach (MarkupElement elMagicByte in tagMagicByteSequence.Elements)
|
||||
@ -1008,7 +1015,7 @@ namespace UniversalEditor.DataFormats.UEPackage
|
||||
}
|
||||
}
|
||||
|
||||
magicByteOffsets.Add(0);
|
||||
magicByteOffsets.Add(offset);
|
||||
filter.MagicBytes.Add(magicByteSequence.ToArray());
|
||||
}
|
||||
filter.MagicByteOffsets = magicByteOffsets.ToArray();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user