diff --git a/src/ImageSharp/Colors/Color.cs b/src/ImageSharp/Colors/Color.cs
index 8a869935c..1ad6f9a64 100644
--- a/src/ImageSharp/Colors/Color.cs
+++ b/src/ImageSharp/Colors/Color.cs
@@ -112,9 +112,6 @@ namespace ImageSharp
this.packedValue = packed;
}
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Gets or sets the red component.
///
@@ -248,6 +245,9 @@ namespace ImageSharp
return ColorBuilder.FromHex(hex);
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PackFromBytes(byte x, byte y, byte z, byte w)
diff --git a/src/ImageSharp/Colors/PackedPixel/Alpha8.cs b/src/ImageSharp/Colors/PackedPixel/Alpha8.cs
index 1181eb9e4..9a340544c 100644
--- a/src/ImageSharp/Colors/PackedPixel/Alpha8.cs
+++ b/src/ImageSharp/Colors/PackedPixel/Alpha8.cs
@@ -26,9 +26,6 @@ namespace ImageSharp
///
public byte PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Compares two objects for equality.
///
@@ -61,6 +58,9 @@ namespace ImageSharp
return left.PackedValue != right.PackedValue;
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PackFromVector4(Vector4 vector)
diff --git a/src/ImageSharp/Colors/PackedPixel/Argb.cs b/src/ImageSharp/Colors/PackedPixel/Argb.cs
index 1b97d2337..70fd7de8a 100644
--- a/src/ImageSharp/Colors/PackedPixel/Argb.cs
+++ b/src/ImageSharp/Colors/PackedPixel/Argb.cs
@@ -109,9 +109,6 @@ namespace ImageSharp
///
public uint PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Gets or sets the red component.
///
@@ -223,6 +220,9 @@ namespace ImageSharp
this.PackedValue = Pack(ref vector);
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
diff --git a/src/ImageSharp/Colors/PackedPixel/Bgr565.cs b/src/ImageSharp/Colors/PackedPixel/Bgr565.cs
index 41b2bdc2e..77d943478 100644
--- a/src/ImageSharp/Colors/PackedPixel/Bgr565.cs
+++ b/src/ImageSharp/Colors/PackedPixel/Bgr565.cs
@@ -39,9 +39,6 @@ namespace ImageSharp
///
public ushort PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Compares two objects for equality.
///
@@ -70,6 +67,9 @@ namespace ImageSharp
return left.PackedValue != right.PackedValue;
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
/// Expands the packed representation into a .
/// The vector components are typically expanded in least to greatest significance order.
diff --git a/src/ImageSharp/Colors/PackedPixel/Bgra4444.cs b/src/ImageSharp/Colors/PackedPixel/Bgra4444.cs
index 99659a36b..1346a54ef 100644
--- a/src/ImageSharp/Colors/PackedPixel/Bgra4444.cs
+++ b/src/ImageSharp/Colors/PackedPixel/Bgra4444.cs
@@ -38,9 +38,6 @@ namespace ImageSharp
///
public ushort PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Compares two objects for equality.
///
@@ -69,6 +66,9 @@ namespace ImageSharp
return left.PackedValue != right.PackedValue;
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
diff --git a/src/ImageSharp/Colors/PackedPixel/Bgra5551.cs b/src/ImageSharp/Colors/PackedPixel/Bgra5551.cs
index 86864fd48..7989804cf 100644
--- a/src/ImageSharp/Colors/PackedPixel/Bgra5551.cs
+++ b/src/ImageSharp/Colors/PackedPixel/Bgra5551.cs
@@ -40,9 +40,6 @@ namespace ImageSharp
///
public ushort PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Compares two objects for equality.
///
@@ -71,6 +68,9 @@ namespace ImageSharp
return left.PackedValue != right.PackedValue;
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
diff --git a/src/ImageSharp/Colors/PackedPixel/BulkPixelOperations{TColor}.cs b/src/ImageSharp/Colors/PackedPixel/BulkPixelOperations{TColor}.cs
index 31f872e42..986994af7 100644
--- a/src/ImageSharp/Colors/PackedPixel/BulkPixelOperations{TColor}.cs
+++ b/src/ImageSharp/Colors/PackedPixel/BulkPixelOperations{TColor}.cs
@@ -24,7 +24,7 @@ namespace ImageSharp
///
/// Gets the global instance for the pixel type
///
- public static BulkPixelOperations Instance { get; } = default(TColor).BulkOperations;
+ public static BulkPixelOperations Instance { get; } = default(TColor).CreateBulkOperations();
///
/// Bulk version of
diff --git a/src/ImageSharp/Colors/PackedPixel/Byte4.cs b/src/ImageSharp/Colors/PackedPixel/Byte4.cs
index 5712027d9..11ec5eaf4 100644
--- a/src/ImageSharp/Colors/PackedPixel/Byte4.cs
+++ b/src/ImageSharp/Colors/PackedPixel/Byte4.cs
@@ -41,9 +41,6 @@ namespace ImageSharp
///
public uint PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Compares two objects for equality.
///
@@ -72,6 +69,9 @@ namespace ImageSharp
return left.PackedValue != right.PackedValue;
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PackFromVector4(Vector4 vector)
diff --git a/src/ImageSharp/Colors/PackedPixel/HalfSingle.cs b/src/ImageSharp/Colors/PackedPixel/HalfSingle.cs
index 0bc82c3a6..4c785a863 100644
--- a/src/ImageSharp/Colors/PackedPixel/HalfSingle.cs
+++ b/src/ImageSharp/Colors/PackedPixel/HalfSingle.cs
@@ -36,9 +36,6 @@ namespace ImageSharp
///
public ushort PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Compares two objects for equality.
///
@@ -75,6 +72,9 @@ namespace ImageSharp
return left.PackedValue != right.PackedValue;
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
/// Expands the packed representation into a .
///
diff --git a/src/ImageSharp/Colors/PackedPixel/HalfVector2.cs b/src/ImageSharp/Colors/PackedPixel/HalfVector2.cs
index 68cb42735..d06ab6ba0 100644
--- a/src/ImageSharp/Colors/PackedPixel/HalfVector2.cs
+++ b/src/ImageSharp/Colors/PackedPixel/HalfVector2.cs
@@ -46,9 +46,6 @@ namespace ImageSharp
///
public uint PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Compares two objects for equality.
///
@@ -85,6 +82,9 @@ namespace ImageSharp
return !left.Equals(right);
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
/// Expands the packed representation into a .
///
diff --git a/src/ImageSharp/Colors/PackedPixel/HalfVector4.cs b/src/ImageSharp/Colors/PackedPixel/HalfVector4.cs
index c24553d3f..a5fa796e1 100644
--- a/src/ImageSharp/Colors/PackedPixel/HalfVector4.cs
+++ b/src/ImageSharp/Colors/PackedPixel/HalfVector4.cs
@@ -49,9 +49,6 @@ namespace ImageSharp
///
public ulong PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Compares two objects for equality.
///
@@ -88,6 +85,9 @@ namespace ImageSharp
return !left.Equals(right);
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PackFromVector4(Vector4 vector)
diff --git a/src/ImageSharp/Colors/PackedPixel/IPixel.cs b/src/ImageSharp/Colors/PackedPixel/IPixel.cs
index c17fe86cc..67e013a42 100644
--- a/src/ImageSharp/Colors/PackedPixel/IPixel.cs
+++ b/src/ImageSharp/Colors/PackedPixel/IPixel.cs
@@ -16,9 +16,11 @@ namespace ImageSharp
where TSelf : struct, IPixel
{
///
- /// Gets the instance for this pixel type.
+ /// Creates a instance for this pixel type.
+ /// This method is not intended to be consumed directly. Use instead.
///
- BulkPixelOperations BulkOperations { get; }
+ /// The instance.
+ BulkPixelOperations CreateBulkOperations();
}
///
diff --git a/src/ImageSharp/Colors/PackedPixel/NormalizedByte2.cs b/src/ImageSharp/Colors/PackedPixel/NormalizedByte2.cs
index d425806c2..56be64a86 100644
--- a/src/ImageSharp/Colors/PackedPixel/NormalizedByte2.cs
+++ b/src/ImageSharp/Colors/PackedPixel/NormalizedByte2.cs
@@ -51,9 +51,6 @@ namespace ImageSharp
///
public ushort PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Compares two objects for equality.
///
@@ -90,6 +87,9 @@ namespace ImageSharp
return left.PackedValue != right.PackedValue;
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
/// Expands the packed representation into a .
/// The vector components are typically expanded in least to greatest significance order.
diff --git a/src/ImageSharp/Colors/PackedPixel/NormalizedByte4.cs b/src/ImageSharp/Colors/PackedPixel/NormalizedByte4.cs
index 4511060e4..a1f9b8d84 100644
--- a/src/ImageSharp/Colors/PackedPixel/NormalizedByte4.cs
+++ b/src/ImageSharp/Colors/PackedPixel/NormalizedByte4.cs
@@ -53,9 +53,6 @@ namespace ImageSharp
///
public uint PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Compares two objects for equality.
///
@@ -92,6 +89,9 @@ namespace ImageSharp
return left.PackedValue != right.PackedValue;
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PackFromVector4(Vector4 vector)
diff --git a/src/ImageSharp/Colors/PackedPixel/NormalizedShort2.cs b/src/ImageSharp/Colors/PackedPixel/NormalizedShort2.cs
index 4bc7f9427..b34c1e88b 100644
--- a/src/ImageSharp/Colors/PackedPixel/NormalizedShort2.cs
+++ b/src/ImageSharp/Colors/PackedPixel/NormalizedShort2.cs
@@ -51,9 +51,6 @@ namespace ImageSharp
///
public uint PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Compares two objects for equality.
///
@@ -90,6 +87,9 @@ namespace ImageSharp
return !left.Equals(right);
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PackFromVector4(Vector4 vector)
diff --git a/src/ImageSharp/Colors/PackedPixel/NormalizedShort4.cs b/src/ImageSharp/Colors/PackedPixel/NormalizedShort4.cs
index c848b7236..f33ac25a6 100644
--- a/src/ImageSharp/Colors/PackedPixel/NormalizedShort4.cs
+++ b/src/ImageSharp/Colors/PackedPixel/NormalizedShort4.cs
@@ -53,9 +53,6 @@ namespace ImageSharp
///
public ulong PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Compares two objects for equality.
///
@@ -92,6 +89,9 @@ namespace ImageSharp
return !left.Equals(right);
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PackFromVector4(Vector4 vector)
diff --git a/src/ImageSharp/Colors/PackedPixel/Rg32.cs b/src/ImageSharp/Colors/PackedPixel/Rg32.cs
index 9eb2247c9..f8486f7f2 100644
--- a/src/ImageSharp/Colors/PackedPixel/Rg32.cs
+++ b/src/ImageSharp/Colors/PackedPixel/Rg32.cs
@@ -36,9 +36,6 @@ namespace ImageSharp
///
public uint PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Compares two objects for equality.
///
@@ -75,6 +72,9 @@ namespace ImageSharp
return left.PackedValue != right.PackedValue;
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
/// Expands the packed representation into a .
/// The vector components are typically expanded in least to greatest significance order.
diff --git a/src/ImageSharp/Colors/PackedPixel/Rgba1010102.cs b/src/ImageSharp/Colors/PackedPixel/Rgba1010102.cs
index 4f99feb6e..56f304070 100644
--- a/src/ImageSharp/Colors/PackedPixel/Rgba1010102.cs
+++ b/src/ImageSharp/Colors/PackedPixel/Rgba1010102.cs
@@ -39,9 +39,6 @@ namespace ImageSharp
///
public uint PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Compares two objects for equality.
///
@@ -78,6 +75,9 @@ namespace ImageSharp
return left.PackedValue != right.PackedValue;
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
diff --git a/src/ImageSharp/Colors/PackedPixel/Rgba64.cs b/src/ImageSharp/Colors/PackedPixel/Rgba64.cs
index a23e57ec3..816401d4e 100644
--- a/src/ImageSharp/Colors/PackedPixel/Rgba64.cs
+++ b/src/ImageSharp/Colors/PackedPixel/Rgba64.cs
@@ -38,9 +38,6 @@ namespace ImageSharp
///
public ulong PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Compares two objects for equality.
///
@@ -77,6 +74,9 @@ namespace ImageSharp
return left.PackedValue != right.PackedValue;
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
diff --git a/src/ImageSharp/Colors/PackedPixel/Short2.cs b/src/ImageSharp/Colors/PackedPixel/Short2.cs
index f26e82578..802df7c1d 100644
--- a/src/ImageSharp/Colors/PackedPixel/Short2.cs
+++ b/src/ImageSharp/Colors/PackedPixel/Short2.cs
@@ -51,9 +51,6 @@ namespace ImageSharp
///
public uint PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Compares two objects for equality.
///
@@ -90,6 +87,9 @@ namespace ImageSharp
return left.PackedValue != right.PackedValue;
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PackFromVector4(Vector4 vector)
diff --git a/src/ImageSharp/Colors/PackedPixel/Short4.cs b/src/ImageSharp/Colors/PackedPixel/Short4.cs
index 6dc7545e1..2517ef7a8 100644
--- a/src/ImageSharp/Colors/PackedPixel/Short4.cs
+++ b/src/ImageSharp/Colors/PackedPixel/Short4.cs
@@ -53,9 +53,6 @@ namespace ImageSharp
///
public ulong PackedValue { get; set; }
- ///
- public BulkPixelOperations BulkOperations => new BulkPixelOperations();
-
///
/// Compares two objects for equality.
///
@@ -92,6 +89,9 @@ namespace ImageSharp
return left.PackedValue != right.PackedValue;
}
+ ///
+ public BulkPixelOperations CreateBulkOperations() => new BulkPixelOperations();
+
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PackFromVector4(Vector4 vector)