Browse Source

Review changes

pull/1747/head
Brian Popow 5 years ago
parent
commit
31fa1eac35
  1. 4
      src/ImageSharp/Formats/Tiff/Compression/Decompressors/CcittReferenceScanline.cs
  2. 41
      src/ImageSharp/Formats/Tiff/Compression/Decompressors/CcittTwoDimensionalCodeType.cs
  3. 2
      src/ImageSharp/Formats/Tiff/Compression/Decompressors/DeflateTiffCompression.cs
  4. 2
      src/ImageSharp/Formats/Tiff/Compression/Decompressors/LzwTiffCompression.cs
  5. 2
      src/ImageSharp/Formats/Tiff/Compression/Decompressors/ModifiedHuffmanBitReader.cs
  6. 15
      src/ImageSharp/Formats/Tiff/Compression/Decompressors/ModifiedHuffmanTiffCompression.cs
  7. 2
      src/ImageSharp/Formats/Tiff/Compression/Decompressors/NoneTiffCompression.cs
  8. 2
      src/ImageSharp/Formats/Tiff/Compression/Decompressors/PackBitsTiffCompression.cs
  9. 2
      src/ImageSharp/Formats/Tiff/Compression/Decompressors/T4BitReader.cs
  10. 4
      src/ImageSharp/Formats/Tiff/Compression/Decompressors/T4TiffCompression.cs
  11. 2
      src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6BitReader.cs
  12. 2
      src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs

4
src/ImageSharp/Formats/Tiff/Compression/Decompressors/CcittReferenceScanline.cs

@ -48,7 +48,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
/// <returns>Position of b1.</returns> /// <returns>Position of b1.</returns>
public int FindB1(int a0, byte a0Byte) public int FindB1(int a0, byte a0Byte)
{ {
if (this.scanLine.IsEmpty) if (this.IsEmpty)
{ {
return this.FindB1ForImaginaryWhiteLine(a0, a0Byte); return this.FindB1ForImaginaryWhiteLine(a0, a0Byte);
} }
@ -63,7 +63,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
/// <returns>Position of b1.</returns> /// <returns>Position of b1.</returns>
public int FindB2(int b1) public int FindB2(int b1)
{ {
if (this.scanLine.IsEmpty) if (this.IsEmpty)
{ {
return this.FindB2ForImaginaryWhiteLine(); return this.FindB2ForImaginaryWhiteLine();
} }

41
src/ImageSharp/Formats/Tiff/Compression/Decompressors/CcittTwoDimensionalCodeType.cs

@ -3,30 +3,71 @@
namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
{ {
/// <summary>
/// Enum for the different two dimensional code words for the ccitt fax compression.
/// </summary>
internal enum CcittTwoDimensionalCodeType internal enum CcittTwoDimensionalCodeType
{ {
/// <summary>
/// No valid code word was read.
/// </summary>
None = 0, None = 0,
/// <summary>
/// Pass mode: This mode is identified when the position of b2 lies to the left of a1.
/// </summary>
Pass = 1, Pass = 1,
/// <summary>
/// Indicates horizontal mode.
/// </summary>
Horizontal = 2, Horizontal = 2,
/// <summary>
/// Vertical 0 code word: relative distance between a1 and b1 is 0.
/// </summary>
Vertical0 = 3, Vertical0 = 3,
/// <summary>
/// Vertical r1 code word: relative distance between a1 and b1 is 1, a1 is to the right of b1.
/// </summary>
VerticalR1 = 4, VerticalR1 = 4,
/// <summary>
/// Vertical r2 code word: relative distance between a1 and b1 is 2, a1 is to the right of b1.
/// </summary>
VerticalR2 = 5, VerticalR2 = 5,
/// <summary>
/// Vertical r3 code word: relative distance between a1 and b1 is 3, a1 is to the right of b1.
/// </summary>
VerticalR3 = 6, VerticalR3 = 6,
/// <summary>
/// Vertical l1 code word: relative distance between a1 and b1 is 1, a1 is to the left of b1.
/// </summary>
VerticalL1 = 7, VerticalL1 = 7,
/// <summary>
/// Vertical l2 code word: relative distance between a1 and b1 is 2, a1 is to the left of b1.
/// </summary>
VerticalL2 = 8, VerticalL2 = 8,
/// <summary>
/// Vertical l3 code word: relative distance between a1 and b1 is 3, a1 is to the left of b1.
/// </summary>
VerticalL3 = 9, VerticalL3 = 9,
/// <summary>
/// 1d extensions code word, extension code is used to indicate the change from the current mode to another mode, e.g., another coding scheme.
/// Not supported.
/// </summary>
Extensions1D = 10, Extensions1D = 10,
/// <summary>
/// 2d extensions code word, extension code is used to indicate the change from the current mode to another mode, e.g., another coding scheme.
/// Not supported.
/// </summary>
Extensions2D = 11, Extensions2D = 11,
} }
} }

2
src/ImageSharp/Formats/Tiff/Compression/Decompressors/DeflateTiffCompression.cs

@ -18,7 +18,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
/// <remarks> /// <remarks>
/// Note that the 'OldDeflate' compression type is identical to the 'Deflate' compression type. /// Note that the 'OldDeflate' compression type is identical to the 'Deflate' compression type.
/// </remarks> /// </remarks>
internal class DeflateTiffCompression : TiffBaseDecompressor internal sealed class DeflateTiffCompression : TiffBaseDecompressor
{ {
private readonly bool isBigEndian; private readonly bool isBigEndian;

2
src/ImageSharp/Formats/Tiff/Compression/Decompressors/LzwTiffCompression.cs

@ -12,7 +12,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
/// <summary> /// <summary>
/// Class to handle cases where TIFF image data is compressed using LZW compression. /// Class to handle cases where TIFF image data is compressed using LZW compression.
/// </summary> /// </summary>
internal class LzwTiffCompression : TiffBaseDecompressor internal sealed class LzwTiffCompression : TiffBaseDecompressor
{ {
private readonly bool isBigEndian; private readonly bool isBigEndian;

2
src/ImageSharp/Formats/Tiff/Compression/Decompressors/ModifiedHuffmanBitReader.cs

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
/// Bit reader for data encoded with the modified huffman rle method. /// Bit reader for data encoded with the modified huffman rle method.
/// See TIFF 6.0 specification, section 10. /// See TIFF 6.0 specification, section 10.
/// </summary> /// </summary>
internal class ModifiedHuffmanBitReader : T4BitReader internal sealed class ModifiedHuffmanBitReader : T4BitReader
{ {
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="ModifiedHuffmanBitReader"/> class. /// Initializes a new instance of the <see cref="ModifiedHuffmanBitReader"/> class.

15
src/ImageSharp/Formats/Tiff/Compression/Decompressors/ModifiedHuffmanTiffCompression.cs

@ -12,7 +12,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
/// <summary> /// <summary>
/// Class to handle cases where TIFF image data is compressed using Modified Huffman Compression. /// Class to handle cases where TIFF image data is compressed using Modified Huffman Compression.
/// </summary> /// </summary>
internal class ModifiedHuffmanTiffCompression : T4TiffCompression internal sealed class ModifiedHuffmanTiffCompression : TiffBaseDecompressor
{ {
private readonly byte whiteValue; private readonly byte whiteValue;
@ -27,13 +27,19 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
/// <param name="bitsPerPixel">The number of bits per pixel.</param> /// <param name="bitsPerPixel">The number of bits per pixel.</param>
/// <param name="photometricInterpretation">The photometric interpretation.</param> /// <param name="photometricInterpretation">The photometric interpretation.</param>
public ModifiedHuffmanTiffCompression(MemoryAllocator allocator, TiffFillOrder fillOrder, int width, int bitsPerPixel, TiffPhotometricInterpretation photometricInterpretation) public ModifiedHuffmanTiffCompression(MemoryAllocator allocator, TiffFillOrder fillOrder, int width, int bitsPerPixel, TiffPhotometricInterpretation photometricInterpretation)
: base(allocator, fillOrder, width, bitsPerPixel, FaxCompressionOptions.None, photometricInterpretation) : base(allocator, width, bitsPerPixel)
{ {
this.FillOrder = fillOrder;
bool isWhiteZero = photometricInterpretation == TiffPhotometricInterpretation.WhiteIsZero; bool isWhiteZero = photometricInterpretation == TiffPhotometricInterpretation.WhiteIsZero;
this.whiteValue = (byte)(isWhiteZero ? 0 : 1); this.whiteValue = (byte)(isWhiteZero ? 0 : 1);
this.blackValue = (byte)(isWhiteZero ? 1 : 0); this.blackValue = (byte)(isWhiteZero ? 1 : 0);
} }
/// <summary>
/// Gets the logical order of bits within a byte.
/// </summary>
private TiffFillOrder FillOrder { get; }
/// <inheritdoc/> /// <inheritdoc/>
protected override void Decompress(BufferedReadStream stream, int byteCount, int stripHeight, Span<byte> buffer) protected override void Decompress(BufferedReadStream stream, int byteCount, int stripHeight, Span<byte> buffer)
{ {
@ -81,5 +87,10 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
} }
} }
} }
/// <inheritdoc/>
protected override void Dispose(bool disposing)
{
}
} }
} }

2
src/ImageSharp/Formats/Tiff/Compression/Decompressors/NoneTiffCompression.cs

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
/// <summary> /// <summary>
/// Class to handle cases where TIFF image data is not compressed. /// Class to handle cases where TIFF image data is not compressed.
/// </summary> /// </summary>
internal class NoneTiffCompression : TiffBaseDecompressor internal sealed class NoneTiffCompression : TiffBaseDecompressor
{ {
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="NoneTiffCompression" /> class. /// Initializes a new instance of the <see cref="NoneTiffCompression" /> class.

2
src/ImageSharp/Formats/Tiff/Compression/Decompressors/PackBitsTiffCompression.cs

@ -12,7 +12,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
/// <summary> /// <summary>
/// Class to handle cases where TIFF image data is compressed using PackBits compression. /// Class to handle cases where TIFF image data is compressed using PackBits compression.
/// </summary> /// </summary>
internal class PackBitsTiffCompression : TiffBaseDecompressor internal sealed class PackBitsTiffCompression : TiffBaseDecompressor
{ {
private IMemoryOwner<byte> compressedDataMemory; private IMemoryOwner<byte> compressedDataMemory;

2
src/ImageSharp/Formats/Tiff/Compression/Decompressors/T4BitReader.cs

@ -438,7 +438,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
/// <returns>The value read.</returns> /// <returns>The value read.</returns>
protected uint ReadValue(int nBits) protected uint ReadValue(int nBits)
{ {
Guard.MustBeGreaterThan(nBits, 0, nameof(nBits)); DebugGuard.MustBeGreaterThan(nBits, 0, nameof(nBits));
uint v = 0; uint v = 0;
int shift = nBits; int shift = nBits;

4
src/ImageSharp/Formats/Tiff/Compression/Decompressors/T4TiffCompression.cs

@ -12,7 +12,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
/// <summary> /// <summary>
/// Class to handle cases where TIFF image data is compressed using CCITT T4 compression. /// Class to handle cases where TIFF image data is compressed using CCITT T4 compression.
/// </summary> /// </summary>
internal class T4TiffCompression : TiffBaseDecompressor internal sealed class T4TiffCompression : TiffBaseDecompressor
{ {
private readonly FaxCompressionOptions faxCompressionOptions; private readonly FaxCompressionOptions faxCompressionOptions;
@ -51,7 +51,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
/// <summary> /// <summary>
/// Gets the logical order of bits within a byte. /// Gets the logical order of bits within a byte.
/// </summary> /// </summary>
protected TiffFillOrder FillOrder { get; } private TiffFillOrder FillOrder { get; }
/// <inheritdoc/> /// <inheritdoc/>
protected override void Decompress(BufferedReadStream stream, int byteCount, int stripHeight, Span<byte> buffer) protected override void Decompress(BufferedReadStream stream, int byteCount, int stripHeight, Span<byte> buffer)

2
src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6BitReader.cs

@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
/// Bit reader for reading CCITT T6 compressed fax data. /// Bit reader for reading CCITT T6 compressed fax data.
/// See: Facsimile Coding Schemes and Coding Control Functions for Group 4 Facsimile Apparatus, itu-t recommendation t.6 /// See: Facsimile Coding Schemes and Coding Control Functions for Group 4 Facsimile Apparatus, itu-t recommendation t.6
/// </summary> /// </summary>
internal class T6BitReader : T4BitReader internal sealed class T6BitReader : T4BitReader
{ {
private readonly int maxCodeLength = 12; private readonly int maxCodeLength = 12;

2
src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
/// <summary> /// <summary>
/// Class to handle cases where TIFF image data is compressed using CCITT T6 compression. /// Class to handle cases where TIFF image data is compressed using CCITT T6 compression.
/// </summary> /// </summary>
internal class T6TiffCompression : TiffBaseDecompressor internal sealed class T6TiffCompression : TiffBaseDecompressor
{ {
private readonly bool isWhiteZero; private readonly bool isWhiteZero;

Loading…
Cancel
Save