From 8c580a735c7a8efa4b80005fe225ac0b9d239546 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Thu, 5 Jan 2023 17:10:59 +1000 Subject: [PATCH] Handle nullability in decoder base --- .../Implementation/Icc/IccProfileConverter.cs | 15 +++++---------- src/ImageSharp/Formats/ImageDecoder.cs | 7 ++++++- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Icc/IccProfileConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Icc/IccProfileConverter.cs index 8676f4afb9..51c34e4c79 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Icc/IccProfileConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Icc/IccProfileConverter.cs @@ -22,7 +22,7 @@ internal static class IccProfileConverter /// The image to convert. /// The input ICC profile. /// The output ICC profile. - public static void Convert(Image image, IccProfile? inputIccProfile, IccProfile? outputIccProfile) + public static void Convert(Image image, IccProfile inputIccProfile, IccProfile outputIccProfile) => image.AcceptVisitor(new IccProfileConverterVisitor(inputIccProfile, outputIccProfile)); /// @@ -32,14 +32,9 @@ internal static class IccProfileConverter /// The image to convert. /// The input ICC profile. /// The output ICC profile. - public static void Convert(Image image, IccProfile? inputIccProfile, IccProfile? outputIccProfile) + public static void Convert(Image image, IccProfile inputIccProfile, IccProfile outputIccProfile) where TPixel : unmanaged, IPixel { - if (inputIccProfile is null || outputIccProfile is null) - { - return; - } - IccDataToPcsConverter converterDataToPcs = new(inputIccProfile); IccPcsToDataConverter converterPcsToData = new(outputIccProfile); Configuration configuration = image.GetConfiguration(); @@ -68,10 +63,10 @@ internal static class IccProfileConverter private readonly struct IccProfileConverterVisitor : IImageVisitor { - private readonly IccProfile? inputIccProfile; - private readonly IccProfile? outputIccProfile; + private readonly IccProfile inputIccProfile; + private readonly IccProfile outputIccProfile; - public IccProfileConverterVisitor(IccProfile? inputIccProfile, IccProfile? outputIccProfile) + public IccProfileConverterVisitor(IccProfile inputIccProfile, IccProfile outputIccProfile) { this.inputIccProfile = inputIccProfile; this.outputIccProfile = outputIccProfile; diff --git a/src/ImageSharp/Formats/ImageDecoder.cs b/src/ImageSharp/Formats/ImageDecoder.cs index 30a87acd65..92eef0e9ac 100644 --- a/src/ImageSharp/Formats/ImageDecoder.cs +++ b/src/ImageSharp/Formats/ImageDecoder.cs @@ -5,6 +5,7 @@ using SixLabors.ImageSharp.ColorSpaces.Conversion.Icc; using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.Icc; using SixLabors.ImageSharp.IO; +using SixLabors.ImageSharp.Metadata.Profiles.Icc; using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.Processing; @@ -157,7 +158,11 @@ public abstract class ImageDecoder : IImageDecoder return; } - IccProfileConverter.Convert(image, image.Metadata?.IccProfile, SrgbV4Profile.GetProfile()); + IccProfile profile = image.Metadata?.IccProfile; + if (profile is not null) + { + IccProfileConverter.Convert(image, profile, SrgbV4Profile.GetProfile()); + } } ///