Browse Source

Merge branch 'master' into js/cleanup-jpeg

pull/348/head
James Jackson-South 9 years ago
committed by GitHub
parent
commit
a8fe672e79
  1. 9
      src/ImageSharp/Image/ImageFrameCollection.cs
  2. 9
      src/ImageSharp/Image/Image{TPixel}.cs

9
src/ImageSharp/Image/ImageFrameCollection.cs

@ -24,7 +24,9 @@ namespace SixLabors.ImageSharp
Guard.NotNull(parent, nameof(parent)); Guard.NotNull(parent, nameof(parent));
this.parent = parent; this.parent = parent;
this.AddFrame(new ImageFrame<TPixel>(width, height));
// Frames are already cloned within the caller
this.frames.Add(new ImageFrame<TPixel>(width, height));
} }
internal ImageFrameCollection(Image<TPixel> parent, IEnumerable<ImageFrame<TPixel>> frames) internal ImageFrameCollection(Image<TPixel> parent, IEnumerable<ImageFrame<TPixel>> frames)
@ -33,9 +35,12 @@ namespace SixLabors.ImageSharp
Guard.NotNullOrEmpty(frames, nameof(frames)); Guard.NotNullOrEmpty(frames, nameof(frames));
this.parent = parent; this.parent = parent;
// Frames are already cloned by the caller
foreach (ImageFrame<TPixel> f in frames) foreach (ImageFrame<TPixel> f in frames)
{ {
this.AddFrame(f); this.ValidateFrame(f);
this.frames.Add(f);
} }
} }

9
src/ImageSharp/Image/Image{TPixel}.cs

@ -143,9 +143,8 @@ namespace SixLabors.ImageSharp
/// <returns>Returns a new image with all the same metadata as the original.</returns> /// <returns>Returns a new image with all the same metadata as the original.</returns>
public Image<TPixel> Clone() public Image<TPixel> Clone()
{ {
IEnumerable<ImageFrame<TPixel>> frames = this.frames.Select(x => x.Clone()).ToArray(); IEnumerable<ImageFrame<TPixel>> clonedFrames = this.frames.Select(x => x.Clone());
return new Image<TPixel>(this.configuration, this.MetaData.Clone(), clonedFrames);
return new Image<TPixel>(this.configuration, this.MetaData.Clone(), frames);
} }
/// <inheritdoc/> /// <inheritdoc/>
@ -162,8 +161,8 @@ namespace SixLabors.ImageSharp
public Image<TPixel2> CloneAs<TPixel2>() public Image<TPixel2> CloneAs<TPixel2>()
where TPixel2 : struct, IPixel<TPixel2> where TPixel2 : struct, IPixel<TPixel2>
{ {
IEnumerable<ImageFrame<TPixel2>> frames = this.frames.Select(x => x.CloneAs<TPixel2>()).ToArray(); IEnumerable<ImageFrame<TPixel2>> clonedFrames = this.frames.Select(x => x.CloneAs<TPixel2>());
var target = new Image<TPixel2>(this.configuration, this.MetaData, frames); var target = new Image<TPixel2>(this.configuration, this.MetaData.Clone(), clonedFrames);
return target; return target;
} }

Loading…
Cancel
Save