public static byte[] RecreateTagWithNewTagSize(byte[] raw, int newSize) { Debug.Assert(HasTagV2(raw)); Debug.Assert(TagSize(raw) <= newSize); HeaderV2 header = new HeaderV2(); using (Reader reader = new Reader(raw)) { header.Read(reader); } int oldSize = header.TotalSize; header.Size = newSize - header.HeaderSize; byte[] result = null; using (Writer writer = new Writer(raw)) { header.Write(writer); writer.Seek(0, SeekOrigin.End); for (int i = 0; i < (newSize - oldSize); ++i) { writer.WriteByte(0); } result = writer.OutData; } CheckTagSizeV2(result); return(result); }
public static int TagSizeV2(FileInfo file) { if (VirtualDrive.ExistsFile(file.FullName) && HasTagV2(file)) { HeaderV2 header = new HeaderV2(); using (Reader reader = new Reader(file)) { header.Read(reader); } return(header.TotalSize); } return(0); }
public static int TagSize(byte[] raw) { if (HasTagV2(raw)) { HeaderV2 header = new HeaderV2(); using (Reader reader = new Reader(raw)) { header.Read(reader); } return(header.TotalSize); } else if (HasTagV2(raw)) { return(HeaderV1.totalSize); } return(0); }
private void ReadHeaderV2(BinaryReader br) { header2 = new HeaderV2(); header2.signature = new string(br.ReadChars(4)); header2.version = br.ReadUInt32(); header2.width = br.ReadUInt32(); header2.height = br.ReadUInt32(); header2.depth = br.ReadUInt32(); header2.faces = br.ReadUInt32(); header2.mipCount = br.ReadUInt32(); header2.format = br.ReadUInt32(); header2.containsSizes = br.ReadUInt32(); header2.unk1 = br.ReadUInt32(); header2.unk2 = new UInt32[] { br.ReadUInt32(), br.ReadUInt32(), br.ReadUInt32() }; header2.unk3 = br.ReadUInt32(); UInt32[] sizes = new UInt32[14]; for (int s = 0; s < sizes.Length; s++) { sizes[s] = br.ReadUInt32(); } header2.sizes = sizes; }
public void ReadHeaderV2() { log.Debug("Reading ABF Header (v2)"); br.BaseStream.Seek(0, SeekOrigin.Begin); headerV2 = new HeaderV2(); headerV2.fFileSignature = FileReadString(-1, 4); //4s; headerV2.fFileVersionNumber = FileReadBytes(-1, 4); //4b; headerV2.uFileInfoSize = FileReadUnsignedInt(-1, 1); //I; headerV2.lActualEpisodes = FileReadUnsignedInt(-1, 1); //I; headerV2.uFileStartDate = FileReadUnsignedInt(-1, 1); //I; headerV2.uFileStartTimeMS = FileReadUnsignedInt(-1, 1); //I; headerV2.uStopwatchTime = FileReadUnsignedInt(-1, 1); //I; headerV2.nFileType = FileReadUnsignedShort(-1, 1); //H; headerV2.nDataFormat = FileReadUnsignedShort(-1, 1); //H; headerV2.nSimultaneousScan = FileReadUnsignedShort(-1, 1); //H; headerV2.nCRCEnable = FileReadUnsignedShort(-1, 1); //H; headerV2.uFileCRC = FileReadUnsignedInt(-1, 1); //I; headerV2.uFileGUID = FileReadBytes(-1, 16); //16B; headerV2.uCreatorVersion = FileReadBytes(-1, 4); //4B; headerV2.uCreatorNameIndex = FileReadUnsignedInt(-1, 1); //I; headerV2.uModifierVersion = FileReadUnsignedInt(-1, 1); //I; headerV2.uModifierNameIndex = FileReadUnsignedInt(-1, 1); //I; headerV2.uProtocolPathIndex = FileReadUnsignedInt(-1, 1); //I; }