diff --git a/src/ImageSharp/ImageFrame{TPixel}.cs b/src/ImageSharp/ImageFrame{TPixel}.cs
index 8bcdec65b..ff1e44e6c 100644
--- a/src/ImageSharp/ImageFrame{TPixel}.cs
+++ b/src/ImageSharp/ImageFrame{TPixel}.cs
@@ -285,28 +285,27 @@ namespace SixLabors.ImageSharp
}
///
- /// Gets the representation of the pixels as a in the source image's pixel format
+ /// Gets the representation of the pixels as a in the source image's pixel format
/// stored in row major order, if the backing buffer is contiguous.
///
- /// To ensure the memory is contiguous, should be initialized
- /// with a that enforces larger contiguous buffers.
- /// See .
+ /// To ensure the memory is contiguous, should be set
+ /// to true, preferably on a non-global configuration instance (not ).
///
- /// WARNING: Disposing or leaking the underlying image while still working with it's
+ /// WARNING: Disposing or leaking the underlying image while still working with the 's
/// might lead to memory corruption.
///
- /// The .
- /// The .
- public bool TryGetSinglePixelSpan(out Span span)
+ /// The referencing the image buffer.
+ /// The indicating the success.
+ public bool DangerousTryGetSinglePixelMemory(out Memory memory)
{
IMemoryGroup mg = this.GetPixelMemoryGroup();
if (mg.Count > 1)
{
- span = default;
+ memory = default;
return false;
}
- span = mg.Single().Span;
+ memory = mg.Single();
return true;
}
diff --git a/src/ImageSharp/Image{TPixel}.cs b/src/ImageSharp/Image{TPixel}.cs
index 899d69bb4..c4f1c278f 100644
--- a/src/ImageSharp/Image{TPixel}.cs
+++ b/src/ImageSharp/Image{TPixel}.cs
@@ -321,26 +321,30 @@ namespace SixLabors.ImageSharp
}
///
- /// Gets the representation of the pixels as a in the source image's pixel format
+ /// Gets the representation of the pixels as a in the source image's pixel format
/// stored in row major order, if the backing buffer is contiguous.
+ ///
+ /// To ensure the memory is contiguous, should be set
+ /// to true, preferably on a non-global configuration instance (not ).
+ ///
+ /// WARNING: Disposing or leaking the underlying image while still working with the 's
+ /// might lead to memory corruption.
///
- /// The .
- /// The .
- public bool TryGetSinglePixelSpan(out Span span)
+ /// The referencing the image buffer.
+ /// The indicating the success.
+ public bool DangerousTryGetSinglePixelMemory(out Memory memory)
{
IMemoryGroup mg = this.GetPixelMemoryGroup();
- if (mg.Count == 1)
+ if (mg.Count > 1)
{
- span = mg[0].Span;
- return true;
+ memory = default;
+ return false;
}
- span = default;
- return false;
+ memory = mg.Single();
+ return true;
}
- public bool DangerousTryGetSinglePixelMemory(out Memory memory) => throw new NotImplementedException();
-
///
/// Clones the current image
///
diff --git a/tests/ImageSharp.Tests/Advanced/AdvancedImageExtensionsTests.cs b/tests/ImageSharp.Tests/Advanced/AdvancedImageExtensionsTests.cs
index 742997b1a..35ef5d1c8 100644
--- a/tests/ImageSharp.Tests/Advanced/AdvancedImageExtensionsTests.cs
+++ b/tests/ImageSharp.Tests/Advanced/AdvancedImageExtensionsTests.cs
@@ -62,7 +62,7 @@ namespace SixLabors.ImageSharp.Tests.Advanced
using Image image0 = provider.GetImage();
var targetBuffer = new TPixel[image0.Width * image0.Height];
- Assert.True(image0.TryGetSinglePixelSpan(out Span sourceBuffer));
+ Assert.True(image0.DangerousTryGetSinglePixelMemory(out Memory sourceBuffer));
sourceBuffer.CopyTo(targetBuffer);
diff --git a/tests/ImageSharp.Tests/Drawing/DrawImageTests.cs b/tests/ImageSharp.Tests/Drawing/DrawImageTests.cs
index b426f4404..d10549b40 100644
--- a/tests/ImageSharp.Tests/Drawing/DrawImageTests.cs
+++ b/tests/ImageSharp.Tests/Drawing/DrawImageTests.cs
@@ -128,8 +128,8 @@ namespace SixLabors.ImageSharp.Tests.Drawing
using (Image background = provider.GetImage())
using (var overlay = new Image(50, 50))
{
- Assert.True(overlay.TryGetSinglePixelSpan(out Span overlaySpan));
- overlaySpan.Fill(Color.Black);
+ Assert.True(overlay.DangerousTryGetSinglePixelMemory(out Memory overlayMem));
+ overlayMem.Span.Fill(Color.Black);
background.Mutate(c => c.DrawImage(overlay, new Point(x, y), PixelColorBlendingMode.Normal, 1F));
diff --git a/tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs b/tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs
index c0df1e400..824ca535b 100644
--- a/tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs
@@ -165,9 +165,9 @@ namespace SixLabors.ImageSharp.Tests.Formats.Gif
ImageFrame first = kumin1.Frames[i];
ImageFrame second = kumin2.Frames[i];
- Assert.True(second.TryGetSinglePixelSpan(out Span secondSpan));
+ Assert.True(second.DangerousTryGetSinglePixelMemory(out Memory secondMemory));
- first.ComparePixelBufferTo(secondSpan);
+ first.ComparePixelBufferTo(secondMemory.Span);
}
}
}
diff --git a/tests/ImageSharp.Tests/Formats/Tga/TgaTestUtils.cs b/tests/ImageSharp.Tests/Formats/Tga/TgaTestUtils.cs
index c96777031..4de1b9a19 100644
--- a/tests/ImageSharp.Tests/Formats/Tga/TgaTestUtils.cs
+++ b/tests/ImageSharp.Tests/Formats/Tga/TgaTestUtils.cs
@@ -26,7 +26,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
}
var testFile = TestFile.Create(path);
- Image magickImage = DecodeWithMagick(Configuration.Default, new FileInfo(testFile.FullPath));
+ Image magickImage = DecodeWithMagick(new FileInfo(testFile.FullPath));
if (useExactComparer)
{
ImageComparer.Exact.VerifySimilarity(magickImage, image);
@@ -37,15 +37,17 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
}
}
- public static Image DecodeWithMagick(Configuration configuration, FileInfo fileInfo)
+ public static Image DecodeWithMagick(FileInfo fileInfo)
where TPixel : unmanaged, ImageSharp.PixelFormats.IPixel
{
+ Configuration configuration = Configuration.Default.Clone();
+ configuration.PreferContiguousImageBuffers = true;
using (var magickImage = new MagickImage(fileInfo))
{
magickImage.AutoOrient();
var result = new Image(configuration, magickImage.Width, magickImage.Height);
- Assert.True(result.TryGetSinglePixelSpan(out Span resultPixels));
+ Assert.True(result.DangerousTryGetSinglePixelMemory(out Memory resultPixels));
using (IUnsafePixelCollection pixels = magickImage.GetPixelsUnsafe())
{
@@ -54,7 +56,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga
PixelOperations.Instance.FromRgba32Bytes(
configuration,
data,
- resultPixels,
+ resultPixels.Span,
resultPixels.Length);
}
diff --git a/tests/ImageSharp.Tests/Formats/Tiff/TiffTestUtils.cs b/tests/ImageSharp.Tests/Formats/Tiff/TiffTestUtils.cs
index eacadae2b..d5ddd0a40 100644
--- a/tests/ImageSharp.Tests/Formats/Tiff/TiffTestUtils.cs
+++ b/tests/ImageSharp.Tests/Formats/Tiff/TiffTestUtils.cs
@@ -23,7 +23,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff
where TPixel : unmanaged, ImageSharp.PixelFormats.IPixel
{
var testFile = TestFile.Create(encodedImagePath);
- Image magickImage = DecodeWithMagick(Configuration.Default, new FileInfo(testFile.FullPath));
+ Image magickImage = DecodeWithMagick(new FileInfo(testFile.FullPath));
if (useExactComparer)
{
ImageComparer.Exact.VerifySimilarity(magickImage, image);
@@ -34,14 +34,16 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff
}
}
- public static Image DecodeWithMagick(Configuration configuration, FileInfo fileInfo)
+ public static Image DecodeWithMagick(FileInfo fileInfo)
where TPixel : unmanaged, ImageSharp.PixelFormats.IPixel
{
+ Configuration configuration = Configuration.Default.Clone();
+ configuration.PreferContiguousImageBuffers = true;
using var magickImage = new MagickImage(fileInfo);
magickImage.AutoOrient();
var result = new Image(configuration, magickImage.Width, magickImage.Height);
- Assert.True(result.TryGetSinglePixelSpan(out Span resultPixels));
+ Assert.True(result.DangerousTryGetSinglePixelMemory(out Memory resultPixels));
using IUnsafePixelCollection pixels = magickImage.GetPixelsUnsafe();
byte[] data = pixels.ToByteArray(PixelMapping.RGBA);
@@ -49,7 +51,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff
PixelOperations.Instance.FromRgba32Bytes(
configuration,
data,
- resultPixels,
+ resultPixels.Span,
resultPixels.Length);
return result;
diff --git a/tests/ImageSharp.Tests/Image/ImageFrameCollectionTests.Generic.cs b/tests/ImageSharp.Tests/Image/ImageFrameCollectionTests.Generic.cs
index 50b21ba8d..9ed276ebc 100644
--- a/tests/ImageSharp.Tests/Image/ImageFrameCollectionTests.Generic.cs
+++ b/tests/ImageSharp.Tests/Image/ImageFrameCollectionTests.Generic.cs
@@ -211,9 +211,9 @@ namespace SixLabors.ImageSharp.Tests
using (Image cloned = img.Frames.CloneFrame(0))
{
Assert.Equal(2, img.Frames.Count);
- Assert.True(img.TryGetSinglePixelSpan(out Span imgSpan));
+ Assert.True(img.DangerousTryGetSinglePixelMemory(out Memory imgMem));
- cloned.ComparePixelBufferTo(imgSpan);
+ cloned.ComparePixelBufferTo(imgMem);
}
}
}
@@ -225,15 +225,15 @@ namespace SixLabors.ImageSharp.Tests
{
using (Image img = provider.GetImage())
{
- Assert.True(img.TryGetSinglePixelSpan(out Span imgSpan));
- TPixel[] sourcePixelData = imgSpan.ToArray();
+ Assert.True(img.DangerousTryGetSinglePixelMemory(out Memory imgMemory));
+ TPixel[] sourcePixelData = imgMemory.ToArray();
using var imageFrame = new ImageFrame(Configuration.Default, 10, 10);
using ImageFrame addedFrame = img.Frames.AddFrame(imageFrame);
using (Image cloned = img.Frames.ExportFrame(0))
{
Assert.Equal(1, img.Frames.Count);
- cloned.ComparePixelBufferTo(sourcePixelData);
+ cloned.ComparePixelBufferTo(sourcePixelData.AsSpan());
}
}
}
@@ -261,8 +261,8 @@ namespace SixLabors.ImageSharp.Tests
[Fact]
public void AddFrameFromPixelData()
{
- Assert.True(this.Image.Frames.RootFrame.TryGetSinglePixelSpan(out Span imgSpan));
- Rgba32[] pixelData = imgSpan.ToArray();
+ Assert.True(this.Image.Frames.RootFrame.DangerousTryGetSinglePixelMemory(out Memory imgMem));
+ Rgba32[] pixelData = imgMem.ToArray();
using ImageFrame addedFrame = this.Image.Frames.AddFrame(pixelData);
Assert.Equal(2, this.Image.Frames.Count);
}
@@ -273,8 +273,8 @@ namespace SixLabors.ImageSharp.Tests
using var otherFrame = new ImageFrame(Configuration.Default, 10, 10);
using ImageFrame addedFrame = this.Image.Frames.AddFrame(otherFrame);
- Assert.True(otherFrame.TryGetSinglePixelSpan(out Span otherFrameSpan));
- addedFrame.ComparePixelBufferTo(otherFrameSpan);
+ Assert.True(otherFrame.DangerousTryGetSinglePixelMemory(out Memory otherFrameMem));
+ addedFrame.ComparePixelBufferTo(otherFrameMem.Span);
Assert.NotEqual(otherFrame, addedFrame);
}
@@ -284,8 +284,8 @@ namespace SixLabors.ImageSharp.Tests
using var otherFrame = new ImageFrame(Configuration.Default, 10, 10);
using ImageFrame addedFrame = this.Image.Frames.InsertFrame(0, otherFrame);
- Assert.True(otherFrame.TryGetSinglePixelSpan(out Span otherFrameSpan));
- addedFrame.ComparePixelBufferTo(otherFrameSpan);
+ Assert.True(otherFrame.DangerousTryGetSinglePixelMemory(out Memory otherFrameMem));
+ addedFrame.ComparePixelBufferTo(otherFrameMem.Span);
Assert.NotEqual(otherFrame, addedFrame);
}
@@ -356,7 +356,7 @@ namespace SixLabors.ImageSharp.Tests
IEnumerable> frames = image.Frames;
foreach (ImageFrame frame in frames)
{
- Assert.True(frame.TryGetSinglePixelSpan(out Span span));
+ Assert.True(frame.DangerousTryGetSinglePixelMemory(out Memory _));
}
}
diff --git a/tests/ImageSharp.Tests/Image/ImageFrameCollectionTests.NonGeneric.cs b/tests/ImageSharp.Tests/Image/ImageFrameCollectionTests.NonGeneric.cs
index b65615121..843546439 100644
--- a/tests/ImageSharp.Tests/Image/ImageFrameCollectionTests.NonGeneric.cs
+++ b/tests/ImageSharp.Tests/Image/ImageFrameCollectionTests.NonGeneric.cs
@@ -158,8 +158,8 @@ namespace SixLabors.ImageSharp.Tests
var expectedClone = (Image)cloned;
- Assert.True(img.TryGetSinglePixelSpan(out Span imgSpan));
- expectedClone.ComparePixelBufferTo(imgSpan);
+ Assert.True(img.DangerousTryGetSinglePixelMemory(out Memory imgMem));
+ expectedClone.ComparePixelBufferTo(imgMem);
}
}
}
@@ -171,8 +171,8 @@ namespace SixLabors.ImageSharp.Tests
{
using (Image img = provider.GetImage())
{
- Assert.True(img.TryGetSinglePixelSpan(out Span imgSpan));
- var sourcePixelData = imgSpan.ToArray();
+ Assert.True(img.DangerousTryGetSinglePixelMemory(out Memory imgMem));
+ TPixel[] sourcePixelData = imgMem.ToArray();
ImageFrameCollection nonGenericFrameCollection = img.Frames;
@@ -182,7 +182,7 @@ namespace SixLabors.ImageSharp.Tests
Assert.Equal(1, img.Frames.Count);
var expectedClone = (Image)cloned;
- expectedClone.ComparePixelBufferTo(sourcePixelData);
+ expectedClone.ComparePixelBufferTo(sourcePixelData.AsSpan());
}
}
}
diff --git a/tests/ImageSharp.Tests/Image/ImageTests.WrapMemory.cs b/tests/ImageSharp.Tests/Image/ImageTests.WrapMemory.cs
index c7a9b67a7..9b0d64cc6 100644
--- a/tests/ImageSharp.Tests/Image/ImageTests.WrapMemory.cs
+++ b/tests/ImageSharp.Tests/Image/ImageTests.WrapMemory.cs
@@ -9,8 +9,10 @@ using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using SixLabors.ImageSharp.Advanced;
using SixLabors.ImageSharp.Common.Helpers;
+using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.Metadata;
using SixLabors.ImageSharp.PixelFormats;
+using SixLabors.ImageSharp.Processing;
using Xunit;
// ReSharper disable InconsistentNaming
@@ -132,8 +134,8 @@ namespace SixLabors.ImageSharp.Tests
using (var image = Image.WrapMemory(cfg, memory, 5, 5, metaData))
{
- Assert.True(image.TryGetSinglePixelSpan(out Span imageSpan));
- ref Rgba32 pixel0 = ref imageSpan[0];
+ Assert.True(image.DangerousTryGetSinglePixelMemory(out Memory imageMem));
+ ref Rgba32 pixel0 = ref imageMem.Span[0];
Assert.True(Unsafe.AreSame(ref array[0], ref pixel0));
Assert.Equal(cfg, image.GetConfiguration());
@@ -160,8 +162,7 @@ namespace SixLabors.ImageSharp.Tests
using (var image = Image.WrapMemory(memory, bmp.Width, bmp.Height))
{
Assert.Equal(memory, image.GetRootFramePixelBuffer().DangerousGetSingleMemory());
- Assert.True(image.TryGetSinglePixelSpan(out Span imageSpan));
- imageSpan.Fill(bg);
+ image.GetPixelMemoryGroup().Fill(bg);
for (var i = 10; i < 20; i++)
{
image.GetPixelRowSpan(i).Slice(10, 10).Fill(fg);
@@ -196,8 +197,7 @@ namespace SixLabors.ImageSharp.Tests
using (var image = Image.WrapMemory(memoryManager, bmp.Width, bmp.Height))
{
Assert.Equal(memoryManager.Memory, image.GetRootFramePixelBuffer().DangerousGetSingleMemory());
- Assert.True(image.TryGetSinglePixelSpan(out Span imageSpan));
- imageSpan.Fill(bg);
+ image.GetPixelMemoryGroup().Fill(bg);
for (var i = 10; i < 20; i++)
{
image.GetPixelRowSpan(i).Slice(10, 10).Fill(fg);
@@ -225,8 +225,8 @@ namespace SixLabors.ImageSharp.Tests
using (var image = Image.WrapMemory(cfg, memory, 5, 5, metaData))
{
- Assert.True(image.TryGetSinglePixelSpan(out Span imageSpan));
- ref Rgba32 pixel0 = ref imageSpan[0];
+ Assert.True(image.DangerousTryGetSinglePixelMemory(out Memory imageMem));
+ ref Rgba32 pixel0 = ref imageMem.Span[0];
Assert.True(Unsafe.AreSame(ref Unsafe.As(ref array[0]), ref pixel0));
Assert.Equal(cfg, image.GetConfiguration());
@@ -262,8 +262,7 @@ namespace SixLabors.ImageSharp.Tests
Assert.Equal(pixelSpan.Length, imageSpan.Length);
Assert.True(Unsafe.AreSame(ref pixelSpan.GetPinnableReference(), ref imageSpan.GetPinnableReference()));
- Assert.True(image.TryGetSinglePixelSpan(out imageSpan));
- imageSpan.Fill(bg);
+ image.GetPixelMemoryGroup().Fill(bg);
for (var i = 10; i < 20; i++)
{
image.GetPixelRowSpan(i).Slice(10, 10).Fill(fg);
@@ -293,7 +292,8 @@ namespace SixLabors.ImageSharp.Tests
{
using (var image = Image.WrapMemory(cfg, ptr, 5, 5, metaData))
{
- Assert.True(image.TryGetSinglePixelSpan(out Span imageSpan));
+ Assert.True(image.DangerousTryGetSinglePixelMemory(out Memory imageMem));
+ Span imageSpan = imageMem.Span;
ref Rgba32 pixel0 = ref imageSpan[0];
Assert.True(Unsafe.AreSame(ref array[0], ref pixel0));
ref Rgba32 pixel_1 = ref imageSpan[imageSpan.Length - 1];
@@ -331,8 +331,7 @@ namespace SixLabors.ImageSharp.Tests
Assert.Equal(pixelSpan.Length, imageSpan.Length);
Assert.True(Unsafe.AreSame(ref pixelSpan.GetPinnableReference(), ref imageSpan.GetPinnableReference()));
- Assert.True(image.TryGetSinglePixelSpan(out imageSpan));
- imageSpan.Fill(bg);
+ image.GetPixelMemoryGroup().Fill(bg);
for (var i = 10; i < 20; i++)
{
image.GetPixelRowSpan(i).Slice(10, 10).Fill(fg);
diff --git a/tests/ImageSharp.Tests/Image/ImageTests.cs b/tests/ImageSharp.Tests/Image/ImageTests.cs
index b632f4216..469c0249d 100644
--- a/tests/ImageSharp.Tests/Image/ImageTests.cs
+++ b/tests/ImageSharp.Tests/Image/ImageTests.cs
@@ -29,8 +29,8 @@ namespace SixLabors.ImageSharp.Tests
{
Assert.Equal(11, image.Width);
Assert.Equal(23, image.Height);
- Assert.True(image.TryGetSinglePixelSpan(out Span imageSpan));
- Assert.Equal(11 * 23, imageSpan.Length);
+ Assert.True(image.DangerousTryGetSinglePixelMemory(out Memory imageMem));
+ Assert.Equal(11 * 23, imageMem.Length);
image.ComparePixelBufferTo(default(Rgba32));
Assert.Equal(Configuration.Default, image.GetConfiguration());
@@ -46,8 +46,8 @@ namespace SixLabors.ImageSharp.Tests
{
Assert.Equal(11, image.Width);
Assert.Equal(23, image.Height);
- Assert.True(image.TryGetSinglePixelSpan(out Span imageSpan));
- Assert.Equal(11 * 23, imageSpan.Length);
+ Assert.True(image.DangerousTryGetSinglePixelMemory(out Memory imageMem));
+ Assert.Equal(11 * 23, imageMem.Length);
image.ComparePixelBufferTo(default(Rgba32));
Assert.Equal(configuration, image.GetConfiguration());
@@ -64,8 +64,8 @@ namespace SixLabors.ImageSharp.Tests
{
Assert.Equal(11, image.Width);
Assert.Equal(23, image.Height);
- Assert.True(image.TryGetSinglePixelSpan(out Span imageSpan));
- Assert.Equal(11 * 23, imageSpan.Length);
+ Assert.True(image.DangerousTryGetSinglePixelMemory(out Memory imageMem));
+ Assert.Equal(11 * 23, imageMem.Length);
image.ComparePixelBufferTo(color);
Assert.Equal(configuration, image.GetConfiguration());
@@ -272,7 +272,7 @@ namespace SixLabors.ImageSharp.Tests
Assert.Throws(() => { var res = image.Clone(this.configuration); });
Assert.Throws(() => { var res = image.CloneAs(this.configuration); });
Assert.Throws(() => { var res = image.GetPixelRowSpan(default); });
- Assert.Throws(() => { var res = image.TryGetSinglePixelSpan(out var _); });
+ Assert.Throws(() => { var res = image.DangerousTryGetSinglePixelMemory(out Memory _); });
// Image
Assert.Throws(() => { var res = genericImage.CloneAs(this.configuration); });
diff --git a/tests/ImageSharp.Tests/Image/LargeImageIntegrationTests.cs b/tests/ImageSharp.Tests/Image/LargeImageIntegrationTests.cs
index f6656ec5f..1f0963aac 100644
--- a/tests/ImageSharp.Tests/Image/LargeImageIntegrationTests.cs
+++ b/tests/ImageSharp.Tests/Image/LargeImageIntegrationTests.cs
@@ -33,19 +33,19 @@ namespace SixLabors.ImageSharp.Tests
configuration.PreferContiguousImageBuffers = true;
using var image = new Image(configuration, 8192, 4096);
- Assert.True(image.TryGetSinglePixelSpan(out Span span));
- Assert.Equal(8192 * 4096, span.Length);
+ Assert.True(image.DangerousTryGetSinglePixelMemory(out Memory mem));
+ Assert.Equal(8192 * 4096, mem.Length);
}
}
[Theory]
[WithBasicTestPatternImages(width: 10, height: 10, PixelTypes.Rgba32)]
- public void TryGetSinglePixelSpan_WhenImageTooLarge_ReturnsFalse(TestImageProvider provider)
+ public void DangerousTryGetSinglePixelMemory_WhenImageTooLarge_ReturnsFalse(TestImageProvider provider)
{
provider.LimitAllocatorBufferCapacity().InPixels(10);
using Image image = provider.GetImage();
- Assert.False(image.TryGetSinglePixelSpan(out Span imageSpan));
- Assert.False(image.Frames.RootFrame.TryGetSinglePixelSpan(out Span imageFrameSpan));
+ Assert.False(image.DangerousTryGetSinglePixelMemory(out Memory mem));
+ Assert.False(image.Frames.RootFrame.DangerousTryGetSinglePixelMemory(out Memory _));
}
}
}
diff --git a/tests/ImageSharp.Tests/Processing/Processors/Transforms/AffineTransformTests.cs b/tests/ImageSharp.Tests/Processing/Processors/Transforms/AffineTransformTests.cs
index d2d2fcc1f..3cd8cec15 100644
--- a/tests/ImageSharp.Tests/Processing/Processors/Transforms/AffineTransformTests.cs
+++ b/tests/ImageSharp.Tests/Processing/Processors/Transforms/AffineTransformTests.cs
@@ -239,9 +239,9 @@ namespace SixLabors.ImageSharp.Tests.Processing.Transforms
private static void VerifyAllPixelsAreWhiteOrTransparent(Image image)
where TPixel : unmanaged, IPixel
{
- Assert.True(image.Frames.RootFrame.TryGetSinglePixelSpan(out Span data));
+ Assert.True(image.Frames.RootFrame.DangerousTryGetSinglePixelMemory(out Memory data));
var white = new Rgb24(255, 255, 255);
- foreach (TPixel pixel in data)
+ foreach (TPixel pixel in data.Span)
{
Rgba32 rgba = default;
pixel.ToRgba32(ref rgba);
diff --git a/tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs b/tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs
index 7374302c0..669fb939b 100644
--- a/tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs
+++ b/tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs
@@ -269,8 +269,8 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
{
using (Image image0 = provider.GetImage())
{
- Assert.True(image0.TryGetSinglePixelSpan(out Span imageSpan));
- var mmg = TestMemoryManager.CreateAsCopyOf(imageSpan);
+ Assert.True(image0.DangerousTryGetSinglePixelMemory(out Memory imageMem));
+ var mmg = TestMemoryManager.CreateAsCopyOf(imageMem.Span);
using (var image1 = Image.WrapMemory(mmg.Memory, image0.Width, image0.Height))
{
diff --git a/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs b/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs
index 333807079..89ddbb70a 100644
--- a/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs
+++ b/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs
@@ -396,12 +396,18 @@ namespace SixLabors.ImageSharp.Tests
Span expectedPixels)
where TPixel : unmanaged, IPixel
{
- Assert.True(image.TryGetSinglePixelSpan(out Span actualPixels));
- CompareBuffers(expectedPixels, actualPixels);
+ Assert.True(image.DangerousTryGetSinglePixelMemory(out Memory actualPixels));
+ CompareBuffers(expectedPixels, actualPixels.Span);
return image;
}
+ public static Image ComparePixelBufferTo(
+ this Image image,
+ Memory expectedPixels)
+ where TPixel : unmanaged, IPixel =>
+ ComparePixelBufferTo(image, expectedPixels.Span);
+
public static void CompareBuffers(Span expected, Span actual)
where T : struct, IEquatable
{
@@ -477,7 +483,8 @@ namespace SixLabors.ImageSharp.Tests
public static ImageFrame ComparePixelBufferTo(this ImageFrame imageFrame, TPixel expectedPixel)
where TPixel : unmanaged, IPixel
{
- Assert.True(imageFrame.TryGetSinglePixelSpan(out Span actualPixels));
+ Assert.True(imageFrame.DangerousTryGetSinglePixelMemory(out Memory actualPixelMem));
+ Span actualPixels = actualPixelMem.Span;
for (int i = 0; i < actualPixels.Length; i++)
{
@@ -492,7 +499,8 @@ namespace SixLabors.ImageSharp.Tests
Span expectedPixels)
where TPixel : unmanaged, IPixel
{
- Assert.True(image.TryGetSinglePixelSpan(out Span actual));
+ Assert.True(image.DangerousTryGetSinglePixelMemory(out Memory actualMem));
+ Span actual = actualMem.Span;
Assert.True(expectedPixels.Length == actual.Length, "Buffer sizes are not equal!");
for (int i = 0; i < expectedPixels.Length; i++)
@@ -696,7 +704,8 @@ namespace SixLabors.ImageSharp.Tests
{
var image = new Image(buffer.Width, buffer.Height);
- Assert.True(image.Frames.RootFrame.TryGetSinglePixelSpan(out Span pixels));
+ Assert.True(image.Frames.RootFrame.DangerousTryGetSinglePixelMemory(out Memory pixelMem));
+ Span pixels = pixelMem.Span;
Span bufferSpan = buffer.DangerousGetSingleSpan();
for (int i = 0; i < bufferSpan.Length; i++)
diff --git a/tests/ImageSharp.Tests/TestUtilities/TestUtils.cs b/tests/ImageSharp.Tests/TestUtilities/TestUtils.cs
index 8c03e8deb..f3b321f30 100644
--- a/tests/ImageSharp.Tests/TestUtilities/TestUtils.cs
+++ b/tests/ImageSharp.Tests/TestUtilities/TestUtils.cs
@@ -280,8 +280,8 @@ namespace SixLabors.ImageSharp.Tests
using (Image image0 = provider.GetImage())
{
- Assert.True(image0.TryGetSinglePixelSpan(out Span imageSpan));
- var mmg = TestMemoryManager.CreateAsCopyOf(imageSpan);
+ Assert.True(image0.DangerousTryGetSinglePixelMemory(out Memory imageMem));
+ var mmg = TestMemoryManager.CreateAsCopyOf(imageMem.Span);
using (var image1 = Image.WrapMemory(mmg.Memory, image0.Width, image0.Height))
{