diff --git a/src/ImageSharp/PixelFormats/Generated/PixelOperations{TPixel}.Generated.cs b/src/ImageSharp/PixelFormats/Generated/PixelOperations{TPixel}.Generated.cs
index 87e29ff2d4..025204c894 100644
--- a/src/ImageSharp/PixelFormats/Generated/PixelOperations{TPixel}.Generated.cs
+++ b/src/ImageSharp/PixelFormats/Generated/PixelOperations{TPixel}.Generated.cs
@@ -24,13 +24,13 @@ namespace SixLabors.ImageSharp.PixelFormats
ref Rgba32 sourceRef = ref MemoryMarshal.GetReference(source);
ref TPixel destRef = ref MemoryMarshal.GetReference(destPixels);
- Rgba32 rgba = new Rgba32(0, 0, 0, 255);
+ var rgba = new Rgba32(0, 0, 0, 255);
for (int i = 0; i < count; i++)
{
ref TPixel dp = ref Unsafe.Add(ref destRef, i);
rgba = Unsafe.Add(ref sourceRef, i);
- dp.PackFromRgba32(rgba);
+ dp.PackFromRgba32(rgba);
}
}
@@ -95,13 +95,13 @@ namespace SixLabors.ImageSharp.PixelFormats
ref Bgra32 sourceRef = ref MemoryMarshal.GetReference(source);
ref TPixel destRef = ref MemoryMarshal.GetReference(destPixels);
- Bgra32 bgra = new Bgra32(0, 0, 0, 255);
+ var bgra = new Bgra32(0, 0, 0, 255);
for (int i = 0; i < count; i++)
{
ref TPixel dp = ref Unsafe.Add(ref destRef, i);
bgra = Unsafe.Add(ref sourceRef, i);
- dp.PackFromBgra32(bgra);
+ dp.PackFromBgra32(bgra);
}
}
@@ -166,13 +166,13 @@ namespace SixLabors.ImageSharp.PixelFormats
ref Rgb24 sourceRef = ref MemoryMarshal.GetReference(source);
ref TPixel destRef = ref MemoryMarshal.GetReference(destPixels);
- Rgba32 rgba = new Rgba32(0, 0, 0, 255);
+ var rgba = new Rgba32(0, 0, 0, 255);
for (int i = 0; i < count; i++)
{
ref TPixel dp = ref Unsafe.Add(ref destRef, i);
rgba.Rgb = Unsafe.Add(ref sourceRef, i);
- dp.PackFromRgba32(rgba);
+ dp.PackFromRgba32(rgba);
}
}
@@ -237,13 +237,13 @@ namespace SixLabors.ImageSharp.PixelFormats
ref Bgr24 sourceRef = ref MemoryMarshal.GetReference(source);
ref TPixel destRef = ref MemoryMarshal.GetReference(destPixels);
- Rgba32 rgba = new Rgba32(0, 0, 0, 255);
+ var rgba = new Rgba32(0, 0, 0, 255);
for (int i = 0; i < count; i++)
{
ref TPixel dp = ref Unsafe.Add(ref destRef, i);
rgba.Bgr = Unsafe.Add(ref sourceRef, i);
- dp.PackFromRgba32(rgba);
+ dp.PackFromRgba32(rgba);
}
}
@@ -308,7 +308,7 @@ namespace SixLabors.ImageSharp.PixelFormats
ref Argb32 sourceRef = ref MemoryMarshal.GetReference(source);
ref TPixel destRef = ref MemoryMarshal.GetReference(destPixels);
- Argb32 argb = new Argb32(0, 0, 0, 255);
+ var argb = new Argb32(0, 0, 0, 255);
for (int i = 0; i < count; i++)
{
diff --git a/src/ImageSharp/PixelFormats/Generated/PixelOperations{TPixel}.Generated.tt b/src/ImageSharp/PixelFormats/Generated/PixelOperations{TPixel}.Generated.tt
index 81dfb8b348..060973c744 100644
--- a/src/ImageSharp/PixelFormats/Generated/PixelOperations{TPixel}.Generated.tt
+++ b/src/ImageSharp/PixelFormats/Generated/PixelOperations{TPixel}.Generated.tt
@@ -68,13 +68,13 @@
ref <#=pixelType#> sourceRef = ref MemoryMarshal.GetReference(source);
ref TPixel destRef = ref MemoryMarshal.GetReference(destPixels);
- Rgba32 rgba = new Rgba32(0, 0, 0, 255);
+ var rgba = new Rgba32(0, 0, 0, 255);
for (int i = 0; i < count; i++)
{
ref TPixel dp = ref Unsafe.Add(ref destRef, i);
<#=rgbaOperationCode#>
- dp.PackFromRgba32(rgba);
+ dp.PackFromRgba32(rgba);
}
}
@@ -110,7 +110,7 @@
ref <#=pixelType#> sourceRef = ref MemoryMarshal.GetReference(source);
ref TPixel destRef = ref MemoryMarshal.GetReference(destPixels);
- Argb32 argb = new Argb32(0, 0, 0, 255);
+ var argb = new Argb32(0, 0, 0, 255);
for (int i = 0; i < count; i++)
{
@@ -152,13 +152,13 @@
ref <#=pixelType#> sourceRef = ref MemoryMarshal.GetReference(source);
ref TPixel destRef = ref MemoryMarshal.GetReference(destPixels);
- Bgra32 bgra = new Bgra32(0, 0, 0, 255);
+ var bgra = new Bgra32(0, 0, 0, 255);
for (int i = 0; i < count; i++)
{
ref TPixel dp = ref Unsafe.Add(ref destRef, i);
<#=bgraOperationCode#>
- dp.PackFromBgra32(bgra);
+ dp.PackFromBgra32(bgra);
}
}
diff --git a/src/ImageSharp/PixelFormats/Rgba32.cs b/src/ImageSharp/PixelFormats/Rgba32.cs
index 6f02a00b41..e276772bf9 100644
--- a/src/ImageSharp/PixelFormats/Rgba32.cs
+++ b/src/ImageSharp/PixelFormats/Rgba32.cs
@@ -279,7 +279,10 @@ namespace SixLabors.ImageSharp.PixelFormats
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PackFromArgb32(Argb32 source)
{
- Pack(source.R, source.G, source.B, source.A);
+ this.R = source.R;
+ this.G = source.G;
+ this.B = source.B;
+ this.A = source.A;
}
///
diff --git a/tests/ImageSharp.Tests/Drawing/DrawImageTest.cs b/tests/ImageSharp.Tests/Drawing/DrawImageTest.cs
index 0ff0b85576..d634674353 100644
--- a/tests/ImageSharp.Tests/Drawing/DrawImageTest.cs
+++ b/tests/ImageSharp.Tests/Drawing/DrawImageTest.cs
@@ -93,7 +93,7 @@ namespace SixLabors.ImageSharp.Tests
Assert.Equal(Rgba32.White, backgroundPixel);
Assert.Equal(overlayPixel, background[0, 0]);
- background.DebugSave(provider, new[] { "Negative" });
+ background.DebugSave(provider, testOutputDetails: "Negative");
}
}
@@ -115,7 +115,7 @@ namespace SixLabors.ImageSharp.Tests
Assert.Equal(Rgba32.White, backgroundPixel);
Assert.Equal(overlayPixel, background[xy, xy]);
- background.DebugSave(provider, new[] { "Positive" });
+ background.DebugSave(provider, testOutputDetails: "Positive");
}
}
}
diff --git a/tests/ImageSharp.Tests/TestUtilities/ReferenceCodecs/SystemDrawingBridge.cs b/tests/ImageSharp.Tests/TestUtilities/ReferenceCodecs/SystemDrawingBridge.cs
index d1270dcfd7..d04d2343f6 100644
--- a/tests/ImageSharp.Tests/TestUtilities/ReferenceCodecs/SystemDrawingBridge.cs
+++ b/tests/ImageSharp.Tests/TestUtilities/ReferenceCodecs/SystemDrawingBridge.cs
@@ -12,72 +12,6 @@ namespace SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs
{
public static class SystemDrawingBridge
{
- // TODO: It would be nice to have this method in PixelOperations
- private static void ToArgb32(Span source, Span dest)
- where TPixel : struct, IPixel
- {
- int length = source.Length;
- Guard.MustBeSizedAtLeast(dest, length, nameof(dest));
-
- using (IBuffer rgbaBuffer = Configuration.Default.MemoryManager.Allocate(length))
- {
- Span rgbaSpan = rgbaBuffer.Span;
- PixelOperations.Instance.ToRgba32(source, rgbaSpan, length);
-
- for (int i = 0; i < length; i++)
- {
- ref Rgba32 s = ref rgbaSpan[i];
- ref Argb32 d = ref dest[i];
-
- d.PackFromRgba32(s);
- }
- }
- }
-
- private static void FromArgb32(Span source, Span dest)
- where TPixel : struct, IPixel
- {
- int length = source.Length;
- Guard.MustBeSizedAtLeast(dest, length, nameof(dest));
-
- using (IBuffer rgbaBuffer = Configuration.Default.MemoryManager.Allocate(length))
- {
- Span rgbaSpan = rgbaBuffer.Span;
- PixelOperations.Instance.ToRgba32(source, rgbaSpan, length);
-
- for (int i = 0; i < length; i++)
- {
- ref Rgba32 s = ref rgbaSpan[i];
- ref TPixel d = ref dest[i];
-
- d.PackFromRgba32(s);
- }
- }
- }
-
- private static void FromRgb24(Span source, Span dest)
- where TPixel : struct, IPixel
- {
- int length = source.Length;
- Guard.MustBeSizedAtLeast(dest, length, nameof(dest));
-
- using (IBuffer rgbBuffer = Configuration.Default.MemoryManager.Allocate(length))
- {
- Span rgbSpan = rgbBuffer.Span;
- PixelOperations.Instance.ToRgb24(source, rgbSpan, length);
-
- for (int i = 0; i < length; i++)
- {
- ref Rgb24 s = ref rgbSpan[i];
- ref TPixel d = ref dest[i];
- var rgba = default(Rgba32);
- s.ToRgba32(ref rgba);
-
- d.PackFromRgba32(rgba);
- }
- }
- }
-
internal static unsafe Image FromFromArgb32SystemDrawingBitmap(System.Drawing.Bitmap bmp)
where TPixel : struct, IPixel
{
@@ -99,9 +33,9 @@ namespace SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs
var image = new Image(w, h);
- using (IBuffer workBuffer = Configuration.Default.MemoryManager.Allocate(w))
+ using (IBuffer workBuffer = Configuration.Default.MemoryManager.Allocate(w))
{
- fixed (Argb32* destPtr = &workBuffer.DangerousGetPinnableReference())
+ fixed (Bgra32* destPtr = &workBuffer.DangerousGetPinnableReference())
{
for (int y = 0; y < h; y++)
{
@@ -110,8 +44,7 @@ namespace SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs
byte* sourcePtr = sourcePtrBase + data.Stride * y;
Buffer.MemoryCopy(sourcePtr, destPtr, destRowByteCount, sourceRowByteCount);
-
- FromArgb32(workBuffer.Span, row);
+ PixelOperations.Instance.PackFromBgra32(workBuffer.Span, row, row.Length);
}
}
}
@@ -139,13 +72,13 @@ namespace SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs
byte* sourcePtrBase = (byte*)data.Scan0;
long sourceRowByteCount = data.Stride;
- long destRowByteCount = w * sizeof(Rgb24);
+ long destRowByteCount = w * sizeof(Bgr24);
var image = new Image(w, h);
- using (IBuffer workBuffer = Configuration.Default.MemoryManager.Allocate(w))
+ using (IBuffer workBuffer = Configuration.Default.MemoryManager.Allocate(w))
{
- fixed (Rgb24* destPtr = &workBuffer.DangerousGetPinnableReference())
+ fixed (Bgr24* destPtr = &workBuffer.DangerousGetPinnableReference())
{
for (int y = 0; y < h; y++)
{
@@ -154,8 +87,9 @@ namespace SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs
byte* sourcePtr = sourcePtrBase + data.Stride * y;
Buffer.MemoryCopy(sourcePtr, destPtr, destRowByteCount, sourceRowByteCount);
+ PixelOperations.Instance.PackFromBgr24(workBuffer.Span, row, row.Length);
- FromRgb24(workBuffer.Span, row);
+ // FromRgb24(workBuffer.Span, row);
}
}
}
@@ -175,17 +109,17 @@ namespace SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs
byte* destPtrBase = (byte*)data.Scan0;
long destRowByteCount = data.Stride;
- long sourceRowByteCount = w * sizeof(Argb32);
+ long sourceRowByteCount = w * sizeof(Bgra32);
- using (IBuffer workBuffer = image.GetConfiguration().MemoryManager.Allocate(w))
+ using (IBuffer workBuffer = image.GetConfiguration().MemoryManager.Allocate(w))
{
- fixed (Argb32* sourcePtr = &workBuffer.DangerousGetPinnableReference())
+ fixed (Bgra32* sourcePtr = &workBuffer.DangerousGetPinnableReference())
{
for (int y = 0; y < h; y++)
{
Span row = image.Frames.RootFrame.GetPixelRowSpan(y);
- ToArgb32(row, workBuffer.Span);
+ PixelOperations.Instance.ToBgra32(row, workBuffer.Span, row.Length);
byte* destPtr = destPtrBase + data.Stride * y;
Buffer.MemoryCopy(sourcePtr, destPtr, destRowByteCount, sourceRowByteCount);
diff --git a/tests/ImageSharp.Tests/TestUtilities/Tests/ReferenceCodecTests.cs b/tests/ImageSharp.Tests/TestUtilities/Tests/ReferenceCodecTests.cs
index 6ff935b546..eda6c99a31 100644
--- a/tests/ImageSharp.Tests/TestUtilities/Tests/ReferenceCodecTests.cs
+++ b/tests/ImageSharp.Tests/TestUtilities/Tests/ReferenceCodecTests.cs
@@ -85,7 +85,7 @@ namespace SixLabors.ImageSharp.Tests
}
}
- [Theory(Skip = "Doesen't work yet :(")]
+ [Theory]
[WithTestPatternImages(100, 100, PixelTypes.Rgba32)]
public void FromFromRgb24SystemDrawingBitmap2(TestImageProvider provider)
where TPixel : struct, IPixel