mirror of
https://github.com/SabreTools/BinaryObjectScanner.git
synced 2026-09-21 22:34:58 +00:00
Port PFF to new printing
This commit is contained in:
99
BinaryObjectScanner.Printing/PFF.cs
Normal file
99
BinaryObjectScanner.Printing/PFF.cs
Normal file
@@ -0,0 +1,99 @@
|
||||
using System.Text;
|
||||
using SabreTools.Models.PFF;
|
||||
|
||||
namespace BinaryObjectScanner.Printing
|
||||
{
|
||||
public static class PFF
|
||||
{
|
||||
public static void Print(StringBuilder builder, Archive archive)
|
||||
{
|
||||
builder.AppendLine("PFF Information:");
|
||||
builder.AppendLine("-------------------------");
|
||||
builder.AppendLine();
|
||||
|
||||
Print(builder, archive.Header);
|
||||
Print(builder, archive.Segments);
|
||||
Print(builder, archive.Footer);
|
||||
}
|
||||
|
||||
#if NET48
|
||||
private static void Print(StringBuilder builder, Header header)
|
||||
#else
|
||||
private static void Print(StringBuilder builder, Header? header)
|
||||
#endif
|
||||
{
|
||||
builder.AppendLine(" Header Information:");
|
||||
builder.AppendLine(" -------------------------");
|
||||
if (header == null)
|
||||
{
|
||||
builder.AppendLine(" No header");
|
||||
builder.AppendLine();
|
||||
return;
|
||||
}
|
||||
|
||||
builder.AppendLine(header.HeaderSize, " Header size");
|
||||
builder.AppendLine(header.Signature, " Signature");
|
||||
builder.AppendLine(header.NumberOfFiles, " Number of files");
|
||||
builder.AppendLine(header.FileSegmentSize, " File segment size");
|
||||
builder.AppendLine(header.FileListOffset, " File list offset");
|
||||
builder.AppendLine();
|
||||
}
|
||||
|
||||
#if NET48
|
||||
private static void Print(StringBuilder builder, Segment[] segments)
|
||||
#else
|
||||
private static void Print(StringBuilder builder, Segment?[]? segments)
|
||||
#endif
|
||||
{
|
||||
builder.AppendLine(" Segments Information:");
|
||||
builder.AppendLine(" -------------------------");
|
||||
if (segments == null || segments.Length == 0)
|
||||
{
|
||||
builder.AppendLine(" No segments");
|
||||
builder.AppendLine();
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < segments.Length; i++)
|
||||
{
|
||||
var segment = segments[i];
|
||||
builder.AppendLine($" Segment {i}");
|
||||
if (segment == null)
|
||||
{
|
||||
builder.AppendLine(" [NULL]");
|
||||
continue;
|
||||
}
|
||||
|
||||
builder.AppendLine(segment.Deleted, " Deleted");
|
||||
builder.AppendLine(segment.FileLocation, " File location");
|
||||
builder.AppendLine(segment.FileSize, " File size");
|
||||
builder.AppendLine(segment.PackedDate, " Packed date");
|
||||
builder.AppendLine(segment.FileName, " File name");
|
||||
builder.AppendLine(segment.ModifiedDate, " Modified date");
|
||||
builder.AppendLine(segment.CompressionLevel, " Compression level");
|
||||
}
|
||||
builder.AppendLine();
|
||||
}
|
||||
|
||||
#if NET48
|
||||
private static void Print(StringBuilder builder, Footer footer)
|
||||
#else
|
||||
private static void Print(StringBuilder builder, Footer? footer)
|
||||
#endif
|
||||
{
|
||||
builder.AppendLine(" Footer Information:");
|
||||
builder.AppendLine(" -------------------------");
|
||||
if (footer == null)
|
||||
{
|
||||
builder.AppendLine(" No footer");
|
||||
builder.AppendLine();
|
||||
return;
|
||||
}
|
||||
|
||||
builder.AppendLine(footer.SystemIP, " System IP");
|
||||
builder.AppendLine(footer.Reserved, " Reserved");
|
||||
builder.AppendLine(footer.KingTag, " King tag");
|
||||
builder.AppendLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -255,84 +255,10 @@ namespace BinaryObjectScanner.Wrappers
|
||||
public override StringBuilder PrettyPrint()
|
||||
{
|
||||
StringBuilder builder = new StringBuilder();
|
||||
|
||||
builder.AppendLine("PFF Information:");
|
||||
builder.AppendLine("-------------------------");
|
||||
builder.AppendLine();
|
||||
|
||||
PrintHeader(builder);
|
||||
PrintSegments(builder);
|
||||
PrintFooter(builder);
|
||||
|
||||
Printing.PFF.Print(builder, _model);
|
||||
return builder;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Print header information
|
||||
/// </summary>
|
||||
/// <param name="builder">StringBuilder to append information to</param>
|
||||
private void PrintHeader(StringBuilder builder)
|
||||
{
|
||||
builder.AppendLine(" Header Information:");
|
||||
builder.AppendLine(" -------------------------");
|
||||
builder.AppendLine($" Header size: {HeaderSize} (0x{HeaderSize:X})");
|
||||
builder.AppendLine($" Signature: {Signature}");
|
||||
builder.AppendLine($" Number of files: {NumberOfFiles} (0x{NumberOfFiles:X})");
|
||||
builder.AppendLine($" File segment size: {FileSegmentSize} (0x{FileSegmentSize:X})");
|
||||
builder.AppendLine($" File list offset: {FileListOffset} (0x{FileListOffset:X})");
|
||||
builder.AppendLine();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Print segmentsinformation
|
||||
/// </summary>
|
||||
/// <param name="builder">StringBuilder to append information to</param>
|
||||
private void PrintSegments(StringBuilder builder)
|
||||
{
|
||||
builder.AppendLine(" Segments Information:");
|
||||
builder.AppendLine(" -------------------------");
|
||||
if (NumberOfFiles == 0 || Segments == null || Segments.Length == 0)
|
||||
{
|
||||
builder.AppendLine(" No segments");
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < Segments.Length; i++)
|
||||
{
|
||||
var segment = Segments[i];
|
||||
builder.AppendLine($" Segment {i}");
|
||||
if (segment == null)
|
||||
{
|
||||
builder.AppendLine(" [NULL]");
|
||||
continue;
|
||||
}
|
||||
|
||||
builder.AppendLine($" Deleted: {segment.Deleted} (0x{segment.Deleted:X})");
|
||||
builder.AppendLine($" File location: {segment.FileLocation} (0x{segment.FileLocation:X})");
|
||||
builder.AppendLine($" File size: {segment.FileSize} (0x{segment.FileSize:X})");
|
||||
builder.AppendLine($" Packed date: {segment.PackedDate} (0x{segment.PackedDate:X})");
|
||||
builder.AppendLine($" File name: {segment.FileName ?? "[NULL]"}");
|
||||
builder.AppendLine($" Modified date: {segment.ModifiedDate} (0x{segment.ModifiedDate:X})");
|
||||
builder.AppendLine($" Compression level: {segment.CompressionLevel} (0x{segment.CompressionLevel:X})");
|
||||
}
|
||||
}
|
||||
builder.AppendLine();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Print footer information
|
||||
/// </summary>
|
||||
/// <param name="builder">StringBuilder to append information to</param>
|
||||
private void PrintFooter(StringBuilder builder)
|
||||
{
|
||||
builder.AppendLine(" Footer Information:");
|
||||
builder.AppendLine(" -------------------------");
|
||||
builder.AppendLine($" System IP: {SystemIP} (0x{SystemIP:X})");
|
||||
builder.AppendLine($" Reserved: {Reserved} (0x{Reserved:X})");
|
||||
builder.AppendLine($" King tag: {KingTag ?? "[NULL]"}");
|
||||
builder.AppendLine();
|
||||
}
|
||||
|
||||
#if NET6_0_OR_GREATER
|
||||
|
||||
/// <inheritdoc/>
|
||||
|
||||
Reference in New Issue
Block a user