diff --git a/src/ImageSharp/Formats/Jxl/IO/Jpeg/Data/JpegData.cs b/src/ImageSharp/Formats/Jxl/IO/Jpeg/Data/JpegData.cs index 9ab957be93..4555442bcb 100644 --- a/src/ImageSharp/Formats/Jxl/IO/Jpeg/Data/JpegData.cs +++ b/src/ImageSharp/Formats/Jxl/IO/Jpeg/Data/JpegData.cs @@ -113,7 +113,7 @@ internal sealed class JpegData : IJxlFields } int len = jpegData.AppData[i].Count - 17; - if (iccPos + len > icc.Length) + if (iccPos > icc.Length - len) { throw new InvalidOperationException("ICC length is less than APP markers: requested " + len + " more bytes, " + (icc.Length - iccPos) + " available"); } @@ -144,24 +144,23 @@ internal sealed class JpegData : IJxlFields info.NumberOfAppMarkers++; } - if (marker == 0xfe) + switch (marker) { - info.NumberOfComMarkers++; - } + case 0xFE: + info.NumberOfComMarkers++; + break; - if (marker == 0xda) - { - info.NumberOfScans++; - } + case 0xDA: + info.NumberOfScans++; + break; - if (marker == 0xff) - { - info.NumberOfIntermarkers++; - } + case 0xFF: + info.NumberOfIntermarkers++; + break; - if (marker == 0xdd) - { - info.HasDri = true; + case 0xDD: + info.HasDri = true; + break; } return true; @@ -919,10 +918,6 @@ internal sealed class JpegData : IJxlFields InlineArray4 acOk = default; InlineArray4 dcOk = default; - // All values of acOk, dcOk by default are false. - acOk[0] = acOk[1] = acOk[2] = acOk[3] = false; - dcOk[0] = dcOk[1] = dcOk[2] = dcOk[3] = false; - Span markerOrderSpan = CollectionsMarshal.AsSpan(this.MarkerOrder); for (int i = 0; i < markerOrderSpan.Length; i++) diff --git a/src/ImageSharp/Formats/Jxl/Processing/Encoder/JxlFastLosslessEncoder.cs b/src/ImageSharp/Formats/Jxl/Processing/Encoder/JxlFastLosslessEncoder.cs index 91263989ef..bea22c76a3 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/Encoder/JxlFastLosslessEncoder.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Encoder/JxlFastLosslessEncoder.cs @@ -53,7 +53,7 @@ internal sealed class JxlFastLosslessEncoder /// /// Input frame data is stored here. /// - private readonly IFjxlFrameInputSource input; + private readonly FjxlFrameInputSource input; /// /// Image width of the input image. @@ -147,7 +147,7 @@ internal sealed class JxlFastLosslessEncoder /// /// Abstracts access to a raster frame data required for encoding. /// - internal abstract class IFjxlFrameInputSource : IDisposable + internal abstract class FjxlFrameInputSource : IDisposable { /// public abstract void Dispose(); diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlMath.cs b/src/ImageSharp/Formats/Jxl/Processing/JxlMath.cs index a0042c9c50..f0ab04104e 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlMath.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/JxlMath.cs @@ -3,6 +3,7 @@ using System.Numerics; using System.Runtime.CompilerServices; +using SixLabors.ImageSharp.Common.Helpers; namespace SixLabors.ImageSharp.Formats.Jxl.Processing; @@ -705,7 +706,7 @@ internal static class JxlMath if (x < y) { - (y, x) = (x, y); + RuntimeUtility.Swap(ref x, ref y); } if (x == T.Zero) diff --git a/src/ImageSharp/Formats/Jxl/Processing/Modular/Transforms/JxlSqueeze.cs b/src/ImageSharp/Formats/Jxl/Processing/Modular/Transforms/JxlSqueeze.cs index 6888015825..11752a92c9 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/Modular/Transforms/JxlSqueeze.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Modular/Transforms/JxlSqueeze.cs @@ -30,6 +30,10 @@ internal static class JxlSqueeze /// /// Computes the average of two integers. /// + /// + /// This method is specific to the Squeeze transform. + /// It is not a generic average method. + /// /// First integer /// Second integer /// The average of x, y.