diff --git a/src/ImageSharp/Common/Helpers/Shuffle/IComponentShuffle.cs b/src/ImageSharp/Common/Helpers/Shuffle/IComponentShuffle.cs
index 8d1236ee9..2fc2b4430 100644
--- a/src/ImageSharp/Common/Helpers/Shuffle/IComponentShuffle.cs
+++ b/src/ImageSharp/Common/Helpers/Shuffle/IComponentShuffle.cs
@@ -219,8 +219,8 @@ namespace SixLabors.ImageSharp
// tmp2 = [W 0 Y 0]
// tmp3=ROTL(16, tmp2) = [Y 0 W 0]
// tmp1 + tmp3 = [Y Z W X]
- uint tmp1 = packed & 0xFF00FF00;
- uint tmp2 = packed & 0x00FF00FF;
+ uint tmp1 = packed & 0x00FF00FF;
+ uint tmp2 = packed & 0xFF00FF00;
uint tmp3 = (tmp2 << 16) | (tmp2 >> 16);
Unsafe.Add(ref dBase, i) = tmp1 + tmp3;
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/Abgr32.cs b/src/ImageSharp/PixelFormats/PixelImplementations/Abgr32.cs
index 157ac2a83..0a95fc1ff 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/Abgr32.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/Abgr32.cs
@@ -204,7 +204,7 @@ namespace SixLabors.ImageSharp.PixelFormats
///
[MethodImpl(InliningOptions.ShortMethod)]
- public void FromAbgr32(Abgr32 source) => this.PackedValue = source.PackedValue;
+ public void FromAbgr32(Abgr32 source) => this = source;
///
[MethodImpl(InliningOptions.ShortMethod)]
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Argb32.PixelOperations.Generated.cs b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Argb32.PixelOperations.Generated.cs
index cedd1762d..0f183df0d 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Argb32.PixelOperations.Generated.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Argb32.PixelOperations.Generated.cs
@@ -85,6 +85,33 @@ namespace SixLabors.ImageSharp.PixelFormats
PixelConverter.FromRgba32.ToArgb32(source, dest);
}
///
+ public override void ToAbgr32(
+ Configuration configuration,
+ ReadOnlySpan sourcePixels,
+ Span destinationPixels)
+ {
+ Guard.NotNull(configuration, nameof(configuration));
+ Guard.DestinationShouldNotBeTooShort(sourcePixels, destinationPixels, nameof(destinationPixels));
+
+ ReadOnlySpan source = MemoryMarshal.Cast(sourcePixels);
+ Span dest = MemoryMarshal.Cast(destinationPixels);
+ PixelConverter.FromArgb32.ToAbgr32(source, dest);
+ }
+
+ ///
+ public override void FromAbgr32(
+ Configuration configuration,
+ ReadOnlySpan sourcePixels,
+ Span destinationPixels)
+ {
+ Guard.NotNull(configuration, nameof(configuration));
+ Guard.DestinationShouldNotBeTooShort(sourcePixels, destinationPixels, nameof(destinationPixels));
+
+ ReadOnlySpan source = MemoryMarshal.Cast(sourcePixels);
+ Span dest = MemoryMarshal.Cast(destinationPixels);
+ PixelConverter.FromAbgr32.ToArgb32(source, dest);
+ }
+ ///
public override void ToBgra32(
Configuration configuration,
ReadOnlySpan sourcePixels,
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Bgr24.PixelOperations.Generated.cs b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Bgr24.PixelOperations.Generated.cs
index c98e35656..ea08c6391 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Bgr24.PixelOperations.Generated.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Bgr24.PixelOperations.Generated.cs
@@ -112,6 +112,33 @@ namespace SixLabors.ImageSharp.PixelFormats
PixelConverter.FromArgb32.ToBgr24(source, dest);
}
///
+ public override void ToAbgr32(
+ Configuration configuration,
+ ReadOnlySpan sourcePixels,
+ Span destinationPixels)
+ {
+ Guard.NotNull(configuration, nameof(configuration));
+ Guard.DestinationShouldNotBeTooShort(sourcePixels, destinationPixels, nameof(destinationPixels));
+
+ ReadOnlySpan source = MemoryMarshal.Cast(sourcePixels);
+ Span dest = MemoryMarshal.Cast(destinationPixels);
+ PixelConverter.FromBgr24.ToAbgr32(source, dest);
+ }
+
+ ///
+ public override void FromAbgr32(
+ Configuration configuration,
+ ReadOnlySpan sourcePixels,
+ Span destinationPixels)
+ {
+ Guard.NotNull(configuration, nameof(configuration));
+ Guard.DestinationShouldNotBeTooShort(sourcePixels, destinationPixels, nameof(destinationPixels));
+
+ ReadOnlySpan source = MemoryMarshal.Cast(sourcePixels);
+ Span dest = MemoryMarshal.Cast(destinationPixels);
+ PixelConverter.FromAbgr32.ToBgr24(source, dest);
+ }
+ ///
public override void ToBgra32(
Configuration configuration,
ReadOnlySpan sourcePixels,
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Bgra32.PixelOperations.Generated.cs b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Bgra32.PixelOperations.Generated.cs
index 02bb67532..0ec9a552c 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Bgra32.PixelOperations.Generated.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Bgra32.PixelOperations.Generated.cs
@@ -112,6 +112,33 @@ namespace SixLabors.ImageSharp.PixelFormats
PixelConverter.FromArgb32.ToBgra32(source, dest);
}
///
+ public override void ToAbgr32(
+ Configuration configuration,
+ ReadOnlySpan sourcePixels,
+ Span destinationPixels)
+ {
+ Guard.NotNull(configuration, nameof(configuration));
+ Guard.DestinationShouldNotBeTooShort(sourcePixels, destinationPixels, nameof(destinationPixels));
+
+ ReadOnlySpan source = MemoryMarshal.Cast(sourcePixels);
+ Span dest = MemoryMarshal.Cast(destinationPixels);
+ PixelConverter.FromBgra32.ToAbgr32(source, dest);
+ }
+
+ ///
+ public override void FromAbgr32(
+ Configuration configuration,
+ ReadOnlySpan sourcePixels,
+ Span destinationPixels)
+ {
+ Guard.NotNull(configuration, nameof(configuration));
+ Guard.DestinationShouldNotBeTooShort(sourcePixels, destinationPixels, nameof(destinationPixels));
+
+ ReadOnlySpan source = MemoryMarshal.Cast(sourcePixels);
+ Span dest = MemoryMarshal.Cast(destinationPixels);
+ PixelConverter.FromAbgr32.ToBgra32(source, dest);
+ }
+ ///
public override void ToRgb24(
Configuration configuration,
ReadOnlySpan sourcePixels,
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Bgra5551.PixelOperations.Generated.cs b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Bgra5551.PixelOperations.Generated.cs
index a02ffc3a4..877ce1a6f 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Bgra5551.PixelOperations.Generated.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Bgra5551.PixelOperations.Generated.cs
@@ -59,6 +59,26 @@ namespace SixLabors.ImageSharp.PixelFormats
}
}
///
+ public override void ToAbgr32(
+ Configuration configuration,
+ ReadOnlySpan sourcePixels,
+ Span destinationPixels)
+ {
+ Guard.NotNull(configuration, nameof(configuration));
+ Guard.DestinationShouldNotBeTooShort(sourcePixels, destinationPixels, nameof(destinationPixels));
+
+ ref Bgra5551 sourceRef = ref MemoryMarshal.GetReference(sourcePixels);
+ ref Abgr32 destRef = ref MemoryMarshal.GetReference(destinationPixels);
+
+ for (int i = 0; i < sourcePixels.Length; i++)
+ {
+ ref Bgra5551 sp = ref Unsafe.Add(ref sourceRef, i);
+ ref Abgr32 dp = ref Unsafe.Add(ref destRef, i);
+
+ dp.FromBgra5551(sp);
+ }
+ }
+ ///
public override void ToBgr24(
Configuration configuration,
ReadOnlySpan sourcePixels,
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/L16.PixelOperations.Generated.cs b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/L16.PixelOperations.Generated.cs
index 954ef2d98..94eb3229b 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/L16.PixelOperations.Generated.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/L16.PixelOperations.Generated.cs
@@ -59,6 +59,26 @@ namespace SixLabors.ImageSharp.PixelFormats
}
}
///
+ public override void ToAbgr32(
+ Configuration configuration,
+ ReadOnlySpan sourcePixels,
+ Span destinationPixels)
+ {
+ Guard.NotNull(configuration, nameof(configuration));
+ Guard.DestinationShouldNotBeTooShort(sourcePixels, destinationPixels, nameof(destinationPixels));
+
+ ref L16 sourceRef = ref MemoryMarshal.GetReference(sourcePixels);
+ ref Abgr32 destRef = ref MemoryMarshal.GetReference(destinationPixels);
+
+ for (int i = 0; i < sourcePixels.Length; i++)
+ {
+ ref L16 sp = ref Unsafe.Add(ref sourceRef, i);
+ ref Abgr32 dp = ref Unsafe.Add(ref destRef, i);
+
+ dp.FromL16(sp);
+ }
+ }
+ ///
public override void ToBgr24(
Configuration configuration,
ReadOnlySpan sourcePixels,
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/L8.PixelOperations.Generated.cs b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/L8.PixelOperations.Generated.cs
index b3d809de5..a748590f7 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/L8.PixelOperations.Generated.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/L8.PixelOperations.Generated.cs
@@ -59,6 +59,26 @@ namespace SixLabors.ImageSharp.PixelFormats
}
}
///
+ public override void ToAbgr32(
+ Configuration configuration,
+ ReadOnlySpan sourcePixels,
+ Span destinationPixels)
+ {
+ Guard.NotNull(configuration, nameof(configuration));
+ Guard.DestinationShouldNotBeTooShort(sourcePixels, destinationPixels, nameof(destinationPixels));
+
+ ref L8 sourceRef = ref MemoryMarshal.GetReference(sourcePixels);
+ ref Abgr32 destRef = ref MemoryMarshal.GetReference(destinationPixels);
+
+ for (int i = 0; i < sourcePixels.Length; i++)
+ {
+ ref L8 sp = ref Unsafe.Add(ref sourceRef, i);
+ ref Abgr32 dp = ref Unsafe.Add(ref destRef, i);
+
+ dp.FromL8(sp);
+ }
+ }
+ ///
public override void ToBgr24(
Configuration configuration,
ReadOnlySpan sourcePixels,
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/La16.PixelOperations.Generated.cs b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/La16.PixelOperations.Generated.cs
index 14618d026..f47cd6c40 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/La16.PixelOperations.Generated.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/La16.PixelOperations.Generated.cs
@@ -59,6 +59,26 @@ namespace SixLabors.ImageSharp.PixelFormats
}
}
///
+ public override void ToAbgr32(
+ Configuration configuration,
+ ReadOnlySpan sourcePixels,
+ Span destinationPixels)
+ {
+ Guard.NotNull(configuration, nameof(configuration));
+ Guard.DestinationShouldNotBeTooShort(sourcePixels, destinationPixels, nameof(destinationPixels));
+
+ ref La16 sourceRef = ref MemoryMarshal.GetReference(sourcePixels);
+ ref Abgr32 destRef = ref MemoryMarshal.GetReference(destinationPixels);
+
+ for (int i = 0; i < sourcePixels.Length; i++)
+ {
+ ref La16 sp = ref Unsafe.Add(ref sourceRef, i);
+ ref Abgr32 dp = ref Unsafe.Add(ref destRef, i);
+
+ dp.FromLa16(sp);
+ }
+ }
+ ///
public override void ToBgr24(
Configuration configuration,
ReadOnlySpan sourcePixels,
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/La32.PixelOperations.Generated.cs b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/La32.PixelOperations.Generated.cs
index 9620a1df4..f0c2c3323 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/La32.PixelOperations.Generated.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/La32.PixelOperations.Generated.cs
@@ -59,6 +59,26 @@ namespace SixLabors.ImageSharp.PixelFormats
}
}
///
+ public override void ToAbgr32(
+ Configuration configuration,
+ ReadOnlySpan sourcePixels,
+ Span destinationPixels)
+ {
+ Guard.NotNull(configuration, nameof(configuration));
+ Guard.DestinationShouldNotBeTooShort(sourcePixels, destinationPixels, nameof(destinationPixels));
+
+ ref La32 sourceRef = ref MemoryMarshal.GetReference(sourcePixels);
+ ref Abgr32 destRef = ref MemoryMarshal.GetReference(destinationPixels);
+
+ for (int i = 0; i < sourcePixels.Length; i++)
+ {
+ ref La32 sp = ref Unsafe.Add(ref sourceRef, i);
+ ref Abgr32 dp = ref Unsafe.Add(ref destRef, i);
+
+ dp.FromLa32(sp);
+ }
+ }
+ ///
public override void ToBgr24(
Configuration configuration,
ReadOnlySpan sourcePixels,
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Rgb24.PixelOperations.Generated.cs b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Rgb24.PixelOperations.Generated.cs
index 2fe7f3c20..75f677cdd 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Rgb24.PixelOperations.Generated.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Rgb24.PixelOperations.Generated.cs
@@ -112,6 +112,33 @@ namespace SixLabors.ImageSharp.PixelFormats
PixelConverter.FromArgb32.ToRgb24(source, dest);
}
///
+ public override void ToAbgr32(
+ Configuration configuration,
+ ReadOnlySpan sourcePixels,
+ Span destinationPixels)
+ {
+ Guard.NotNull(configuration, nameof(configuration));
+ Guard.DestinationShouldNotBeTooShort(sourcePixels, destinationPixels, nameof(destinationPixels));
+
+ ReadOnlySpan source = MemoryMarshal.Cast(sourcePixels);
+ Span dest = MemoryMarshal.Cast(destinationPixels);
+ PixelConverter.FromRgb24.ToAbgr32(source, dest);
+ }
+
+ ///
+ public override void FromAbgr32(
+ Configuration configuration,
+ ReadOnlySpan sourcePixels,
+ Span destinationPixels)
+ {
+ Guard.NotNull(configuration, nameof(configuration));
+ Guard.DestinationShouldNotBeTooShort(sourcePixels, destinationPixels, nameof(destinationPixels));
+
+ ReadOnlySpan source = MemoryMarshal.Cast(sourcePixels);
+ Span dest = MemoryMarshal.Cast(destinationPixels);
+ PixelConverter.FromAbgr32.ToRgb24(source, dest);
+ }
+ ///
public override void ToBgra32(
Configuration configuration,
ReadOnlySpan sourcePixels,
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Rgb48.PixelOperations.Generated.cs b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Rgb48.PixelOperations.Generated.cs
index 031008fe1..22b96fd5a 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Rgb48.PixelOperations.Generated.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Rgb48.PixelOperations.Generated.cs
@@ -59,6 +59,26 @@ namespace SixLabors.ImageSharp.PixelFormats
}
}
///
+ public override void ToAbgr32(
+ Configuration configuration,
+ ReadOnlySpan sourcePixels,
+ Span destinationPixels)
+ {
+ Guard.NotNull(configuration, nameof(configuration));
+ Guard.DestinationShouldNotBeTooShort(sourcePixels, destinationPixels, nameof(destinationPixels));
+
+ ref Rgb48 sourceRef = ref MemoryMarshal.GetReference(sourcePixels);
+ ref Abgr32 destRef = ref MemoryMarshal.GetReference(destinationPixels);
+
+ for (int i = 0; i < sourcePixels.Length; i++)
+ {
+ ref Rgb48 sp = ref Unsafe.Add(ref sourceRef, i);
+ ref Abgr32 dp = ref Unsafe.Add(ref destRef, i);
+
+ dp.FromRgb48(sp);
+ }
+ }
+ ///
public override void ToBgr24(
Configuration configuration,
ReadOnlySpan sourcePixels,
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Rgba32.PixelOperations.Generated.cs b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Rgba32.PixelOperations.Generated.cs
index 16f96d2da..093182c82 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Rgba32.PixelOperations.Generated.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Rgba32.PixelOperations.Generated.cs
@@ -66,6 +66,33 @@ namespace SixLabors.ImageSharp.PixelFormats
PixelConverter.FromArgb32.ToRgba32(source, dest);
}
///
+ public override void ToAbgr32(
+ Configuration configuration,
+ ReadOnlySpan sourcePixels,
+ Span destinationPixels)
+ {
+ Guard.NotNull(configuration, nameof(configuration));
+ Guard.DestinationShouldNotBeTooShort(sourcePixels, destinationPixels, nameof(destinationPixels));
+
+ ReadOnlySpan source = MemoryMarshal.Cast(sourcePixels);
+ Span dest = MemoryMarshal.Cast(destinationPixels);
+ PixelConverter.FromRgba32.ToAbgr32(source, dest);
+ }
+
+ ///
+ public override void FromAbgr32(
+ Configuration configuration,
+ ReadOnlySpan sourcePixels,
+ Span destinationPixels)
+ {
+ Guard.NotNull(configuration, nameof(configuration));
+ Guard.DestinationShouldNotBeTooShort(sourcePixels, destinationPixels, nameof(destinationPixels));
+
+ ReadOnlySpan source = MemoryMarshal.Cast(sourcePixels);
+ Span dest = MemoryMarshal.Cast(destinationPixels);
+ PixelConverter.FromAbgr32.ToRgba32(source, dest);
+ }
+ ///
public override void ToBgra32(
Configuration configuration,
ReadOnlySpan sourcePixels,
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Rgba64.PixelOperations.Generated.cs b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Rgba64.PixelOperations.Generated.cs
index 1f1571e91..ce1b53e66 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Rgba64.PixelOperations.Generated.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/PixelOperations/Generated/Rgba64.PixelOperations.Generated.cs
@@ -59,6 +59,26 @@ namespace SixLabors.ImageSharp.PixelFormats
}
}
///
+ public override void ToAbgr32(
+ Configuration configuration,
+ ReadOnlySpan sourcePixels,
+ Span destinationPixels)
+ {
+ Guard.NotNull(configuration, nameof(configuration));
+ Guard.DestinationShouldNotBeTooShort(sourcePixels, destinationPixels, nameof(destinationPixels));
+
+ ref Rgba64 sourceRef = ref MemoryMarshal.GetReference(sourcePixels);
+ ref Abgr32 destRef = ref MemoryMarshal.GetReference(destinationPixels);
+
+ for (int i = 0; i < sourcePixels.Length; i++)
+ {
+ ref Rgba64 sp = ref Unsafe.Add(ref sourceRef, i);
+ ref Abgr32 dp = ref Unsafe.Add(ref destRef, i);
+
+ dp.FromRgba64(sp);
+ }
+ }
+ ///
public override void ToBgr24(
Configuration configuration,
ReadOnlySpan sourcePixels,