From a67bdc222de688ea3fad870dcfcdb75b833925e6 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Sun, 9 May 2021 11:50:20 +0200 Subject: [PATCH] Remove the Func from SetSingle and SetArray --- .../Metadata/Profiles/Exif/ExifReader.cs | 1 - .../Profiles/Exif/Values/ExifNumberArray.cs | 62 ++++++++++++++----- 2 files changed, 48 insertions(+), 15 deletions(-) diff --git a/src/ImageSharp/Metadata/Profiles/Exif/ExifReader.cs b/src/ImageSharp/Metadata/Profiles/Exif/ExifReader.cs index a867b984e..6e671b3ec 100644 --- a/src/ImageSharp/Metadata/Profiles/Exif/ExifReader.cs +++ b/src/ImageSharp/Metadata/Profiles/Exif/ExifReader.cs @@ -391,7 +391,6 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Exif int length = span.Length; if ((this.data.Length - this.data.Position) < length) { - span = default; return false; } diff --git a/src/ImageSharp/Metadata/Profiles/Exif/Values/ExifNumberArray.cs b/src/ImageSharp/Metadata/Profiles/Exif/Values/ExifNumberArray.cs index f447173c7..2d3a93aed 100644 --- a/src/ImageSharp/Metadata/Profiles/Exif/Values/ExifNumberArray.cs +++ b/src/ImageSharp/Metadata/Profiles/Exif/Values/ExifNumberArray.cs @@ -1,8 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Apache License, Version 2.0. -using System; - namespace SixLabors.ImageSharp.Metadata.Profiles.Exif { internal sealed class ExifNumberArray : ExifArrayValue @@ -48,21 +46,21 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Exif switch (value) { case int val: - return this.SetSingle(val, v => (Number)v); + return this.SetSingle(val); case uint val: - return this.SetSingle(val, v => (Number)v); + return this.SetSingle(val); case short val: - return this.SetSingle(val, v => (Number)v); + return this.SetSingle(val); case ushort val: - return this.SetSingle(val, v => (Number)v); + return this.SetSingle(val); case int[] array: - return this.SetArray(array, v => (Number)v); + return this.SetArray(array); case uint[] array: - return this.SetArray(array, v => (Number)v); + return this.SetArray(array); case short[] array: - return this.SetArray(array, v => (Number)v); + return this.SetArray(array); case ushort[] array: - return this.SetArray(array, v => (Number)v); + return this.SetArray(array); } return false; @@ -70,18 +68,54 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Exif public override IExifValue DeepClone() => new ExifNumberArray(this); - private bool SetSingle(T value, Func converter) + private bool SetSingle(Number value) + { + this.Value = new[] { value }; + return true; + } + + private bool SetArray(int[] values) + { + var numbers = new Number[values.Length]; + for (int i = 0; i < values.Length; i++) + { + numbers[i] = values[i]; + } + + this.Value = numbers; + return true; + } + + private bool SetArray(uint[] values) { - this.Value = new Number[] { converter(value) }; + var numbers = new Number[values.Length]; + for (int i = 0; i < values.Length; i++) + { + numbers[i] = values[i]; + } + + this.Value = numbers; + return true; + } + + private bool SetArray(short[] values) + { + var numbers = new Number[values.Length]; + for (int i = 0; i < values.Length; i++) + { + numbers[i] = values[i]; + } + + this.Value = numbers; return true; } - private bool SetArray(T[] values, Func converter) + private bool SetArray(ushort[] values) { var numbers = new Number[values.Length]; for (int i = 0; i < values.Length; i++) { - numbers[i] = converter(values[i]); + numbers[i] = values[i]; } this.Value = numbers;