Browse Source

Make colorspaces public

af/merge-core
James Jackson-South 8 years ago
parent
commit
b78c022294
  1. 2
      src/ImageSharp/ColorSpaces/CieLab.cs
  2. 2
      src/ImageSharp/ColorSpaces/CieLch.cs
  3. 2
      src/ImageSharp/ColorSpaces/CieLchuv.cs
  4. 2
      src/ImageSharp/ColorSpaces/CieLuv.cs
  5. 2
      src/ImageSharp/ColorSpaces/CieXyChromaticityCoordinates.cs
  6. 2
      src/ImageSharp/ColorSpaces/CieXyy.cs
  7. 2
      src/ImageSharp/ColorSpaces/CieXyz.cs
  8. 2
      src/ImageSharp/ColorSpaces/Cmyk.cs
  9. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Adapt.cs
  10. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLab.cs
  11. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLch.cs
  12. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLchuv.cs
  13. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLuv.cs
  14. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieXyy.cs
  15. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieXyz.cs
  16. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Cmyk.cs
  17. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsl.cs
  18. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsv.cs
  19. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.HunterLab.cs
  20. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.LinearRgb.cs
  21. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Lms.cs
  22. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Rgb.cs
  23. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.YCbCr.cs
  24. 2
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.cs
  25. 2
      src/ImageSharp/ColorSpaces/Conversion/IChromaticAdaptation.cs
  26. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CIeLchToCieLabConverter.cs
  27. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLabToCieLchConverter.cs
  28. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLabToCieXyzConverter.cs
  29. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuvToCieLuvConverter.cs
  30. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuvToCieLchuvConverter.cs
  31. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuvToCieXyzConverter.cs
  32. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzAndCieXyyConverter.cs
  33. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzAndLmsConverter.cs
  34. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToCieLabConverter.cs
  35. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToCieLuvConverter.cs
  36. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToHunterLabConverter.cs
  37. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/CmykAndRgbConverter.cs
  38. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/GammaCompanding.cs
  39. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/HslAndRgbConverter.cs
  40. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/HsvAndRgbConverter.cs
  41. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLabToCieXyzConverter.cs
  42. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/LCompanding.cs
  43. 4
      src/ImageSharp/ColorSpaces/Conversion/Implementation/LinearRgbToRgbConverter.cs
  44. 92
      src/ImageSharp/ColorSpaces/Conversion/Implementation/LmsAdaptationMatrix.cs
  45. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/RGBPrimariesChromaticityCoordinates.cs
  46. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/Rec2020Companding.cs
  47. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/Rec709Companding.cs
  48. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/RgbWorkingSpace.cs
  49. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/SRgbCompanding.cs
  50. 2
      src/ImageSharp/ColorSpaces/Conversion/Implementation/YCbCrAndRgbConverter.cs
  51. 4
      src/ImageSharp/ColorSpaces/Conversion/VonKriesChromaticAdaptation.cs
  52. 2
      src/ImageSharp/ColorSpaces/Hsl.cs
  53. 2
      src/ImageSharp/ColorSpaces/Hsv.cs
  54. 2
      src/ImageSharp/ColorSpaces/HunterLab.cs
  55. 28
      src/ImageSharp/ColorSpaces/IAlmostEquatable.cs
  56. 2
      src/ImageSharp/ColorSpaces/ICompanding.cs
  57. 2
      src/ImageSharp/ColorSpaces/Illuminants.cs
  58. 2
      src/ImageSharp/ColorSpaces/LinearRgb.cs
  59. 2
      src/ImageSharp/ColorSpaces/Lms.cs
  60. 24
      src/ImageSharp/ColorSpaces/Rgb.cs
  61. 2
      src/ImageSharp/ColorSpaces/RgbWorkingSpaces.cs
  62. 2
      src/ImageSharp/ColorSpaces/YCbCr.cs
  63. 15
      src/ImageSharp/PixelFormats/Rgb24.cs
  64. 15
      src/ImageSharp/PixelFormats/Rgba32.cs

2
src/ImageSharp/ColorSpaces/CieLab.cs

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// Represents a CIE L*a*b* 1976 color.
/// <see href="https://en.wikipedia.org/wiki/Lab_color_space"/>
/// </summary>
internal readonly struct CieLab : IEquatable<CieLab>
public readonly struct CieLab : IEquatable<CieLab>
{
/// <summary>
/// D50 standard illuminant.

2
src/ImageSharp/ColorSpaces/CieLch.cs

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// Represents the CIE L*C*h°, cylindrical form of the CIE L*a*b* 1976 color.
/// <see href="https://en.wikipedia.org/wiki/Lab_color_space#Cylindrical_representation:_CIELCh_or_CIEHLC"/>
/// </summary>
internal readonly struct CieLch : IEquatable<CieLch>
public readonly struct CieLch : IEquatable<CieLch>
{
/// <summary>
/// D50 standard illuminant.

2
src/ImageSharp/ColorSpaces/CieLchuv.cs

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// Represents the CIE L*C*h°, cylindrical form of the CIE L*u*v* 1976 color.
/// <see href="https://en.wikipedia.org/wiki/Lab_color_space#Cylindrical_representation:_CieLchuv_or_CIEHLC"/>
/// </summary>
internal readonly struct CieLchuv : IEquatable<CieLchuv>
public readonly struct CieLchuv : IEquatable<CieLchuv>
{
/// <summary>
/// D50 standard illuminant.

2
src/ImageSharp/ColorSpaces/CieLuv.cs

@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// attempted perceptual uniformity
/// <see href="https://en.wikipedia.org/wiki/CIELUV"/>
/// </summary>
internal readonly struct CieLuv : IEquatable<CieLuv>
public readonly struct CieLuv : IEquatable<CieLuv>
{
/// <summary>
/// D65 standard illuminant.

2
src/ImageSharp/ColorSpaces/CieXyChromaticityCoordinates.cs

@ -10,7 +10,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// <summary>
/// Represents the coordinates of CIEXY chromaticity space
/// </summary>
internal readonly struct CieXyChromaticityCoordinates : IEquatable<CieXyChromaticityCoordinates>
public readonly struct CieXyChromaticityCoordinates : IEquatable<CieXyChromaticityCoordinates>
{
/// <summary>
/// Gets the chromaticity X-coordinate.

2
src/ImageSharp/ColorSpaces/CieXyy.cs

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// Represents an CIE xyY 1931 color
/// <see href="https://en.wikipedia.org/wiki/CIE_1931_color_space#CIE_xy_chromaticity_diagram_and_the_CIE_xyY_color_space"/>
/// </summary>
internal readonly struct CieXyy : IEquatable<CieXyy>
public readonly struct CieXyy : IEquatable<CieXyy>
{
/// <summary>
/// Gets the X chrominance component.

2
src/ImageSharp/ColorSpaces/CieXyz.cs

@ -12,7 +12,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// Represents an CIE XYZ 1931 color
/// <see href="https://en.wikipedia.org/wiki/CIE_1931_color_space#Definition_of_the_CIE_XYZ_color_space"/>
/// </summary>
internal readonly struct CieXyz : IEquatable<CieXyz>
public readonly struct CieXyz : IEquatable<CieXyz>
{
/// <summary>
/// Gets the X component. A mix (a linear combination) of cone response curves chosen to be nonnegative.

2
src/ImageSharp/ColorSpaces/Cmyk.cs

@ -10,7 +10,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// <summary>
/// Represents an CMYK (cyan, magenta, yellow, keyline) color.
/// </summary>
internal readonly struct Cmyk : IEquatable<Cmyk>
public readonly struct Cmyk : IEquatable<Cmyk>
{
/// <summary>
/// Gets the cyan color component.

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

@ -10,7 +10,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// <content>
/// Performs chromatic adaptation on the various color spaces.
/// </content>
internal partial class ColorSpaceConverter
public partial class ColorSpaceConverter
{
/// <summary>
/// Performs chromatic adaptation of given <see cref="CieXyz"/> color.

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

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// <content>
/// Allows conversion to <see cref="CieLab"/>.
/// </content>
internal partial class ColorSpaceConverter
public partial class ColorSpaceConverter
{
/// <summary>
/// The converter for converting between CieLch to CieLab.

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

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// <content>
/// Allows conversion to <see cref="CieLch"/>.
/// </content>
internal partial class ColorSpaceConverter
public partial class ColorSpaceConverter
{
/// <summary>
/// The converter for converting between CieLab to CieLch.

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

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// <content>
/// Allows conversion to <see cref="CieLchuv"/>.
/// </content>
internal partial class ColorSpaceConverter
public partial class ColorSpaceConverter
{
/// <summary>
/// The converter for converting between CieLab to CieLchuv.

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

@ -12,7 +12,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// <content>
/// Allows conversion to <see cref="CieLuv"/>.
/// </content>
internal partial class ColorSpaceConverter
public partial class ColorSpaceConverter
{
private static readonly CieLchuvToCieLuvConverter CieLchuvToCieLuvConverter = new CieLchuvToCieLuvConverter();

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

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// <content>
/// Allows conversion to <see cref="CieXyy"/>.
/// </content>
internal partial class ColorSpaceConverter
public partial class ColorSpaceConverter
{
private static readonly CieXyzAndCieXyyConverter CieXyzAndCieXyyConverter = new CieXyzAndCieXyyConverter();

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

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// <content>
/// Allows conversion to <see cref="CieXyz"/>.
/// </content>
internal partial class ColorSpaceConverter
public partial class ColorSpaceConverter
{
private static readonly CieLabToCieXyzConverter CieLabToCieXyzConverter = new CieLabToCieXyzConverter();

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

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// <content>
/// Allows conversion to <see cref="Cmyk"/>.
/// </content>
internal partial class ColorSpaceConverter
public partial class ColorSpaceConverter
{
private static readonly CmykAndRgbConverter CmykAndRgbConverter = new CmykAndRgbConverter();

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

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// <content>
/// Allows conversion to <see cref="Hsl"/>.
/// </content>
internal partial class ColorSpaceConverter
public partial class ColorSpaceConverter
{
private static readonly HslAndRgbConverter HslAndRgbConverter = new HslAndRgbConverter();

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

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// <content>
/// Allows conversion to <see cref="Hsv"/>.
/// </content>
internal partial class ColorSpaceConverter
public partial class ColorSpaceConverter
{
private static readonly HsvAndRgbConverter HsvAndRgbConverter = new HsvAndRgbConverter();

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

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// <content>
/// Allows conversion to <see cref="HunterLab"/>.
/// </content>
internal partial class ColorSpaceConverter
public partial class ColorSpaceConverter
{
/// <summary>
/// Converts a <see cref="CieLab"/> into a <see cref="HunterLab"/>

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

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// <content>
/// Allows conversion to <see cref="LinearRgb"/>.
/// </content>
internal partial class ColorSpaceConverter
public partial class ColorSpaceConverter
{
private static readonly RgbToLinearRgbConverter RgbToLinearRgbConverter = new RgbToLinearRgbConverter();

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

@ -10,7 +10,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// <content>
/// Allows conversion to <see cref="Lms"/>.
/// </content>
internal partial class ColorSpaceConverter
public partial class ColorSpaceConverter
{
/// <summary>
/// Converts a <see cref="CieLab"/> into a <see cref="Lms"/>

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

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// <content>
/// Allows conversion to <see cref="Rgb"/>.
/// </content>
internal partial class ColorSpaceConverter
public partial class ColorSpaceConverter
{
private static readonly LinearRgbToRgbConverter LinearRgbToRgbConverter = new LinearRgbToRgbConverter();

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

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// <content>
/// Allows conversion to <see cref="YCbCr"/>.
/// </content>
internal partial class ColorSpaceConverter
public partial class ColorSpaceConverter
{
private static readonly YCbCrAndRgbConverter YCbCrAndRgbConverter = new YCbCrAndRgbConverter();

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

@ -9,7 +9,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// <summary>
/// Converts between color spaces ensuring that the color is adapted using chromatic adaptation.
/// </summary>
internal partial class ColorSpaceConverter
public partial class ColorSpaceConverter
{
/// <summary>
/// The default whitepoint used for converting to CieLab

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

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// A linear transformation of a source color (XS, YS, ZS) into a destination color (XD, YD, ZD) by a linear transformation [M]
/// which is dependent on the source reference white (XWS, YWS, ZWS) and the destination reference white (XWD, YWD, ZWD).
/// </summary>
internal interface IChromaticAdaptation
public interface IChromaticAdaptation
{
/// <summary>
/// Performs a linear transformation of a source color in to the destination color.

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

@ -9,7 +9,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Converts from <see cref="CieLch"/> to <see cref="CieLab"/>.
/// </summary>
internal class CieLchToCieLabConverter : IColorConversion<CieLch, CieLab>
internal sealed class CieLchToCieLabConverter : IColorConversion<CieLch, CieLab>
{
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]

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

@ -9,7 +9,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Converts from <see cref="CieLab"/> to <see cref="CieLch"/>.
/// </summary>
internal class CieLabToCieLchConverter : IColorConversion<CieLab, CieLch>
internal sealed class CieLabToCieLchConverter : IColorConversion<CieLab, CieLch>
{
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]

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

@ -10,7 +10,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Converts from <see cref="CieLab"/> to <see cref="CieXyz"/>.
/// </summary>
internal class CieLabToCieXyzConverter : IColorConversion<CieLab, CieXyz>
internal sealed class CieLabToCieXyzConverter : IColorConversion<CieLab, CieXyz>
{
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]

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

@ -9,7 +9,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Converts from <see cref="CieLch"/> to <see cref="CieLab"/>.
/// </summary>
internal class CieLchuvToCieLuvConverter : IColorConversion<CieLchuv, CieLuv>
internal sealed class CieLchuvToCieLuvConverter : IColorConversion<CieLchuv, CieLuv>
{
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]

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

@ -9,7 +9,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Converts from <see cref="CieLab"/> to <see cref="CieLch"/>.
/// </summary>
internal class CieLuvToCieLchuvConverter : IColorConversion<CieLuv, CieLchuv>
internal sealed class CieLuvToCieLchuvConverter : IColorConversion<CieLuv, CieLchuv>
{
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]

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

@ -9,7 +9,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Converts from <see cref="CieLuv"/> to <see cref="CieXyz"/>.
/// </summary>
internal class CieLuvToCieXyzConverter : IColorConversion<CieLuv, CieXyz>
internal sealed class CieLuvToCieXyzConverter : IColorConversion<CieLuv, CieXyz>
{
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]

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

@ -10,7 +10,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// Color converter between CIE XYZ and CIE xyY
/// <see href="http://www.brucelindbloom.com/"/> for formulas.
/// </summary>
internal class CieXyzAndCieXyyConverter : IColorConversion<CieXyz, CieXyy>, IColorConversion<CieXyy, CieXyz>
internal sealed class CieXyzAndCieXyyConverter : IColorConversion<CieXyz, CieXyy>, IColorConversion<CieXyy, CieXyz>
{
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]

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

@ -9,7 +9,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Color converter between CIE XYZ and LMS
/// </summary>
internal class CieXyzAndLmsConverter : IColorConversion<CieXyz, Lms>, IColorConversion<Lms, CieXyz>
internal sealed class CieXyzAndLmsConverter : IColorConversion<CieXyz, Lms>, IColorConversion<Lms, CieXyz>
{
/// <summary>
/// Default transformation matrix used, when no other is set. (Bradford)

2
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 class CieXyzToCieLabConverter : IColorConversion<CieXyz, CieLab>
internal sealed class CieXyzToCieLabConverter : IColorConversion<CieXyz, CieLab>
{
/// <summary>
/// Initializes a new instance of the <see cref="CieXyzToCieLabConverter"/> class.

2
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 class CieXyzToCieLuvConverter : IColorConversion<CieXyz, CieLuv>
internal sealed class CieXyzToCieLuvConverter : IColorConversion<CieXyz, CieLuv>
{
/// <summary>
/// Initializes a new instance of the <see cref="CieXyzToCieLuvConverter"/> class.

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

@ -9,7 +9,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Color converter between CieXyz and HunterLab
/// </summary>
internal class CieXyzToHunterLabConverter : CieXyzAndHunterLabConverterBase, IColorConversion<CieXyz, HunterLab>
internal sealed class CieXyzToHunterLabConverter : CieXyzAndHunterLabConverterBase, IColorConversion<CieXyz, HunterLab>
{
/// <summary>
/// Initializes a new instance of the <see cref="CieXyzToHunterLabConverter"/> class.

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

@ -10,7 +10,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Color converter between CMYK and Rgb
/// </summary>
internal class CmykAndRgbConverter : IColorConversion<Cmyk, Rgb>, IColorConversion<Rgb, Cmyk>
internal sealed class CmykAndRgbConverter : IColorConversion<Cmyk, Rgb>, IColorConversion<Rgb, Cmyk>
{
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]

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

@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <see href="http://www.brucelindbloom.com/index.html?Eqn_RGB_to_XYZ.html"/>
/// <see href="http://www.brucelindbloom.com/index.html?Eqn_XYZ_to_RGB.html"/>
/// </remarks>
internal class GammaCompanding : ICompanding
public sealed class GammaCompanding : ICompanding
{
/// <summary>
/// Initializes a new instance of the <see cref="GammaCompanding"/> class.

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

@ -10,7 +10,7 @@ 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 class HslAndRgbConverter : IColorConversion<Hsl, Rgb>, IColorConversion<Rgb, Hsl>
internal sealed class HslAndRgbConverter : IColorConversion<Hsl, Rgb>, IColorConversion<Rgb, Hsl>
{
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]

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

@ -10,7 +10,7 @@ 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 class HsvAndRgbConverter : IColorConversion<Hsv, Rgb>, IColorConversion<Rgb, Hsv>
internal sealed class HsvAndRgbConverter : IColorConversion<Hsv, Rgb>, IColorConversion<Rgb, Hsv>
{
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]

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

@ -9,7 +9,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Color converter between HunterLab and CieXyz
/// </summary>
internal class HunterLabToCieXyzConverter : CieXyzAndHunterLabConverterBase, IColorConversion<HunterLab, CieXyz>
internal sealed class HunterLabToCieXyzConverter : CieXyzAndHunterLabConverterBase, IColorConversion<HunterLab, CieXyz>
{
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]

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

@ -14,7 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <see href="http://www.brucelindbloom.com/index.html?Eqn_RGB_to_XYZ.html"/>
/// <see href="http://www.brucelindbloom.com/index.html?Eqn_XYZ_to_RGB.html"/>
/// </remarks>
internal class LCompanding : ICompanding
public sealed class LCompanding : ICompanding
{
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]

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

@ -8,12 +8,12 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Color converter between LinearRgb and Rgb
/// </summary>
internal class LinearRgbToRgbConverter : IColorConversion<LinearRgb, Rgb>
internal sealed class LinearRgbToRgbConverter : IColorConversion<LinearRgb, Rgb>
{
/// <inheritdoc/>
public Rgb Convert(in LinearRgb input)
{
Vector3 vector = input.ToVector3();
var vector = input.ToVector3();
vector.X = input.WorkingSpace.Companding.Compress(vector.X);
vector.Y = input.WorkingSpace.Companding.Compress(vector.Y);
vector.Z = input.WorkingSpace.Companding.Compress(vector.Z);

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

@ -17,7 +17,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// DISCo, Department of Informatics, Systems and Communication, University of Milan-Bicocca, viale Sarca 336, 20126 Milan, Italy
/// https://web.stanford.edu/~sujason/ColorBalancing/Papers/Two%20New%20von%20Kries%20Based%20Chromatic%20Adaptation.pdf
/// </remarks>
internal static class LmsAdaptationMatrix
public static class LmsAdaptationMatrix
{
/// <summary>
/// Von Kries chromatic adaptation transform matrix (Hunt-Pointer-Estevez adjusted for D65)
@ -25,9 +25,15 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
public static readonly Matrix4x4 VonKriesHPEAdjusted
= Matrix4x4.Transpose(new Matrix4x4
{
M11 = 0.40024F, M12 = 0.7076F, M13 = -0.08081F,
M21 = -0.2263F, M22 = 1.16532F, M23 = 0.0457F,
M31 = 0, M32 = 0, M33 = 0.91822F,
M11 = 0.40024F,
M12 = 0.7076F,
M13 = -0.08081F,
M21 = -0.2263F,
M22 = 1.16532F,
M23 = 0.0457F,
M31 = 0,
M32 = 0,
M33 = 0.91822F,
M44 = 1F // Important for inverse transforms.
});
@ -37,9 +43,15 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
public static readonly Matrix4x4 VonKriesHPE
= Matrix4x4.Transpose(new Matrix4x4
{
M11 = 0.3897F, M12 = 0.6890F, M13 = -0.0787F,
M21 = -0.2298F, M22 = 1.1834F, M23 = 0.0464F,
M31 = 0, M32 = 0, M33 = 1F,
M11 = 0.3897F,
M12 = 0.6890F,
M13 = -0.0787F,
M21 = -0.2298F,
M22 = 1.1834F,
M23 = 0.0464F,
M31 = 0,
M32 = 0,
M33 = 1F,
M44 = 1F
});
@ -54,9 +66,15 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
public static readonly Matrix4x4 Bradford
= Matrix4x4.Transpose(new Matrix4x4
{
M11 = 0.8951F, M12 = 0.2664F, M13 = -0.1614F,
M21 = -0.7502F, M22 = 1.7135F, M23 = 0.0367F,
M31 = 0.0389F, M32 = -0.0685F, M33 = 1.0296F,
M11 = 0.8951F,
M12 = 0.2664F,
M13 = -0.1614F,
M21 = -0.7502F,
M22 = 1.7135F,
M23 = 0.0367F,
M31 = 0.0389F,
M32 = -0.0685F,
M33 = 1.0296F,
M44 = 1F
});
@ -65,35 +83,53 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// </summary>
public static readonly Matrix4x4 BradfordSharp
= Matrix4x4.Transpose(new Matrix4x4
{
M11 = 1.2694F, M12 = -0.0988F, M13 = -0.1706F,
M21 = -0.8364F, M22 = 1.8006F, M23 = 0.0357F,
M31 = 0.0297F, M32 = -0.0315F, M33 = 1.0018F,
M44 = 1F
});
{
M11 = 1.2694F,
M12 = -0.0988F,
M13 = -0.1706F,
M21 = -0.8364F,
M22 = 1.8006F,
M23 = 0.0357F,
M31 = 0.0297F,
M32 = -0.0315F,
M33 = 1.0018F,
M44 = 1F
});
/// <summary>
/// CMCCAT2000 (fitted from all available color data sets)
/// </summary>
public static readonly Matrix4x4 CMCCAT2000
= Matrix4x4.Transpose(new Matrix4x4
{
M11 = 0.7982F, M12 = 0.3389F, M13 = -0.1371F,
M21 = -0.5918F, M22 = 1.5512F, M23 = 0.0406F,
M31 = 0.0008F, M32 = 0.239F, M33 = 0.9753F,
M44 = 1F
});
{
M11 = 0.7982F,
M12 = 0.3389F,
M13 = -0.1371F,
M21 = -0.5918F,
M22 = 1.5512F,
M23 = 0.0406F,
M31 = 0.0008F,
M32 = 0.239F,
M33 = 0.9753F,
M44 = 1F
});
/// <summary>
/// CAT02 (optimized for minimizing CIELAB differences)
/// </summary>
public static readonly Matrix4x4 CAT02
= Matrix4x4.Transpose(new Matrix4x4
{
M11 = 0.7328F, M12 = 0.4296F, M13 = -0.1624F,
M21 = -0.7036F, M22 = 1.6975F, M23 = 0.0061F,
M31 = 0.0030F, M32 = 0.0136F, M33 = 0.9834F,
M44 = 1F
});
{
M11 = 0.7328F,
M12 = 0.4296F,
M13 = -0.1624F,
M21 = -0.7036F,
M22 = 1.6975F,
M23 = 0.0061F,
M31 = 0.0030F,
M32 = 0.0136F,
M33 = 0.9834F,
M44 = 1F
});
}
}

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

@ -9,7 +9,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// Represents the chromaticity coordinates of RGB primaries.
/// One of the specifiers of <see cref="RgbWorkingSpace"/>.
/// </summary>
internal readonly struct RgbPrimariesChromaticityCoordinates : IEquatable<RgbPrimariesChromaticityCoordinates>
public readonly struct RgbPrimariesChromaticityCoordinates : IEquatable<RgbPrimariesChromaticityCoordinates>
{
/// <summary>
/// Initializes a new instance of the <see cref="RgbPrimariesChromaticityCoordinates"/> struct.

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

@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <see href="http://en.wikipedia.org/wiki/Rec._2020"/>
/// For 10-bits, companding is identical to <see cref="Rec709Companding"/>
/// </remarks>
internal class Rec2020Companding : ICompanding
public sealed class Rec2020Companding : ICompanding
{
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]

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

@ -12,7 +12,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <remarks>
/// http://en.wikipedia.org/wiki/Rec._709
/// </remarks>
internal class Rec709Companding : ICompanding
public sealed class Rec709Companding : ICompanding
{
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]

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

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <summary>
/// Trivial implementation of <see cref="RgbWorkingSpace"/>
/// </summary>
internal class RgbWorkingSpace : IEquatable<RgbWorkingSpace>
public class RgbWorkingSpace : IEquatable<RgbWorkingSpace>
{
/// <summary>
/// Initializes a new instance of the <see cref="RgbWorkingSpace"/> class.

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

@ -14,7 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// <see href="http://www.brucelindbloom.com/index.html?Eqn_RGB_to_XYZ.html"/>
/// <see href="http://www.brucelindbloom.com/index.html?Eqn_XYZ_to_RGB.html"/>
/// </remarks>
internal class SRgbCompanding : ICompanding
public sealed class SRgbCompanding : ICompanding
{
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]

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

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
/// Color converter between YCbCr and Rgb
/// See <see href="https://en.wikipedia.org/wiki/YCbCr#JPEG_conversion"/> for formulas.
/// </summary>
internal class YCbCrAndRgbConverter : IColorConversion<YCbCr, Rgb>, IColorConversion<Rgb, YCbCr>
internal sealed class YCbCrAndRgbConverter : IColorConversion<YCbCr, Rgb>, IColorConversion<Rgb, YCbCr>
{
private static readonly Vector3 MaxBytes = new Vector3(255F);

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

@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// Transformation described here:
/// http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html
/// </remarks>
internal class VonKriesChromaticAdaptation : IChromaticAdaptation
public class VonKriesChromaticAdaptation : IChromaticAdaptation
{
private readonly CieXyzAndLmsConverter converter;
@ -41,7 +41,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// Initializes a new instance of the <see cref="VonKriesChromaticAdaptation"/> class.
/// </summary>
/// <param name="converter">The color converter</param>
public VonKriesChromaticAdaptation(CieXyzAndLmsConverter converter)
internal VonKriesChromaticAdaptation(CieXyzAndLmsConverter converter)
{
this.converter = converter;
}

2
src/ImageSharp/ColorSpaces/Hsl.cs

@ -10,7 +10,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// <summary>
/// Represents a Hsl (hue, saturation, lightness) color.
/// </summary>
internal readonly struct Hsl : IEquatable<Hsl>
public readonly struct Hsl : IEquatable<Hsl>
{
/// <summary>
/// Max range used for clamping.

2
src/ImageSharp/ColorSpaces/Hsv.cs

@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// <summary>
/// Represents a HSV (hue, saturation, value) color. Also known as HSB (hue, saturation, brightness).
/// </summary>
internal readonly struct Hsv : IEquatable<Hsv>
public readonly struct Hsv : IEquatable<Hsv>
{
/// <summary>
/// Max range used for clamping.

2
src/ImageSharp/ColorSpaces/HunterLab.cs

@ -12,7 +12,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// Represents an Hunter LAB color.
/// <see href="https://en.wikipedia.org/wiki/Lab_color_space"/>
/// </summary>
internal readonly struct HunterLab : IEquatable<HunterLab>
public readonly struct HunterLab : IEquatable<HunterLab>
{
/// <summary>
/// D50 standard illuminant.

28
src/ImageSharp/ColorSpaces/IAlmostEquatable.cs

@ -1,28 +0,0 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
namespace SixLabors.ImageSharp.ColorSpaces
{
/// <summary>
/// Defines a generalized method that a value type or class implements to create
/// a type-specific method for determining approximate equality of instances.
/// </summary>
/// <typeparam name="TPixel">The type of objects to compare.</typeparam>
/// <typeparam name="TPrecision">The object specifying the type to specify precision with.</typeparam>
internal interface IAlmostEquatable<in TPixel, in TPrecision>
where TPrecision : struct, IComparable<TPrecision>
{
/// <summary>
/// Indicates whether the current object is equal to another object of the same type
/// when compared to the specified precision level.
/// </summary>
/// <param name="other">An object to compare with this object.</param>
/// <param name="precision">The object specifying the level of precision.</param>
/// <returns>
/// true if the current object is equal to the other parameter; otherwise, false.
/// </returns>
bool AlmostEquals(TPixel other, TPrecision precision);
}
}

2
src/ImageSharp/ColorSpaces/ICompanding.cs

@ -10,7 +10,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// Used for conversion to <see cref="CieXyz"/> and backwards.
/// See also: <seealso cref="RgbWorkingSpace.Companding"/>
/// </summary>
internal interface ICompanding
public interface ICompanding
{
/// <summary>
/// Expands a companded channel to its linear equivalent with respect to the energy.

2
src/ImageSharp/ColorSpaces/Illuminants.cs

@ -14,7 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// Descriptions taken from:
/// http://en.wikipedia.org/wiki/Standard_illuminant
/// </remarks>
internal static class Illuminants
public static class Illuminants
{
/// <summary>
/// Incandescent / Tungsten

2
src/ImageSharp/ColorSpaces/LinearRgb.cs

@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// <summary>
/// Represents an linear Rgb color with specified <see cref="RgbWorkingSpace"/> working space
/// </summary>
internal readonly struct LinearRgb : IEquatable<LinearRgb>
public readonly struct LinearRgb : IEquatable<LinearRgb>
{
/// <summary>
/// The default LinearRgb working space.

2
src/ImageSharp/ColorSpaces/Lms.cs

@ -12,7 +12,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// named after their responsivity (sensitivity) at long, medium and short wavelengths.
/// <see href="https://en.wikipedia.org/wiki/LMS_color_space"/>
/// </summary>
internal readonly struct Lms : IEquatable<Lms>
public readonly struct Lms : IEquatable<Lms>
{
/// <summary>
/// Gets the L long component.

24
src/ImageSharp/ColorSpaces/Rgb.cs

@ -12,7 +12,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// <summary>
/// Represents an RGB color with specified <see cref="RgbWorkingSpace"/> working space.
/// </summary>
internal readonly struct Rgb : IEquatable<Rgb>
public readonly struct Rgb : IEquatable<Rgb>
{
/// <summary>
/// The default rgb working space
@ -97,20 +97,28 @@ namespace SixLabors.ImageSharp.ColorSpaces
this.WorkingSpace = workingSpace;
}
/// <summary>
/// Allows the implicit conversion of an instance of <see cref="Rgb24"/> to a
/// <see cref="Rgb"/>.
/// </summary>
/// <param name="color">The instance of <see cref="Rgba32"/> to convert.</param>
/// <returns>An instance of <see cref="Rgb"/>.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator Rgb(Rgb24 color)
{
return new Rgb(color.R / 255F, color.G / 255F, color.B / 255F);
}
/// <summary>
/// Allows the implicit conversion of an instance of <see cref="Rgba32"/> to a
/// <see cref="Rgb"/>.
/// </summary>
/// <param name="color">
/// The instance of <see cref="Rgba32"/> to convert.
/// </param>
/// <returns>
/// An instance of <see cref="Rgb"/>.
/// </returns>
/// <param name="color">The instance of <see cref="Rgba32"/> to convert.</param>
/// <returns>An instance of <see cref="Rgb"/>.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator Rgb(Rgba32 color)
{
return new Rgb(color.R / 255F, color.G / 255F, color.B / 255F);
return new Rgba32(color.R / 255F, color.G / 255F, color.B / 255F);
}
/// <summary>

2
src/ImageSharp/ColorSpaces/RgbWorkingSpaces.cs

@ -10,7 +10,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// Chromaticity coordinates taken from:
/// <see href="http://www.brucelindbloom.com/index.html?WorkingSpaceInfo.html"/>
/// </summary>
internal static class RgbWorkingSpaces
public static class RgbWorkingSpaces
{
/// <summary>
/// sRgb working space.

2
src/ImageSharp/ColorSpaces/YCbCr.cs

@ -12,7 +12,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// <see href="http://en.wikipedia.org/wiki/YCbCr"/>
/// <see href="http://www.ijg.org/files/T-REC-T.871-201105-I!!PDF-E.pdf"/>
/// </summary>
internal readonly struct YCbCr : IEquatable<YCbCr>
public readonly struct YCbCr : IEquatable<YCbCr>
{
/// <summary>
/// Vector which is used in clamping to the max value.

15
src/ImageSharp/PixelFormats/Rgb24.cs

@ -50,6 +50,21 @@ namespace SixLabors.ImageSharp.PixelFormats
this.B = b;
}
/// <summary>
/// Allows the implicit conversion of an instance of <see cref="ColorSpaces.Rgb"/> to a
/// <see cref="Rgb24"/>.
/// </summary>
/// <param name="color">The instance of <see cref="ColorSpaces.Rgb"/> to convert.</param>
/// <returns>An instance of <see cref="Rgb24"/>.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator Rgb24(ColorSpaces.Rgb color)
{
var vector = new Vector4(color.ToVector3(), 1);
Rgb24 rgb = default;
rgb.PackFromScaledVector4(vector);
return rgb;
}
/// <inheritdoc/>
public PixelOperations<Rgb24> CreatePixelOperations() => new PixelOperations<Rgb24>();

15
src/ImageSharp/PixelFormats/Rgba32.cs

@ -206,6 +206,21 @@ namespace SixLabors.ImageSharp.PixelFormats
set => this.Rgba = value;
}
/// <summary>
/// Allows the implicit conversion of an instance of <see cref="ColorSpaces.Rgb"/> to a
/// <see cref="Rgba32"/>.
/// </summary>
/// <param name="color">The instance of <see cref="ColorSpaces.Rgb"/> to convert.</param>
/// <returns>An instance of <see cref="Rgba32"/>.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator Rgba32(ColorSpaces.Rgb color)
{
var vector = new Vector4(color.ToVector3(), 1);
Rgba32 rgba = default;
rgba.PackFromScaledVector4(vector);
return rgba;
}
/// <summary>
/// Compares two <see cref="Rgba32"/> objects for equality.
/// </summary>

Loading…
Cancel
Save