Skip to content

Commit d378306

Browse files
Merge pull request #2541 from Cheesebaron/bugfix/2437-timezoneoffset-exif-type
Change ExifTag TimeZoneOffset to Signed Short
2 parents e905b0a + ee02262 commit d378306

File tree

5 files changed

+42
-9
lines changed

5 files changed

+42
-9
lines changed

src/ImageSharp/Metadata/Profiles/Exif/Tags/ExifTag.LongArray.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,6 @@ public abstract partial class ExifTag
5656
/// </summary>
5757
public static ExifTag<uint[]> IntergraphRegisters { get; } = new ExifTag<uint[]>(ExifTagValue.IntergraphRegisters);
5858

59-
/// <summary>
60-
/// Gets the TimeZoneOffset exif tag.
61-
/// </summary>
62-
public static ExifTag<uint[]> TimeZoneOffset { get; } = new ExifTag<uint[]>(ExifTagValue.TimeZoneOffset);
63-
6459
/// <summary>
6560
/// Gets the offset to child IFDs exif tag.
6661
/// </summary>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// Copyright (c) Six Labors.
2+
// Licensed under the Six Labors Split License.
3+
4+
namespace SixLabors.ImageSharp.Metadata.Profiles.Exif;
5+
6+
/// <content/>
7+
public abstract partial class ExifTag
8+
{
9+
/// <summary>
10+
/// Gets the TimeZoneOffset exif tag.
11+
/// </summary>
12+
public static ExifTag<short[]> TimeZoneOffset { get; } = new ExifTag<short[]>(ExifTagValue.TimeZoneOffset);
13+
}

src/ImageSharp/Metadata/Profiles/Exif/Values/ExifSignedShortArray.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Exif;
55

66
internal sealed class ExifSignedShortArray : ExifArrayValue<short>
77
{
8+
public ExifSignedShortArray(ExifTag<short[]> tag)
9+
: base(tag)
10+
{
11+
}
12+
813
public ExifSignedShortArray(ExifTagValue tag)
914
: base(tag)
1015
{

src/ImageSharp/Metadata/Profiles/Exif/Values/ExifValues.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,6 @@ internal static partial class ExifValues
144144
return new ExifLongArray(ExifTag.StripRowCounts);
145145
case ExifTagValue.IntergraphRegisters:
146146
return new ExifLongArray(ExifTag.IntergraphRegisters);
147-
case ExifTagValue.TimeZoneOffset:
148-
return new ExifLongArray(ExifTag.TimeZoneOffset);
149147
case ExifTagValue.SubIFDs:
150148
return new ExifLongArray(ExifTag.SubIFDs);
151149

@@ -417,6 +415,9 @@ internal static partial class ExifValues
417415
case ExifTagValue.Decode:
418416
return new ExifSignedRationalArray(ExifTag.Decode);
419417

418+
case ExifTagValue.TimeZoneOffset:
419+
return new ExifSignedShortArray(ExifTag.TimeZoneOffset);
420+
420421
case ExifTagValue.ImageDescription:
421422
return new ExifString(ExifTag.ImageDescription);
422423
case ExifTagValue.Make:

tests/ImageSharp.Tests/Metadata/Profiles/Exif/Values/ExifValuesTests.cs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,7 @@ public class ExifValuesTests
7070
{ ExifTag.JPEGDCTables },
7171
{ ExifTag.JPEGACTables },
7272
{ ExifTag.StripRowCounts },
73-
{ ExifTag.IntergraphRegisters },
74-
{ ExifTag.TimeZoneOffset }
73+
{ ExifTag.IntergraphRegisters }
7574
};
7675

7776
public static TheoryData<ExifTag> NumberTags => new TheoryData<ExifTag>
@@ -235,6 +234,11 @@ public class ExifValuesTests
235234
{ ExifTag.Decode }
236235
};
237236

237+
public static TheoryData<ExifTag> SignedShortArrayTags => new TheoryData<ExifTag>
238+
{
239+
{ ExifTag.TimeZoneOffset }
240+
};
241+
238242
public static TheoryData<ExifTag> StringTags => new TheoryData<ExifTag>
239243
{
240244
{ ExifTag.ImageDescription },
@@ -559,6 +563,21 @@ public void ExifSignedRationalArrayTests(ExifTag tag)
559563
Assert.Equal(expected, typed.Value);
560564
}
561565

566+
567+
[Theory]
568+
[MemberData(nameof(SignedShortArrayTags))]
569+
public void ExifSignedShortArrayTests(ExifTag tag)
570+
{
571+
short[] expected = new short[] { 21, 42 };
572+
ExifValue value = ExifValues.Create(tag);
573+
574+
Assert.False(value.TrySetValue(expected.ToString()));
575+
Assert.True(value.TrySetValue(expected));
576+
577+
var typed = (ExifSignedShortArray)value;
578+
Assert.Equal(expected, typed.Value);
579+
}
580+
562581
[Theory]
563582
[MemberData(nameof(StringTags))]
564583
public void ExifStringTests(ExifTag tag)

0 commit comments

Comments
 (0)