Browse Source

Color performance optimizations.

Former-commit-id: 103031740de3d3b482d55800eac4910a29e882a0
Former-commit-id: 258d7739fcdbb02d79aa52265f1af8d4a0d630c9
Former-commit-id: 9ee758d7ccec4869fd0664f1379ec3b152be8d3e
pull/1/head
James Jackson-South 10 years ago
parent
commit
3121135309
  1. 4
      src/ImageProcessorCore/Colors/Color.cs
  2. 8
      src/ImageProcessorCore/Colors/Colorspaces/CieLab.cs
  3. 8
      src/ImageProcessorCore/Colors/Colorspaces/CieXyz.cs
  4. 10
      src/ImageProcessorCore/Colors/Colorspaces/Cmyk.cs
  5. 8
      src/ImageProcessorCore/Colors/Colorspaces/Hsl.cs
  6. 8
      src/ImageProcessorCore/Colors/Colorspaces/Hsv.cs
  7. 8
      src/ImageProcessorCore/Colors/Colorspaces/YCbCr.cs

4
src/ImageProcessorCore/Colors/Color.cs

@ -84,9 +84,7 @@ namespace ImageProcessorCore
float a = Convert.ToByte(hex.Substring(0, 2), 16);
// Do division of Vector4 instead of each component to utilize SIMD optimizations
this.backingVector = new Vector4(r, g, b, a) / 255f;
this.backingVector = FromNonPremultiplied(this.backingVector, this.A);
this.backingVector = FromNonPremultiplied(new Vector4(r, g, b, a) / 255f, this.A);
}
else if (hex.Length == 6)

8
src/ImageProcessorCore/Colors/Colorspaces/CieLab.cs

@ -172,9 +172,11 @@ namespace ImageProcessorCore
/// <inheritdoc/>
public bool AlmostEquals(CieLab other, float precision)
{
return Math.Abs(this.L - other.L) < precision
&& Math.Abs(this.B - other.B) < precision
&& Math.Abs(this.B - other.B) < precision;
Vector3 result = Vector3.Abs(this.backingVector - other.backingVector);
return result.X < precision
&& result.Y < precision
&& result.Z < precision;
}
/// <summary>

8
src/ImageProcessorCore/Colors/Colorspaces/CieXyz.cs

@ -163,9 +163,11 @@ namespace ImageProcessorCore
/// <inheritdoc/>
public bool AlmostEquals(CieXyz other, float precision)
{
return Math.Abs(this.X - other.X) < precision
&& Math.Abs(this.Y - other.Y) < precision
&& Math.Abs(this.Z - other.Z) < precision;
Vector3 result = Vector3.Abs(this.backingVector - other.backingVector);
return result.X < precision
&& result.Y < precision
&& result.Z < precision;
}
/// <summary>

10
src/ImageProcessorCore/Colors/Colorspaces/Cmyk.cs

@ -175,10 +175,12 @@ namespace ImageProcessorCore
/// <inheritdoc/>
public bool AlmostEquals(Cmyk other, float precision)
{
return Math.Abs(this.C - other.C) < precision
&& Math.Abs(this.M - other.M) < precision
&& Math.Abs(this.Y - other.Y) < precision
&& Math.Abs(this.K - other.K) < precision;
Vector4 result = Vector4.Abs(this.backingVector - other.backingVector);
return result.X < precision
&& result.Y < precision
&& result.Z < precision
&& result.W < precision;
}
/// <summary>

8
src/ImageProcessorCore/Colors/Colorspaces/Hsl.cs

@ -192,9 +192,11 @@ namespace ImageProcessorCore
/// <inheritdoc/>
public bool AlmostEquals(Hsl other, float precision)
{
return Math.Abs(this.H - other.H) < precision
&& Math.Abs(this.S - other.S) < precision
&& Math.Abs(this.L - other.L) < precision;
Vector3 result = Vector3.Abs(this.backingVector - other.backingVector);
return result.X < precision
&& result.Y < precision
&& result.Z < precision;
}
/// <summary>

8
src/ImageProcessorCore/Colors/Colorspaces/Hsv.cs

@ -186,9 +186,11 @@ namespace ImageProcessorCore
/// <inheritdoc/>
public bool AlmostEquals(Hsv other, float precision)
{
return Math.Abs(this.H - other.H) < precision
&& Math.Abs(this.S - other.S) < precision
&& Math.Abs(this.V - other.V) < precision;
Vector3 result = Vector3.Abs(this.backingVector - other.backingVector);
return result.X < precision
&& result.Y < precision
&& result.Z < precision;
}
/// <summary>

8
src/ImageProcessorCore/Colors/Colorspaces/YCbCr.cs

@ -162,9 +162,11 @@ namespace ImageProcessorCore
/// <inheritdoc/>
public bool AlmostEquals(YCbCr other, float precision)
{
return Math.Abs(this.Y - other.Y) < precision
&& Math.Abs(this.Cb - other.Cb) < precision
&& Math.Abs(this.Cr - other.Cr) < precision;
Vector3 result = Vector3.Abs(this.backingVector - other.backingVector);
return result.X < precision
&& result.Y < precision
&& result.Z < precision;
}
/// <summary>

Loading…
Cancel
Save