Browse Source

No need for interfaces in adapter

pull/144/head
James Jackson-South 9 years ago
parent
commit
4b347263a3
  1. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.cs
  2. 30
      src/ImageSharp/ColorSpaces/Conversion/VonKriesChromaticAdaptation.cs

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

@ -32,7 +32,7 @@ namespace ImageSharp.ColorSpaces.Conversion
// Note the order here this is important. // Note the order here this is important.
this.WhitePoint = DefaultWhitePoint; this.WhitePoint = DefaultWhitePoint;
this.LmsAdaptationMatrix = CieXyzAndLmsConverter.DefaultTransformationMatrix; this.LmsAdaptationMatrix = CieXyzAndLmsConverter.DefaultTransformationMatrix;
this.ChromaticAdaptation = new VonKriesChromaticAdaptation(this.cachedCieXyzAndLmsConverter, this.cachedCieXyzAndLmsConverter); this.ChromaticAdaptation = new VonKriesChromaticAdaptation(this.cachedCieXyzAndLmsConverter);
this.TargetLuvWhitePoint = CieLuv.DefaultWhitePoint; this.TargetLuvWhitePoint = CieLuv.DefaultWhitePoint;
this.TargetLabWhitePoint = CieLab.DefaultWhitePoint; this.TargetLabWhitePoint = CieLab.DefaultWhitePoint;
this.TargetHunterLabWhitePoint = HunterLab.DefaultWhitePoint; this.TargetHunterLabWhitePoint = HunterLab.DefaultWhitePoint;

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

@ -19,9 +19,7 @@ namespace ImageSharp.ColorSpaces.Conversion
/// </remarks> /// </remarks>
internal class VonKriesChromaticAdaptation : IChromaticAdaptation internal class VonKriesChromaticAdaptation : IChromaticAdaptation
{ {
private readonly IColorConversion<CieXyz, Lms> conversionToLms; private readonly CieXyzAndLmsConverter converter;
private readonly IColorConversion<Lms, CieXyz> conversionToXyz;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="VonKriesChromaticAdaptation"/> class. /// Initializes a new instance of the <see cref="VonKriesChromaticAdaptation"/> class.
@ -43,27 +41,13 @@ namespace ImageSharp.ColorSpaces.Conversion
{ {
} }
/// <summary>
/// Initializes a new instance of the <see cref="VonKriesChromaticAdaptation"/> class.
/// </summary>
/// <param name="conversionToLms">The <see cref="Lms"/> color converter.</param>
/// <param name="conversionToCieXyz">The <see cref="CieXyz"/> color converter.</param>
public VonKriesChromaticAdaptation(IColorConversion<CieXyz, Lms> conversionToLms, IColorConversion<Lms, CieXyz> conversionToCieXyz)
{
Guard.NotNull(conversionToLms, nameof(conversionToLms));
Guard.NotNull(conversionToCieXyz, nameof(conversionToCieXyz));
this.conversionToLms = conversionToLms;
this.conversionToXyz = conversionToCieXyz;
}
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="VonKriesChromaticAdaptation"/> class. /// Initializes a new instance of the <see cref="VonKriesChromaticAdaptation"/> class.
/// </summary> /// </summary>
/// <param name="converter">The color converter</param> /// <param name="converter">The color converter</param>
private VonKriesChromaticAdaptation(CieXyzAndLmsConverter converter) public VonKriesChromaticAdaptation(CieXyzAndLmsConverter converter)
: this(converter, converter)
{ {
this.converter = converter;
} }
/// <inheritdoc/> /// <inheritdoc/>
@ -78,14 +62,14 @@ namespace ImageSharp.ColorSpaces.Conversion
return sourceColor; return sourceColor;
} }
Lms sourceColorLms = this.conversionToLms.Convert(sourceColor); Lms sourceColorLms = this.converter.Convert(sourceColor);
Lms sourceWhitePointLms = this.conversionToLms.Convert(sourceWhitePoint); Lms sourceWhitePointLms = this.converter.Convert(sourceWhitePoint);
Lms targetWhitePointLms = this.conversionToLms.Convert(targetWhitePoint); Lms targetWhitePointLms = this.converter.Convert(targetWhitePoint);
var vector = new Vector3(targetWhitePointLms.L / sourceWhitePointLms.L, targetWhitePointLms.M / sourceWhitePointLms.M, targetWhitePointLms.S / sourceWhitePointLms.S); var vector = new Vector3(targetWhitePointLms.L / sourceWhitePointLms.L, targetWhitePointLms.M / sourceWhitePointLms.M, targetWhitePointLms.S / sourceWhitePointLms.S);
var targetColorLms = new Lms(Vector3.Multiply(vector, sourceColorLms.Vector)); var targetColorLms = new Lms(Vector3.Multiply(vector, sourceColorLms.Vector));
return this.conversionToXyz.Convert(targetColorLms); return this.converter.Convert(targetColorLms);
} }
} }
} }
Loading…
Cancel
Save