Browse Source

renaming

pull/1760/head
Ildar Khayrutdinov 5 years ago
parent
commit
1ff1156382
  1. 10
      src/ImageSharp/Formats/Tiff/Ifd/DirectoryReader.cs
  2. 3
      src/ImageSharp/Formats/Tiff/Ifd/EntryReader.cs
  3. 28
      src/ImageSharp/Metadata/Profiles/Exif/ExifReader.cs

10
src/ImageSharp/Formats/Tiff/Ifd/DirectoryReader.cs

@ -67,14 +67,14 @@ namespace SixLabors.ImageSharp.Formats.Tiff
var reader = new EntryReader(this.stream, this.ByteOrder); var reader = new EntryReader(this.stream, this.ByteOrder);
reader.ReadTags(isBigTiff, this.nextIfdOffset); reader.ReadTags(isBigTiff, this.nextIfdOffset);
if (reader.ExtTags.Count > 0) if (reader.BigValues.Count > 0)
{ {
reader.ExtTags.Sort((t1, t2) => t1.offset.CompareTo(t2.offset)); reader.BigValues.Sort((t1, t2) => t1.offset.CompareTo(t2.offset));
// this means that most likely all elements are placed before next IFD // this means that most likely all elements are placed before next IFD
if (reader.ExtTags[0].offset < reader.NextIfdOffset) if (reader.BigValues[0].offset < reader.NextIfdOffset)
{ {
reader.ReadExtValues(); reader.ReadBigValues();
} }
} }
@ -85,7 +85,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff
var list = new List<ExifProfile>(readers.Count); var list = new List<ExifProfile>(readers.Count);
foreach (EntryReader reader in readers) foreach (EntryReader reader in readers)
{ {
reader.ReadExtValues(); reader.ReadBigValues();
var profile = new ExifProfile(reader.Values, reader.InvalidTags); var profile = new ExifProfile(reader.Values, reader.InvalidTags);
list.Add(profile); list.Add(profile);
} }

3
src/ImageSharp/Formats/Tiff/Ifd/EntryReader.cs

@ -1,7 +1,6 @@
// Copyright (c) Six Labors. // Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
@ -40,7 +39,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff
} }
} }
public void ReadExtValues() => this.ReadExtValues(this.Values); public void ReadBigValues() => this.ReadBigValues(this.Values);
} }
internal class HeaderReader : BaseExifReader internal class HeaderReader : BaseExifReader

28
src/ImageSharp/Metadata/Profiles/Exif/ExifReader.cs

@ -45,7 +45,7 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Exif
this.ReadSubIfd(values); this.ReadSubIfd(values);
this.ReadExtValues(values); this.ReadBigValues(values);
return values; return values;
} }
@ -110,14 +110,14 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Exif
public bool IsBigEndian { get; protected set; } public bool IsBigEndian { get; protected set; }
public List<(ulong offset, ExifDataType dataType, ulong numberOfComponents, ExifValue exif)> ExtTags { get; } = new (); public List<(ulong offset, ExifDataType dataType, ulong numberOfComponents, ExifValue exif)> BigValues { get; } = new ();
protected void ReadExtValues(List<IExifValue> values) protected void ReadBigValues(List<IExifValue> values)
{ {
ulong maxSize = 0; ulong maxSize = 0;
foreach ((ulong offset, ExifDataType dataType, ulong numberOfComponents, ExifValue exif) tag in this.ExtTags) foreach ((ulong offset, ExifDataType dataType, ulong numberOfComponents, ExifValue exif) in this.BigValues)
{ {
ulong size = tag.numberOfComponents * ExifDataTypes.GetSize(tag.dataType); ulong size = numberOfComponents * ExifDataTypes.GetSize(dataType);
if (size > maxSize) if (size > maxSize)
{ {
maxSize = size; maxSize = size;
@ -125,14 +125,14 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Exif
} }
Span<byte> buf = new byte[maxSize]; Span<byte> buf = new byte[maxSize];
foreach ((ulong offset, ExifDataType dataType, ulong numberOfComponents, ExifValue exif) tag in this.ExtTags) foreach ((ulong offset, ExifDataType dataType, ulong numberOfComponents, ExifValue exif) tag in this.BigValues)
{ {
ulong size = tag.numberOfComponents * ExifDataTypes.GetSize(tag.dataType); ulong size = tag.numberOfComponents * ExifDataTypes.GetSize(tag.dataType);
this.ReadExtValue(values, tag, buf.Slice(0, (int)size)); this.ReadBigValue(values, tag, buf.Slice(0, (int)size));
} }
this.ExtTags.Clear(); this.BigValues.Clear();
} }
/// <summary> /// <summary>
@ -187,12 +187,12 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Exif
} }
} }
protected void ReadExtValue(IList<IExifValue> values, (ulong offset, ExifDataType dataType, ulong numberOfComponents, ExifValue exif) tag, Span<byte> buffer) protected void ReadBigValue(IList<IExifValue> values, (ulong offset, ExifDataType dataType, ulong numberOfComponents, ExifValue exif) tag, Span<byte> buffer)
{ {
this.Seek(tag.offset); this.Seek(tag.offset);
if (this.TryReadSpan(buffer)) if (this.TryReadSpan(buffer))
{ {
object value = this.ConvertValue(tag.dataType, buffer, tag.numberOfComponents > 1); object value = this.ConvertValue(tag.dataType, buffer, tag.numberOfComponents > 1 || tag.exif.IsArray);
this.Add(values, tag.exif, value); this.Add(values, tag.exif, value);
} }
} }
@ -401,11 +401,11 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Exif
return; return;
} }
this.ExtTags.Add((newOffset, dataType, numberOfComponents, exifValue)); this.BigValues.Add((newOffset, dataType, numberOfComponents, exifValue));
} }
else else
{ {
object value = this.ConvertValue(dataType, offsetBuffer.Slice(0, (int)size), numberOfComponents > 1); object value = this.ConvertValue(dataType, offsetBuffer.Slice(0, (int)size), numberOfComponents > 1 || exifValue.IsArray);
this.Add(values, exifValue, value); this.Add(values, exifValue, value);
} }
} }
@ -484,11 +484,11 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Exif
return; return;
} }
this.ExtTags.Add((newOffset, dataType, numberOfComponents, exifValue)); this.BigValues.Add((newOffset, dataType, numberOfComponents, exifValue));
} }
else else
{ {
object value = this.ConvertValue(dataType, offsetBuffer.Slice(0, (int)size), numberOfComponents > 1); object value = this.ConvertValue(dataType, offsetBuffer.Slice(0, (int)size), numberOfComponents > 1 || exifValue.IsArray);
this.Add(values, exifValue, value); this.Add(values, exifValue, value);
} }
} }

Loading…
Cancel
Save