Browse Source

Remove interface.

af/merge-core
James Jackson-South 8 years ago
parent
commit
661c0dca6d
  1. 22
      src/ImageSharp/ColorSpaces/Conversion/IColorConversion.cs
  2. 8
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CIeLchToCieLabConverter.cs
  3. 8
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLabToCieLchConverter.cs
  4. 9
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLabToCieXyzConverter.cs
  5. 8
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuvToCieLuvConverter.cs
  6. 8
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuvToCieLchuvConverter.cs
  7. 8
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuvToCieXyzConverter.cs
  8. 14
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzAndCieXyyConverter.cs
  9. 16
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzAndLmsConverter.cs
  10. 8
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToCieLabConverter.cs
  11. 8
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToCieLuvConverter.cs
  12. 10
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToHunterLabConverter.cs
  13. 10
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToLinearRgbConverter.cs
  14. 18
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CmykAndRgbConverter.cs
  15. 14
      src/ImageSharp/ColorSpaces/Conversion/Implementation/HslAndRgbConverter.cs
  16. 14
      src/ImageSharp/ColorSpaces/Conversion/Implementation/HsvAndRgbConverter.cs
  17. 10
      src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLabToCieXyzConverter.cs
  18. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/LinearRgbAndCieXyzConverterBase.cs
  19. 10
      src/ImageSharp/ColorSpaces/Conversion/Implementation/LinearRgbToCieXyzConverter.cs
  20. 10
      src/ImageSharp/ColorSpaces/Conversion/Implementation/LinearRgbToRgbConverter.cs
  21. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/LmsAdaptationMatrix.cs
  22. 10
      src/ImageSharp/ColorSpaces/Conversion/Implementation/RgbToLinearRgbConverter.cs
  23. 16
      src/ImageSharp/ColorSpaces/Conversion/Implementation/YCbCrAndRgbConverter.cs

22
src/ImageSharp/ColorSpaces/Conversion/IColorConversion.cs

@ -1,22 +0,0 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{
/// <summary>
/// Converts color between two color spaces.
/// </summary>
/// <typeparam name="T">The input color type.</typeparam>
/// <typeparam name="TResult">The result color type.</typeparam>
internal interface IColorConversion<T, TResult>
where T : struct
where TResult : struct
{
/// <summary>
/// Performs the conversion from the input to an instance of the output type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
TResult Convert(in T input);
}
}

8
src/ImageSharp/ColorSpaces/Conversion/Implementation/CIeLchToCieLabConverter.cs

@ -9,9 +9,13 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Converts from <see cref="CieLch"/> to <see cref="CieLab"/>.
/// </summary>
internal sealed class CieLchToCieLabConverter : IColorConversion<CieLch, CieLab>
internal sealed class CieLchToCieLabConverter
{
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="CieLch"/> input to an instance of <see cref="CieLab"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public CieLab Convert(in CieLch input)
{

8
src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLabToCieLchConverter.cs

@ -9,9 +9,13 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Converts from <see cref="CieLab"/> to <see cref="CieLch"/>.
/// </summary>
internal sealed class CieLabToCieLchConverter : IColorConversion<CieLab, CieLch>
internal sealed class CieLabToCieLchConverter
{
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="CieLab"/> input to an instance of <see cref="CieLch"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public CieLch Convert(in CieLab input)
{

9
src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLabToCieXyzConverter.cs

@ -1,7 +1,6 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
@ -10,9 +9,13 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Converts from <see cref="CieLab"/> to <see cref="CieXyz"/>.
/// </summary>
internal sealed class CieLabToCieXyzConverter : IColorConversion<CieLab, CieXyz>
internal sealed class CieLabToCieXyzConverter
{
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="CieLab"/> input to an instance of <see cref="CieXyz"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public CieXyz Convert(in CieLab input)
{

8
src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuvToCieLuvConverter.cs

@ -9,9 +9,13 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Converts from <see cref="CieLch"/> to <see cref="CieLab"/>.
/// </summary>
internal sealed class CieLchuvToCieLuvConverter : IColorConversion<CieLchuv, CieLuv>
internal sealed class CieLchuvToCieLuvConverter
{
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="CieLchuv"/> input to an instance of <see cref="CieLuv"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public CieLuv Convert(in CieLchuv input)
{

8
src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuvToCieLchuvConverter.cs

@ -9,9 +9,13 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Converts from <see cref="CieLab"/> to <see cref="CieLch"/>.
/// </summary>
internal sealed class CieLuvToCieLchuvConverter : IColorConversion<CieLuv, CieLchuv>
internal sealed class CieLuvToCieLchuvConverter
{
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="CieLuv"/> input to an instance of <see cref="CieLchuv"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public CieLchuv Convert(in CieLuv input)
{

8
src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuvToCieXyzConverter.cs

@ -9,9 +9,13 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Converts from <see cref="CieLuv"/> to <see cref="CieXyz"/>.
/// </summary>
internal sealed class CieLuvToCieXyzConverter : IColorConversion<CieLuv, CieXyz>
internal sealed class CieLuvToCieXyzConverter
{
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="CieLuv"/> input to an instance of <see cref="CieXyz"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public CieXyz Convert(in CieLuv input)
{

14
src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzAndCieXyyConverter.cs

@ -10,9 +10,13 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// Color converter between CIE XYZ and CIE xyY
/// <see href="http://www.brucelindbloom.com/"/> for formulas.
/// </summary>
internal sealed class CieXyzAndCieXyyConverter : IColorConversion<CieXyz, CieXyy>, IColorConversion<CieXyy, CieXyz>
internal sealed class CieXyzAndCieXyyConverter
{
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="CieXyz"/> input to an instance of <see cref="CieXyy"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public CieXyy Convert(in CieXyz input)
{
@ -27,7 +31,11 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
return new CieXyy(x, y, input.Y);
}
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="CieXyy"/> input to an instance of <see cref="CieXyz"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public CieXyz Convert(in CieXyy input)
{

16
src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzAndLmsConverter.cs

@ -7,9 +7,9 @@ using System.Runtime.CompilerServices;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
{
/// <summary>
/// Color converter between CIE XYZ and LMS
/// Color converter between <see cref="CieXyz"/> and <see cref="Lms"/>
/// </summary>
internal sealed class CieXyzAndLmsConverter : IColorConversion<CieXyz, Lms>, IColorConversion<Lms, CieXyz>
internal sealed class CieXyzAndLmsConverter
{
/// <summary>
/// Default transformation matrix used, when no other is set. (Bradford)
@ -43,7 +43,11 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
Matrix4x4.Invert(this.transformationMatrix, out this.inverseTransformationMatrix);
}
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="CieXyz"/> input to an instance of <see cref="Lms"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Lms Convert(in CieXyz input)
{
@ -52,7 +56,11 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
return new Lms(vector);
}
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="Lms"/> input to an instance of <see cref="CieXyz"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public CieXyz Convert(in Lms input)
{

8
src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToCieLabConverter.cs

@ -9,7 +9,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Converts from <see cref="CieXyz"/> to <see cref="CieLab"/>.
/// </summary>
internal sealed class CieXyzToCieLabConverter : IColorConversion<CieXyz, CieLab>
internal sealed class CieXyzToCieLabConverter
{
/// <summary>
/// Initializes a new instance of the <see cref="CieXyzToCieLabConverter"/> class.
@ -35,7 +35,11 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// </summary>
public CieXyz LabWhitePoint { get; }
/// <inheritdoc />
/// <summary>
/// Performs the conversion from the <see cref="CieXyz"/> input to an instance of <see cref="CieLab"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public CieLab Convert(in CieXyz input)
{

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

@ -9,7 +9,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Converts from <see cref="CieXyz"/> to <see cref="CieLuv"/>.
/// </summary>
internal sealed class CieXyzToCieLuvConverter : IColorConversion<CieXyz, CieLuv>
internal sealed class CieXyzToCieLuvConverter
{
/// <summary>
/// Initializes a new instance of the <see cref="CieXyzToCieLuvConverter"/> class.
@ -35,7 +35,11 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// </summary>
public CieXyz LuvWhitePoint { get; }
/// <inheritdoc />
/// <summary>
/// Performs the conversion from the <see cref="CieXyz"/> input to an instance of <see cref="CieLuv"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public CieLuv Convert(in CieXyz input)
{

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

@ -7,9 +7,9 @@ using System.Runtime.CompilerServices;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
{
/// <summary>
/// Color converter between CieXyz and HunterLab
/// Color converter between <see cref="CieXyz"/> and <see cref="HunterLab"/>
/// </summary>
internal sealed class CieXyzToHunterLabConverter : CieXyzAndHunterLabConverterBase, IColorConversion<CieXyz, HunterLab>
internal sealed class CieXyzToHunterLabConverter : CieXyzAndHunterLabConverterBase
{
/// <summary>
/// Initializes a new instance of the <see cref="CieXyzToHunterLabConverter"/> class.
@ -35,7 +35,11 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// </summary>
public CieXyz HunterLabWhitePoint { get; }
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="CieXyz"/> input to an instance of <see cref="HunterLab"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public HunterLab Convert(in CieXyz input)
{

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

@ -7,9 +7,9 @@ using System.Runtime.CompilerServices;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
{
/// <summary>
/// Color converter between CieXyz and LinearRgb
/// Color converter between <see cref="CieXyz"/> and <see cref="LinearRgb"/>
/// </summary>
internal sealed class CieXyzToLinearRgbConverter : LinearRgbAndCieXyzConverterBase, IColorConversion<CieXyz, LinearRgb>
internal sealed class CieXyzToLinearRgbConverter : LinearRgbAndCieXyzConverterBase
{
private readonly Matrix4x4 conversionMatrix;
@ -38,7 +38,11 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// </summary>
public RgbWorkingSpace TargetWorkingSpace { get; }
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="CieXyz"/> input to an instance of <see cref="LinearRgb"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public LinearRgb Convert(in CieXyz input)
{

18
src/ImageSharp/ColorSpaces/Conversion/Implementation/CmykAndRgbConverter.cs

@ -8,11 +8,15 @@ using System.Runtime.CompilerServices;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
{
/// <summary>
/// Color converter between CMYK and Rgb
/// Color converter between <see cref="Cmyk"/> and <see cref="Rgb"/>
/// </summary>
internal sealed class CmykAndRgbConverter : IColorConversion<Cmyk, Rgb>, IColorConversion<Rgb, Cmyk>
internal sealed class CmykAndRgbConverter
{
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="Cmyk"/> input to an instance of <see cref="Rgb"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Rgb Convert(in Cmyk input)
{
@ -20,11 +24,15 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
return new Rgb(rgb);
}
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="Rgb"/> input to an instance of <see cref="Cmyk"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Cmyk Convert(in Rgb input)
{
// To CMYK
// To CMY
Vector3 cmy = Vector3.One - input.ToVector3();
// To CMYK

14
src/ImageSharp/ColorSpaces/Conversion/Implementation/HslAndRgbConverter.cs

@ -10,9 +10,13 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// Color converter between HSL and Rgb
/// See <see href="http://www.poynton.com/PDFs/coloureq.pdf"/> for formulas.
/// </summary>
internal sealed class HslAndRgbConverter : IColorConversion<Hsl, Rgb>, IColorConversion<Rgb, Hsl>
internal sealed class HslAndRgbConverter
{
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="Hsl"/> input to an instance of <see cref="Rgb"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Rgb Convert(in Hsl input)
{
@ -43,7 +47,11 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
return new Rgb(r, g, b);
}
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="Rgb"/> input to an instance of <see cref="Hsl"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Hsl Convert(in Rgb input)
{

14
src/ImageSharp/ColorSpaces/Conversion/Implementation/HsvAndRgbConverter.cs

@ -10,9 +10,13 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// Color converter between HSV and Rgb
/// See <see href="http://www.poynton.com/PDFs/coloureq.pdf"/> for formulas.
/// </summary>
internal sealed class HsvAndRgbConverter : IColorConversion<Hsv, Rgb>, IColorConversion<Rgb, Hsv>
internal sealed class HsvAndRgbConverter
{
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="Hsv"/> input to an instance of <see cref="Rgb"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Rgb Convert(in Hsv input)
{
@ -75,7 +79,11 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
return new Rgb(r, g, b);
}
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="Rgb"/> input to an instance of <see cref="Hsv"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Hsv Convert(in Rgb input)
{

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

@ -7,11 +7,15 @@ using System.Runtime.CompilerServices;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
{
/// <summary>
/// Color converter between HunterLab and CieXyz
/// Color converter between <see cref="HunterLab"/> and <see cref="CieXyz"/>
/// </summary>
internal sealed class HunterLabToCieXyzConverter : CieXyzAndHunterLabConverterBase, IColorConversion<HunterLab, CieXyz>
internal sealed class HunterLabToCieXyzConverter : CieXyzAndHunterLabConverterBase
{
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="HunterLab"/> input to an instance of <see cref="CieXyz"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public CieXyz Convert(in HunterLab input)
{

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

@ -6,7 +6,7 @@ using System.Numerics;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
{
/// <summary>
/// Provides base methods for converting between Rgb and CieXyz color spaces.
/// Provides base methods for converting between <see cref="LinearRgb"/> and <see cref="CieXyz"/> color spaces.
/// </summary>
internal abstract class LinearRgbAndCieXyzConverterBase
{

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

@ -6,9 +6,9 @@ using System.Numerics;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
{
/// <summary>
/// Color converter between LinearRgb and CieXyz
/// Color converter between <see cref="LinearRgb"/> and <see cref="CieXyz"/>
/// </summary>
internal sealed class LinearRgbToCieXyzConverter : LinearRgbAndCieXyzConverterBase, IColorConversion<LinearRgb, CieXyz>
internal sealed class LinearRgbToCieXyzConverter : LinearRgbAndCieXyzConverterBase
{
private readonly Matrix4x4 conversionMatrix;
@ -35,7 +35,11 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// </summary>
public RgbWorkingSpace SourceWorkingSpace { get; }
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="LinearRgb"/> input to an instance of <see cref="CieXyz"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
public CieXyz Convert(in LinearRgb input)
{
DebugGuard.IsTrue(input.WorkingSpace.Equals(this.SourceWorkingSpace), nameof(input.WorkingSpace), "Input and source working spaces must be equal.");

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

@ -6,11 +6,15 @@ using System.Numerics;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
{
/// <summary>
/// Color converter between LinearRgb and Rgb
/// Color converter between <see cref="LinearRgb"/> and <see cref="Rgb"/>
/// </summary>
internal sealed class LinearRgbToRgbConverter : IColorConversion<LinearRgb, Rgb>
internal sealed class LinearRgbToRgbConverter
{
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="LinearRgb"/> input to an instance of <see cref="Rgb"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
public Rgb Convert(in LinearRgb input)
{
var vector = input.ToVector3();

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

@ -7,7 +7,7 @@ using System.Numerics;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
{
/// <summary>
/// AdaptionMatrix3X3 used for transformation from XYZ to LMS, defining the cone response domain.
/// Matrices used for transformation from <see cref="CieXyz"/> to <see cref="Lms"/>, defining the cone response domain.
/// Used in <see cref="IChromaticAdaptation"/>
/// </summary>
/// <remarks>

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

@ -8,12 +8,16 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Color converter between Rgb and LinearRgb
/// </summary>
internal class RgbToLinearRgbConverter : IColorConversion<Rgb, LinearRgb>
internal class RgbToLinearRgbConverter
{
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="Rgb"/> input to an instance of <see cref="LinearRgb"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
public LinearRgb Convert(in Rgb input)
{
Vector3 vector = input.ToVector3();
var vector = input.ToVector3();
vector.X = input.WorkingSpace.Companding.Expand(vector.X);
vector.Y = input.WorkingSpace.Companding.Expand(vector.Y);
vector.Z = input.WorkingSpace.Companding.Expand(vector.Z);

16
src/ImageSharp/ColorSpaces/Conversion/Implementation/YCbCrAndRgbConverter.cs

@ -8,14 +8,18 @@ using System.Runtime.CompilerServices;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
{
/// <summary>
/// Color converter between YCbCr and Rgb
/// Color converter between <see cref="YCbCr"/> and <see cref="Rgb"/>
/// See <see href="https://en.wikipedia.org/wiki/YCbCr#JPEG_conversion"/> for formulas.
/// </summary>
internal sealed class YCbCrAndRgbConverter : IColorConversion<YCbCr, Rgb>, IColorConversion<Rgb, YCbCr>
internal sealed class YCbCrAndRgbConverter
{
private static readonly Vector3 MaxBytes = new Vector3(255F);
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="YCbCr"/> input to an instance of <see cref="Rgb"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Rgb Convert(in YCbCr input)
{
@ -30,7 +34,11 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
return new Rgb(new Vector3(r, g, b) / MaxBytes);
}
/// <inheritdoc/>
/// <summary>
/// Performs the conversion from the <see cref="Rgb"/> input to an instance of <see cref="YCbCr"/> type.
/// </summary>
/// <param name="input">The input color instance.</param>
/// <returns>The converted result</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public YCbCr Convert(in Rgb input)
{

Loading…
Cancel
Save