diff --git a/src/UglyToad.PdfPig/Filters/CcittFaxCompressionType.cs b/src/UglyToad.PdfPig/Filters/CcittFaxCompressionType.cs
index da388445..f0f372de 100644
--- a/src/UglyToad.PdfPig/Filters/CcittFaxCompressionType.cs
+++ b/src/UglyToad.PdfPig/Filters/CcittFaxCompressionType.cs
@@ -6,16 +6,20 @@
internal enum CcittFaxCompressionType
{
///
- /// Modified Huffman - Group 3 (T4)
+ /// Modified Huffman (MH) - Group 3 variation (T2)
///
ModifiedHuffman,
///
- /// Modified Read - Group 3 (optional T4)
+ /// Modified Huffman (MH) - Group 3 (T4)
///
- T4,
+ Group3_1D,
///
- /// Modified Modified Read - Group 4 (T6)
+ /// Modified Read (MR) - Group 3 (T4)
///
- T6
+ Group3_2D,
+ ///
+ /// Modified Modified Read (MMR) - Group 4 (T6)
+ ///
+ Group4_2D
}
}
diff --git a/src/UglyToad.PdfPig/Filters/CcittFaxDecodeFilter.cs b/src/UglyToad.PdfPig/Filters/CcittFaxDecodeFilter.cs
index 9fe84246..8cae7dd7 100644
--- a/src/UglyToad.PdfPig/Filters/CcittFaxDecodeFilter.cs
+++ b/src/UglyToad.PdfPig/Filters/CcittFaxDecodeFilter.cs
@@ -60,7 +60,7 @@
{
if (k == 0)
{
- var compressionType = CcittFaxCompressionType.T4; // Group 3 1D
+ var compressionType = CcittFaxCompressionType.Group3_1D; // Group 3 1D
if (input.Count < 20)
{
@@ -78,7 +78,7 @@
b = (short)((b << 1) + ((input[(i / 8)] >> (7 - (i % 8))) & 0x01));
if ((b & 0xFFF) == 1)
{
- return CcittFaxCompressionType.T4;
+ return CcittFaxCompressionType.Group3_1D;
}
}
}
@@ -88,11 +88,11 @@
else if (k > 0)
{
// Group 3 2D
- return CcittFaxCompressionType.T4;
+ return CcittFaxCompressionType.Group3_2D;
}
else
{
- return CcittFaxCompressionType.T6;
+ return CcittFaxCompressionType.Group4_2D;
}
}
diff --git a/src/UglyToad.PdfPig/Filters/CcittFaxDecoderStream.cs b/src/UglyToad.PdfPig/Filters/CcittFaxDecoderStream.cs
index 71aff5d8..89982af1 100644
--- a/src/UglyToad.PdfPig/Filters/CcittFaxDecoderStream.cs
+++ b/src/UglyToad.PdfPig/Filters/CcittFaxDecoderStream.cs
@@ -17,7 +17,6 @@
private readonly int columns;
private readonly byte[] decodedRow;
- private readonly bool optionG32D;
private readonly bool optionByteAligned;
private readonly CcittFaxCompressionType type;
@@ -52,20 +51,6 @@
changesCurrentRow = new int[columns + 2];
optionByteAligned = byteAligned;
- switch (type)
- {
- case CcittFaxCompressionType.ModifiedHuffman:
- optionG32D = false;
- break;
- case CcittFaxCompressionType.T4:
- optionG32D = true;
- break;
- case CcittFaxCompressionType.T6:
- optionG32D = false;
- break;
- default:
- throw new ArgumentOutOfRangeException(nameof(type), type, "Illegal parameter");
- }
}
private void Fetch()
@@ -252,7 +237,7 @@
}
done:
- if (!optionG32D || ReadBit())
+ if (type == CcittFaxCompressionType.Group3_1D || ReadBit())
{
Decode1D();
}
@@ -279,10 +264,11 @@
case CcittFaxCompressionType.ModifiedHuffman:
DecodeRowType2();
break;
- case CcittFaxCompressionType.T4:
+ case CcittFaxCompressionType.Group3_1D:
+ case CcittFaxCompressionType.Group3_2D:
DecodeRowType4();
break;
- case CcittFaxCompressionType.T6:
+ case CcittFaxCompressionType.Group4_2D:
DecodeRowType6();
break;
default: