From c10863fee66d11cd4d9d0b030c4f7235dc3c1b1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Mutnia=C5=84ski?= Date: Tue, 6 Feb 2024 15:33:11 +0100 Subject: [PATCH] Replace Memory with string --- .../Formats/Jpeg/JpegDecoderCore.cs | 5 ++--- .../Formats/Jpeg/JpegEncoderCore.cs | 22 +++++++++---------- src/ImageSharp/Formats/Jpeg/JpegMetadata.cs | 4 ++-- .../Formats/Jpg/JpegDecoderTests.Metadata.cs | 2 +- .../Formats/Jpg/JpegEncoderTests.Metadata.cs | 10 ++++----- .../Formats/Jpg/JpegMetadataTests.cs | 10 ++++----- 6 files changed, 26 insertions(+), 27 deletions(-) diff --git a/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs b/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs index d6b40fa7f7..5f3fa33fa6 100644 --- a/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs +++ b/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs @@ -524,13 +524,12 @@ internal sealed class JpegDecoderCore : IRawJpegData, IImageDecoderInternals private void ProcessComMarker(BufferedReadStream stream, int markerContentByteSize) { Span temp = new byte[markerContentByteSize]; - char[] chars = new char[markerContentByteSize]; JpegMetadata metadata = this.Metadata.GetFormatMetadata(JpegFormat.Instance); stream.Read(temp); - Encoding.ASCII.GetChars(temp, chars); + string comment = Encoding.ASCII.GetString(temp); - metadata.Comments.Add(chars); + metadata.Comments.Add(comment); } /// diff --git a/src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs b/src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs index 4dc9202070..8658f6b25f 100644 --- a/src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs +++ b/src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs @@ -186,23 +186,23 @@ internal sealed unsafe partial class JpegEncoderCore : IImageEncoderInternals for (int i = 0; i < metadata.Comments.Count; i++) { - Memory chars = metadata.Comments[i]; + string comment = metadata.Comments[i]; - if (chars.Length > maxCommentLength) + if (comment.Length > maxCommentLength) { - Memory splitComment = chars.Slice(maxCommentLength, chars.Length - maxCommentLength); + string splitComment = comment.Substring(maxCommentLength, comment.Length - maxCommentLength); metadata.Comments.Insert(i + 1, splitComment); // We don't want to keep the extra bytes - chars = chars.Slice(0, maxCommentLength); + comment = comment.Substring(0, maxCommentLength); } - int commentLength = chars.Length + 4; + int commentLength = comment.Length + 4; - Span comment = new byte[commentLength]; - Span markers = comment.Slice(0, 2); - Span payloadSize = comment.Slice(2, 2); - Span payload = comment.Slice(4, chars.Length); + Span commentSpan = new byte[commentLength]; + Span markers = commentSpan.Slice(0, 2); + Span payloadSize = commentSpan.Slice(2, 2); + Span payload = commentSpan.Slice(4, comment.Length); // Beginning of comment ff fe markers[0] = JpegConstants.Markers.XFF; @@ -213,9 +213,9 @@ internal sealed unsafe partial class JpegEncoderCore : IImageEncoderInternals payloadSize[0] = (byte)((comWithoutMarker >> 8) & 0xFF); payloadSize[1] = (byte)(comWithoutMarker & 0xFF); - Encoding.ASCII.GetBytes(chars.Span, payload); + Encoding.ASCII.GetBytes(comment, payload); - this.outputStream.Write(comment, 0, comment.Length); + this.outputStream.Write(commentSpan, 0, commentSpan.Length); } } diff --git a/src/ImageSharp/Formats/Jpeg/JpegMetadata.cs b/src/ImageSharp/Formats/Jpeg/JpegMetadata.cs index bf758dfd09..5b96fdf967 100644 --- a/src/ImageSharp/Formats/Jpeg/JpegMetadata.cs +++ b/src/ImageSharp/Formats/Jpeg/JpegMetadata.cs @@ -15,7 +15,7 @@ public class JpegMetadata : IDeepCloneable /// public JpegMetadata() { - this.Comments = new List>(); + this.Comments = new List(); } /// @@ -106,7 +106,7 @@ public class JpegMetadata : IDeepCloneable /// /// Gets the comments. /// - public IList> Comments { get; } + public IList Comments { get; } /// public IDeepCloneable DeepClone() => new JpegMetadata(this); diff --git a/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.Metadata.cs b/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.Metadata.cs index 369e71abfc..222d1fb8cf 100644 --- a/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.Metadata.cs +++ b/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.Metadata.cs @@ -435,7 +435,7 @@ public partial class JpegDecoderTests JpegMetadata metadata = image.Metadata.GetJpegMetadata(); Assert.Equal(1, metadata.Comments.Count); - Assert.Equal(expectedComment.ToCharArray(), metadata.Comments.ElementAtOrDefault(0)); + Assert.Equal(expectedComment, metadata.Comments.ElementAtOrDefault(0)); image.DebugSave(provider); image.CompareToOriginal(provider); } diff --git a/tests/ImageSharp.Tests/Formats/Jpg/JpegEncoderTests.Metadata.cs b/tests/ImageSharp.Tests/Formats/Jpg/JpegEncoderTests.Metadata.cs index 8cc64acea3..f33234e322 100644 --- a/tests/ImageSharp.Tests/Formats/Jpg/JpegEncoderTests.Metadata.cs +++ b/tests/ImageSharp.Tests/Formats/Jpg/JpegEncoderTests.Metadata.cs @@ -172,7 +172,7 @@ public partial class JpegEncoderTests JpegMetadata actual = output.Metadata.GetJpegMetadata(); Assert.NotEmpty(actual.Comments); Assert.Equal(1, actual.Comments.Count); - Assert.Equal("TEST COMMENT", actual.Comments.ElementAtOrDefault(0).ToString()); + Assert.Equal("TEST COMMENT", actual.Comments.ElementAtOrDefault(0)); } [Fact] @@ -184,8 +184,8 @@ public partial class JpegEncoderTests using var memStream = new MemoryStream(); // act - meta.Comments.Add("First comment".ToCharArray()); - meta.Comments.Add("Second Comment".ToCharArray()); + meta.Comments.Add("First comment"); + meta.Comments.Add("Second Comment"); input.Save(memStream, JpegEncoder); // assert @@ -194,8 +194,8 @@ public partial class JpegEncoderTests JpegMetadata actual = output.Metadata.GetJpegMetadata(); Assert.NotEmpty(actual.Comments); Assert.Equal(2, actual.Comments.Count); - Assert.Equal(meta.Comments.ElementAtOrDefault(0).ToString(), actual.Comments.ElementAtOrDefault(0).ToString()); - Assert.Equal(meta.Comments.ElementAtOrDefault(1).ToString(), actual.Comments.ElementAtOrDefault(1).ToString()); + Assert.Equal(meta.Comments.ElementAtOrDefault(0), actual.Comments.ElementAtOrDefault(0)); + Assert.Equal(meta.Comments.ElementAtOrDefault(1), actual.Comments.ElementAtOrDefault(1)); } [Theory] diff --git a/tests/ImageSharp.Tests/Formats/Jpg/JpegMetadataTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/JpegMetadataTests.cs index 8b991228b4..64d7edd759 100644 --- a/tests/ImageSharp.Tests/Formats/Jpg/JpegMetadataTests.cs +++ b/tests/ImageSharp.Tests/Formats/Jpg/JpegMetadataTests.cs @@ -64,19 +64,19 @@ public class JpegMetadataTests { var meta = new JpegMetadata(); - Assert.True(Array.Empty>().SequenceEqual(meta.Comments)); + Assert.True(Array.Empty().SequenceEqual(meta.Comments)); } [Fact] public void Comment_OnlyComment() { string comment = "test comment"; - var expectedCollection = new Collection> { new(comment.ToCharArray()) }; + var expectedCollection = new Collection { comment }; var meta = new JpegMetadata(); - meta.Comments?.Add(comment.ToCharArray()); + meta.Comments.Add(comment); - Assert.Equal(1, meta.Comments?.Count); - Assert.True(expectedCollection.FirstOrDefault().ToString() == meta.Comments?.FirstOrDefault().ToString()); + Assert.Equal(1, meta.Comments.Count); + Assert.True(expectedCollection.FirstOrDefault() == meta.Comments.FirstOrDefault()); } }