From 2876f2f44d0bc363450eda0f81da6db9da7fbb4d Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Sun, 29 May 2022 23:37:28 +0200 Subject: [PATCH] Use nint, determine what's white only once --- .../Compression/Decompressors/CcittReferenceScanline.cs | 2 ++ .../Tiff/Compression/Decompressors/T6TiffCompression.cs | 8 +++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/CcittReferenceScanline.cs b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/CcittReferenceScanline.cs index 0aec2361c..5b0c64cf1 100644 --- a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/CcittReferenceScanline.cs +++ b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/CcittReferenceScanline.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. using System; +using System.Runtime.CompilerServices; namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors { @@ -130,6 +131,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors return index + offset; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] private int FindB2ForImaginaryWhiteLine() => this.width; private int FindB2ForNormalLine(int b1) diff --git a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs index f8333cf33..e9921418d 100644 --- a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs +++ b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs @@ -19,6 +19,8 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors private readonly int width; + private readonly byte white; + /// /// Initializes a new instance of the class. /// @@ -38,6 +40,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors this.FillOrder = fillOrder; this.width = width; this.isWhiteZero = photometricInterpretation == TiffPhotometricInterpretation.WhiteIsZero; + this.white = (byte)(this.isWhiteZero ? 0 : 255); } /// @@ -72,12 +75,11 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors private uint WriteScanLine(Span buffer, Span scanLine, uint bitsWritten) { - byte white = (byte)(this.isWhiteZero ? 0 : 255); int bitPos = (int)(bitsWritten % 8); int bufferPos = (int)(bitsWritten / 8); - for (int i = 0; i < scanLine.Length; i++) + for (nint i = 0; i < scanLine.Length; i++) { - if (Unsafe.Add(ref MemoryMarshal.GetReference(scanLine), i) != white) + if (Unsafe.Add(ref MemoryMarshal.GetReference(scanLine), i) != this.white) { BitWriterUtils.WriteBit(buffer, bufferPos, bitPos); }