diff --git a/src/ImageSharp/PixelFormats/PixelColorType.cs b/src/ImageSharp/PixelFormats/PixelColorType.cs
new file mode 100644
index 0000000000..9ac2c308c2
--- /dev/null
+++ b/src/ImageSharp/PixelFormats/PixelColorType.cs
@@ -0,0 +1,46 @@
+// Copyright (c) Six Labors.
+// Licensed under the Six Labors Split License.
+
+namespace SixLabors.ImageSharp.PixelFormats;
+
+///
+/// Represents the color type and format of a pixel.
+///
+[Flags]
+public enum PixelColorType
+{
+ ///
+ /// Represents the Red component of the color.
+ ///
+ Red = 1 << 0,
+
+ ///
+ /// Represents the Green component of the color.
+ ///
+ Green = 1 << 1,
+
+ ///
+ /// Represents the Blue component of the color.
+ ///
+ Blue = 1 << 2,
+
+ ///
+ /// Represents the Alpha component of the color for transparency.
+ ///
+ Alpha = 1 << 3,
+
+ ///
+ /// Indicates that the color is in grayscale.
+ ///
+ Grayscale = 1 << 4,
+
+ ///
+ /// Indicates that the color is in RGB (Red, Green, Blue) format.
+ ///
+ RGB = Red | Green | Blue | (1 << 5),
+
+ ///
+ /// Indicates that the color is in BGR (Blue, Green, Red) format.
+ ///
+ BGR = Blue | Green | Red | (1 << 6)
+}
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/A8.cs b/src/ImageSharp/PixelFormats/PixelImplementations/A8.cs
index abae4f246f..23dae82abe 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/A8.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/A8.cs
@@ -56,7 +56,11 @@ public partial struct A8 : IPixel, IPackedVector
public static bool operator !=(A8 left, A8 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(1, 8), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(1, 8),
+ PixelColorType.Alpha,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/Abgr32.cs b/src/ImageSharp/PixelFormats/PixelImplementations/Abgr32.cs
index e1399f05c0..742f27cc02 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/Abgr32.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/Abgr32.cs
@@ -168,7 +168,11 @@ public partial struct Abgr32 : IPixel, IPackedVector
public static bool operator !=(Abgr32 left, Abgr32 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(4, 8, 8, 8, 8), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(4, 8, 8, 8, 8),
+ PixelColorType.Alpha | PixelColorType.BGR,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/Argb32.cs b/src/ImageSharp/PixelFormats/PixelImplementations/Argb32.cs
index 2b7bcf9133..7a8ee2a63a 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/Argb32.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/Argb32.cs
@@ -168,7 +168,11 @@ public partial struct Argb32 : IPixel, IPackedVector
public static bool operator !=(Argb32 left, Argb32 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(4, 8, 8, 8, 8), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(4, 8, 8, 8, 8),
+ PixelColorType.Alpha | PixelColorType.RGB,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/Bgr24.cs b/src/ImageSharp/PixelFormats/PixelImplementations/Bgr24.cs
index c9c3246807..bdf7d1a7e2 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/Bgr24.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/Bgr24.cs
@@ -72,7 +72,11 @@ public partial struct Bgr24 : IPixel
public static bool operator !=(Bgr24 left, Bgr24 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(3, 8, 8, 8), PixelAlphaRepresentation.None);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(3, 8, 8, 8),
+ PixelColorType.BGR,
+ PixelAlphaRepresentation.None);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/Bgr565.cs b/src/ImageSharp/PixelFormats/PixelImplementations/Bgr565.cs
index d020cf0256..0874eb8251 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/Bgr565.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/Bgr565.cs
@@ -60,7 +60,11 @@ public partial struct Bgr565 : IPixel, IPackedVector
public static bool operator !=(Bgr565 left, Bgr565 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(3, 5, 6, 5), PixelAlphaRepresentation.None);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(3, 5, 6, 5),
+ PixelColorType.BGR,
+ PixelAlphaRepresentation.None);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/Bgra32.cs b/src/ImageSharp/PixelFormats/PixelImplementations/Bgra32.cs
index b3a96523ee..f508463574 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/Bgra32.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/Bgra32.cs
@@ -121,7 +121,11 @@ public partial struct Bgra32 : IPixel, IPackedVector
public static bool operator !=(Bgra32 left, Bgra32 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(4, 8, 8, 8, 8), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(4, 8, 8, 8, 8),
+ PixelColorType.BGR | PixelColorType.Alpha,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/Bgra4444.cs b/src/ImageSharp/PixelFormats/PixelImplementations/Bgra4444.cs
index 510d6666f7..4bb3f8a0e8 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/Bgra4444.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/Bgra4444.cs
@@ -58,7 +58,11 @@ public partial struct Bgra4444 : IPixel, IPackedVector
public static bool operator !=(Bgra4444 left, Bgra4444 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(4, 4, 4, 4, 4), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(4, 4, 4, 4, 4),
+ PixelColorType.BGR | PixelColorType.Alpha,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/Bgra5551.cs b/src/ImageSharp/PixelFormats/PixelImplementations/Bgra5551.cs
index 68dbd9544e..d57545deea 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/Bgra5551.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/Bgra5551.cs
@@ -61,7 +61,11 @@ public partial struct Bgra5551 : IPixel, IPackedVector
public static bool operator !=(Bgra5551 left, Bgra5551 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(4, 5, 5, 5, 1), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(4, 5, 5, 5, 1),
+ PixelColorType.BGR | PixelColorType.Alpha,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/Byte4.cs b/src/ImageSharp/PixelFormats/PixelImplementations/Byte4.cs
index fbe7a0c52f..d8f1dd0acb 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/Byte4.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/Byte4.cs
@@ -61,7 +61,11 @@ public partial struct Byte4 : IPixel, IPackedVector
public static bool operator !=(Byte4 left, Byte4 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(4, 8, 8, 8, 8), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(4, 8, 8, 8, 8),
+ PixelColorType.RGB | PixelColorType.Alpha,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/HalfSingle.cs b/src/ImageSharp/PixelFormats/PixelImplementations/HalfSingle.cs
index aca64ae7a0..01ae9fc5f5 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/HalfSingle.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/HalfSingle.cs
@@ -46,7 +46,11 @@ public partial struct HalfSingle : IPixel, IPackedVector
public static bool operator !=(HalfSingle left, HalfSingle right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(1, 16), PixelAlphaRepresentation.None);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(1, 16),
+ PixelColorType.Red,
+ PixelAlphaRepresentation.None);
///
public PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/HalfVector2.cs b/src/ImageSharp/PixelFormats/PixelImplementations/HalfVector2.cs
index 5a25d523bb..d591dd8550 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/HalfVector2.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/HalfVector2.cs
@@ -53,7 +53,11 @@ public partial struct HalfVector2 : IPixel, IPackedVector
public static bool operator !=(HalfVector2 left, HalfVector2 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(2, 16, 16), PixelAlphaRepresentation.None);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(2, 16, 16),
+ PixelColorType.Red | PixelColorType.Green,
+ PixelAlphaRepresentation.None);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/HalfVector4.cs b/src/ImageSharp/PixelFormats/PixelImplementations/HalfVector4.cs
index 7ad7b07f40..ca6bff2305 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/HalfVector4.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/HalfVector4.cs
@@ -58,7 +58,11 @@ public partial struct HalfVector4 : IPixel, IPackedVector
public static bool operator !=(HalfVector4 left, HalfVector4 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(4, 16, 16, 16, 16), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(4, 16, 16, 16, 16),
+ PixelColorType.RGB | PixelColorType.Alpha,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/L16.cs b/src/ImageSharp/PixelFormats/PixelImplementations/L16.cs
index 0c58fb1fda..8522da3fbc 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/L16.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/L16.cs
@@ -48,7 +48,11 @@ public partial struct L16 : IPixel, IPackedVector
public static bool operator !=(L16 left, L16 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(1, 16), PixelAlphaRepresentation.None);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(1, 16),
+ PixelColorType.Grayscale,
+ PixelAlphaRepresentation.None);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/L8.cs b/src/ImageSharp/PixelFormats/PixelImplementations/L8.cs
index 2cd8b20e77..706fc11014 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/L8.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/L8.cs
@@ -49,7 +49,11 @@ public partial struct L8 : IPixel, IPackedVector
public static bool operator !=(L8 left, L8 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(1, 8), PixelAlphaRepresentation.None);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(1, 8),
+ PixelColorType.Grayscale,
+ PixelAlphaRepresentation.None);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/La16.cs b/src/ImageSharp/PixelFormats/PixelImplementations/La16.cs
index b811df4b4d..e306731534 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/La16.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/La16.cs
@@ -72,7 +72,11 @@ public partial struct La16 : IPixel, IPackedVector
public static bool operator !=(La16 left, La16 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(2, 8, 8), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(2, 8, 8),
+ PixelColorType.Grayscale | PixelColorType.Alpha,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/La32.cs b/src/ImageSharp/PixelFormats/PixelImplementations/La32.cs
index e6a63f5ec1..867bfacd36 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/La32.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/La32.cs
@@ -74,7 +74,11 @@ public partial struct La32 : IPixel, IPackedVector
public static bool operator !=(La32 left, La32 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(2, 16, 16), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(2, 16, 16),
+ PixelColorType.Grayscale | PixelColorType.Alpha,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/NormalizedByte2.cs b/src/ImageSharp/PixelFormats/PixelImplementations/NormalizedByte2.cs
index f7427e65ce..c5eb2c2ded 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/NormalizedByte2.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/NormalizedByte2.cs
@@ -61,7 +61,11 @@ public partial struct NormalizedByte2 : IPixel, IPackedVector !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(2, 8, 8), PixelAlphaRepresentation.None);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(2, 8, 8),
+ PixelColorType.Red | PixelColorType.Green,
+ PixelAlphaRepresentation.None);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/NormalizedByte4.cs b/src/ImageSharp/PixelFormats/PixelImplementations/NormalizedByte4.cs
index beeae655a0..6cf92688ed 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/NormalizedByte4.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/NormalizedByte4.cs
@@ -63,7 +63,11 @@ public partial struct NormalizedByte4 : IPixel, IPackedVector !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(4, 8, 8, 8, 8), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(4, 8, 8, 8, 8),
+ PixelColorType.RGB | PixelColorType.Alpha,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/NormalizedShort2.cs b/src/ImageSharp/PixelFormats/PixelImplementations/NormalizedShort2.cs
index 8152c89d37..03fa2737ee 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/NormalizedShort2.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/NormalizedShort2.cs
@@ -62,7 +62,11 @@ public partial struct NormalizedShort2 : IPixel, IPackedVector
public static bool operator !=(NormalizedShort2 left, NormalizedShort2 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(2, 16, 16), PixelAlphaRepresentation.None);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(2, 16, 16),
+ PixelColorType.Red | PixelColorType.Green,
+ PixelAlphaRepresentation.None);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/NormalizedShort4.cs b/src/ImageSharp/PixelFormats/PixelImplementations/NormalizedShort4.cs
index 3f37cb80f7..89ba2a23ba 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/NormalizedShort4.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/NormalizedShort4.cs
@@ -64,7 +64,11 @@ public partial struct NormalizedShort4 : IPixel, IPackedVector
public static bool operator !=(NormalizedShort4 left, NormalizedShort4 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(4, 16, 16, 16, 16), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(4, 16, 16, 16, 16),
+ PixelColorType.RGB | PixelColorType.Alpha,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/Rg32.cs b/src/ImageSharp/PixelFormats/PixelImplementations/Rg32.cs
index 594bdd9a13..8f2e198405 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/Rg32.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/Rg32.cs
@@ -58,7 +58,11 @@ public partial struct Rg32 : IPixel, IPackedVector
public static bool operator !=(Rg32 left, Rg32 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(2, 16, 16), PixelAlphaRepresentation.None);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(2, 16, 16),
+ PixelColorType.Red | PixelColorType.Green,
+ PixelAlphaRepresentation.None);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/Rgb24.cs b/src/ImageSharp/PixelFormats/PixelImplementations/Rgb24.cs
index 8d0c7cd48c..008de06bfb 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/Rgb24.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/Rgb24.cs
@@ -91,7 +91,11 @@ public partial struct Rgb24 : IPixel
public static bool operator !=(Rgb24 left, Rgb24 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(3, 8, 8, 8), PixelAlphaRepresentation.None);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(3, 8, 8, 8),
+ PixelColorType.RGB,
+ PixelAlphaRepresentation.None);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/Rgb48.cs b/src/ImageSharp/PixelFormats/PixelImplementations/Rgb48.cs
index f7aac32f42..ae4d6dc011 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/Rgb48.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/Rgb48.cs
@@ -70,7 +70,11 @@ public partial struct Rgb48 : IPixel
public static bool operator !=(Rgb48 left, Rgb48 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(3, 16, 16, 16), PixelAlphaRepresentation.None);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(3, 16, 16, 16),
+ PixelColorType.RGB,
+ PixelAlphaRepresentation.None);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/Rgba1010102.cs b/src/ImageSharp/PixelFormats/PixelImplementations/Rgba1010102.cs
index 84482a7aaa..ac1eedb072 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/Rgba1010102.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/Rgba1010102.cs
@@ -61,7 +61,11 @@ public partial struct Rgba1010102 : IPixel, IPackedVector
public static bool operator !=(Rgba1010102 left, Rgba1010102 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(4, 10, 10, 10, 2), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(4, 10, 10, 10, 2),
+ PixelColorType.RGB | PixelColorType.Alpha,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/Rgba32.cs b/src/ImageSharp/PixelFormats/PixelImplementations/Rgba32.cs
index f391e64740..8b2a078db6 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/Rgba32.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/Rgba32.cs
@@ -271,7 +271,11 @@ public partial struct Rgba32 : IPixel, IPackedVector
}
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(4, 8, 8, 8, 8), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(4, 8, 8, 8, 8),
+ PixelColorType.RGB | PixelColorType.Alpha,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/Rgba64.cs b/src/ImageSharp/PixelFormats/PixelImplementations/Rgba64.cs
index 47062779ba..b71ec5f353 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/Rgba64.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/Rgba64.cs
@@ -191,7 +191,11 @@ public partial struct Rgba64 : IPixel, IPackedVector
public static bool operator !=(Rgba64 left, Rgba64 right) => left.PackedValue != right.PackedValue;
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(4, 16, 16, 16, 16), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(4, 16, 16, 16, 16),
+ PixelColorType.RGB | PixelColorType.Alpha,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/RgbaVector.cs b/src/ImageSharp/PixelFormats/PixelImplementations/RgbaVector.cs
index ce1c6d5729..cd61b13b24 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/RgbaVector.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/RgbaVector.cs
@@ -97,7 +97,11 @@ public partial struct RgbaVector : IPixel
public static RgbaVector FromHex(string hex) => Color.ParseHex(hex).ToPixel();
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(4, 32, 32, 32, 32), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(4, 32, 32, 32, 32),
+ PixelColorType.RGB | PixelColorType.Alpha,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/Short2.cs b/src/ImageSharp/PixelFormats/PixelImplementations/Short2.cs
index 786c98ee46..c8819337ed 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/Short2.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/Short2.cs
@@ -65,7 +65,11 @@ public partial struct Short2 : IPixel, IPackedVector
public static bool operator !=(Short2 left, Short2 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(2, 16, 16), PixelAlphaRepresentation.None);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(2, 16, 16),
+ PixelColorType.Red | PixelColorType.Green,
+ PixelAlphaRepresentation.None);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelImplementations/Short4.cs b/src/ImageSharp/PixelFormats/PixelImplementations/Short4.cs
index 890e66299a..cfd9ce0bfb 100644
--- a/src/ImageSharp/PixelFormats/PixelImplementations/Short4.cs
+++ b/src/ImageSharp/PixelFormats/PixelImplementations/Short4.cs
@@ -67,7 +67,11 @@ public partial struct Short4 : IPixel, IPackedVector
public static bool operator !=(Short4 left, Short4 right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(4, 16, 16, 16, 16), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(4, 16, 16, 16, 16),
+ PixelColorType.RGB | PixelColorType.Alpha,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new PixelOperations();
diff --git a/src/ImageSharp/PixelFormats/PixelTypeInfo.cs b/src/ImageSharp/PixelFormats/PixelTypeInfo.cs
index e209b21e12..81c70a18f7 100644
--- a/src/ImageSharp/PixelFormats/PixelTypeInfo.cs
+++ b/src/ImageSharp/PixelFormats/PixelTypeInfo.cs
@@ -23,10 +23,15 @@ public readonly struct PixelTypeInfo(int bitsPerPixel)
public int BitsPerPixel { get; init; } = bitsPerPixel;
///
- /// Gets the maximum precision of components within the pixel.
+ /// Gets the component bit depth and padding within the pixel.
///
public PixelComponentInfo? ComponentInfo { get; init; }
+ ///
+ /// Gets the pixel color type.
+ ///
+ public PixelColorType? ColorType { get; init; }
+
///
/// Gets the pixel alpha transparency behavior.
/// means unknown, unspecified.
@@ -38,16 +43,19 @@ public readonly struct PixelTypeInfo(int bitsPerPixel)
///
/// The type of pixel format.
/// The pixel component info.
+ /// The pixel color type.
/// The pixel alpha representation.
/// The .
public static PixelTypeInfo Create(
PixelComponentInfo info,
+ PixelColorType colorType,
PixelAlphaRepresentation alphaRepresentation)
where TPixel : unmanaged, IPixel
=> new()
{
BitsPerPixel = Unsafe.SizeOf() * 8,
ComponentInfo = info,
+ ColorType = colorType,
AlphaRepresentation = alphaRepresentation
};
}
diff --git a/tests/ImageSharp.Tests/Color/RgbaDouble.cs b/tests/ImageSharp.Tests/Color/RgbaDouble.cs
index 476ff03365..fdd736930d 100644
--- a/tests/ImageSharp.Tests/Color/RgbaDouble.cs
+++ b/tests/ImageSharp.Tests/Color/RgbaDouble.cs
@@ -77,7 +77,11 @@ public partial struct RgbaDouble(double r, double g, double b, double a = 1) : I
public static bool operator !=(RgbaDouble left, RgbaDouble right) => !left.Equals(right);
///
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(4, 64, 64, 64, 64), PixelAlphaRepresentation.Unassociated);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(4, 64, 64, 64, 64),
+ PixelColorType.RGB | PixelColorType.Alpha,
+ PixelAlphaRepresentation.Unassociated);
///
public readonly PixelOperations CreatePixelOperations() => new();
diff --git a/tests/ImageSharp.Tests/PixelFormats/A8Tests.cs b/tests/ImageSharp.Tests/PixelFormats/A8Tests.cs
index ef99db4986..b7a86d488c 100644
--- a/tests/ImageSharp.Tests/PixelFormats/A8Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/A8Tests.cs
@@ -116,6 +116,7 @@ public class A8Tests
PixelTypeInfo info = A8.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.Unassociated, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.Alpha, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(1, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/Abgr32Tests.cs b/tests/ImageSharp.Tests/PixelFormats/Abgr32Tests.cs
index de6f519e1c..7f584b1bf5 100644
--- a/tests/ImageSharp.Tests/PixelFormats/Abgr32Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/Abgr32Tests.cs
@@ -151,6 +151,7 @@ public class Abgr32Tests
PixelTypeInfo info = Abgr32.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.Unassociated, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.Alpha | PixelColorType.BGR, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(4, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/Argb32Tests.cs b/tests/ImageSharp.Tests/PixelFormats/Argb32Tests.cs
index 29349b8521..42b940845d 100644
--- a/tests/ImageSharp.Tests/PixelFormats/Argb32Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/Argb32Tests.cs
@@ -149,6 +149,7 @@ public class Argb32Tests
PixelTypeInfo info = Argb32.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.Unassociated, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.Alpha | PixelColorType.RGB, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(4, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/Bgr24Tests.cs b/tests/ImageSharp.Tests/PixelFormats/Bgr24Tests.cs
index 519aeb6c57..239e883960 100644
--- a/tests/ImageSharp.Tests/PixelFormats/Bgr24Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/Bgr24Tests.cs
@@ -134,6 +134,7 @@ public class Bgr24Tests
PixelTypeInfo info = Bgr24.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.None, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.BGR, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(3, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/Bgr565Tests.cs b/tests/ImageSharp.Tests/PixelFormats/Bgr565Tests.cs
index 16e225a9bf..2ad4f4cf7c 100644
--- a/tests/ImageSharp.Tests/PixelFormats/Bgr565Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/Bgr565Tests.cs
@@ -256,6 +256,7 @@ public class Bgr565Tests
PixelTypeInfo info = Bgr565.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.None, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.BGR, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(3, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/Bgra32Tests.cs b/tests/ImageSharp.Tests/PixelFormats/Bgra32Tests.cs
index c5b4325c91..df8d1199f2 100644
--- a/tests/ImageSharp.Tests/PixelFormats/Bgra32Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/Bgra32Tests.cs
@@ -151,6 +151,7 @@ public class Bgra32Tests
PixelTypeInfo info = Bgra32.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.Unassociated, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.BGR | PixelColorType.Alpha, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(4, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/Bgra4444Tests.cs b/tests/ImageSharp.Tests/PixelFormats/Bgra4444Tests.cs
index f2e9a22910..ef587f3011 100644
--- a/tests/ImageSharp.Tests/PixelFormats/Bgra4444Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/Bgra4444Tests.cs
@@ -252,6 +252,7 @@ public class Bgra4444Tests
PixelTypeInfo info = Bgra4444.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.Unassociated, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.BGR | PixelColorType.Alpha, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(4, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/Bgra5551Tests.cs b/tests/ImageSharp.Tests/PixelFormats/Bgra5551Tests.cs
index 03b4a41c67..5140cfda1a 100644
--- a/tests/ImageSharp.Tests/PixelFormats/Bgra5551Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/Bgra5551Tests.cs
@@ -278,6 +278,7 @@ public class Bgra5551Tests
PixelTypeInfo info = Bgra5551.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.Unassociated, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.BGR | PixelColorType.Alpha, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(4, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/Byte4Tests.cs b/tests/ImageSharp.Tests/PixelFormats/Byte4Tests.cs
index 1434d7d93f..a61318db7c 100644
--- a/tests/ImageSharp.Tests/PixelFormats/Byte4Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/Byte4Tests.cs
@@ -245,6 +245,7 @@ public class Byte4Tests
PixelTypeInfo info = Byte4.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.Unassociated, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.RGB | PixelColorType.Alpha, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(4, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/HalfSingleTests.cs b/tests/ImageSharp.Tests/PixelFormats/HalfSingleTests.cs
index dbd1f6917e..3e84da7231 100644
--- a/tests/ImageSharp.Tests/PixelFormats/HalfSingleTests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/HalfSingleTests.cs
@@ -74,6 +74,7 @@ public class HalfSingleTests
PixelTypeInfo info = HalfSingle.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.None, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.Red, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(1, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/HalfVector2Tests.cs b/tests/ImageSharp.Tests/PixelFormats/HalfVector2Tests.cs
index 710135ed6e..04e3ee35fe 100644
--- a/tests/ImageSharp.Tests/PixelFormats/HalfVector2Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/HalfVector2Tests.cs
@@ -96,6 +96,7 @@ public class HalfVector2Tests
PixelTypeInfo info = HalfVector2.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.None, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.Red | PixelColorType.Green, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(2, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/HalfVector4Tests.cs b/tests/ImageSharp.Tests/PixelFormats/HalfVector4Tests.cs
index 3e3f6a2ca9..e8420ddd0d 100644
--- a/tests/ImageSharp.Tests/PixelFormats/HalfVector4Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/HalfVector4Tests.cs
@@ -87,6 +87,7 @@ public class HalfVector4Tests
PixelTypeInfo info = HalfVector4.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.Unassociated, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.RGB | PixelColorType.Alpha, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(4, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/L16Tests.cs b/tests/ImageSharp.Tests/PixelFormats/L16Tests.cs
index 3a8239923e..337d02084a 100644
--- a/tests/ImageSharp.Tests/PixelFormats/L16Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/L16Tests.cs
@@ -166,6 +166,7 @@ public class L16Tests
PixelTypeInfo info = L16.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.None, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.Grayscale, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(1, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/L8Tests.cs b/tests/ImageSharp.Tests/PixelFormats/L8Tests.cs
index 631a0e2346..81f4d61fba 100644
--- a/tests/ImageSharp.Tests/PixelFormats/L8Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/L8Tests.cs
@@ -261,6 +261,7 @@ public class L8Tests
PixelTypeInfo info = L8.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.None, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.Grayscale, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(1, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/La16Tests.cs b/tests/ImageSharp.Tests/PixelFormats/La16Tests.cs
index 9fa0e3263b..612d0f81af 100644
--- a/tests/ImageSharp.Tests/PixelFormats/La16Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/La16Tests.cs
@@ -265,6 +265,7 @@ public class La16Tests
PixelTypeInfo info = La16.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.Unassociated, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.Grayscale | PixelColorType.Alpha, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(2, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/La32Tests.cs b/tests/ImageSharp.Tests/PixelFormats/La32Tests.cs
index 089c2076bd..f55707c05b 100644
--- a/tests/ImageSharp.Tests/PixelFormats/La32Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/La32Tests.cs
@@ -172,6 +172,7 @@ public class La32Tests
PixelTypeInfo info = La32.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.Unassociated, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.Grayscale | PixelColorType.Alpha, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(2, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/NormalizedByte2Tests.cs b/tests/ImageSharp.Tests/PixelFormats/NormalizedByte2Tests.cs
index 9f24346a0d..89c0ae69f7 100644
--- a/tests/ImageSharp.Tests/PixelFormats/NormalizedByte2Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/NormalizedByte2Tests.cs
@@ -88,6 +88,7 @@ public class NormalizedByte2Tests
PixelTypeInfo info = NormalizedByte2.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.None, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.Red | PixelColorType.Green, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(2, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/NormalizedByte4Tests.cs b/tests/ImageSharp.Tests/PixelFormats/NormalizedByte4Tests.cs
index 63bb9d5f52..297438c65e 100644
--- a/tests/ImageSharp.Tests/PixelFormats/NormalizedByte4Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/NormalizedByte4Tests.cs
@@ -238,6 +238,7 @@ public class NormalizedByte4Tests
PixelTypeInfo info = NormalizedByte4.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.Unassociated, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.RGB | PixelColorType.Alpha, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(4, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/NormalizedShort2Tests.cs b/tests/ImageSharp.Tests/PixelFormats/NormalizedShort2Tests.cs
index f262ce177b..4b912d8667 100644
--- a/tests/ImageSharp.Tests/PixelFormats/NormalizedShort2Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/NormalizedShort2Tests.cs
@@ -92,6 +92,7 @@ public class NormalizedShort2Tests
PixelTypeInfo info = NormalizedShort2.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.None, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.Red | PixelColorType.Green, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(2, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/NormalizedShort4Tests.cs b/tests/ImageSharp.Tests/PixelFormats/NormalizedShort4Tests.cs
index 05058ae4d8..0d97658882 100644
--- a/tests/ImageSharp.Tests/PixelFormats/NormalizedShort4Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/NormalizedShort4Tests.cs
@@ -239,6 +239,7 @@ public class NormalizedShort4Tests
PixelTypeInfo info = NormalizedShort4.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.Unassociated, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.RGB | PixelColorType.Alpha, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(4, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/Rg32Tests.cs b/tests/ImageSharp.Tests/PixelFormats/Rg32Tests.cs
index 9ab1ec963c..fac7678124 100644
--- a/tests/ImageSharp.Tests/PixelFormats/Rg32Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/Rg32Tests.cs
@@ -90,6 +90,7 @@ public class Rg32Tests
PixelTypeInfo info = Rg32.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.None, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.Red | PixelColorType.Green, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(2, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/Rgb24Tests.cs b/tests/ImageSharp.Tests/PixelFormats/Rgb24Tests.cs
index ab4269d009..385126a65b 100644
--- a/tests/ImageSharp.Tests/PixelFormats/Rgb24Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/Rgb24Tests.cs
@@ -137,6 +137,7 @@ public class Rgb24Tests
PixelTypeInfo info = Rgb24.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.None, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.RGB, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(3, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/Rgb48Tests.cs b/tests/ImageSharp.Tests/PixelFormats/Rgb48Tests.cs
index faf9bdb3c9..625a9187fe 100644
--- a/tests/ImageSharp.Tests/PixelFormats/Rgb48Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/Rgb48Tests.cs
@@ -82,6 +82,7 @@ public class Rgb48Tests
PixelTypeInfo info = Rgb48.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.None, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.RGB, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(3, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/Rgba1010102Tests.cs b/tests/ImageSharp.Tests/PixelFormats/Rgba1010102Tests.cs
index 7cf8ced45f..a8243064d3 100644
--- a/tests/ImageSharp.Tests/PixelFormats/Rgba1010102Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/Rgba1010102Tests.cs
@@ -253,6 +253,7 @@ public class Rgba1010102Tests
PixelTypeInfo info = Rgba1010102.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.Unassociated, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.RGB | PixelColorType.Alpha, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(4, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/Rgba32Tests.cs b/tests/ImageSharp.Tests/PixelFormats/Rgba32Tests.cs
index 9b96aeb7bb..35fab151c7 100644
--- a/tests/ImageSharp.Tests/PixelFormats/Rgba32Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/Rgba32Tests.cs
@@ -313,6 +313,7 @@ public class Rgba32Tests
PixelTypeInfo info = Rgba32.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.Unassociated, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.RGB | PixelColorType.Alpha, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(4, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/Rgba64Tests.cs b/tests/ImageSharp.Tests/PixelFormats/Rgba64Tests.cs
index 49336400cf..4f335b1e81 100644
--- a/tests/ImageSharp.Tests/PixelFormats/Rgba64Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/Rgba64Tests.cs
@@ -315,6 +315,7 @@ public class Rgba64Tests
PixelTypeInfo info = Rgba64.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.Unassociated, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.RGB | PixelColorType.Alpha, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(4, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/RgbaVectorTests.cs b/tests/ImageSharp.Tests/PixelFormats/RgbaVectorTests.cs
index 28ee5ace57..b263bf8ea7 100644
--- a/tests/ImageSharp.Tests/PixelFormats/RgbaVectorTests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/RgbaVectorTests.cs
@@ -211,6 +211,7 @@ public class RgbaVectorTests
PixelTypeInfo info = RgbaVector.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.Unassociated, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.RGB | PixelColorType.Alpha, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(4, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/Short2Tests.cs b/tests/ImageSharp.Tests/PixelFormats/Short2Tests.cs
index d709b76059..1143925cb3 100644
--- a/tests/ImageSharp.Tests/PixelFormats/Short2Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/Short2Tests.cs
@@ -167,6 +167,7 @@ public class Short2Tests
PixelTypeInfo info = Short2.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.None, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.Red | PixelColorType.Green, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(2, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/PixelFormats/Short4Tests.cs b/tests/ImageSharp.Tests/PixelFormats/Short4Tests.cs
index 2b57603423..ab3cc3b6e5 100644
--- a/tests/ImageSharp.Tests/PixelFormats/Short4Tests.cs
+++ b/tests/ImageSharp.Tests/PixelFormats/Short4Tests.cs
@@ -220,6 +220,7 @@ public class Short4Tests
PixelTypeInfo info = Short4.GetPixelTypeInfo();
Assert.Equal(Unsafe.SizeOf() * 8, info.BitsPerPixel);
Assert.Equal(PixelAlphaRepresentation.Unassociated, info.AlphaRepresentation);
+ Assert.Equal(PixelColorType.RGB | PixelColorType.Alpha, info.ColorType);
PixelComponentInfo componentInfo = info.ComponentInfo.Value;
Assert.Equal(4, componentInfo.ComponentCount);
diff --git a/tests/ImageSharp.Tests/TestFormat.cs b/tests/ImageSharp.Tests/TestFormat.cs
index 495f5f9f63..983cf4d46b 100644
--- a/tests/ImageSharp.Tests/TestFormat.cs
+++ b/tests/ImageSharp.Tests/TestFormat.cs
@@ -263,7 +263,11 @@ public class TestFormat : IImageFormatConfigurationModule, IImageFormat
public struct TestPixelForAgnosticDecode : IPixel
{
- public static PixelTypeInfo GetPixelTypeInfo() => PixelTypeInfo.Create(PixelComponentInfo.Create(2, 8, 8), PixelAlphaRepresentation.None);
+ public static PixelTypeInfo GetPixelTypeInfo()
+ => PixelTypeInfo.Create(
+ PixelComponentInfo.Create(2, 8, 8),
+ PixelColorType.Red | PixelColorType.Green,
+ PixelAlphaRepresentation.None);
public PixelOperations CreatePixelOperations() => new();