Browse Source

Use stackalloc

pull/2134/head
Brian Popow 4 years ago
parent
commit
50c1aab54f
  1. 1
      src/ImageSharp/Formats/Tiff/Compression/Decompressors/T4BitReader.cs
  2. 4
      src/ImageSharp/Formats/Tiff/PhotometricInterpretation/BlackIsZero24TiffColor{TPixel}.cs
  3. 4
      src/ImageSharp/Formats/Tiff/PhotometricInterpretation/WhiteIsZero24TiffColor{TPixel}.cs

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

@ -434,6 +434,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
/// </summary> /// </summary>
/// <param name="nBits">The number of bits to read.</param> /// <param name="nBits">The number of bits to read.</param>
/// <returns>The value read.</returns> /// <returns>The value read.</returns>
[MethodImpl(InliningOptions.ShortMethod)]
protected uint ReadValue(int nBits) protected uint ReadValue(int nBits)
{ {
DebugGuard.MustBeGreaterThan(nBits, 0, nameof(nBits)); DebugGuard.MustBeGreaterThan(nBits, 0, nameof(nBits));

4
src/ImageSharp/Formats/Tiff/PhotometricInterpretation/BlackIsZero24TiffColor{TPixel}.cs

@ -28,10 +28,10 @@ namespace SixLabors.ImageSharp.Formats.Tiff.PhotometricInterpretation
{ {
var color = default(TPixel); var color = default(TPixel);
color.FromScaledVector4(Vector4.Zero); color.FromScaledVector4(Vector4.Zero);
byte[] buffer = new byte[4]; Span<byte> buffer = stackalloc byte[4];
int bufferStartIdx = this.isBigEndian ? 1 : 0; int bufferStartIdx = this.isBigEndian ? 1 : 0;
Span<byte> bufferSpan = buffer.AsSpan(bufferStartIdx); Span<byte> bufferSpan = buffer.Slice(bufferStartIdx);
int offset = 0; int offset = 0;
for (int y = top; y < top + height; y++) for (int y = top; y < top + height; y++)
{ {

4
src/ImageSharp/Formats/Tiff/PhotometricInterpretation/WhiteIsZero24TiffColor{TPixel}.cs

@ -28,11 +28,11 @@ namespace SixLabors.ImageSharp.Formats.Tiff.PhotometricInterpretation
{ {
var color = default(TPixel); var color = default(TPixel);
color.FromScaledVector4(Vector4.Zero); color.FromScaledVector4(Vector4.Zero);
byte[] buffer = new byte[4]; Span<byte> buffer = stackalloc byte[4];
int bufferStartIdx = this.isBigEndian ? 1 : 0; int bufferStartIdx = this.isBigEndian ? 1 : 0;
const uint maxValue = 0xFFFFFF; const uint maxValue = 0xFFFFFF;
Span<byte> bufferSpan = buffer.AsSpan(bufferStartIdx); Span<byte> bufferSpan = buffer.Slice(bufferStartIdx);
int offset = 0; int offset = 0;
for (int y = top; y < top + height; y++) for (int y = top; y < top + height; y++)
{ {

Loading…
Cancel
Save