diff --git a/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs b/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs
index d206a2d23..b6125ee76 100644
--- a/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs
+++ b/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs
@@ -9,7 +9,7 @@ using System.Threading;
using SixLabors.ImageSharp.Advanced;
using SixLabors.ImageSharp.Compression.Zlib;
using SixLabors.ImageSharp.Formats.Experimental.Tiff.Constants;
-using SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils;
+using SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers;
using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.Metadata;
using SixLabors.ImageSharp.Metadata.Profiles.Exif;
@@ -122,7 +122,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff
this.SetPhotometricInterpretation();
- using (var writer = new TiffWriter(stream, this.memoryAllocator, this.configuration))
+ using (var writer = new TiffStreamWriter(stream))
{
long firstIfdMarker = this.WriteHeader(writer);
@@ -134,9 +134,11 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff
///
/// Writes the TIFF file header.
///
- /// The to write data to.
- /// The marker to write the first IFD offset.
- public long WriteHeader(TiffWriter writer)
+ /// The to write data to.
+ ///
+ /// The marker to write the first IFD offset.
+ ///
+ public long WriteHeader(TiffStreamWriter writer)
{
writer.Write(ByteOrderMarker);
writer.Write(TiffConstants.HeaderMagicNumber);
@@ -153,29 +155,17 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff
/// The to encode from.
/// The marker to write this IFD offset.
/// The marker to write the next IFD offset (if present).
- public long WriteImage(TiffWriter writer, Image image, long ifdOffset)
+ public long WriteImage(TiffStreamWriter writer, Image image, long ifdOffset)
where TPixel : unmanaged, IPixel
{
var entriesCollector = new TiffEncoderEntriesCollector();
// Write the image bytes to the steam.
var imageDataStart = (uint)writer.Position;
- int imageDataBytes;
- switch (this.Mode)
- {
- case TiffEncodingMode.ColorPalette:
- imageDataBytes = writer.WritePalettedRgb(image, this.quantizer, this.CompressionType, this.compressionLevel, this.UseHorizontalPredictor, entriesCollector);
- break;
- case TiffEncodingMode.Gray:
- imageDataBytes = writer.WriteGray(image, this.CompressionType, this.compressionLevel, this.UseHorizontalPredictor);
- break;
- case TiffEncodingMode.BiColor:
- imageDataBytes = writer.WriteBiColor(image, this.CompressionType, this.compressionLevel);
- break;
- default:
- imageDataBytes = writer.WriteRgb(image, this.CompressionType, this.compressionLevel, this.UseHorizontalPredictor);
- break;
- }
+
+ TiffBaseColorWriter colorWriter = TiffColorWriterFactory.Create(this.Mode, writer, this.memoryAllocator, this.configuration, entriesCollector);
+
+ int imageDataBytes = colorWriter.Write(image, this.quantizer, this.CompressionType, this.compressionLevel, this.UseHorizontalPredictor);
this.AddStripTags(image, entriesCollector, imageDataStart, imageDataBytes);
entriesCollector.ProcessImageFormat(this);
@@ -193,7 +183,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff
/// The to write data to.
/// The IFD entries to write to the file.
/// The marker to write the next IFD offset (if present).
- public long WriteIfd(TiffWriter writer, List entries)
+ public long WriteIfd(TiffStreamWriter writer, List entries)
{
if (entries.Count == 0)
{
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffBaseColorWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffBaseColorWriter.cs
new file mode 100644
index 000000000..d16d8c321
--- /dev/null
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffBaseColorWriter.cs
@@ -0,0 +1,44 @@
+// Copyright (c) Six Labors.
+// Licensed under the Apache License, Version 2.0.
+
+using System;
+using System.IO;
+using SixLabors.ImageSharp.Compression.Zlib;
+using SixLabors.ImageSharp.Memory;
+using SixLabors.ImageSharp.PixelFormats;
+using SixLabors.ImageSharp.Processing.Processors.Quantization;
+
+namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
+{
+ ///
+ /// Utility class for writing TIFF data to a .
+ ///
+ internal abstract class TiffBaseColorWriter
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The output stream.
+ /// The memory allocator.
+ /// The configuration.
+ /// The entries collector.
+ public TiffBaseColorWriter(TiffStreamWriter output, MemoryAllocator memoryAllocator, Configuration configuration, TiffEncoderEntriesCollector entriesCollector)
+ {
+ this.Output = output;
+ this.MemoryAllocator = memoryAllocator;
+ this.Configuration = configuration;
+ this.EntriesCollector = entriesCollector;
+ }
+
+ protected TiffStreamWriter Output { get; }
+
+ protected MemoryAllocator MemoryAllocator { get; }
+
+ protected Configuration Configuration { get; }
+
+ protected TiffEncoderEntriesCollector EntriesCollector { get; }
+
+ public abstract int Write(Image image, IQuantizer quantizer, TiffEncoderCompression compression, DeflateCompressionLevel compressionLevel, bool useHorizontalPredictor)
+ where TPixel : unmanaged, IPixel;
+ }
+}
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffBiColorWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffBiColorWriter.cs
index 60df87da3..5636fa062 100644
--- a/src/ImageSharp/Formats/Tiff/Writers/TiffBiColorWriter.cs
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffBiColorWriter.cs
@@ -11,16 +11,17 @@ using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Processors.Dithering;
+using SixLabors.ImageSharp.Processing.Processors.Quantization;
-namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
+namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
{
///
/// Utility class for writing TIFF data to a .
///
- internal class TiffBiColorWriter : TiffWriter
+ internal class TiffBiColorWriter : TiffBaseColorWriter
{
- public TiffBiColorWriter(Stream output, MemoryAllocator memoryAllocator, Configuration configuration)
- : base(output, memoryAllocator, configuration)
+ public TiffBiColorWriter(TiffStreamWriter output, MemoryAllocator memoryAllocator, Configuration configuration, TiffEncoderEntriesCollector entriesCollector)
+ : base(output, memoryAllocator, configuration, entriesCollector)
{
}
@@ -29,11 +30,14 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
///
/// The pixel data.
/// The image to write to the stream.
+ /// The quantizer.
/// The compression to use.
/// The compression level for deflate compression.
- /// The number of bytes written.
- public int WriteBiColor(Image image, TiffEncoderCompression compression, DeflateCompressionLevel compressionLevel)
- where TPixel : unmanaged, IPixel
+ /// if set to true [use horizontal predictor].
+ ///
+ /// The number of bytes written.
+ ///
+ public override int Write(Image image, IQuantizer quantizer, TiffEncoderCompression compression, DeflateCompressionLevel compressionLevel, bool useHorizontalPredictor)
{
int padding = image.Width % 8 == 0 ? 0 : 1;
int bytesPerRow = (image.Width / 8) + padding;
@@ -60,13 +64,13 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
if (compression == TiffEncoderCompression.CcittGroup3Fax)
{
var bitWriter = new T4BitWriter(this.MemoryAllocator, this.Configuration);
- return bitWriter.CompressImage(imageBlackWhite, pixelRowAsGraySpan, this.Output);
+ return bitWriter.CompressImage(imageBlackWhite, pixelRowAsGraySpan, this.Output.BaseStream);
}
if (compression == TiffEncoderCompression.ModifiedHuffman)
{
var bitWriter = new T4BitWriter(this.MemoryAllocator, this.Configuration, useModifiedHuffman: true);
- return bitWriter.CompressImage(imageBlackWhite, pixelRowAsGraySpan, this.Output);
+ return bitWriter.CompressImage(imageBlackWhite, pixelRowAsGraySpan, this.Output.BaseStream);
}
// Write image uncompressed.
@@ -93,10 +97,10 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
}
}
- this.Output.Write(row);
- bytesWritten += row.Length();
+ this.Output.Write(outputRow);
+ bytesWritten += outputRow.Length;
- row.Clear();
+ outputRow.Clear();
}
return bytesWritten;
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffColorWriterFactory.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffColorWriterFactory.cs
new file mode 100644
index 000000000..6c378f28d
--- /dev/null
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffColorWriterFactory.cs
@@ -0,0 +1,25 @@
+// Copyright (c) Six Labors.
+// Licensed under the Apache License, Version 2.0.
+
+using SixLabors.ImageSharp.Memory;
+
+namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
+{
+ internal static class TiffColorWriterFactory
+ {
+ public static TiffBaseColorWriter Create(TiffEncodingMode mode, TiffStreamWriter output, MemoryAllocator memoryAllocator, Configuration configuration, TiffEncoderEntriesCollector entriesCollector)
+ {
+ switch (mode)
+ {
+ case TiffEncodingMode.ColorPalette:
+ return new TiffPaletteWriter(output, memoryAllocator, configuration, entriesCollector);
+ case TiffEncodingMode.Gray:
+ return new TiffGrayWriter(output, memoryAllocator, configuration, entriesCollector);
+ case TiffEncodingMode.BiColor:
+ return new TiffBiColorWriter(output, memoryAllocator, configuration, entriesCollector);
+ default:
+ return new TiffRgbWriter(output, memoryAllocator, configuration, entriesCollector);
+ }
+ }
+ }
+}
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffGrayWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffGrayWriter.cs
index a611b8832..d2435cc9f 100644
--- a/src/ImageSharp/Formats/Tiff/Writers/TiffGrayWriter.cs
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffGrayWriter.cs
@@ -7,19 +7,21 @@ using System.IO;
using SixLabors.ImageSharp.Compression.Zlib;
using SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression;
+using SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils;
using SixLabors.ImageSharp.Formats.Tiff.Compression;
using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats;
+using SixLabors.ImageSharp.Processing.Processors.Quantization;
-namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
+namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
{
///
/// Utility class for writing TIFF data to a .
///
- internal class TiffGrayWriter : TiffWriter
+ internal class TiffGrayWriter : TiffBaseColorWriter
{
- public TiffGrayWriter(Stream output, MemoryAllocator memoryMemoryAllocator, Configuration configuration)
- : base(output, memoryMemoryAllocator, configuration)
+ public TiffGrayWriter(TiffStreamWriter output, MemoryAllocator memoryAllocator, Configuration configuration, TiffEncoderEntriesCollector entriesCollector)
+ : base(output, memoryAllocator, configuration, entriesCollector)
{
}
@@ -28,12 +30,14 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
///
/// The pixel data.
/// The image to write to the stream.
+ /// The quantizer.
/// The compression to use.
/// The compression level for deflate compression.
/// Indicates if horizontal prediction should be used. Should only be used with deflate or lzw compression.
- /// The number of bytes written.
- public int WriteGray(Image image, TiffEncoderCompression compression, DeflateCompressionLevel compressionLevel, bool useHorizontalPredictor)
- where TPixel : unmanaged, IPixel
+ ///
+ /// The number of bytes written.
+ ///
+ public override int Write(Image image, IQuantizer quantizer, TiffEncoderCompression compression, DeflateCompressionLevel compressionLevel, bool useHorizontalPredictor)
{
using IManagedByteBuffer row = this.MemoryAllocator.AllocateManagedByteBuffer(image.Width);
Span rowSpan = row.GetSpan();
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffPaletteWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffPaletteWriter.cs
index bef5fe1bc..0d103f2a1 100644
--- a/src/ImageSharp/Formats/Tiff/Writers/TiffPaletteWriter.cs
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffPaletteWriter.cs
@@ -8,27 +8,29 @@ using System.Runtime.InteropServices;
using SixLabors.ImageSharp.Compression.Zlib;
using SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression;
+using SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils;
using SixLabors.ImageSharp.Formats.Tiff.Compression;
using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.Metadata.Profiles.Exif;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing.Processors.Quantization;
-namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
+namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
{
///
/// Utility class for writing TIFF data to a .
///
- internal class TiffPaletteWriter : TiffWriter
+ internal class TiffPaletteWriter : TiffBaseColorWriter
{
///
- /// Initializes a new instance of the class.
+ /// Initializes a new instance of the class.
///
/// The output stream.
- /// The memory allocator.
+ /// The memory allocator.
/// The configuration.
- public TiffPaletteWriter(Stream output, MemoryAllocator memoryMemoryAllocator, Configuration configuration)
- : base(output, memoryMemoryAllocator, configuration)
+ /// The entries collector.
+ public TiffPaletteWriter(TiffStreamWriter output, MemoryAllocator memoryAllocator, Configuration configuration, TiffEncoderEntriesCollector entriesCollector)
+ : base(output, memoryAllocator, configuration, entriesCollector)
{
}
@@ -41,10 +43,10 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
/// The compression to use.
/// The compression level for deflate compression.
/// Indicates if horizontal prediction should be used. Should only be used in combination with deflate or LZW compression.
- /// The entries collector.
- /// The number of bytes written.
- public int WritePalettedRgb(Image image, IQuantizer quantizer, TiffEncoderCompression compression, DeflateCompressionLevel compressionLevel, bool useHorizontalPredictor, TiffEncoderEntriesCollector entriesCollector)
- where TPixel : unmanaged, IPixel
+ ///
+ /// The number of bytes written.
+ ///
+ public override int Write(Image image, IQuantizer quantizer, TiffEncoderCompression compression, DeflateCompressionLevel compressionLevel, bool useHorizontalPredictor)
{
int colorsPerChannel = 256;
int colorPaletteSize = colorsPerChannel * 3;
@@ -93,7 +95,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
Value = palette
};
- entriesCollector.Add(colorMap);
+ this.EntriesCollector.Add(colorMap);
if (compression == TiffEncoderCompression.Deflate)
{
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffRgbWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffRgbWriter.cs
index b72e923b4..e127706f3 100644
--- a/src/ImageSharp/Formats/Tiff/Writers/TiffRgbWriter.cs
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffRgbWriter.cs
@@ -7,19 +7,21 @@ using System.IO;
using SixLabors.ImageSharp.Compression.Zlib;
using SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression;
+using SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils;
using SixLabors.ImageSharp.Formats.Tiff.Compression;
using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats;
+using SixLabors.ImageSharp.Processing.Processors.Quantization;
-namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
+namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
{
///
/// Utility class for writing TIFF data to a .
///
- internal class TiffRgbWriter : TiffWriter
+ internal class TiffRgbWriter : TiffBaseColorWriter
{
- public TiffRgbWriter(Stream output, MemoryAllocator memoryMemoryAllocator, Configuration configuration)
- : base(output, memoryMemoryAllocator, configuration)
+ public TiffRgbWriter(TiffStreamWriter output, MemoryAllocator memoryAllocator, Configuration configuration, TiffEncoderEntriesCollector entriesCollector)
+ : base(output, memoryAllocator, configuration, entriesCollector)
{
}
@@ -28,12 +30,14 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
///
/// The pixel data.
/// The image to write to the stream.
+ /// The quantizer.
/// The compression to use.
/// The compression level for deflate compression.
/// Indicates if horizontal prediction should be used. Should only be used with deflate compression.
- /// The number of bytes written.
- public int WriteRgb(Image image, TiffEncoderCompression compression, DeflateCompressionLevel compressionLevel, bool useHorizontalPredictor)
- where TPixel : unmanaged, IPixel
+ ///
+ /// The number of bytes written.
+ ///
+ public override int Write(Image image, IQuantizer quantizer, TiffEncoderCompression compression, DeflateCompressionLevel compressionLevel, bool useHorizontalPredictor)
{
using IManagedByteBuffer row = this.MemoryAllocator.AllocateManagedByteBuffer(image.Width * 3);
Span rowSpan = row.GetSpan();
diff --git a/src/ImageSharp/Formats/Tiff/Utils/TiffWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffStreamWriter.cs
similarity index 66%
rename from src/ImageSharp/Formats/Tiff/Utils/TiffWriter.cs
rename to src/ImageSharp/Formats/Tiff/Writers/TiffStreamWriter.cs
index 190f7af08..8de67d633 100644
--- a/src/ImageSharp/Formats/Tiff/Utils/TiffWriter.cs
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffStreamWriter.cs
@@ -5,27 +5,20 @@ using System;
using System.IO;
using SixLabors.ImageSharp.Memory;
-namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
+namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
{
///
/// Utility class for writing TIFF data to a .
///
- internal class TiffWriter : IDisposable
+ internal class TiffStreamWriter : IDisposable
{
private static readonly byte[] PaddingBytes = new byte[4];
///
- /// Initializes a new instance of the class.
+ /// Initializes a new instance of the class.
///
/// The output stream.
- /// The memory allocator.
- /// The configuration.
- public TiffWriter(Stream output, MemoryAllocator memoryAllocator, Configuration configuration)
- {
- this.Output = output;
- this.MemoryAllocator = memoryAllocator;
- this.Configuration = configuration;
- }
+ public TiffStreamWriter(Stream output) => this.BaseStream = output;
///
/// Gets a value indicating whether the architecture is little-endian.
@@ -35,9 +28,9 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
///
/// Gets the current position within the stream.
///
- public long Position => this.Output.Position;
+ public long Position => this.BaseStream.Position;
- protected Stream Output { get; }
+ public Stream BaseStream { get; }
protected MemoryAllocator MemoryAllocator { get; }
@@ -49,7 +42,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
/// The offset to be written later
public long PlaceMarker()
{
- long offset = this.Output.Position;
+ long offset = this.BaseStream.Position;
this.Write(0u);
return offset;
}
@@ -58,13 +51,15 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
/// Writes an array of bytes to the current stream.
///
/// The bytes to write.
- public void Write(byte[] value) => this.Output.Write(value, 0, value.Length);
+ public void Write(byte[] value) => this.BaseStream.Write(value, 0, value.Length);
+
+ public void Write(ReadOnlySpan value) => this.BaseStream.Write(value);
///
/// Writes a byte to the current stream.
///
/// The byte to write.
- public void Write(byte value) => this.Output.Write(new byte[] { value }, 0, 1);
+ public void Write(byte value) => this.BaseStream.Write(new byte[] { value }, 0, 1);
///
/// Writes a two-byte unsigned integer to the current stream.
@@ -73,7 +68,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
public void Write(ushort value)
{
byte[] bytes = BitConverter.GetBytes(value);
- this.Output.Write(bytes, 0, 2);
+ this.BaseStream.Write(bytes, 0, 2);
}
///
@@ -83,7 +78,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
public void Write(uint value)
{
byte[] bytes = BitConverter.GetBytes(value);
- this.Output.Write(bytes, 0, 4);
+ this.BaseStream.Write(bytes, 0, 4);
}
///
@@ -92,11 +87,11 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
/// The bytes to write.
public void WritePadded(byte[] value)
{
- this.Output.Write(value, 0, value.Length);
+ this.BaseStream.Write(value, 0, value.Length);
if (value.Length < 4)
{
- this.Output.Write(PaddingBytes, 0, 4 - value.Length);
+ this.BaseStream.Write(PaddingBytes, 0, 4 - value.Length);
}
}
@@ -107,15 +102,15 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils
/// The four-byte unsigned integer to write.
public void WriteMarker(long offset, uint value)
{
- long currentOffset = this.Output.Position;
- this.Output.Seek(offset, SeekOrigin.Begin);
+ long currentOffset = this.BaseStream.Position;
+ this.BaseStream.Seek(offset, SeekOrigin.Begin);
this.Write(value);
- this.Output.Seek(currentOffset, SeekOrigin.Begin);
+ this.BaseStream.Seek(currentOffset, SeekOrigin.Begin);
}
///
- /// Disposes instance, ensuring any unwritten data is flushed.
+ /// Disposes instance, ensuring any unwritten data is flushed.
///
- public void Dispose() => this.Output.Flush();
+ public void Dispose() => this.BaseStream.Flush();
}
}
diff --git a/tests/ImageSharp.Tests/Formats/Tiff/TiffEncoderHeaderTests.cs b/tests/ImageSharp.Tests/Formats/Tiff/TiffEncoderHeaderTests.cs
index e3f75ed8b..d7c066ec2 100644
--- a/tests/ImageSharp.Tests/Formats/Tiff/TiffEncoderHeaderTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Tiff/TiffEncoderHeaderTests.cs
@@ -5,6 +5,7 @@ using System.IO;
using SixLabors.ImageSharp.Formats.Experimental.Tiff;
using SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils;
+using SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers;
using SixLabors.ImageSharp.Memory;
using Xunit;
@@ -24,7 +25,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff
using var stream = new MemoryStream();
var encoder = new TiffEncoderCore(Options, MemoryAllocator);
- using (var writer = new TiffWriter(stream, MemoryAllocator, Configuration))
+ using (var writer = new TiffStreamWriter(stream))
{
long firstIfdMarker = encoder.WriteHeader(writer);
}
@@ -38,7 +39,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff
using var stream = new MemoryStream();
var encoder = new TiffEncoderCore(Options, MemoryAllocator);
- using (var writer = new TiffWriter(stream, MemoryAllocator, Configuration))
+ using (var writer = new TiffStreamWriter(stream))
{
long firstIfdMarker = encoder.WriteHeader(writer);
Assert.Equal(4, firstIfdMarker);
diff --git a/tests/ImageSharp.Tests/Formats/Tiff/Utils/TiffWriterTests.cs b/tests/ImageSharp.Tests/Formats/Tiff/Utils/TiffWriterTests.cs
index bd9ce37ca..8d86482ec 100644
--- a/tests/ImageSharp.Tests/Formats/Tiff/Utils/TiffWriterTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Tiff/Utils/TiffWriterTests.cs
@@ -4,6 +4,7 @@
using System.IO;
using SixLabors.ImageSharp.Formats.Experimental.Tiff.Utils;
+using SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers;
using SixLabors.ImageSharp.Memory;
using Xunit;
@@ -20,7 +21,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff.Utils
public void IsLittleEndian_IsTrueOnWindows()
{
using var stream = new MemoryStream();
- using var writer = new TiffWriter(stream, MemoryAllocator, Configuration);
+ using var writer = new TiffStreamWriter(stream);
Assert.True(writer.IsLittleEndian);
}
@@ -31,7 +32,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff.Utils
public void Position_EqualsTheStreamPosition(byte[] data, long expectedResult)
{
using var stream = new MemoryStream();
- using var writer = new TiffWriter(stream, MemoryAllocator, Configuration);
+ using var writer = new TiffStreamWriter(stream);
writer.Write(data);
Assert.Equal(writer.Position, expectedResult);
}
@@ -40,7 +41,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff.Utils
public void Write_WritesByte()
{
using var stream = new MemoryStream();
- using var writer = new TiffWriter(stream, MemoryAllocator, Configuration);
+ using var writer = new TiffStreamWriter(stream);
writer.Write((byte)42);
Assert.Equal(new byte[] { 42 }, stream.ToArray());
@@ -50,7 +51,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff.Utils
public void Write_WritesByteArray()
{
using var stream = new MemoryStream();
- using var writer = new TiffWriter(stream, MemoryAllocator, Configuration);
+ using var writer = new TiffStreamWriter(stream);
writer.Write(new byte[] { 2, 4, 6, 8 });
Assert.Equal(new byte[] { 2, 4, 6, 8 }, stream.ToArray());
@@ -60,7 +61,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff.Utils
public void Write_WritesUInt16()
{
using var stream = new MemoryStream();
- using var writer = new TiffWriter(stream, MemoryAllocator, Configuration);
+ using var writer = new TiffStreamWriter(stream);
writer.Write((ushort)1234);
Assert.Equal(new byte[] { 0xD2, 0x04 }, stream.ToArray());
@@ -70,7 +71,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff.Utils
public void Write_WritesUInt32()
{
using var stream = new MemoryStream();
- using var writer = new TiffWriter(stream, MemoryAllocator, Configuration);
+ using var writer = new TiffStreamWriter(stream);
writer.Write(12345678U);
Assert.Equal(new byte[] { 0x4E, 0x61, 0xBC, 0x00 }, stream.ToArray());
@@ -86,7 +87,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff.Utils
public void WritePadded_WritesByteArray(byte[] bytes, byte[] expectedResult)
{
using var stream = new MemoryStream();
- using var writer = new TiffWriter(stream, MemoryAllocator, Configuration);
+ using var writer = new TiffStreamWriter(stream);
writer.WritePadded(bytes);
Assert.Equal(expectedResult, stream.ToArray());
@@ -97,7 +98,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff.Utils
{
using var stream = new MemoryStream();
- using (var writer = new TiffWriter(stream, MemoryAllocator, Configuration))
+ using (var writer = new TiffStreamWriter(stream))
{
writer.Write(0x11111111);
long marker = writer.PlaceMarker();