public static LensDataStructure ParseLensData(byte[] buffer) { ulong offset = 0; LensDataStructure data = new LensDataStructure(); data.Identifier = GetUInt16(buffer, 0x00); data.LensEntryCount = GetUInt16(buffer, 0x02); data.HeaderSize = GetUInt16(buffer, 0x04); data.LensEntriesReserved = GetUInt16(buffer, 0x06); data.Unknown1 = GetUInt16(buffer, 0x10); data.Unknown2 = GetUInt16(buffer, 0x12); data.Unknown3 = GetUInt16(buffer, 0x14); data.Unknown4 = GetUInt16(buffer, 0x16); data.Unknown5 = GetUInt16(buffer, 0x18); offset += data.HeaderSize; Log.WriteLine(" Parsing " + data.LensEntryCount + " index entries"); data.LensEntries = new LensEntry[data.LensEntryCount]; for (ulong entry = 0; entry < data.LensEntryCount; entry++) { LensEntry lensEntry = new LensEntry(); lensEntry.LensId = GetUInt16(buffer, offset + entry * 0x10 + 0x00); lensEntry.Wide = GetUInt16(buffer, offset + entry * 0x10 + 0x02); lensEntry.ExtenderType = GetUInt16(buffer, offset + entry * 0x10 + 0x04); lensEntry.Offset = GetUInt32(buffer, offset + entry * 0x10 + 0x0C); Log.WriteLine(" Lens #{0} has ID 0x{1:X8} [Wide: {2}, ExtenderType: {3}]", entry, lensEntry.LensId, lensEntry.Wide, lensEntry.ExtenderType); data.LensEntries[entry] = lensEntry; } offset += (ulong)data.LensEntriesReserved * 0x10; Log.WriteLine(" Parsing " + data.LensEntryCount + " lens datas"); for (ulong entry = 0; entry < data.LensEntryCount; entry++) { LensEntry lensEntry = data.LensEntries[entry]; data.LensEntries[entry].LensData = ParseLensCorrection(buffer, offset + lensEntry.Offset); } return data; }
public static LensDataStructure ParseLensData(byte[] buffer) { ulong offset = 0; LensDataStructure data = new LensDataStructure(); data.Identifier = GetUInt16(buffer, 0x00); data.LensEntryCount = GetUInt16(buffer, 0x02); data.HeaderSize = GetUInt16(buffer, 0x04); data.LensEntriesReserved = GetUInt16(buffer, 0x06); data.Unknown1 = GetUInt16(buffer, 0x10); data.Unknown2 = GetUInt16(buffer, 0x12); data.Unknown3 = GetUInt16(buffer, 0x14); data.Unknown4 = GetUInt16(buffer, 0x16); data.Unknown5 = GetUInt16(buffer, 0x18); offset += data.HeaderSize; Log.WriteLine(" Parsing " + data.LensEntryCount + " index entries"); data.LensEntries = new LensEntry[data.LensEntryCount]; for (ulong entry = 0; entry < data.LensEntryCount; entry++) { LensEntry lensEntry = new LensEntry(); lensEntry.LensId = GetUInt16(buffer, offset + entry * 0x10 + 0x00); lensEntry.Wide = GetUInt16(buffer, offset + entry * 0x10 + 0x02); lensEntry.ExtenderType = GetUInt16(buffer, offset + entry * 0x10 + 0x04); lensEntry.Offset = GetUInt32(buffer, offset + entry * 0x10 + 0x0C); Log.WriteLine(" Lens #{0} has ID 0x{1:X8} [Wide: {2}, ExtenderType: {3}]", entry, lensEntry.LensId, lensEntry.Wide, lensEntry.ExtenderType); data.LensEntries[entry] = lensEntry; } offset += (ulong)data.LensEntriesReserved * 0x10; Log.WriteLine(" Parsing " + data.LensEntryCount + " lens datas"); for (ulong entry = 0; entry < data.LensEntryCount; entry++) { LensEntry lensEntry = data.LensEntries[entry]; data.LensEntries[entry].LensData = ParseLensCorrection(buffer, offset + lensEntry.Offset); } return(data); }