diff --git a/src/ImageSharp/Colors/Spaces/CieLab.cs b/src/ImageSharp/Colors/Spaces/CieLab.cs
index e5edfcc79..80e8a41a3 100644
--- a/src/ImageSharp/Colors/Spaces/CieLab.cs
+++ b/src/ImageSharp/Colors/Spaces/CieLab.cs
@@ -77,6 +77,9 @@ namespace ImageSharp.Colors.Spaces
this.WhitePoint = whitePoint;
}
+ ///
+ /// Gets the reference white point of this color
+ ///
public CieXyz WhitePoint { get; }
///
diff --git a/src/ImageSharp/Colors/Spaces/Conversion/ColorConverter.Adapt.cs b/src/ImageSharp/Colors/Spaces/Conversion/ColorConverter.Adapt.cs
index fc768d3ea..e564cabb3 100644
--- a/src/ImageSharp/Colors/Spaces/Conversion/ColorConverter.Adapt.cs
+++ b/src/ImageSharp/Colors/Spaces/Conversion/ColorConverter.Adapt.cs
@@ -17,6 +17,9 @@ namespace ImageSharp.Colors.Conversion
/// Performs chromatic adaptation of given XYZ color.
/// Target white point is .
///
+ /// The color to adapt
+ /// The white point to adapt for
+ /// The adapted color
public CieXyz Adapt(CieXyz color, CieXyz sourceWhitePoint)
{
Guard.NotNull(color, nameof(color));
diff --git a/src/ImageSharp/Colors/Spaces/Conversion/ColorConverter.CieXyz.cs b/src/ImageSharp/Colors/Spaces/Conversion/ColorConverter.CieXyz.cs
index 66f3b25e7..c5b103116 100644
--- a/src/ImageSharp/Colors/Spaces/Conversion/ColorConverter.CieXyz.cs
+++ b/src/ImageSharp/Colors/Spaces/Conversion/ColorConverter.CieXyz.cs
@@ -25,7 +25,6 @@ namespace ImageSharp.Colors.Conversion
Guard.NotNull(color, nameof(color));
// Conversion
-
CieXyz unadapted = CieLabToCieXyzConverter.Convert(color);
// Adaptation
diff --git a/src/ImageSharp/Colors/Spaces/Conversion/ColorConverter.cs b/src/ImageSharp/Colors/Spaces/Conversion/ColorConverter.cs
index 93d04e7e1..d02e924d1 100644
--- a/src/ImageSharp/Colors/Spaces/Conversion/ColorConverter.cs
+++ b/src/ImageSharp/Colors/Spaces/Conversion/ColorConverter.cs
@@ -14,14 +14,14 @@ namespace ImageSharp.Colors.Conversion
///
public partial class ColorConverter
{
- private Matrix4x4 transformationMatrix;
- private CieXyzAndLmsConverter cachedCieXyzAndLmsConverter;
-
///
/// The default whitepoint used for converting to CieLab
///
public static readonly CieXyz DefaultWhitePoint = Illuminants.D65;
+ private Matrix4x4 transformationMatrix;
+ private CieXyzAndLmsConverter cachedCieXyzAndLmsConverter;
+
///
/// Initializes a new instance of the class.
///
@@ -57,11 +57,14 @@ namespace ImageSharp.Colors.Conversion
///
public Matrix4x4 LmsAdaptationMatrix
{
- get { return this.transformationMatrix; }
+ get
+ {
+ return this.transformationMatrix;
+ }
+
set
{
this.transformationMatrix = value;
-
if (this.cachedCieXyzAndLmsConverter == null)
{
this.cachedCieXyzAndLmsConverter = new CieXyzAndLmsConverter(value);
diff --git a/src/ImageSharp/Colors/Spaces/Conversion/IColorConversion.cs b/src/ImageSharp/Colors/Spaces/Conversion/IColorConversion.cs
index ad653da94..73a90cdde 100644
--- a/src/ImageSharp/Colors/Spaces/Conversion/IColorConversion.cs
+++ b/src/ImageSharp/Colors/Spaces/Conversion/IColorConversion.cs
@@ -13,10 +13,10 @@ namespace ImageSharp.Colors.Conversion
public interface IColorConversion
{
///
- /// Performs the conversion from the input to an instance of the output type.
+ /// Performs the conversion from the input to an instance of the output type.
///
/// The input color instance.
- /// The
+ /// The converted result
TResult Convert(T input);
}
}
\ No newline at end of file
diff --git a/src/ImageSharp/Colors/Spaces/Conversion/Implementation/CieLab/CieLabToCieXyzConverter.cs b/src/ImageSharp/Colors/Spaces/Conversion/Implementation/CieLab/CieLabToCieXyzConverter.cs
index 1d9ab6269..3f94ef607 100644
--- a/src/ImageSharp/Colors/Spaces/Conversion/Implementation/CieLab/CieLabToCieXyzConverter.cs
+++ b/src/ImageSharp/Colors/Spaces/Conversion/Implementation/CieLab/CieLabToCieXyzConverter.cs
@@ -21,15 +21,15 @@ namespace ImageSharp.Colors.Conversion.Implementation
// Conversion algorithm described here: http://www.brucelindbloom.com/index.html?Eqn_Lab_to_XYZ.html
float l = input.L, a = input.A, b = input.B;
float fy = (l + 16) / 116F;
- float fx = a / 500F + fy;
- float fz = fy - b / 200F;
+ float fx = (a / 500F) + fy;
+ float fz = fy - (b / 200F);
float fx3 = (float)Math.Pow(fx, 3D);
float fz3 = (float)Math.Pow(fz, 3D);
- float xr = fx3 > CieConstants.Epsilon ? fx3 : (116F * fx - 16F) / CieConstants.Kappa;
+ float xr = fx3 > CieConstants.Epsilon ? fx3 : ((116F * fx) - 16F) / CieConstants.Kappa;
float yr = l > CieConstants.Kappa * CieConstants.Epsilon ? (float)Math.Pow((l + 16F) / 116F, 3D) : l / CieConstants.Kappa;
- float zr = fz3 > CieConstants.Epsilon ? fz3 : (116F * fz - 16F) / CieConstants.Kappa;
+ float zr = fz3 > CieConstants.Epsilon ? fz3 : ((116F * fz) - 16F) / CieConstants.Kappa;
float wx = input.WhitePoint.X, wy = input.WhitePoint.Y, wz = input.WhitePoint.Z;
diff --git a/src/ImageSharp/Colors/Spaces/Conversion/Implementation/CieLab/CieXyzToCieLabConverter.cs b/src/ImageSharp/Colors/Spaces/Conversion/Implementation/CieLab/CieXyzToCieLabConverter.cs
index ddd7c4bb2..34540512d 100644
--- a/src/ImageSharp/Colors/Spaces/Conversion/Implementation/CieLab/CieXyzToCieLabConverter.cs
+++ b/src/ImageSharp/Colors/Spaces/Conversion/Implementation/CieLab/CieXyzToCieLabConverter.cs
@@ -45,9 +45,9 @@ namespace ImageSharp.Colors.Conversion.Implementation
float xr = input.X / wx, yr = input.Y / wy, zr = input.Z / wz;
- float fx = xr > CieConstants.Epsilon ? (float)Math.Pow(xr, 0.333333333333333D) : (CieConstants.Kappa * xr + 16F) / 116F;
- float fy = yr > CieConstants.Epsilon ? (float)Math.Pow(yr, 0.333333333333333D) : (CieConstants.Kappa * yr + 16F) / 116F;
- float fz = zr > CieConstants.Epsilon ? (float)Math.Pow(zr, 0.333333333333333D) : (CieConstants.Kappa * zr + 16F) / 116F;
+ float fx = xr > CieConstants.Epsilon ? (float)Math.Pow(xr, 0.333333333333333D) : ((CieConstants.Kappa * xr) + 16F) / 116F;
+ float fy = yr > CieConstants.Epsilon ? (float)Math.Pow(yr, 0.333333333333333D) : ((CieConstants.Kappa * yr) + 16F) / 116F;
+ float fz = zr > CieConstants.Epsilon ? (float)Math.Pow(zr, 0.333333333333333D) : ((CieConstants.Kappa * zr) + 16F) / 116F;
float l = (116F * fy) - 16F;
float a = 500F * (fx - fy);
diff --git a/src/ImageSharp/Colors/Spaces/Conversion/Implementation/Lms/CieXyzAndLmsConverter.cs b/src/ImageSharp/Colors/Spaces/Conversion/Implementation/Lms/CieXyzAndLmsConverter.cs
index 69899e0db..e467946c5 100644
--- a/src/ImageSharp/Colors/Spaces/Conversion/Implementation/Lms/CieXyzAndLmsConverter.cs
+++ b/src/ImageSharp/Colors/Spaces/Conversion/Implementation/Lms/CieXyzAndLmsConverter.cs
@@ -3,12 +3,14 @@
// Licensed under the Apache License, Version 2.0.
//
-using System.Numerics;
-
namespace ImageSharp.Colors.Conversion.Implementation
{
+ using System.Numerics;
using Spaces;
+ ///
+ /// Color converter between CIE XYZ and LMS
+ ///
public class CieXyzAndLmsConverter : IColorConversion, IColorConversion
{
///
@@ -20,20 +22,6 @@ namespace ImageSharp.Colors.Conversion.Implementation
private Matrix4x4 inverseTransformationMatrix;
private Matrix4x4 transformationMatrix;
- ///
- /// Transformation matrix used for the conversion (definition of the cone response domain).
- ///
- ///
- public Matrix4x4 TransformationMatrix
- {
- get { return this.transformationMatrix; }
- internal set
- {
- this.transformationMatrix = value;
- Matrix4x4.Invert(this.transformationMatrix, out this.inverseTransformationMatrix);
- }
- }
-
///
/// Initializes a new instance of the class.
///
@@ -54,6 +42,24 @@ namespace ImageSharp.Colors.Conversion.Implementation
this.TransformationMatrix = transformationMatrix;
}
+ ///
+ /// Gets transformation matrix used for the conversion (definition of the cone response domain).
+ ///
+ ///
+ public Matrix4x4 TransformationMatrix
+ {
+ get
+ {
+ return this.transformationMatrix;
+ }
+
+ internal set
+ {
+ this.transformationMatrix = value;
+ Matrix4x4.Invert(this.transformationMatrix, out this.inverseTransformationMatrix);
+ }
+ }
+
///
public Lms Convert(CieXyz input)
{
diff --git a/src/ImageSharp/Colors/Spaces/Conversion/Implementation/Lms/LmsAdaptationMatrix.cs b/src/ImageSharp/Colors/Spaces/Conversion/Implementation/Lms/LmsAdaptationMatrix.cs
index fe3ded527..25344af68 100644
--- a/src/ImageSharp/Colors/Spaces/Conversion/Implementation/Lms/LmsAdaptationMatrix.cs
+++ b/src/ImageSharp/Colors/Spaces/Conversion/Implementation/Lms/LmsAdaptationMatrix.cs
@@ -74,10 +74,10 @@ namespace ImageSharp.Colors.Conversion.Implementation
M44 = 1F
};
- ///
- /// CMCCAT2000 (fitted from all available color data sets)
- ///
- public static readonly Matrix4x4 CMCCAT2000
+ ///
+ /// CMCCAT2000 (fitted from all available color data sets)
+ ///
+ public static readonly Matrix4x4 CMCCAT2000
= new Matrix4x4
{
M11 = 0.7982F, M12 = 0.3389F, M13 = -0.1371F,
diff --git a/src/ImageSharp/Colors/Spaces/Conversion/VonKriesChromaticAdaptation.cs b/src/ImageSharp/Colors/Spaces/Conversion/VonKriesChromaticAdaptation.cs
index a5b92d06d..801f7cf15 100644
--- a/src/ImageSharp/Colors/Spaces/Conversion/VonKriesChromaticAdaptation.cs
+++ b/src/ImageSharp/Colors/Spaces/Conversion/VonKriesChromaticAdaptation.cs
@@ -43,15 +43,6 @@ namespace ImageSharp.Colors.Conversion
{
}
- ///
- /// Initializes a new instance of the class.
- ///
- ///
- private VonKriesChromaticAdaptation(CieXyzAndLmsConverter converter)
- : this(converter, converter)
- {
- }
-
///
/// Initializes a new instance of the class.
///
@@ -66,6 +57,15 @@ namespace ImageSharp.Colors.Conversion
this.conversionToXyz = conversionToCieXyz;
}
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The color converter
+ private VonKriesChromaticAdaptation(CieXyzAndLmsConverter converter)
+ : this(converter, converter)
+ {
+ }
+
///
public CieXyz Transform(CieXyz sourceColor, CieXyz sourceWhitePoint, CieXyz targetWhitePoint)
{
diff --git a/src/ImageSharp/Colors/Spaces/IColorVector.cs b/src/ImageSharp/Colors/Spaces/IColorVector.cs
index 10ad9d30f..409b0c540 100644
--- a/src/ImageSharp/Colors/Spaces/IColorVector.cs
+++ b/src/ImageSharp/Colors/Spaces/IColorVector.cs
@@ -13,7 +13,7 @@ namespace ImageSharp.Colors.Spaces
public interface IColorVector
{
///
- /// The vector representation of the color
+ /// Gets the vector representation of the color
///
Vector3 Vector { get; }
}
diff --git a/src/ImageSharp/Colors/Spaces/ICompanding.cs b/src/ImageSharp/Colors/Spaces/ICompanding.cs
index f20946b4f..11e920f39 100644
--- a/src/ImageSharp/Colors/Spaces/ICompanding.cs
+++ b/src/ImageSharp/Colors/Spaces/ICompanding.cs
@@ -19,6 +19,8 @@ namespace ImageSharp.Colors.Spaces
/// For more info see:
/// http://www.brucelindbloom.com/index.html?Eqn_RGB_to_XYZ.html
///
+ /// The channel value
+ /// The linear channel value
float InverseCompanding(float channel);
///
@@ -28,6 +30,8 @@ namespace ImageSharp.Colors.Spaces
/// For more info see:
/// http://www.brucelindbloom.com/index.html?Eqn_XYZ_to_RGB.html
///
+ /// The channel value
+ /// The nonlinear channel value
float Companding(float channel);
}
}
diff --git a/src/ImageSharp/Colors/Spaces/IRgbWorkingSpace.cs b/src/ImageSharp/Colors/Spaces/IRgbWorkingSpace.cs
index cc759753b..76b70a911 100644
--- a/src/ImageSharp/Colors/Spaces/IRgbWorkingSpace.cs
+++ b/src/ImageSharp/Colors/Spaces/IRgbWorkingSpace.cs
@@ -15,13 +15,13 @@ namespace ImageSharp.Colors.Spaces
///
CieXyz WhitePoint { get; }
- ///
- /// Chromaticity coordinates of the primaries
- ///
+ //
+ // Gets Chromaticity coordinates of the primaries
+ //
// RGBPrimariesChromaticityCoordinates ChromaticityCoordinates { get; }
///
- /// The companding function associated with the RGB color system.
+ /// Gets the companding function associated with the RGB color system.
/// Used for conversion to XYZ and backwards.
/// See this for more information:
/// http://www.brucelindbloom.com/index.html?Eqn_RGB_to_XYZ.html
diff --git a/src/ImageSharp/Colors/Spaces/Illuminants.cs b/src/ImageSharp/Colors/Spaces/Illuminants.cs
index 51ef4d8d9..398a635bf 100644
--- a/src/ImageSharp/Colors/Spaces/Illuminants.cs
+++ b/src/ImageSharp/Colors/Spaces/Illuminants.cs
@@ -1,7 +1,7 @@
namespace ImageSharp.Colors.Spaces
{
///
- /// The well known standard illuminants.
+ /// The well known standard illuminants.
/// Standard illuminants provide a basis for comparing images or colors recorded under different lighting
///
///