From 3d8036e7b52e16540db60d198dec87754f386f68 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 11 Dec 2024 10:46:28 -0500 Subject: [PATCH] Remove things that Compression doesn't need anymore --- .../Compression/Deflate/BlockHeader.cs | 18 --- .../Deflate/CompressedDataHeader.cs | 20 --- .../Compression/Deflate/Constants.cs | 136 ------------------ .../Compression/Deflate/DataHeader.cs | 11 -- .../Deflate/DynamicCompressedDataHeader.cs | 11 -- .../Compression/Deflate/Enums.cs | 26 ---- .../Deflate/FixedCompressedDataHeader.cs | 24 ---- .../Deflate/NonCompressedDataHeader.cs | 21 --- SabreTools.Models/Compression/MSZIP/Block.cs | 4 +- .../Compression/MSZIP/Constants.cs | 20 --- .../Compression/MSZIP/DeflateBlock.cs | 35 ----- 11 files changed, 2 insertions(+), 324 deletions(-) delete mode 100644 SabreTools.Models/Compression/Deflate/BlockHeader.cs delete mode 100644 SabreTools.Models/Compression/Deflate/CompressedDataHeader.cs delete mode 100644 SabreTools.Models/Compression/Deflate/Constants.cs delete mode 100644 SabreTools.Models/Compression/Deflate/DataHeader.cs delete mode 100644 SabreTools.Models/Compression/Deflate/DynamicCompressedDataHeader.cs delete mode 100644 SabreTools.Models/Compression/Deflate/Enums.cs delete mode 100644 SabreTools.Models/Compression/Deflate/FixedCompressedDataHeader.cs delete mode 100644 SabreTools.Models/Compression/Deflate/NonCompressedDataHeader.cs delete mode 100644 SabreTools.Models/Compression/MSZIP/Constants.cs delete mode 100644 SabreTools.Models/Compression/MSZIP/DeflateBlock.cs diff --git a/SabreTools.Models/Compression/Deflate/BlockHeader.cs b/SabreTools.Models/Compression/Deflate/BlockHeader.cs deleted file mode 100644 index ab677cd..0000000 --- a/SabreTools.Models/Compression/Deflate/BlockHeader.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace SabreTools.Models.Compression.Deflate -{ - /// - public class BlockHeader - { - /// - /// Set if and only if this is the last block of the data set. - /// - /// Bit 0 - public bool BFINAL { get; set; } - - /// - /// Specifies how the data are compressed - /// - /// Bits 1-2 - public CompressionType BTYPE { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/Compression/Deflate/CompressedDataHeader.cs b/SabreTools.Models/Compression/Deflate/CompressedDataHeader.cs deleted file mode 100644 index 9803998..0000000 --- a/SabreTools.Models/Compression/Deflate/CompressedDataHeader.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace SabreTools.Models.Compression.Deflate -{ - /// - /// Compression with Huffman codes (BTYPE=01 or BTYPE=02) - /// - /// - /// - public abstract class CompressedDataHeader : DataHeader - { - /// - /// Huffman code lengths for the literal / length alphabet - /// - public virtual uint[]? LiteralLengths { get; set; } - - /// - /// Huffman distance codes for the literal / length alphabet - /// - public virtual uint[]? DistanceCodes { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/Compression/Deflate/Constants.cs b/SabreTools.Models/Compression/Deflate/Constants.cs deleted file mode 100644 index a41e679..0000000 --- a/SabreTools.Models/Compression/Deflate/Constants.cs +++ /dev/null @@ -1,136 +0,0 @@ -namespace SabreTools.Models.Compression.Deflate -{ - /// - public static class Constants - { - /// - /// Bits in base literal/length lookup table - /// - public const int ZIPLBITS = 9; - - /// - /// Bits in base distance lookup table - /// - public const int ZIPDBITS = 6; - - /// - /// Maximum bit length of any code - /// - public const int ZIPBMAX = 16; - - /// - /// Maximum number of codes in any set - /// - public const int ZIPN_MAX = 288; - - #region Fixed Huffman Codes - - /// - /// Fixed Huffman code lengths for the literal / length alphabet - /// - public static readonly uint[] FixedLiteralLengths = - [ - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 8, 8, 8, 8, 8, 8, 8, 8, - ]; - - /// - /// Fixed Huffman distance codes for the literal / length alphabet - /// - public static readonly uint[] FixedDistanceCodes = - [ - 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, - ]; - - #endregion - - #region Literal and Length Alphabets - - /// - /// Extra bits for distance codes - /// - public static readonly ushort[] DistanceExtraBits = - [ - 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, - 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, - 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 - ]; - - /// - /// Copy offsets for distance codes 0..29 - /// - public static readonly ushort[] DistanceOffsets = - [ - 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, - 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, - 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 - ]; - - /// - /// Extra bits for literal codes 257..285 - /// - public static readonly ushort[] LiteralExtraBits = - [ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, - 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, - 4, 4, 4, 4, 5, 5, 5, 5, 0, - ]; - - /// - /// Copy lengths for literal codes 257..285 - /// - public static readonly ushort[] LiteralLengths = - [ - 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, - 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, - 67, 83, 99, 115, 131, 163, 195, 227, 258, - ]; - - /// - /// Order of the bit length code lengths - /// - public static readonly byte[] BitLengthOrder = - [ - 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 - ]; - - #endregion - } -} \ No newline at end of file diff --git a/SabreTools.Models/Compression/Deflate/DataHeader.cs b/SabreTools.Models/Compression/Deflate/DataHeader.cs deleted file mode 100644 index d4bd244..0000000 --- a/SabreTools.Models/Compression/Deflate/DataHeader.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace SabreTools.Models.Compression.Deflate -{ - /// - /// Base class for all data headers (BTYPE=00, BTYPE=01, or BTYPE=02) - /// - /// - public abstract class DataHeader - { - // No common fields between all data headers - } -} \ No newline at end of file diff --git a/SabreTools.Models/Compression/Deflate/DynamicCompressedDataHeader.cs b/SabreTools.Models/Compression/Deflate/DynamicCompressedDataHeader.cs deleted file mode 100644 index 5cb51e9..0000000 --- a/SabreTools.Models/Compression/Deflate/DynamicCompressedDataHeader.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace SabreTools.Models.Compression.Deflate -{ - /// - /// Compression with dynamic Huffman codes (BTYPE=10) - /// - /// - public class DynamicCompressedDataHeader : CompressedDataHeader - { - // Codes are provided externally - } -} \ No newline at end of file diff --git a/SabreTools.Models/Compression/Deflate/Enums.cs b/SabreTools.Models/Compression/Deflate/Enums.cs deleted file mode 100644 index 35b246a..0000000 --- a/SabreTools.Models/Compression/Deflate/Enums.cs +++ /dev/null @@ -1,26 +0,0 @@ -namespace SabreTools.Models.Compression.Deflate -{ - /// - public enum CompressionType : byte - { - /// - /// no compression - /// - NoCompression = 0b00, - - /// - /// Compressed with fixed Huffman codes - /// - FixedHuffman = 0b01, - - /// - /// Compressed with dynamic Huffman codes - /// - DynamicHuffman = 0b10, - - /// - /// Reserved (error) - /// - Reserved = 0b11, - } -} \ No newline at end of file diff --git a/SabreTools.Models/Compression/Deflate/FixedCompressedDataHeader.cs b/SabreTools.Models/Compression/Deflate/FixedCompressedDataHeader.cs deleted file mode 100644 index 39c3b8e..0000000 --- a/SabreTools.Models/Compression/Deflate/FixedCompressedDataHeader.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace SabreTools.Models.Compression.Deflate -{ - /// - /// Compression with fixed Huffman codes (BTYPE=01) - /// - /// - /// - public class FixedCompressedDataHeader : CompressedDataHeader - { - #region Properties - - /// - /// Huffman code lengths for the literal / length alphabet - /// - public override uint[]? LiteralLengths => Constants.FixedLiteralLengths; - - /// - /// Huffman distance codes for the literal / length alphabet - /// - public override uint[]? DistanceCodes => Constants.FixedDistanceCodes; - - #endregion - } -} \ No newline at end of file diff --git a/SabreTools.Models/Compression/Deflate/NonCompressedDataHeader.cs b/SabreTools.Models/Compression/Deflate/NonCompressedDataHeader.cs deleted file mode 100644 index dce6c44..0000000 --- a/SabreTools.Models/Compression/Deflate/NonCompressedDataHeader.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace SabreTools.Models.Compression.Deflate -{ - /// - /// Non-compressed blocks (BTYPE=00) - /// - /// - public class NonCompressedBlockHeader : DataHeader - { - /// - /// The number of data bytes in the block - /// - /// Bytes 0-1 - public ushort LEN { get; set; } - - /// - /// The one's complement of LEN - /// - /// Bytes 2-3 - public ushort NLEN { get; set; } - } -} \ No newline at end of file diff --git a/SabreTools.Models/Compression/MSZIP/Block.cs b/SabreTools.Models/Compression/MSZIP/Block.cs index 3b2636c..5ac36f5 100644 --- a/SabreTools.Models/Compression/MSZIP/Block.cs +++ b/SabreTools.Models/Compression/MSZIP/Block.cs @@ -26,8 +26,8 @@ namespace SabreTools.Models.Compression.MSZIP public BlockHeader? BlockHeader { get; set; } /// - /// Compressed blocks + /// Compressed data /// - public DeflateBlock[]? CompressedBlocks { get; set; } + public byte[]? Data { get; set; } } } \ No newline at end of file diff --git a/SabreTools.Models/Compression/MSZIP/Constants.cs b/SabreTools.Models/Compression/MSZIP/Constants.cs deleted file mode 100644 index 537dc9f..0000000 --- a/SabreTools.Models/Compression/MSZIP/Constants.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace SabreTools.Models.Compression.MSZIP -{ - /// - public static class Constants - { - /// - /// Window size - /// - public const ushort ZIPWSIZE = 0x8000; - - /// - /// And'ing with Zipmask[n] masks the lower n bits - /// - public static readonly ushort[] BitMasks = - [ - 0x0000, 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, - 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff - ]; - } -} \ No newline at end of file diff --git a/SabreTools.Models/Compression/MSZIP/DeflateBlock.cs b/SabreTools.Models/Compression/MSZIP/DeflateBlock.cs deleted file mode 100644 index 9a6fcb3..0000000 --- a/SabreTools.Models/Compression/MSZIP/DeflateBlock.cs +++ /dev/null @@ -1,35 +0,0 @@ -namespace SabreTools.Models.Compression.MSZIP -{ - /// - /// Each MSZIP block is the result of a single deflate compression operation, as defined in [RFC1951]. - /// The compressor that performs the compression operation MUST generate one or more RFC 1951 - /// blocks, as defined in [RFC1951]. The number, deflation mode, and type of RFC 1951 blocks in each - /// MSZIP block is determined by the compressor, as defined in [RFC1951]. The last RFC 1951 block in - /// each MSZIP block MUST be marked as the "end" of the stream(1), as defined by [RFC1951] - /// section 3.2.3. Decoding trees MUST be discarded after each RFC 1951 block, but the history buffer - /// MUST be maintained.Each MSZIP block MUST represent no more than 32 KB of uncompressed data. - /// - /// - public class DeflateBlock - { - /// - /// Deflate block (RFC-1951) header - /// - public Deflate.BlockHeader? Header { get; set; } - - /// - /// Compression-specific data header - /// - public Deflate.DataHeader? DataHeader { get; set; } - - /// - /// MSZIP data - /// - /// - /// Depending on the implementation of these models, this property could either be - /// compressed or uncompressed data. Keep this in mind when using the built - /// versions of this model. - /// - public byte[]? Data { get; set; } - } -} \ No newline at end of file