Browse Source

More cleanup

pull/595/head
James Jackson-South 9 years ago
parent
commit
35d623aa35
  1. 67
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Adapt.cs
  2. 25
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLab.cs
  3. 24
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLch.cs
  4. 24
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLchuv.cs
  5. 1
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsl.cs
  6. 1
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsv.cs
  7. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Lms.cs
  8. 6
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Rgb.cs
  9. 2
      src/ImageSharp/ColorSpaces/Conversion/IChromaticAdaptation.cs
  10. 1
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToCieLuvConverter.cs
  11. 10
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToLinearRgbConverter.cs
  12. 7
      src/ImageSharp/ColorSpaces/Conversion/Implementation/GammaCompanding.cs
  13. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/LinearRgbAndCieXyzConverterBase.cs
  14. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/LinearRgbToCieXyzConverter.cs
  15. 1
      src/ImageSharp/ColorSpaces/Conversion/VonKriesChromaticAdaptation.cs
  16. 8
      tests/ImageSharp.Tests/Colorspaces/RgbAndCmykConversionTest.cs
  17. 6
      tests/ImageSharp.Tests/ImageSharp.Tests.csproj

67
src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Adapt.cs

@ -2,7 +2,7 @@
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
using System; using System;
using SixLabors.ImageSharp.ColorSpaces; using System.Runtime.CompilerServices;
using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation; using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion namespace SixLabors.ImageSharp.ColorSpaces.Conversion
@ -23,11 +23,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
Guard.NotNull(sourceWhitePoint, nameof(sourceWhitePoint)); Guard.NotNull(sourceWhitePoint, nameof(sourceWhitePoint));
this.CheckChromaticAdaptation();
if (!this.IsChromaticAdaptationPerformed)
{
throw new InvalidOperationException("Cannot perform chromatic adaptation, provide a chromatic adaptation method and white point.");
}
return this.ChromaticAdaptation.Transform(color, sourceWhitePoint, this.WhitePoint); return this.ChromaticAdaptation.Transform(color, sourceWhitePoint, this.WhitePoint);
} }
@ -40,18 +36,14 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
public CieLab Adapt(CieLab color) public CieLab Adapt(CieLab color)
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
this.CheckChromaticAdaptation();
if (!this.IsChromaticAdaptationPerformed)
{
throw new InvalidOperationException("Cannot perform chromatic adaptation, provide a chromatic adaptation method and white point.");
}
if (color.WhitePoint.Equals(this.TargetLabWhitePoint)) if (color.WhitePoint.Equals(this.TargetLabWhitePoint))
{ {
return color; return color;
} }
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor); return this.ToCieLab(xyzColor);
} }
@ -63,18 +55,14 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
public CieLch Adapt(CieLch color) public CieLch Adapt(CieLch color)
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
this.CheckChromaticAdaptation();
if (!this.IsChromaticAdaptationPerformed)
{
throw new InvalidOperationException("Cannot perform chromatic adaptation, provide a chromatic adaptation method and white point.");
}
if (color.WhitePoint.Equals(this.TargetLabWhitePoint)) if (color.WhitePoint.Equals(this.TargetLabWhitePoint))
{ {
return color; return color;
} }
CieLab labColor = this.ToCieLab(color); var labColor = this.ToCieLab(color);
return this.ToCieLch(labColor); return this.ToCieLch(labColor);
} }
@ -86,18 +74,14 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
public CieLchuv Adapt(CieLchuv color) public CieLchuv Adapt(CieLchuv color)
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
this.CheckChromaticAdaptation();
if (!this.IsChromaticAdaptationPerformed)
{
throw new InvalidOperationException("Cannot perform chromatic adaptation, provide a chromatic adaptation method and white point.");
}
if (color.WhitePoint.Equals(this.TargetLabWhitePoint)) if (color.WhitePoint.Equals(this.TargetLabWhitePoint))
{ {
return color; return color;
} }
CieLuv luvColor = this.ToCieLuv(color); var luvColor = this.ToCieLuv(color);
return this.ToCieLchuv(luvColor); return this.ToCieLchuv(luvColor);
} }
@ -109,18 +93,14 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
public CieLuv Adapt(CieLuv color) public CieLuv Adapt(CieLuv color)
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
this.CheckChromaticAdaptation();
if (!this.IsChromaticAdaptationPerformed)
{
throw new InvalidOperationException("Cannot perform chromatic adaptation, provide a chromatic adaptation method and white point.");
}
if (color.WhitePoint.Equals(this.TargetLuvWhitePoint)) if (color.WhitePoint.Equals(this.TargetLuvWhitePoint))
{ {
return color; return color;
} }
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLuv(xyzColor); return this.ToCieLuv(xyzColor);
} }
@ -132,18 +112,14 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
public HunterLab Adapt(HunterLab color) public HunterLab Adapt(HunterLab color)
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
this.CheckChromaticAdaptation();
if (!this.IsChromaticAdaptationPerformed)
{
throw new InvalidOperationException("Cannot perform chromatic adaptation, provide a chromatic adaptation method and white point.");
}
if (color.WhitePoint.Equals(this.TargetHunterLabWhitePoint)) if (color.WhitePoint.Equals(this.TargetHunterLabWhitePoint))
{ {
return color; return color;
} }
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToHunterLab(xyzColor); return this.ToHunterLab(xyzColor);
} }
@ -155,11 +131,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
public LinearRgb Adapt(LinearRgb color) public LinearRgb Adapt(LinearRgb color)
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
this.CheckChromaticAdaptation();
if (!this.IsChromaticAdaptationPerformed)
{
throw new InvalidOperationException("Cannot perform chromatic adaptation, provide a chromatic adaptation method and white point.");
}
if (color.WorkingSpace.Equals(this.TargetRgbWorkingSpace)) if (color.WorkingSpace.Equals(this.TargetRgbWorkingSpace))
{ {
@ -187,9 +159,20 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
LinearRgb linearInput = this.ToLinearRgb(color); var linearInput = this.ToLinearRgb(color);
LinearRgb linearOutput = this.Adapt(linearInput); LinearRgb linearOutput = this.Adapt(linearInput);
return this.ToRgb(linearOutput); return this.ToRgb(linearOutput);
} }
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private void CheckChromaticAdaptation()
{
const string NoAdapterMessage = "Cannot perform chromatic adaptation, provide a chromatic adaptation method and white point.";
if (!this.IsChromaticAdaptationPerformed)
{
throw new InvalidOperationException(NoAdapterMessage);
}
}
} }
} }

25
src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLab.cs

@ -1,7 +1,6 @@
// Copyright (c) Six Labors and contributors. // Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation; using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion namespace SixLabors.ImageSharp.ColorSpaces.Conversion
@ -46,7 +45,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor); return this.ToCieLab(xyzColor);
} }
@ -59,7 +58,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor); return this.ToCieLab(xyzColor);
} }
@ -72,7 +71,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor); return this.ToCieLab(xyzColor);
} }
@ -91,7 +90,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
: color; : color;
// Conversion // Conversion
CieXyzToCieLabConverter converter = new CieXyzToCieLabConverter(this.TargetLabWhitePoint); var converter = new CieXyzToCieLabConverter(this.TargetLabWhitePoint);
return converter.Convert(adapted); return converter.Convert(adapted);
} }
@ -104,7 +103,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor); return this.ToCieLab(xyzColor);
} }
@ -117,7 +116,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor); return this.ToCieLab(xyzColor);
} }
@ -130,7 +129,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor); return this.ToCieLab(xyzColor);
} }
@ -143,7 +142,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor); return this.ToCieLab(xyzColor);
} }
@ -156,7 +155,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor); return this.ToCieLab(xyzColor);
} }
@ -169,7 +168,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor); return this.ToCieLab(xyzColor);
} }
@ -182,7 +181,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor); return this.ToCieLab(xyzColor);
} }
@ -195,7 +194,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor); return this.ToCieLab(xyzColor);
} }
} }

24
src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLch.cs

@ -40,7 +40,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor); return this.ToCieLch(xyzColor);
} }
@ -53,7 +53,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor); return this.ToCieLch(xyzColor);
} }
@ -66,7 +66,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor); return this.ToCieLch(xyzColor);
} }
@ -79,7 +79,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieLab labColor = this.ToCieLab(color); var labColor = this.ToCieLab(color);
return this.ToCieLch(labColor); return this.ToCieLch(labColor);
} }
@ -92,7 +92,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor); return this.ToCieLch(xyzColor);
} }
@ -105,7 +105,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor); return this.ToCieLch(xyzColor);
} }
@ -118,7 +118,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor); return this.ToCieLch(xyzColor);
} }
@ -131,7 +131,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor); return this.ToCieLch(xyzColor);
} }
@ -144,7 +144,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor); return this.ToCieLch(xyzColor);
} }
@ -157,7 +157,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor); return this.ToCieLch(xyzColor);
} }
@ -170,7 +170,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor); return this.ToCieLch(xyzColor);
} }
@ -183,7 +183,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor); return this.ToCieLch(xyzColor);
} }
} }

24
src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLchuv.cs

@ -24,7 +24,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor); return this.ToCieLchuv(xyzColor);
} }
@ -37,7 +37,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor); return this.ToCieLchuv(xyzColor);
} }
@ -66,7 +66,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor); return this.ToCieLchuv(xyzColor);
} }
@ -79,7 +79,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieLab labColor = this.ToCieLab(color); var labColor = this.ToCieLab(color);
return this.ToCieLchuv(labColor); return this.ToCieLchuv(labColor);
} }
@ -92,7 +92,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor); return this.ToCieLchuv(xyzColor);
} }
@ -105,7 +105,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor); return this.ToCieLchuv(xyzColor);
} }
@ -118,7 +118,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor); return this.ToCieLchuv(xyzColor);
} }
@ -131,7 +131,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor); return this.ToCieLchuv(xyzColor);
} }
@ -144,7 +144,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor); return this.ToCieLchuv(xyzColor);
} }
@ -157,7 +157,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor); return this.ToCieLchuv(xyzColor);
} }
@ -170,7 +170,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor); return this.ToCieLchuv(xyzColor);
} }
@ -183,7 +183,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
CieXyz xyzColor = this.ToCieXyz(color); var xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor); return this.ToCieLchuv(xyzColor);
} }
} }

1
src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsl.cs

@ -1,7 +1,6 @@
// Copyright (c) Six Labors and contributors. // Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation; using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion namespace SixLabors.ImageSharp.ColorSpaces.Conversion

1
src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsv.cs

@ -1,7 +1,6 @@
// Copyright (c) Six Labors and contributors. // Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation; using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion namespace SixLabors.ImageSharp.ColorSpaces.Conversion

2
src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Lms.cs

@ -1,8 +1,6 @@
// Copyright (c) Six Labors and contributors. // Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.ColorSpaces;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
/// <content> /// <content>

6
src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Rgb.cs

@ -181,11 +181,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
Guard.NotNull(color, nameof(color)); Guard.NotNull(color, nameof(color));
// Conversion // Conversion
Rgb rgb = YCbCrAndRgbConverter.Convert(color); return YCbCrAndRgbConverter.Convert(color);
// Adaptation
// TODO: Check this!
return rgb.WorkingSpace.Equals(this.TargetRgbWorkingSpace) ? rgb : this.Adapt(rgb);
} }
} }
} }

2
src/ImageSharp/ColorSpaces/Conversion/IChromaticAdaptation.cs

@ -1,8 +1,6 @@
// Copyright (c) Six Labors and contributors. // Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.ColorSpaces;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{ {
/// <summary> /// <summary>

1
src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToCieLuvConverter.cs

@ -91,6 +91,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// </summary> /// </summary>
/// <param name="input">The whitepoint</param> /// <param name="input">The whitepoint</param>
/// <returns>The <see cref="float"/></returns> /// <returns>The <see cref="float"/></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static float ComputeVp(CieXyz input) private static float ComputeVp(CieXyz input)
{ {
return (9 * input.Y) / (input.X + (15 * input.Y) + (3 * input.Z)); return (9 * input.Y) / (input.X + (15 * input.Y) + (3 * input.Z));

10
src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToLinearRgbConverter.cs

@ -2,6 +2,7 @@
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
using System.Numerics; using System.Numerics;
using System.Runtime.CompilerServices;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
{ {
@ -15,6 +16,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="CieXyzToLinearRgbConverter"/> class. /// Initializes a new instance of the <see cref="CieXyzToLinearRgbConverter"/> class.
/// </summary> /// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public CieXyzToLinearRgbConverter() public CieXyzToLinearRgbConverter()
: this(Rgb.DefaultWorkingSpace) : this(Rgb.DefaultWorkingSpace)
{ {
@ -24,6 +26,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// Initializes a new instance of the <see cref="CieXyzToLinearRgbConverter"/> class. /// Initializes a new instance of the <see cref="CieXyzToLinearRgbConverter"/> class.
/// </summary> /// </summary>
/// <param name="workingSpace">The target working space.</param> /// <param name="workingSpace">The target working space.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public CieXyzToLinearRgbConverter(IRgbWorkingSpace workingSpace) public CieXyzToLinearRgbConverter(IRgbWorkingSpace workingSpace)
{ {
this.TargetWorkingSpace = workingSpace; this.TargetWorkingSpace = workingSpace;
@ -33,9 +36,14 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary> /// <summary>
/// Gets the target working space /// Gets the target working space
/// </summary> /// </summary>
public IRgbWorkingSpace TargetWorkingSpace { get; } public IRgbWorkingSpace TargetWorkingSpace
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get;
}
/// <inheritdoc/> /// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public LinearRgb Convert(CieXyz input) public LinearRgb Convert(CieXyz input)
{ {
DebugGuard.NotNull(input, nameof(input)); DebugGuard.NotNull(input, nameof(input));

7
src/ImageSharp/ColorSpaces/Conversion/Implementation/GammaCompanding.cs

@ -19,6 +19,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// Initializes a new instance of the <see cref="GammaCompanding"/> class. /// Initializes a new instance of the <see cref="GammaCompanding"/> class.
/// </summary> /// </summary>
/// <param name="gamma">The gamma value.</param> /// <param name="gamma">The gamma value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public GammaCompanding(float gamma) public GammaCompanding(float gamma)
{ {
this.Gamma = gamma; this.Gamma = gamma;
@ -27,7 +28,11 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary> /// <summary>
/// Gets the gamma value /// Gets the gamma value
/// </summary> /// </summary>
public float Gamma { get; } public float Gamma
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get;
}
/// <inheritdoc/> /// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]

2
src/ImageSharp/ColorSpaces/Conversion/Implementation/LinearRgbAndCieXyzConverterBase.cs

@ -48,7 +48,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
M44 = 1F M44 = 1F
}; };
Matrix4x4.Invert(xyzMatrix, out var inverseXyzMatrix); Matrix4x4.Invert(xyzMatrix, out Matrix4x4 inverseXyzMatrix);
var vector = Vector3.Transform(workingSpace.WhitePoint.Vector, inverseXyzMatrix); var vector = Vector3.Transform(workingSpace.WhitePoint.Vector, inverseXyzMatrix);

2
src/ImageSharp/ColorSpaces/Conversion/Implementation/LinearRgbToCieXyzConverter.cs

@ -39,7 +39,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
public CieXyz Convert(LinearRgb input) public CieXyz Convert(LinearRgb input)
{ {
DebugGuard.NotNull(input, nameof(input)); DebugGuard.NotNull(input, nameof(input));
Guard.IsTrue(input.WorkingSpace.Equals(this.SourceWorkingSpace), nameof(input.WorkingSpace), "Input and source working spaces must be equal."); DebugGuard.IsTrue(input.WorkingSpace.Equals(this.SourceWorkingSpace), nameof(input.WorkingSpace), "Input and source working spaces must be equal.");
var vector = Vector3.Transform(input.Vector, this.conversionMatrix); var vector = Vector3.Transform(input.Vector, this.conversionMatrix);
return new CieXyz(vector); return new CieXyz(vector);

1
src/ImageSharp/ColorSpaces/Conversion/VonKriesChromaticAdaptation.cs

@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
using System.Numerics; using System.Numerics;
using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation; using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion namespace SixLabors.ImageSharp.ColorSpaces.Conversion

8
tests/ImageSharp.Tests/Colorspaces/RgbAndCmykConversionTest.cs

@ -32,10 +32,10 @@ namespace SixLabors.ImageSharp.Tests.Colorspaces
public void Convert_Cmyk_To_Rgb(float c, float m, float y, float k, float r, float g, float b) public void Convert_Cmyk_To_Rgb(float c, float m, float y, float k, float r, float g, float b)
{ {
// Arrange // Arrange
Cmyk input = new Cmyk(c, m, y, k); var input = new Cmyk(c, m, y, k);
// Act // Act
Rgb output = Converter.ToRgb(input); var output = Converter.ToRgb(input);
// Assert // Assert
Assert.Equal(Rgb.DefaultWorkingSpace, output.WorkingSpace); Assert.Equal(Rgb.DefaultWorkingSpace, output.WorkingSpace);
@ -54,10 +54,10 @@ namespace SixLabors.ImageSharp.Tests.Colorspaces
public void Convert_Rgb_To_Cmyk(float r, float g, float b, float c, float m, float y, float k) public void Convert_Rgb_To_Cmyk(float r, float g, float b, float c, float m, float y, float k)
{ {
// Arrange // Arrange
Rgb input = new Rgb(r, g, b); var input = new Rgb(r, g, b);
// Act // Act
Cmyk output = Converter.ToCmyk(input); var output = Converter.ToCmyk(input);
// Assert // Assert
Assert.Equal(c, output.C, FloatRoundingComparer); Assert.Equal(c, output.C, FloatRoundingComparer);

6
tests/ImageSharp.Tests/ImageSharp.Tests.csproj

@ -17,9 +17,9 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="CoreCompat.System.Drawing" Version="1.0.0-beta006" /> <PackageReference Include="CoreCompat.System.Drawing" Version="1.0.0-beta006" />
<PackageReference Include="xunit" Version="2.3.0" /> <PackageReference Include="xunit" Version="2.3.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0" /> <PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
<PackageReference Include="Moq" Version="4.7.137" /> <PackageReference Include="Moq" Version="4.7.145" />
<!--<PackageReference Include="StyleCop.Analyzers" Version="1.1.0-beta001"> <!--<PackageReference Include="StyleCop.Analyzers" Version="1.1.0-beta001">
<PrivateAssets>All</PrivateAssets> <PrivateAssets>All</PrivateAssets>
</PackageReference>--> </PackageReference>-->

Loading…
Cancel
Save