Browse Source

deep cloning

pull/2363/head
Ildar Khayrutdinov 3 years ago
parent
commit
308bfa448f
  1. 5
      src/ImageSharp/Formats/Tiff/TiffDecoderMetadataCreator.cs
  2. 1
      src/ImageSharp/Formats/Tiff/TiffFrameMetadata.cs
  3. 17
      src/ImageSharp/Formats/Tiff/TiffMetadata.cs

5
src/ImageSharp/Formats/Tiff/TiffDecoderMetadataCreator.cs

@ -28,6 +28,7 @@ internal static class TiffDecoderMetadataCreator
if (!ignoreMetadata) if (!ignoreMetadata)
{ {
var tiffMetadata = imageMetaData.GetTiffMetadata(); var tiffMetadata = imageMetaData.GetTiffMetadata();
var framesMetadata = new List<TiffFrameMetadata>(frames.Count);
for (int i = 0; i < frames.Count; i++) for (int i = 0; i < frames.Count; i++)
{ {
ImageFrameMetadata frameMetaData = frames[i]; ImageFrameMetadata frameMetaData = frames[i];
@ -46,8 +47,10 @@ internal static class TiffDecoderMetadataCreator
frameMetaData.IccProfile = new IccProfile(iccProfileBytes.Value); frameMetaData.IccProfile = new IccProfile(iccProfileBytes.Value);
} }
tiffMetadata.Frames.Add(frameMetaData.GetTiffMetadata()); framesMetadata.Add(frameMetaData.GetTiffMetadata());
} }
tiffMetadata.Frames = framesMetadata;
} }
return imageMetaData; return imageMetaData;

1
src/ImageSharp/Formats/Tiff/TiffFrameMetadata.cs

@ -28,6 +28,7 @@ public class TiffFrameMetadata : IDeepCloneable
this.Compression = other.Compression; this.Compression = other.Compression;
this.PhotometricInterpretation = other.PhotometricInterpretation; this.PhotometricInterpretation = other.PhotometricInterpretation;
this.Predictor = other.Predictor; this.Predictor = other.Predictor;
this.InkSet = other.InkSet;
} }
/// <summary> /// <summary>

17
src/ImageSharp/Formats/Tiff/TiffMetadata.cs

@ -19,7 +19,20 @@ public class TiffMetadata : IDeepCloneable
/// Initializes a new instance of the <see cref="TiffMetadata"/> class. /// Initializes a new instance of the <see cref="TiffMetadata"/> class.
/// </summary> /// </summary>
/// <param name="other">The metadata to create an instance from.</param> /// <param name="other">The metadata to create an instance from.</param>
private TiffMetadata(TiffMetadata other) => this.ByteOrder = other.ByteOrder; private TiffMetadata(TiffMetadata other)
{
this.ByteOrder = other.ByteOrder;
this.FormatType = other.FormatType;
var frames = new List<TiffFrameMetadata>(other.Frames.Count);
foreach (var otherFrame in other.Frames)
{
var frame = (TiffFrameMetadata)otherFrame.DeepClone();
frames.Add(frame);
}
this.Frames = frames;
}
/// <summary> /// <summary>
/// Gets or sets the byte order. /// Gets or sets the byte order.
@ -37,7 +50,7 @@ public class TiffMetadata : IDeepCloneable
/// <value> /// <value>
/// The frames. /// The frames.
/// </value> /// </value>
public IList<TiffFrameMetadata> Frames { get; set; } = new List<TiffFrameMetadata>(); public IReadOnlyList<TiffFrameMetadata> Frames { get; set; } = Array.Empty<TiffFrameMetadata>();
/// <inheritdoc/> /// <inheritdoc/>
public IDeepCloneable DeepClone() => new TiffMetadata(this); public IDeepCloneable DeepClone() => new TiffMetadata(this);

Loading…
Cancel
Save