Browse Source

Merge pull request #65 from olivif/olivif/allocationscolorspace

Reducing allocations in color spaces.
af/merge-core
James Jackson-South 9 years ago
committed by GitHub
parent
commit
0e84d465f7
  1. 12
      src/ImageSharp/Colors/Spaces/Bgra32.cs
  2. 12
      src/ImageSharp/Colors/Spaces/CieLab.cs
  3. 12
      src/ImageSharp/Colors/Spaces/Cmyk.cs
  4. 12
      src/ImageSharp/Colors/Spaces/Hsl.cs
  5. 12
      src/ImageSharp/Colors/Spaces/Hsv.cs
  6. 7
      src/ImageSharp/Colors/Spaces/YCbCr.cs

12
src/ImageSharp/Colors/Spaces/Bgra32.cs

@ -19,6 +19,16 @@ namespace ImageSharp.Colors.Spaces
/// </summary> /// </summary>
public static readonly Bgra32 Empty = default(Bgra32); public static readonly Bgra32 Empty = default(Bgra32);
/// <summary>
/// Min range used for clamping
/// </summary>
private static readonly Vector4 VectorMin = Vector4.Zero;
/// <summary>
/// Max range used for clamping
/// </summary>
private static readonly Vector4 VectorMax = new Vector4(255);
/// <summary> /// <summary>
/// The backing vector for SIMD support. /// The backing vector for SIMD support.
/// </summary> /// </summary>
@ -34,7 +44,7 @@ namespace ImageSharp.Colors.Spaces
public Bgra32(byte b, byte g, byte r, byte a = 255) public Bgra32(byte b, byte g, byte r, byte a = 255)
: this() : this()
{ {
this.backingVector = Vector4.Clamp(new Vector4(b, g, r, a), Vector4.Zero, new Vector4(255)); this.backingVector = Vector4.Clamp(new Vector4(b, g, r, a), VectorMin, VectorMax);
} }
/// <summary> /// <summary>

12
src/ImageSharp/Colors/Spaces/CieLab.cs

@ -20,6 +20,16 @@ namespace ImageSharp.Colors.Spaces
/// </summary> /// </summary>
public static readonly CieLab Empty = default(CieLab); public static readonly CieLab Empty = default(CieLab);
/// <summary>
/// Min range used for clamping
/// </summary>
private static readonly Vector3 VectorMin = new Vector3(0, -100, -100);
/// <summary>
/// Max range used for clamping
/// </summary>
private static readonly Vector3 VectorMax = new Vector3(100);
/// <summary> /// <summary>
/// The backing vector for SIMD support. /// The backing vector for SIMD support.
/// </summary> /// </summary>
@ -34,7 +44,7 @@ namespace ImageSharp.Colors.Spaces
public CieLab(float l, float a, float b) public CieLab(float l, float a, float b)
: this() : this()
{ {
this.backingVector = Vector3.Clamp(new Vector3(l, a, b), new Vector3(0, -100, -100), new Vector3(100)); this.backingVector = Vector3.Clamp(new Vector3(l, a, b), VectorMin, VectorMax);
} }
/// <summary> /// <summary>

12
src/ImageSharp/Colors/Spaces/Cmyk.cs

@ -19,6 +19,16 @@ namespace ImageSharp.Colors.Spaces
/// </summary> /// </summary>
public static readonly Cmyk Empty = default(Cmyk); public static readonly Cmyk Empty = default(Cmyk);
/// <summary>
/// Min range used for clamping
/// </summary>
private static readonly Vector4 VectorMin = Vector4.Zero;
/// <summary>
/// Max range used for clamping
/// </summary>
private static readonly Vector4 VectorMax = Vector4.One;
/// <summary> /// <summary>
/// The backing vector for SIMD support. /// The backing vector for SIMD support.
/// </summary> /// </summary>
@ -34,7 +44,7 @@ namespace ImageSharp.Colors.Spaces
public Cmyk(float c, float m, float y, float k) public Cmyk(float c, float m, float y, float k)
: this() : this()
{ {
this.backingVector = Vector4.Clamp(new Vector4(c, m, y, k), Vector4.Zero, Vector4.One); this.backingVector = Vector4.Clamp(new Vector4(c, m, y, k), VectorMin, VectorMax);
} }
/// <summary> /// <summary>

12
src/ImageSharp/Colors/Spaces/Hsl.cs

@ -19,6 +19,16 @@ namespace ImageSharp.Colors.Spaces
/// </summary> /// </summary>
public static readonly Hsl Empty = default(Hsl); public static readonly Hsl Empty = default(Hsl);
/// <summary>
/// Min range used for clamping
/// </summary>
private static readonly Vector3 VectorMin = Vector3.Zero;
/// <summary>
/// Max range used for clamping
/// </summary>
private static readonly Vector3 VectorMax = new Vector3(360, 1, 1);
/// <summary> /// <summary>
/// The backing vector for SIMD support. /// The backing vector for SIMD support.
/// </summary> /// </summary>
@ -32,7 +42,7 @@ namespace ImageSharp.Colors.Spaces
/// <param name="l">The l value (lightness) component.</param> /// <param name="l">The l value (lightness) component.</param>
public Hsl(float h, float s, float l) public Hsl(float h, float s, float l)
{ {
this.backingVector = Vector3.Clamp(new Vector3(h, s, l), Vector3.Zero, new Vector3(360, 1, 1)); this.backingVector = Vector3.Clamp(new Vector3(h, s, l), VectorMin, VectorMax);
} }
/// <summary> /// <summary>

12
src/ImageSharp/Colors/Spaces/Hsv.cs

@ -19,6 +19,16 @@ namespace ImageSharp.Colors.Spaces
/// </summary> /// </summary>
public static readonly Hsv Empty = default(Hsv); public static readonly Hsv Empty = default(Hsv);
/// <summary>
/// Min range used for clamping
/// </summary>
private static readonly Vector3 VectorMin = Vector3.Zero;
/// <summary>
/// Max range used for clamping
/// </summary>
private static readonly Vector3 VectorMax = new Vector3(360, 1, 1);
/// <summary> /// <summary>
/// The backing vector for SIMD support. /// The backing vector for SIMD support.
/// </summary> /// </summary>
@ -32,7 +42,7 @@ namespace ImageSharp.Colors.Spaces
/// <param name="v">The v value (brightness) component.</param> /// <param name="v">The v value (brightness) component.</param>
public Hsv(float h, float s, float v) public Hsv(float h, float s, float v)
{ {
this.backingVector = Vector3.Clamp(new Vector3(h, s, v), Vector3.Zero, new Vector3(360, 1, 1)); this.backingVector = Vector3.Clamp(new Vector3(h, s, v), VectorMin, VectorMax);
} }
/// <summary> /// <summary>

7
src/ImageSharp/Colors/Spaces/YCbCr.cs

@ -20,6 +20,11 @@ namespace ImageSharp.Colors.Spaces
/// </summary> /// </summary>
public static readonly YCbCr Empty = default(YCbCr); public static readonly YCbCr Empty = default(YCbCr);
/// <summary>
/// Min range used for clamping
/// </summary>
private static readonly Vector3 VectorMin = Vector3.Zero;
/// <summary> /// <summary>
/// Vector which is used in clamping to the max value /// Vector which is used in clamping to the max value
/// </summary> /// </summary>
@ -39,7 +44,7 @@ namespace ImageSharp.Colors.Spaces
public YCbCr(byte y, byte cb, byte cr) public YCbCr(byte y, byte cb, byte cr)
: this() : this()
{ {
this.backingVector = Vector3.Clamp(new Vector3(y, cb, cr), Vector3.Zero, VectorMax); this.backingVector = Vector3.Clamp(new Vector3(y, cb, cr), VectorMin, VectorMax);
} }
/// <summary> /// <summary>

Loading…
Cancel
Save