From a5ec503a4f39fcbfa09438986003cf462e5f7cfd Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Mon, 30 Jul 2018 14:25:39 +0100 Subject: [PATCH] Remove per-pixel allocation --- .../ColorSpaces/Conversion/ColorSpaceConverter.CieLab.cs | 3 +-- src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.cs | 5 ++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLab.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLab.cs index 9095d3f59..099a103a7 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLab.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLab.cs @@ -170,8 +170,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion : color; // Conversion - var converter = new CieXyzToCieLabConverter(this.targetLabWhitePoint); - return converter.Convert(adapted); + return this.cieXyzToCieLabConverter.Convert(adapted); } /// diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.cs index e26ef8da1..e092d2d65 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.cs @@ -7,7 +7,7 @@ using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation; namespace SixLabors.ImageSharp.ColorSpaces.Conversion { /// - /// Provides methods to allow the conversion of color values into different color spaces. + /// Provides methods to allow the conversion of color values between different color spaces. /// public partial class ColorSpaceConverter { @@ -22,6 +22,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion private Matrix4x4 lmsAdaptationMatrix; private CieXyzAndLmsConverter cieXyzAndLmsConverter; + private CieXyzToCieLabConverter cieXyzToCieLabConverter; /// /// Initializes a new instance of the class. @@ -46,7 +47,9 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion this.chromaticAdaptation = options.ChromaticAdaptation; this.performChromaticAdaptation = this.chromaticAdaptation != null; this.lmsAdaptationMatrix = options.LmsAdaptationMatrix; + this.cieXyzAndLmsConverter = new CieXyzAndLmsConverter(this.lmsAdaptationMatrix); + this.cieXyzToCieLabConverter = new CieXyzToCieLabConverter(this.targetLabWhitePoint); } } } \ No newline at end of file