mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-09-23 15:24:56 +00:00
Add CHD printer
This commit is contained in:
137
SabreTools.Serialization/Printers/CHD.cs
Normal file
137
SabreTools.Serialization/Printers/CHD.cs
Normal file
@@ -0,0 +1,137 @@
|
||||
using System.Text;
|
||||
using SabreTools.Models.CHD;
|
||||
using SabreTools.Serialization.Interfaces;
|
||||
|
||||
namespace SabreTools.Serialization.Printers
|
||||
{
|
||||
public class CHD : IPrinter<Header>
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public void PrintInformation(StringBuilder builder, Header model)
|
||||
=> Print(builder, model);
|
||||
|
||||
public static void Print(StringBuilder builder, Header header)
|
||||
{
|
||||
builder.AppendLine("CHD Header Information:");
|
||||
builder.AppendLine("-------------------------");
|
||||
builder.AppendLine();
|
||||
|
||||
if (header == null)
|
||||
{
|
||||
builder.AppendLine(" No header");
|
||||
builder.AppendLine();
|
||||
return;
|
||||
}
|
||||
|
||||
switch (header)
|
||||
{
|
||||
case HeaderV1 v1:
|
||||
Print(builder, v1);
|
||||
break;
|
||||
case HeaderV2 v2:
|
||||
Print(builder, v2);
|
||||
break;
|
||||
case HeaderV3 v3:
|
||||
Print(builder, v3);
|
||||
break;
|
||||
case HeaderV4 v4:
|
||||
Print(builder, v4);
|
||||
break;
|
||||
case HeaderV5 v5:
|
||||
Print(builder, v5);
|
||||
break;
|
||||
default:
|
||||
builder.AppendLine(" Unrecognized header type");
|
||||
builder.AppendLine();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private static void Print(StringBuilder builder, HeaderV1 header)
|
||||
{
|
||||
builder.AppendLine(header.Tag, $" Tag");
|
||||
builder.AppendLine(header.Length, $" Length");
|
||||
builder.AppendLine(header.Version, $" Version");
|
||||
builder.AppendLine($" Flags: {header.Flags} (0x{header.Flags:X})");
|
||||
builder.AppendLine($" Compression: {header.Compression} (0x{header.Compression:X})");
|
||||
builder.AppendLine(header.HunkSize, $" Hunk size");
|
||||
builder.AppendLine(header.TotalHunks, $" Total hunks");
|
||||
builder.AppendLine(header.Cylinders, $" Cylinders");
|
||||
builder.AppendLine(header.Heads, $" Heads");
|
||||
builder.AppendLine(header.Sectors, $" Sectors");
|
||||
builder.AppendLine(header.MD5, $" MD5");
|
||||
builder.AppendLine(header.ParentMD5, $" Parent MD5");
|
||||
builder.AppendLine();
|
||||
}
|
||||
|
||||
private static void Print(StringBuilder builder, HeaderV2 header)
|
||||
{
|
||||
builder.AppendLine(header.Tag, $" Tag");
|
||||
builder.AppendLine(header.Length, $" Length");
|
||||
builder.AppendLine(header.Version, $" Version");
|
||||
builder.AppendLine($" Flags: {header.Flags} (0x{header.Flags:X})");
|
||||
builder.AppendLine($" Compression: {header.Compression} (0x{header.Compression:X})");
|
||||
builder.AppendLine(header.HunkSize, $" Hunk size");
|
||||
builder.AppendLine(header.TotalHunks, $" Total hunks");
|
||||
builder.AppendLine(header.Cylinders, $" Cylinders");
|
||||
builder.AppendLine(header.Heads, $" Heads");
|
||||
builder.AppendLine(header.Sectors, $" Sectors");
|
||||
builder.AppendLine(header.MD5, $" MD5");
|
||||
builder.AppendLine(header.ParentMD5, $" Parent MD5");
|
||||
builder.AppendLine(header.BytesPerSector, $" Bytes per sector");
|
||||
builder.AppendLine();
|
||||
}
|
||||
|
||||
private static void Print(StringBuilder builder, HeaderV3 header)
|
||||
{
|
||||
builder.AppendLine(header.Tag, $" Tag");
|
||||
builder.AppendLine(header.Length, $" Length");
|
||||
builder.AppendLine(header.Version, $" Version");
|
||||
builder.AppendLine($" Flags: {header.Flags} (0x{header.Flags:X})");
|
||||
builder.AppendLine($" Compression: {header.Compression} (0x{header.Compression:X})");
|
||||
builder.AppendLine(header.TotalHunks, $" Total hunks");
|
||||
builder.AppendLine(header.LogicalBytes, $" Logical bytes");
|
||||
builder.AppendLine(header.MetaOffset, $" Meta offset");
|
||||
builder.AppendLine(header.MD5, $" MD5");
|
||||
builder.AppendLine(header.ParentMD5, $" Parent MD5");
|
||||
builder.AppendLine(header.HunkBytes, $" Hunk bytes");
|
||||
builder.AppendLine(header.SHA1, $" SHA-1");
|
||||
builder.AppendLine(header.ParentSHA1, $" Parent SHA-1");
|
||||
builder.AppendLine();
|
||||
}
|
||||
|
||||
private static void Print(StringBuilder builder, HeaderV4 header)
|
||||
{
|
||||
builder.AppendLine(header.Tag, $" Tag");
|
||||
builder.AppendLine(header.Length, $" Length");
|
||||
builder.AppendLine(header.Version, $" Version");
|
||||
builder.AppendLine($" Flags: {header.Flags} (0x{header.Flags:X})");
|
||||
builder.AppendLine($" Compression: {header.Compression} (0x{header.Compression:X})");
|
||||
builder.AppendLine(header.TotalHunks, $" Total hunks");
|
||||
builder.AppendLine(header.LogicalBytes, $" Logical bytes");
|
||||
builder.AppendLine(header.MetaOffset, $" Meta offset");
|
||||
builder.AppendLine(header.HunkBytes, $" Hunk bytes");
|
||||
builder.AppendLine(header.SHA1, $" SHA-1");
|
||||
builder.AppendLine(header.ParentSHA1, $" Parent SHA-1");
|
||||
builder.AppendLine(header.RawSHA1, $" Raw SHA-1");
|
||||
builder.AppendLine();
|
||||
}
|
||||
|
||||
private static void Print(StringBuilder builder, HeaderV5 header)
|
||||
{
|
||||
builder.AppendLine(header.Tag, $" Tag");
|
||||
builder.AppendLine(header.Length, $" Length");
|
||||
builder.AppendLine(header.Version, $" Version");
|
||||
builder.AppendLine(header.Compressors, $" Compressors");
|
||||
builder.AppendLine(header.LogicalBytes, $" Logical bytes");
|
||||
builder.AppendLine(header.MapOffset, $" Map offset");
|
||||
builder.AppendLine(header.MetaOffset, $" Meta offset");
|
||||
builder.AppendLine(header.HunkBytes, $" Hunk bytes");
|
||||
builder.AppendLine(header.UnitBytes, $" Unit bytes");
|
||||
builder.AppendLine(header.RawSHA1, $" Raw SHA-1");
|
||||
builder.AppendLine(header.SHA1, $" SHA-1");
|
||||
builder.AppendLine(header.ParentSHA1, $" Parent SHA-1");
|
||||
builder.AppendLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user