From 12da625cbb95a7005dbc78a82b9602f3a90022de Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Mon, 15 May 2023 21:44:50 +1000 Subject: [PATCH 01/18] Preserve color palettes and deduplicate frame pixels. --- .../Common/Helpers/SimdUtils.HwIntrinsics.cs | 27 +++ src/ImageSharp/Formats/Bmp/BmpEncoder.cs | 6 + src/ImageSharp/Formats/Bmp/BmpEncoderCore.cs | 3 +- src/ImageSharp/Formats/Gif/GifDecoderCore.cs | 67 +++-- src/ImageSharp/Formats/Gif/GifEncoderCore.cs | 229 +++++++++++++++--- .../Formats/Gif/GifFrameMetadata.cs | 27 ++- src/ImageSharp/Formats/Gif/GifMetadata.cs | 17 +- .../Formats/Gif/MetadataExtensions.cs | 9 +- .../Formats/Png/Filters/PaethFilter.cs | 35 +-- src/ImageSharp/Formats/Png/PngEncoder.cs | 9 - .../Formats/QuantizingImageEncoder.cs | 3 +- src/ImageSharp/Formats/Tiff/TiffEncoder.cs | 6 + .../Formats/Tiff/TiffEncoderCore.cs | 5 +- src/ImageSharp/Memory/Buffer2D{T}.cs | 11 +- .../Quantization/QuantizerOptions.cs | 8 +- .../Formats/Gif/GifEncoderTests.cs | 39 ++- .../Formats/Gif/GifFrameMetadataTests.cs | 11 +- .../Formats/Gif/GifMetadataTests.cs | 15 +- .../ImageFrameCollectionTests.NonGeneric.cs | 9 +- .../Metadata/ImageFrameMetadataTests.cs | 19 +- 20 files changed, 411 insertions(+), 144 deletions(-) diff --git a/src/ImageSharp/Common/Helpers/SimdUtils.HwIntrinsics.cs b/src/ImageSharp/Common/Helpers/SimdUtils.HwIntrinsics.cs index e87872a707..5c0902f052 100644 --- a/src/ImageSharp/Common/Helpers/SimdUtils.HwIntrinsics.cs +++ b/src/ImageSharp/Common/Helpers/SimdUtils.HwIntrinsics.cs @@ -629,6 +629,33 @@ public static Vector256 MultiplyAddNegated( return Avx.Subtract(c, Avx.Multiply(a, b)); } + /// + /// Blend packed 8-bit integers from and using . + /// The high bit of each corresponding byte determines the selection. + /// If the high bit is set the element of is selected. + /// The element of is selected otherwise. + /// + /// The left vector. + /// The right vector. + /// The mask vector. + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector128 BlendVariable(in Vector128 left, in Vector128 right, in Vector128 mask) + { + if (Sse41.IsSupported) + { + return Sse41.BlendVariable(left, right, mask); + } + else if (Sse2.IsSupported) + { + return Sse2.Or(Sse2.And(right, mask), Sse2.AndNot(mask, left)); + } + + // Use a signed shift right to create a mask with the sign bit. + Vector128 signedMask = AdvSimd.ShiftRightArithmetic(mask.AsInt16(), 7); + return AdvSimd.BitwiseSelect(signedMask, right.AsInt16(), left.AsInt16()).AsByte(); + } + /// /// as many elements as possible, slicing them down (keeping the remainder). /// diff --git a/src/ImageSharp/Formats/Bmp/BmpEncoder.cs b/src/ImageSharp/Formats/Bmp/BmpEncoder.cs index 156e2f9610..aecea7dedf 100644 --- a/src/ImageSharp/Formats/Bmp/BmpEncoder.cs +++ b/src/ImageSharp/Formats/Bmp/BmpEncoder.cs @@ -2,6 +2,7 @@ // Licensed under the Six Labors Split License. using SixLabors.ImageSharp.Advanced; +using SixLabors.ImageSharp.Processing; namespace SixLabors.ImageSharp.Formats.Bmp; @@ -10,6 +11,11 @@ namespace SixLabors.ImageSharp.Formats.Bmp; /// public sealed class BmpEncoder : QuantizingImageEncoder { + /// + /// Initializes a new instance of the class. + /// + public BmpEncoder() => this.Quantizer = KnownQuantizers.Octree; + /// /// Gets the number of bits per pixel. /// diff --git a/src/ImageSharp/Formats/Bmp/BmpEncoderCore.cs b/src/ImageSharp/Formats/Bmp/BmpEncoderCore.cs index fd23a29e37..f4fadd44ec 100644 --- a/src/ImageSharp/Formats/Bmp/BmpEncoderCore.cs +++ b/src/ImageSharp/Formats/Bmp/BmpEncoderCore.cs @@ -9,6 +9,7 @@ using SixLabors.ImageSharp.Memory; using SixLabors.ImageSharp.Metadata; using SixLabors.ImageSharp.PixelFormats; +using SixLabors.ImageSharp.Processing; using SixLabors.ImageSharp.Processing.Processors.Quantization; namespace SixLabors.ImageSharp.Formats.Bmp; @@ -100,7 +101,7 @@ public BmpEncoderCore(BmpEncoder encoder, MemoryAllocator memoryAllocator) { this.memoryAllocator = memoryAllocator; this.bitsPerPixel = encoder.BitsPerPixel; - this.quantizer = encoder.Quantizer; + this.quantizer = encoder.Quantizer ?? KnownQuantizers.Octree; this.pixelSamplingStrategy = encoder.PixelSamplingStrategy; this.infoHeaderType = encoder.SupportTransparency ? BmpInfoHeaderType.WinVersion4 : BmpInfoHeaderType.WinVersion3; } diff --git a/src/ImageSharp/Formats/Gif/GifDecoderCore.cs b/src/ImageSharp/Formats/Gif/GifDecoderCore.cs index 55ad2c4585..7f5276a250 100644 --- a/src/ImageSharp/Formats/Gif/GifDecoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifDecoderCore.cs @@ -29,6 +29,16 @@ internal sealed class GifDecoderCore : IImageDecoderInternals /// private IMemoryOwner? globalColorTable; + /// + /// The current local color table. + /// + private IMemoryOwner? currentLocalColorTable; + + /// + /// Gets the size in bytes of the current local color table. + /// + private int currentLocalColorTableSize; + /// /// The area to restore. /// @@ -159,6 +169,7 @@ public Image Decode(BufferedReadStream stream, CancellationToken finally { this.globalColorTable?.Dispose(); + this.currentLocalColorTable?.Dispose(); } if (image is null) @@ -229,6 +240,7 @@ public ImageInfo Identify(BufferedReadStream stream, CancellationToken cancellat finally { this.globalColorTable?.Dispose(); + this.currentLocalColorTable?.Dispose(); } if (this.logicalScreenDescriptor.Width == 0 && this.logicalScreenDescriptor.Height == 0) @@ -332,7 +344,7 @@ private void ReadApplicationExtension(BufferedReadStream stream) if (subBlockSize == GifConstants.NetscapeLoopingSubBlockSize) { stream.Read(this.buffer.Span, 0, GifConstants.NetscapeLoopingSubBlockSize); - this.gifMetadata!.RepeatCount = GifNetscapeLoopingApplicationExtension.Parse(this.buffer.Span.Slice(1)).RepeatCount; + this.gifMetadata!.RepeatCount = GifNetscapeLoopingApplicationExtension.Parse(this.buffer.Span[1..]).RepeatCount; stream.Skip(1); // Skip the terminator. return; } @@ -415,25 +427,27 @@ private void ReadFrame(BufferedReadStream stream, ref Image? ima { this.ReadImageDescriptor(stream); - IMemoryOwner? localColorTable = null; Buffer2D? indices = null; try { // Determine the color table for this frame. If there is a local one, use it otherwise use the global color table. - if (this.imageDescriptor.LocalColorTableFlag) + bool hasLocalColorTable = this.imageDescriptor.LocalColorTableFlag; + + if (hasLocalColorTable) { - int length = this.imageDescriptor.LocalColorTableSize * 3; - localColorTable = this.configuration.MemoryAllocator.Allocate(length, AllocationOptions.Clean); - stream.Read(localColorTable.GetSpan()); + // Read and store the local color table. We allocate the maximum possible size and slice to match. + int length = this.currentLocalColorTableSize = this.imageDescriptor.LocalColorTableSize * 3; + this.currentLocalColorTable ??= this.configuration.MemoryAllocator.Allocate(768, AllocationOptions.Clean); + stream.Read(this.currentLocalColorTable.GetSpan()[..length]); } indices = this.configuration.MemoryAllocator.Allocate2D(this.imageDescriptor.Width, this.imageDescriptor.Height, AllocationOptions.Clean); this.ReadFrameIndices(stream, indices); Span rawColorTable = default; - if (localColorTable != null) + if (hasLocalColorTable) { - rawColorTable = localColorTable.GetSpan(); + rawColorTable = this.currentLocalColorTable!.GetSpan()[..this.currentLocalColorTableSize]; } else if (this.globalColorTable != null) { @@ -448,7 +462,6 @@ private void ReadFrame(BufferedReadStream stream, ref Image? ima } finally { - localColorTable?.Dispose(); indices?.Dispose(); } } @@ -509,7 +522,10 @@ private void ReadFrameColors(ref Image? image, ref ImageFrame(768, AllocationOptions.Clean); + stream.Read(this.currentLocalColorTable.GetSpan()[..length]); } // Skip the frame indices. Pixels length + mincode size. @@ -682,7 +701,6 @@ private void SetFrameMetadata(ImageFrameMetadata metadata) { GifFrameMetadata gifMeta = metadata.GetGifMetadata(); gifMeta.ColorTableMode = GifColorTableMode.Global; - gifMeta.ColorTableLength = this.logicalScreenDescriptor.GlobalColorTableSize; } if (this.imageDescriptor.LocalColorTableFlag @@ -690,13 +708,23 @@ private void SetFrameMetadata(ImageFrameMetadata metadata) { GifFrameMetadata gifMeta = metadata.GetGifMetadata(); gifMeta.ColorTableMode = GifColorTableMode.Local; - gifMeta.ColorTableLength = this.imageDescriptor.LocalColorTableSize; + + Color[] colorTable = new Color[this.imageDescriptor.LocalColorTableSize]; + ref Rgb24 localBase = ref MemoryMarshal.GetReference(MemoryMarshal.Cast(this.currentLocalColorTable!.GetSpan()[..this.currentLocalColorTableSize])); + for (int i = 0; i < colorTable.Length; i++) + { + colorTable[i] = new Color(Unsafe.Add(ref localBase, (uint)i)); + } + + gifMeta.DecodedLocalColorTable = colorTable; } // Graphics control extensions is optional. if (this.graphicsControlExtension != default) { GifFrameMetadata gifMeta = metadata.GetGifMetadata(); + gifMeta.HasTransparency = this.graphicsControlExtension.TransparencyFlag; + gifMeta.TransparencyIndex = this.graphicsControlExtension.TransparencyIndex; gifMeta.FrameDelay = this.graphicsControlExtension.DelayTime; gifMeta.DisposalMethod = this.graphicsControlExtension.DisposalMethod; } @@ -751,14 +779,21 @@ private void ReadLogicalScreenDescriptorAndGlobalColorTable(BufferedReadStream s if (this.logicalScreenDescriptor.GlobalColorTableFlag) { int globalColorTableLength = this.logicalScreenDescriptor.GlobalColorTableSize * 3; - this.gifMetadata.GlobalColorTableLength = globalColorTableLength; - if (globalColorTableLength > 0) { this.globalColorTable = this.memoryAllocator.Allocate(globalColorTableLength, AllocationOptions.Clean); - // Read the global color table data from the stream + // Read the global color table data from the stream and preserve it in the gif metadata stream.Read(this.globalColorTable.GetSpan()); + + Color[] colorTable = new Color[this.logicalScreenDescriptor.GlobalColorTableSize]; + ref Rgb24 globalBase = ref MemoryMarshal.GetReference(MemoryMarshal.Cast(this.globalColorTable.GetSpan())); + for (int i = 0; i < colorTable.Length; i++) + { + colorTable[i] = new Color(Unsafe.Add(ref globalBase, (uint)i)); + } + + this.gifMetadata.DecodedGlobalColorTable = colorTable; } } } diff --git a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs index c01cc78ef0..b6955b8c03 100644 --- a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs @@ -4,11 +4,15 @@ using System.Buffers; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; +using System.Runtime.Intrinsics.X86; using SixLabors.ImageSharp.Advanced; using SixLabors.ImageSharp.Memory; using SixLabors.ImageSharp.Metadata; using SixLabors.ImageSharp.Metadata.Profiles.Xmp; using SixLabors.ImageSharp.PixelFormats; +using SixLabors.ImageSharp.Processing; using SixLabors.ImageSharp.Processing.Processors.Quantization; namespace SixLabors.ImageSharp.Formats.Gif; @@ -36,7 +40,12 @@ internal sealed class GifEncoderCore : IImageEncoderInternals /// /// The quantizer used to generate the color palette. /// - private readonly IQuantizer quantizer; + private IQuantizer? quantizer; + + /// + /// Whether the quantizer was supplied via options. + /// + private readonly bool hasQuantizer; /// /// The color table mode: Global or local. @@ -64,6 +73,7 @@ public GifEncoderCore(Configuration configuration, GifEncoder encoder) this.memoryAllocator = configuration.MemoryAllocator; this.skipMetadata = encoder.SkipMetadata; this.quantizer = encoder.Quantizer; + this.hasQuantizer = encoder.Quantizer is not null; this.colorTableMode = encoder.ColorTableMode; this.pixelSamplingStrategy = encoder.PixelSamplingStrategy; } @@ -88,6 +98,21 @@ public void Encode(Image image, Stream stream, CancellationToken // Quantize the image returning a palette. IndexedImageFrame? quantized; + + if (this.quantizer is null) + { + // Is this a gif with color information. If so use that, otherwise use octree. + if (gifMetadata.ColorTableMode == GifColorTableMode.Global && gifMetadata.DecodedGlobalColorTable.Length > 0) + { + // We avoid dithering by default to preserve the original colors. + this.quantizer = new PaletteQuantizer(gifMetadata.DecodedGlobalColorTable, new() { Dither = null }); + } + else + { + this.quantizer = KnownQuantizers.Octree; + } + } + using (IQuantizer frameQuantizer = this.quantizer.CreatePixelSpecificQuantizer(this.configuration)) { if (useGlobalTable) @@ -109,7 +134,13 @@ public void Encode(Image image, Stream stream, CancellationToken WriteHeader(stream); // Write the LSD. - int index = GetTransparentIndex(quantized); + image.Frames.RootFrame.Metadata.TryGetGifMetadata(out GifFrameMetadata? frameMetadata); + int index = GetTransparentIndex(quantized, frameMetadata); + if (index == -1) + { + index = gifMetadata.BackgroundColor; + } + this.WriteLogicalScreenDescriptor(metadata, image.Width, image.Height, index, useGlobalTable, stream); if (useGlobalTable) @@ -141,6 +172,14 @@ private void EncodeFrames( { PaletteQuantizer paletteQuantizer = default; bool hasPaletteQuantizer = false; + + // Create a buffer to store de-duplicated pixel indices for encoding. + // These are used when the color table is global but we must always allocate since we don't know + // in advance whether the frames will use a local palette. + Buffer2D indices = this.memoryAllocator.Allocate2D(image.Width, image.Height); + + // Store the first frame as a reference for de-duplication comparison. + IndexedImageFrame previousQuantized = quantized; for (int i = 0; i < image.Frames.Count; i++) { // Gather the metadata for this frame. @@ -155,15 +194,21 @@ private void EncodeFrames( // since the palette is unchanging. This allows a reduction of memory usage across // multi frame gifs using a global palette. hasPaletteQuantizer = true; - paletteQuantizer = new(this.configuration, this.quantizer.Options, palette); + paletteQuantizer = new(this.configuration, this.quantizer!.Options, palette); } - this.EncodeFrame(stream, frame, i, useLocal, frameMetadata, ref quantized!, ref paletteQuantizer); + this.EncodeFrame(stream, frame, i, useLocal, frameMetadata, indices, ref previousQuantized, ref quantized!, ref paletteQuantizer); // Clean up for the next run. - quantized.Dispose(); + if (quantized != previousQuantized) + { + quantized.Dispose(); + } } + previousQuantized.Dispose(); + indices.Dispose(); + if (hasPaletteQuantizer) { paletteQuantizer.Dispose(); @@ -176,47 +221,55 @@ private void EncodeFrame( int frameIndex, bool useLocal, GifFrameMetadata? metadata, + Buffer2D indices, + ref IndexedImageFrame previousQuantized, ref IndexedImageFrame quantized, - ref PaletteQuantizer paletteQuantizer) + ref PaletteQuantizer globalPaletteQuantizer) where TPixel : unmanaged, IPixel { // The first frame has already been quantized so we do not need to do so again. + int transparencyIndex = -1; if (frameIndex > 0) { if (useLocal) { // Reassign using the current frame and details. - QuantizerOptions? options = null; - int colorTableLength = metadata?.ColorTableLength ?? 0; - if (colorTableLength > 0) + if (metadata?.DecodedLocalColorTable.Length > 0) { - options = new() - { - Dither = this.quantizer.Options.Dither, - DitherScale = this.quantizer.Options.DitherScale, - MaxColors = colorTableLength - }; + // We can use the color data from the decoded metadata here. + // We avoid dithering by default to preserve the original colors. + PaletteQuantizer localQuantizer = new(metadata.DecodedLocalColorTable, new() { Dither = null }); + using IQuantizer frameQuantizer = localQuantizer.CreatePixelSpecificQuantizer(this.configuration, localQuantizer.Options); + quantized = frameQuantizer.BuildPaletteAndQuantizeFrame(frame, frame.Bounds()); + } + else + { + // We must quantize the frame to generate a local color table. + IQuantizer localQuantizer = this.hasQuantizer ? this.quantizer! : KnownQuantizers.Octree; + using IQuantizer frameQuantizer = localQuantizer.CreatePixelSpecificQuantizer(this.configuration, localQuantizer.Options); + quantized = frameQuantizer.BuildPaletteAndQuantizeFrame(frame, frame.Bounds()); } - - using IQuantizer frameQuantizer = this.quantizer.CreatePixelSpecificQuantizer(this.configuration, options ?? this.quantizer.Options); - quantized = frameQuantizer.BuildPaletteAndQuantizeFrame(frame, frame.Bounds()); } else { // Quantize the image using the global palette. - quantized = paletteQuantizer.QuantizeFrame(frame, frame.Bounds()); + quantized = globalPaletteQuantizer.QuantizeFrame(frame, frame.Bounds()); + transparencyIndex = GetTransparentIndex(quantized, metadata); + + // De-duplicate pixels comparing to the previous frame. + // Only global is supported for now as the color palettes as the operation required to compare + // and offset the index lookups is too expensive for local palettes. + DeDuplicatePixels(previousQuantized, quantized, indices, transparencyIndex); } this.bitDepth = ColorNumerics.GetBitsNeededForColorDepth(quantized.Palette.Length); } - - // Do we have extension information to write? - int index = GetTransparentIndex(quantized); - if (metadata != null || index > -1) + else { - this.WriteGraphicalControlExtension(metadata ?? new(), index, stream); + transparencyIndex = GetTransparentIndex(quantized, metadata); } + this.WriteGraphicalControlExtension(metadata, transparencyIndex, stream); this.WriteImageDescriptor(frame, useLocal, stream); if (useLocal) @@ -224,18 +277,103 @@ private void EncodeFrame( this.WriteColorTable(quantized, stream); } - this.WriteImageData(quantized, stream); + // Assign the correct buffer to compress. + // If we are using a local palette or it's the first run then we want to use the quantized frame. + Buffer2D buffer = useLocal || frameIndex == 0 ? ((IPixelSource)quantized).PixelBuffer : indices; + this.WriteImageData(buffer, stream); + + // Swap the buffers. + (quantized, previousQuantized) = (previousQuantized, quantized); + } + + private static void DeDuplicatePixels( + IndexedImageFrame background, + IndexedImageFrame source, + Buffer2D indices, + int transparencyIndex) + where TPixel : unmanaged, IPixel + { + // TODO: This should be the background color if not transparent. + byte replacementIndex = unchecked((byte)transparencyIndex); + for (int y = 0; y < background.Height; y++) + { + ref byte backgroundRowBase = ref MemoryMarshal.GetReference(background.DangerousGetRowSpan(y)); + ref byte sourceRowBase = ref MemoryMarshal.GetReference(source.DangerousGetRowSpan(y)); + ref byte indicesRowBase = ref MemoryMarshal.GetReference(indices.DangerousGetRowSpan(y)); + + uint x = 0; + if (Avx2.IsSupported) + { + int remaining = background.Width; + Vector256 transparentVector = Vector256.Create(replacementIndex); + while (remaining >= Vector256.Count) + { + Vector256 b = Unsafe.ReadUnaligned>(ref Unsafe.Add(ref backgroundRowBase, x)); + Vector256 s = Unsafe.ReadUnaligned>(ref Unsafe.Add(ref sourceRowBase, x)); + Vector256 m = Avx2.CompareEqual(b, s); + Vector256 i = Avx2.BlendVariable(s, transparentVector, m); + + Unsafe.WriteUnaligned(ref Unsafe.Add(ref indicesRowBase, x), i); + + x += (uint)Vector256.Count; + remaining -= Vector256.Count; + } + } + else if (Sse2.IsSupported) + { + int remaining = background.Width; + Vector128 transparentVector = Vector128.Create(replacementIndex); + while (remaining >= Vector128.Count) + { + Vector128 b = Unsafe.ReadUnaligned>(ref Unsafe.Add(ref backgroundRowBase, x)); + Vector128 s = Unsafe.ReadUnaligned>(ref Unsafe.Add(ref sourceRowBase, x)); + Vector128 m = Sse2.CompareEqual(b, s); + Vector128 i = SimdUtils.HwIntrinsics.BlendVariable(s, transparentVector, m); + + Unsafe.WriteUnaligned(ref Unsafe.Add(ref indicesRowBase, x), i); + + x += (uint)Vector128.Count; + remaining -= Vector128.Count; + } + } + else if (AdvSimd.Arm64.IsSupported) + { + int remaining = background.Width; + Vector128 transparentVector = Vector128.Create(replacementIndex); + while (remaining >= Vector128.Count) + { + Vector128 b = Unsafe.ReadUnaligned>(ref Unsafe.Add(ref backgroundRowBase, x)); + Vector128 s = Unsafe.ReadUnaligned>(ref Unsafe.Add(ref sourceRowBase, x)); + Vector128 m = AdvSimd.CompareEqual(b, s); + Vector128 i = SimdUtils.HwIntrinsics.BlendVariable(s, transparentVector, m); + + Unsafe.WriteUnaligned(ref Unsafe.Add(ref indicesRowBase, x), i); + + x += (uint)Vector128.Count; + remaining -= Vector128.Count; + } + } + + for (; x < (uint)background.Width; x++) + { + byte b = Unsafe.Add(ref backgroundRowBase, x); + byte s = Unsafe.Add(ref sourceRowBase, x); + ref byte i = ref Unsafe.Add(ref indicesRowBase, x); + i = (b == s) ? replacementIndex : s; + } + } } /// /// Returns the index of the most transparent color in the palette. /// - /// The quantized frame. + /// The current quantized frame. + /// The current gif frame metadata. /// The pixel format. /// /// The . /// - private static int GetTransparentIndex(IndexedImageFrame quantized) + private static int GetTransparentIndex(IndexedImageFrame quantized, GifFrameMetadata? metadata) where TPixel : unmanaged, IPixel { // Transparent pixels are much more likely to be found at the end of a palette. @@ -255,6 +393,11 @@ private static int GetTransparentIndex(IndexedImageFrame quantiz } } + if (metadata?.HasTransparency == true && index == -1) + { + index = metadata.TransparencyIndex; + } + return index; } @@ -271,14 +414,14 @@ private static int GetTransparentIndex(IndexedImageFrame quantiz /// The image metadata. /// The image width. /// The image height. - /// The transparency index to set the default background index to. + /// The index to set the default background index to. /// Whether to use a global or local color table. /// The stream to write to. private void WriteLogicalScreenDescriptor( ImageMetadata metadata, int width, int height, - int transparencyIndex, + int backgroundIndex, bool useGlobalTable, Stream stream) { @@ -316,7 +459,7 @@ private void WriteLogicalScreenDescriptor( width: (ushort)width, height: (ushort)height, packed: packedValue, - backgroundColorIndex: unchecked((byte)transparencyIndex), + backgroundColorIndex: unchecked((byte)backgroundIndex), ratio); Span buffer = stackalloc byte[20]; @@ -412,16 +555,26 @@ private static void WriteCommentSubBlock(Stream stream, ReadOnlySpan comme /// The metadata of the image or frame. /// The index of the color in the color palette to make transparent. /// The stream to write to. - private void WriteGraphicalControlExtension(GifFrameMetadata metadata, int transparencyIndex, Stream stream) + private void WriteGraphicalControlExtension(GifFrameMetadata? metadata, int transparencyIndex, Stream stream) { + bool hasTransparency; + if (metadata is null) + { + hasTransparency = transparencyIndex > -1; + } + else + { + hasTransparency = metadata.HasTransparency; + } + byte packedValue = GifGraphicControlExtension.GetPackedValue( - disposalMethod: metadata.DisposalMethod, - transparencyFlag: transparencyIndex > -1); + disposalMethod: metadata!.DisposalMethod, + transparencyFlag: hasTransparency); GifGraphicControlExtension extension = new( packed: packedValue, delayTime: (ushort)metadata.FrameDelay, - transparencyIndex: unchecked((byte)transparencyIndex)); + transparencyIndex: hasTransparency ? unchecked((byte)transparencyIndex) : byte.MinValue); this.WriteExtension(extension, stream); } @@ -521,13 +674,11 @@ private void WriteColorTable(IndexedImageFrame image, Stream str /// /// Writes the image pixel data to the stream. /// - /// The pixel format. - /// The containing indexed pixels. + /// The containing indexed pixels. /// The stream to write to. - private void WriteImageData(IndexedImageFrame image, Stream stream) - where TPixel : unmanaged, IPixel + private void WriteImageData(Buffer2D indices, Stream stream) { using LzwEncoder encoder = new(this.memoryAllocator, (byte)this.bitDepth); - encoder.Encode(((IPixelSource)image).PixelBuffer, stream); + encoder.Encode(indices, stream); } } diff --git a/src/ImageSharp/Formats/Gif/GifFrameMetadata.cs b/src/ImageSharp/Formats/Gif/GifFrameMetadata.cs index 7f4b49f0bb..bcf990db53 100644 --- a/src/ImageSharp/Formats/Gif/GifFrameMetadata.cs +++ b/src/ImageSharp/Formats/Gif/GifFrameMetadata.cs @@ -22,9 +22,16 @@ public GifFrameMetadata() private GifFrameMetadata(GifFrameMetadata other) { this.ColorTableMode = other.ColorTableMode; - this.ColorTableLength = other.ColorTableLength; this.FrameDelay = other.FrameDelay; this.DisposalMethod = other.DisposalMethod; + + if (other.DecodedLocalColorTable.Length > 0) + { + this.DecodedLocalColorTable = other.DecodedLocalColorTable.ToArray(); + } + + this.HasTransparency = other.HasTransparency; + this.TransparencyIndex = other.TransparencyIndex; } /// @@ -33,11 +40,21 @@ private GifFrameMetadata(GifFrameMetadata other) public GifColorTableMode ColorTableMode { get; set; } /// - /// Gets or sets the length of the color table. - /// If not 0, then this field indicates the maximum number of colors to use when quantizing the - /// image frame. + /// Gets the decoded global color table, if any. + /// + public ReadOnlyMemory DecodedLocalColorTable { get; internal set; } + + /// + /// Gets or sets a value indicating whether the frame has transparency + /// + public bool HasTransparency { get; set; } + + /// + /// Gets or sets the transparency index. + /// When is set to this value indicates the index within + /// the color palette at which the transparent color is located. /// - public int ColorTableLength { get; set; } + public byte TransparencyIndex { get; set; } /// /// Gets or sets the frame delay for animated images. diff --git a/src/ImageSharp/Formats/Gif/GifMetadata.cs b/src/ImageSharp/Formats/Gif/GifMetadata.cs index da21e134ec..251cde0bbb 100644 --- a/src/ImageSharp/Formats/Gif/GifMetadata.cs +++ b/src/ImageSharp/Formats/Gif/GifMetadata.cs @@ -23,7 +23,12 @@ private GifMetadata(GifMetadata other) { this.RepeatCount = other.RepeatCount; this.ColorTableMode = other.ColorTableMode; - this.GlobalColorTableLength = other.GlobalColorTableLength; + this.BackgroundColor = other.BackgroundColor; + + if (other.DecodedGlobalColorTable.Length > 0) + { + this.DecodedGlobalColorTable = other.DecodedGlobalColorTable.ToArray(); + } for (int i = 0; i < other.Comments.Count; i++) { @@ -45,9 +50,15 @@ private GifMetadata(GifMetadata other) public GifColorTableMode ColorTableMode { get; set; } /// - /// Gets or sets the length of the global color table if present. + /// Gets the decoded global color table, if any. + /// + public ReadOnlyMemory DecodedGlobalColorTable { get; internal set; } + + /// + /// Gets or sets the index at the for the background color. + /// The background color is the color used for those pixels on the screen that are not covered by an image. /// - public int GlobalColorTableLength { get; set; } + public byte BackgroundColor { get; set; } /// /// Gets or sets the collection of comments about the graphics, credits, descriptions or any diff --git a/src/ImageSharp/Formats/Gif/MetadataExtensions.cs b/src/ImageSharp/Formats/Gif/MetadataExtensions.cs index e20b9dd177..9ba95952e7 100644 --- a/src/ImageSharp/Formats/Gif/MetadataExtensions.cs +++ b/src/ImageSharp/Formats/Gif/MetadataExtensions.cs @@ -17,14 +17,16 @@ public static partial class MetadataExtensions /// /// The metadata this method extends. /// The . - public static GifMetadata GetGifMetadata(this ImageMetadata source) => source.GetFormatMetadata(GifFormat.Instance); + public static GifMetadata GetGifMetadata(this ImageMetadata source) + => source.GetFormatMetadata(GifFormat.Instance); /// /// Gets the gif format specific metadata for the image frame. /// /// The metadata this method extends. /// The . - public static GifFrameMetadata GetGifMetadata(this ImageFrameMetadata source) => source.GetFormatMetadata(GifFormat.Instance); + public static GifFrameMetadata GetGifMetadata(this ImageFrameMetadata source) + => source.GetFormatMetadata(GifFormat.Instance); /// /// Gets the gif format specific metadata for the image frame. @@ -38,5 +40,6 @@ public static partial class MetadataExtensions /// /// if the gif frame metadata exists; otherwise, . /// - public static bool TryGetGifMetadata(this ImageFrameMetadata source, [NotNullWhen(true)] out GifFrameMetadata? metadata) => source.TryGetFormatMetadata(GifFormat.Instance, out metadata); + public static bool TryGetGifMetadata(this ImageFrameMetadata source, [NotNullWhen(true)] out GifFrameMetadata? metadata) + => source.TryGetFormatMetadata(GifFormat.Instance, out metadata); } diff --git a/src/ImageSharp/Formats/Png/Filters/PaethFilter.cs b/src/ImageSharp/Formats/Png/Filters/PaethFilter.cs index f2226974c9..b8324a0809 100644 --- a/src/ImageSharp/Formats/Png/Filters/PaethFilter.cs +++ b/src/ImageSharp/Formats/Png/Filters/PaethFilter.cs @@ -35,9 +35,9 @@ public static void Decode(Span scanline, Span previousScanline, int // row: a d // The Paeth function predicts d to be whichever of a, b, or c is nearest to // p = a + b - c. - if (Sse41.IsSupported && bytesPerPixel is 4) + if (Sse2.IsSupported && bytesPerPixel is 4) { - DecodeSse41(scanline, previousScanline); + DecodeSse3(scanline, previousScanline); } else if (AdvSimd.Arm64.IsSupported && bytesPerPixel is 4) { @@ -50,7 +50,7 @@ public static void Decode(Span scanline, Span previousScanline, int } [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static void DecodeSse41(Span scanline, Span previousScanline) + private static void DecodeSse3(Span scanline, Span previousScanline) { ref byte scanBaseRef = ref MemoryMarshal.GetReference(scanline); ref byte prevBaseRef = ref MemoryMarshal.GetReference(previousScanline); @@ -90,8 +90,8 @@ private static void DecodeSse41(Span scanline, Span previousScanline Vector128 smallest = Sse2.Min(pc, Sse2.Min(pa, pb)); // Paeth breaks ties favoring a over b over c. - Vector128 mask = Sse41.BlendVariable(c, b, Sse2.CompareEqual(smallest, pb).AsByte()); - Vector128 nearest = Sse41.BlendVariable(mask, a, Sse2.CompareEqual(smallest, pa).AsByte()); + Vector128 mask = SimdUtils.HwIntrinsics.BlendVariable(c, b, Sse2.CompareEqual(smallest, pb).AsByte()); + Vector128 nearest = SimdUtils.HwIntrinsics.BlendVariable(mask, a, Sse2.CompareEqual(smallest, pa).AsByte()); // Note `_epi8`: we need addition to wrap modulo 255. d = Sse2.Add(d, nearest); @@ -143,8 +143,8 @@ public static void DecodeArm(Span scanline, Span previousScanline) Vector128 smallest = AdvSimd.Min(pc, AdvSimd.Min(pa, pb)); // Paeth breaks ties favoring a over b over c. - Vector128 mask = BlendVariable(c, b, AdvSimd.CompareEqual(smallest, pb).AsByte()); - Vector128 nearest = BlendVariable(mask, a, AdvSimd.CompareEqual(smallest, pa).AsByte()); + Vector128 mask = SimdUtils.HwIntrinsics.BlendVariable(c, b, AdvSimd.CompareEqual(smallest, pb).AsByte()); + Vector128 nearest = SimdUtils.HwIntrinsics.BlendVariable(mask, a, AdvSimd.CompareEqual(smallest, pa).AsByte()); d = AdvSimd.Add(d, nearest); @@ -157,27 +157,6 @@ public static void DecodeArm(Span scanline, Span previousScanline) } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static Vector128 BlendVariable(Vector128 a, Vector128 b, Vector128 c) - { - // Equivalent of Sse41.BlendVariable: - // Blend packed 8-bit integers from a and b using mask, and store the results in - // dst. - // - // FOR j := 0 to 15 - // i := j*8 - // IF mask[i+7] - // dst[i+7:i] := b[i+7:i] - // ELSE - // dst[i+7:i] := a[i+7:i] - // FI - // ENDFOR - // - // Use a signed shift right to create a mask with the sign bit. - Vector128 mask = AdvSimd.ShiftRightArithmetic(c.AsInt16(), 7); - return AdvSimd.BitwiseSelect(mask, b.AsInt16(), a.AsInt16()).AsByte(); - } - [MethodImpl(MethodImplOptions.AggressiveInlining)] private static void DecodeScalar(Span scanline, Span previousScanline, uint bytesPerPixel) { diff --git a/src/ImageSharp/Formats/Png/PngEncoder.cs b/src/ImageSharp/Formats/Png/PngEncoder.cs index 1d068303bc..595601522e 100644 --- a/src/ImageSharp/Formats/Png/PngEncoder.cs +++ b/src/ImageSharp/Formats/Png/PngEncoder.cs @@ -11,15 +11,6 @@ namespace SixLabors.ImageSharp.Formats.Png; /// public class PngEncoder : QuantizingImageEncoder { - /// - /// Initializes a new instance of the class. - /// - public PngEncoder() => - - // We set the quantizer to null here to allow the underlying encoder to create a - // quantizer with options appropriate to the encoding bit depth. - this.Quantizer = null; - /// /// Gets the number of bits per sample or per palette index (not per pixel). /// Not all values are allowed for all values. diff --git a/src/ImageSharp/Formats/QuantizingImageEncoder.cs b/src/ImageSharp/Formats/QuantizingImageEncoder.cs index b7eb86afb0..330d8988c7 100644 --- a/src/ImageSharp/Formats/QuantizingImageEncoder.cs +++ b/src/ImageSharp/Formats/QuantizingImageEncoder.cs @@ -1,7 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using SixLabors.ImageSharp.Processing; using SixLabors.ImageSharp.Processing.Processors.Quantization; namespace SixLabors.ImageSharp.Formats; @@ -14,7 +13,7 @@ public abstract class QuantizingImageEncoder : ImageEncoder /// /// Gets the quantizer used to generate the color palette. /// - public IQuantizer Quantizer { get; init; } = KnownQuantizers.Octree; + public IQuantizer? Quantizer { get; init; } /// /// Gets the used for quantization when building color palettes. diff --git a/src/ImageSharp/Formats/Tiff/TiffEncoder.cs b/src/ImageSharp/Formats/Tiff/TiffEncoder.cs index 24cca41dc2..fb5b9f2ed7 100644 --- a/src/ImageSharp/Formats/Tiff/TiffEncoder.cs +++ b/src/ImageSharp/Formats/Tiff/TiffEncoder.cs @@ -4,6 +4,7 @@ using SixLabors.ImageSharp.Advanced; using SixLabors.ImageSharp.Compression.Zlib; using SixLabors.ImageSharp.Formats.Tiff.Constants; +using SixLabors.ImageSharp.Processing; namespace SixLabors.ImageSharp.Formats.Tiff; @@ -12,6 +13,11 @@ namespace SixLabors.ImageSharp.Formats.Tiff; /// public class TiffEncoder : QuantizingImageEncoder { + /// + /// Initializes a new instance of the class. + /// + public TiffEncoder() => this.Quantizer = KnownQuantizers.Octree; + /// /// Gets the number of bits per pixel. /// diff --git a/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs b/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs index d7243c6964..7d4ebb3f14 100644 --- a/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs +++ b/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs @@ -11,6 +11,7 @@ using SixLabors.ImageSharp.Metadata; using SixLabors.ImageSharp.Metadata.Profiles.Exif; using SixLabors.ImageSharp.PixelFormats; +using SixLabors.ImageSharp.Processing; using SixLabors.ImageSharp.Processing.Processors.Quantization; namespace SixLabors.ImageSharp.Formats.Tiff; @@ -85,7 +86,7 @@ public TiffEncoderCore(TiffEncoder options, MemoryAllocator memoryAllocator) { this.memoryAllocator = memoryAllocator; this.PhotometricInterpretation = options.PhotometricInterpretation; - this.quantizer = options.Quantizer; + this.quantizer = options.Quantizer ?? KnownQuantizers.Octree; this.pixelSamplingStrategy = options.PixelSamplingStrategy; this.BitsPerPixel = options.BitsPerPixel; this.HorizontalPredictor = options.HorizontalPredictor; @@ -320,7 +321,7 @@ private long WriteIfd(TiffStreamWriter writer, List entries) { int sz = ExifWriter.WriteValue(entry, buffer, 0); DebugGuard.IsTrue(sz == length, "Incorrect number of bytes written"); - writer.WritePadded(buffer.Slice(0, sz)); + writer.WritePadded(buffer[..sz]); } else { diff --git a/src/ImageSharp/Memory/Buffer2D{T}.cs b/src/ImageSharp/Memory/Buffer2D{T}.cs index 1173e02e17..f4b2dfc08c 100644 --- a/src/ImageSharp/Memory/Buffer2D{T}.cs +++ b/src/ImageSharp/Memory/Buffer2D{T}.cs @@ -173,13 +173,15 @@ internal Memory GetSafeRowMemory(int y) /// Swaps the contents of 'destination' with 'source' if the buffers are owned (1), /// copies the contents of 'source' to 'destination' otherwise (2). Buffers should be of same size in case 2! /// + /// The destination buffer. + /// The source buffer. + /// Attempt to copy/swap incompatible buffers. internal static bool SwapOrCopyContent(Buffer2D destination, Buffer2D source) { bool swapped = false; if (MemoryGroup.CanSwapContent(destination.FastMemoryGroup, source.FastMemoryGroup)) { - (destination.FastMemoryGroup, source.FastMemoryGroup) = - (source.FastMemoryGroup, destination.FastMemoryGroup); + (destination.FastMemoryGroup, source.FastMemoryGroup) = (source.FastMemoryGroup, destination.FastMemoryGroup); destination.FastMemoryGroup.RecreateViewAfterSwap(); source.FastMemoryGroup.RecreateViewAfterSwap(); swapped = true; @@ -201,7 +203,6 @@ internal static bool SwapOrCopyContent(Buffer2D destination, Buffer2D sour } [MethodImpl(InliningOptions.ColdPath)] - private void ThrowYOutOfRangeException(int y) => - throw new ArgumentOutOfRangeException( - $"DangerousGetRowSpan({y}). Y was out of range. Height={this.Height}"); + private void ThrowYOutOfRangeException(int y) + => throw new ArgumentOutOfRangeException($"DangerousGetRowSpan({y}). Y was out of range. Height={this.Height}"); } diff --git a/src/ImageSharp/Processing/Processors/Quantization/QuantizerOptions.cs b/src/ImageSharp/Processing/Processors/Quantization/QuantizerOptions.cs index b3d03d9338..a6bb265a81 100644 --- a/src/ImageSharp/Processing/Processors/Quantization/QuantizerOptions.cs +++ b/src/ImageSharp/Processing/Processors/Quantization/QuantizerOptions.cs @@ -25,8 +25,8 @@ public class QuantizerOptions /// public float DitherScale { - get { return this.ditherScale; } - set { this.ditherScale = Numerics.Clamp(value, QuantizerConstants.MinDitherScale, QuantizerConstants.MaxDitherScale); } + get => this.ditherScale; + set => this.ditherScale = Numerics.Clamp(value, QuantizerConstants.MinDitherScale, QuantizerConstants.MaxDitherScale); } /// @@ -35,7 +35,7 @@ public float DitherScale /// public int MaxColors { - get { return this.maxColors; } - set { this.maxColors = Numerics.Clamp(value, QuantizerConstants.MinColors, QuantizerConstants.MaxColors); } + get => this.maxColors; + set => this.maxColors = Numerics.Clamp(value, QuantizerConstants.MinColors, QuantizerConstants.MaxColors); } } diff --git a/tests/ImageSharp.Tests/Formats/Gif/GifEncoderTests.cs b/tests/ImageSharp.Tests/Formats/Gif/GifEncoderTests.cs index 7fc61066a7..0b8034572f 100644 --- a/tests/ImageSharp.Tests/Formats/Gif/GifEncoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Gif/GifEncoderTests.cs @@ -171,10 +171,21 @@ public void NonMutatingEncodePreservesPaletteCount() GifMetadata metaData = image.Metadata.GetGifMetadata(); GifFrameMetadata frameMetadata = image.Frames.RootFrame.Metadata.GetGifMetadata(); GifColorTableMode colorMode = metaData.ColorTableMode; + + int maxColors; + if (colorMode == GifColorTableMode.Global) + { + maxColors = metaData.DecodedGlobalColorTable.Length; + } + else + { + maxColors = frameMetadata.DecodedLocalColorTable.Length; + } + GifEncoder encoder = new() { ColorTableMode = colorMode, - Quantizer = new OctreeQuantizer(new QuantizerOptions { MaxColors = frameMetadata.ColorTableLength }) + Quantizer = new OctreeQuantizer(new QuantizerOptions { MaxColors = maxColors }) }; image.Save(outStream, encoder); @@ -187,15 +198,31 @@ public void NonMutatingEncodePreservesPaletteCount() Assert.Equal(metaData.ColorTableMode, cloneMetadata.ColorTableMode); // Gifiddle and Cyotek GifInfo say this image has 64 colors. - Assert.Equal(64, frameMetadata.ColorTableLength); + colorMode = cloneMetadata.ColorTableMode; + if (colorMode == GifColorTableMode.Global) + { + maxColors = metaData.DecodedGlobalColorTable.Length; + } + else + { + maxColors = frameMetadata.DecodedLocalColorTable.Length; + } + + Assert.Equal(64, maxColors); for (int i = 0; i < image.Frames.Count; i++) { - GifFrameMetadata ifm = image.Frames[i].Metadata.GetGifMetadata(); - GifFrameMetadata cifm = clone.Frames[i].Metadata.GetGifMetadata(); + GifFrameMetadata iMeta = image.Frames[i].Metadata.GetGifMetadata(); + GifFrameMetadata cMeta = clone.Frames[i].Metadata.GetGifMetadata(); + + if (iMeta.ColorTableMode == GifColorTableMode.Local) + { + Assert.Equal(iMeta.DecodedLocalColorTable.Length, cMeta.DecodedLocalColorTable.Length); + } - Assert.Equal(ifm.ColorTableLength, cifm.ColorTableLength); - Assert.Equal(ifm.FrameDelay, cifm.FrameDelay); + Assert.Equal(iMeta.FrameDelay, cMeta.FrameDelay); + Assert.Equal(iMeta.HasTransparency, cMeta.HasTransparency); + Assert.Equal(iMeta.TransparencyIndex, cMeta.TransparencyIndex); } image.Dispose(); diff --git a/tests/ImageSharp.Tests/Formats/Gif/GifFrameMetadataTests.cs b/tests/ImageSharp.Tests/Formats/Gif/GifFrameMetadataTests.cs index 9a8b41d541..70d75cdd49 100644 --- a/tests/ImageSharp.Tests/Formats/Gif/GifFrameMetadataTests.cs +++ b/tests/ImageSharp.Tests/Formats/Gif/GifFrameMetadataTests.cs @@ -11,21 +11,22 @@ public class GifFrameMetadataTests [Fact] public void CloneIsDeep() { - var meta = new GifFrameMetadata + GifFrameMetadata meta = new() { FrameDelay = 1, DisposalMethod = GifDisposalMethod.RestoreToBackground, - ColorTableLength = 2 + DecodedLocalColorTable = new[] { Color.Black, Color.White } }; - var clone = (GifFrameMetadata)meta.DeepClone(); + GifFrameMetadata clone = (GifFrameMetadata)meta.DeepClone(); clone.FrameDelay = 2; clone.DisposalMethod = GifDisposalMethod.RestoreToPrevious; - clone.ColorTableLength = 1; + clone.DecodedLocalColorTable = new[] { Color.Black }; Assert.False(meta.FrameDelay.Equals(clone.FrameDelay)); Assert.False(meta.DisposalMethod.Equals(clone.DisposalMethod)); - Assert.False(meta.ColorTableLength.Equals(clone.ColorTableLength)); + Assert.False(meta.DecodedLocalColorTable.Length == clone.DecodedLocalColorTable.Length); + Assert.Equal(1, clone.DecodedLocalColorTable.Length); } } diff --git a/tests/ImageSharp.Tests/Formats/Gif/GifMetadataTests.cs b/tests/ImageSharp.Tests/Formats/Gif/GifMetadataTests.cs index 40ac94eea6..82a999b696 100644 --- a/tests/ImageSharp.Tests/Formats/Gif/GifMetadataTests.cs +++ b/tests/ImageSharp.Tests/Formats/Gif/GifMetadataTests.cs @@ -1,7 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using Microsoft.CodeAnalysis; using SixLabors.ImageSharp.Formats; using SixLabors.ImageSharp.Formats.Gif; using SixLabors.ImageSharp.Metadata; @@ -35,7 +34,7 @@ public void CloneIsDeep() { RepeatCount = 1, ColorTableMode = GifColorTableMode.Global, - GlobalColorTableLength = 2, + DecodedGlobalColorTable = new[] { Color.Black, Color.White }, Comments = new List { "Foo" } }; @@ -43,11 +42,12 @@ public void CloneIsDeep() clone.RepeatCount = 2; clone.ColorTableMode = GifColorTableMode.Local; - clone.GlobalColorTableLength = 1; + clone.DecodedGlobalColorTable = new[] { Color.Black }; Assert.False(meta.RepeatCount.Equals(clone.RepeatCount)); Assert.False(meta.ColorTableMode.Equals(clone.ColorTableMode)); - Assert.False(meta.GlobalColorTableLength.Equals(clone.GlobalColorTableLength)); + Assert.False(meta.DecodedGlobalColorTable.Length == clone.DecodedGlobalColorTable.Length); + Assert.Equal(1, clone.DecodedGlobalColorTable.Length); Assert.False(meta.Comments.Equals(clone.Comments)); Assert.True(meta.Comments.SequenceEqual(clone.Comments)); } @@ -205,7 +205,12 @@ public void Identify_Frames( GifFrameMetadata gifFrameMetadata = imageInfo.FrameMetadataCollection[imageInfo.FrameMetadataCollection.Count - 1].GetGifMetadata(); Assert.Equal(colorTableMode, gifFrameMetadata.ColorTableMode); - Assert.Equal(globalColorTableLength, gifFrameMetadata.ColorTableLength); + + if (colorTableMode == GifColorTableMode.Global) + { + Assert.Equal(globalColorTableLength, gifMetadata.DecodedGlobalColorTable.Length); + } + Assert.Equal(frameDelay, gifFrameMetadata.FrameDelay); Assert.Equal(disposalMethod, gifFrameMetadata.DisposalMethod); } diff --git a/tests/ImageSharp.Tests/Image/ImageFrameCollectionTests.NonGeneric.cs b/tests/ImageSharp.Tests/Image/ImageFrameCollectionTests.NonGeneric.cs index bc22806c3c..7c1150b774 100644 --- a/tests/ImageSharp.Tests/Image/ImageFrameCollectionTests.NonGeneric.cs +++ b/tests/ImageSharp.Tests/Image/ImageFrameCollectionTests.NonGeneric.cs @@ -279,6 +279,7 @@ public void ConstructGif_FromDifferentPixelTypes(TestImageProvider dest = new(source.GetConfiguration(), source.Width, source.Height); + // Giphy.gif has 5 frames ImportFrameAs(source.Frames, dest.Frames, 0); ImportFrameAs(source.Frames, dest.Frames, 1); @@ -289,7 +290,7 @@ public void ConstructGif_FromDifferentPixelTypes(TestImageProvider()); + IccProfile iccProfile = new() { Header = new IccProfileHeader() { CmmType = "Unittest" } }; - var iptcProfile = new ImageSharp.Metadata.Profiles.Iptc.IptcProfile(); - var metaData = new ImageFrameMetadata() + IptcProfile iptcProfile = new(); + ImageFrameMetadata metaData = new() { XmpProfile = xmpProfile, ExifProfile = exifProfile, From 73067b9742597d5c4427cf4e11c1d891f423882e Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Mon, 15 May 2023 22:52:41 +1000 Subject: [PATCH 02/18] Fix NRE --- src/ImageSharp/Formats/Gif/GifEncoderCore.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs index b6955b8c03..0bcb3ef0fa 100644 --- a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs @@ -560,6 +560,7 @@ private void WriteGraphicalControlExtension(GifFrameMetadata? metadata, int tran bool hasTransparency; if (metadata is null) { + metadata = new(); hasTransparency = transparencyIndex > -1; } else From 43aaad1d492715d80c5ec2aa6433f4f5671c3143 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 17 May 2023 14:48:59 +1000 Subject: [PATCH 03/18] Make color tables mutable --- src/ImageSharp/Formats/Gif/GifDecoderCore.cs | 4 ++-- src/ImageSharp/Formats/Gif/GifEncoderCore.cs | 8 ++++---- src/ImageSharp/Formats/Gif/GifFrameMetadata.cs | 8 ++++---- src/ImageSharp/Formats/Gif/GifMetadata.cs | 10 +++++----- tests/ImageSharp.Tests/Formats/Gif/GifEncoderTests.cs | 10 +++++----- .../Formats/Gif/GifFrameMetadataTests.cs | 8 ++++---- tests/ImageSharp.Tests/Formats/Gif/GifMetadataTests.cs | 10 +++++----- .../Image/ImageFrameCollectionTests.NonGeneric.cs | 2 +- .../Metadata/ImageFrameMetadataTests.cs | 4 ++-- tests/ImageSharp.Tests/TestImages.cs | 2 ++ 10 files changed, 34 insertions(+), 32 deletions(-) diff --git a/src/ImageSharp/Formats/Gif/GifDecoderCore.cs b/src/ImageSharp/Formats/Gif/GifDecoderCore.cs index 7f5276a250..776cb0e3c2 100644 --- a/src/ImageSharp/Formats/Gif/GifDecoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifDecoderCore.cs @@ -716,7 +716,7 @@ private void SetFrameMetadata(ImageFrameMetadata metadata) colorTable[i] = new Color(Unsafe.Add(ref localBase, (uint)i)); } - gifMeta.DecodedLocalColorTable = colorTable; + gifMeta.LocalColorTable = colorTable; } // Graphics control extensions is optional. @@ -793,7 +793,7 @@ private void ReadLogicalScreenDescriptorAndGlobalColorTable(BufferedReadStream s colorTable[i] = new Color(Unsafe.Add(ref globalBase, (uint)i)); } - this.gifMetadata.DecodedGlobalColorTable = colorTable; + this.gifMetadata.GlobalColorTable = colorTable; } } } diff --git a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs index 0bcb3ef0fa..90e7a8b1ea 100644 --- a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs @@ -102,10 +102,10 @@ public void Encode(Image image, Stream stream, CancellationToken if (this.quantizer is null) { // Is this a gif with color information. If so use that, otherwise use octree. - if (gifMetadata.ColorTableMode == GifColorTableMode.Global && gifMetadata.DecodedGlobalColorTable.Length > 0) + if (gifMetadata.ColorTableMode == GifColorTableMode.Global && gifMetadata.GlobalColorTable?.Length > 0) { // We avoid dithering by default to preserve the original colors. - this.quantizer = new PaletteQuantizer(gifMetadata.DecodedGlobalColorTable, new() { Dither = null }); + this.quantizer = new PaletteQuantizer(gifMetadata.GlobalColorTable.Value, new() { Dither = null }); } else { @@ -234,11 +234,11 @@ private void EncodeFrame( if (useLocal) { // Reassign using the current frame and details. - if (metadata?.DecodedLocalColorTable.Length > 0) + if (metadata?.LocalColorTable?.Length > 0) { // We can use the color data from the decoded metadata here. // We avoid dithering by default to preserve the original colors. - PaletteQuantizer localQuantizer = new(metadata.DecodedLocalColorTable, new() { Dither = null }); + PaletteQuantizer localQuantizer = new(metadata.LocalColorTable.Value, new() { Dither = null }); using IQuantizer frameQuantizer = localQuantizer.CreatePixelSpecificQuantizer(this.configuration, localQuantizer.Options); quantized = frameQuantizer.BuildPaletteAndQuantizeFrame(frame, frame.Bounds()); } diff --git a/src/ImageSharp/Formats/Gif/GifFrameMetadata.cs b/src/ImageSharp/Formats/Gif/GifFrameMetadata.cs index bcf990db53..f7959ac12b 100644 --- a/src/ImageSharp/Formats/Gif/GifFrameMetadata.cs +++ b/src/ImageSharp/Formats/Gif/GifFrameMetadata.cs @@ -25,9 +25,9 @@ private GifFrameMetadata(GifFrameMetadata other) this.FrameDelay = other.FrameDelay; this.DisposalMethod = other.DisposalMethod; - if (other.DecodedLocalColorTable.Length > 0) + if (other.LocalColorTable?.Length > 0) { - this.DecodedLocalColorTable = other.DecodedLocalColorTable.ToArray(); + this.LocalColorTable = other.LocalColorTable.Value.ToArray(); } this.HasTransparency = other.HasTransparency; @@ -40,9 +40,9 @@ private GifFrameMetadata(GifFrameMetadata other) public GifColorTableMode ColorTableMode { get; set; } /// - /// Gets the decoded global color table, if any. + /// Gets or sets the local color table, if any. /// - public ReadOnlyMemory DecodedLocalColorTable { get; internal set; } + public ReadOnlyMemory? LocalColorTable { get; set; } /// /// Gets or sets a value indicating whether the frame has transparency diff --git a/src/ImageSharp/Formats/Gif/GifMetadata.cs b/src/ImageSharp/Formats/Gif/GifMetadata.cs index 251cde0bbb..184ccd644f 100644 --- a/src/ImageSharp/Formats/Gif/GifMetadata.cs +++ b/src/ImageSharp/Formats/Gif/GifMetadata.cs @@ -25,9 +25,9 @@ private GifMetadata(GifMetadata other) this.ColorTableMode = other.ColorTableMode; this.BackgroundColor = other.BackgroundColor; - if (other.DecodedGlobalColorTable.Length > 0) + if (other.GlobalColorTable?.Length > 0) { - this.DecodedGlobalColorTable = other.DecodedGlobalColorTable.ToArray(); + this.GlobalColorTable = other.GlobalColorTable.Value.ToArray(); } for (int i = 0; i < other.Comments.Count; i++) @@ -50,12 +50,12 @@ private GifMetadata(GifMetadata other) public GifColorTableMode ColorTableMode { get; set; } /// - /// Gets the decoded global color table, if any. + /// Gets or sets the global color table, if any. /// - public ReadOnlyMemory DecodedGlobalColorTable { get; internal set; } + public ReadOnlyMemory? GlobalColorTable { get; set; } /// - /// Gets or sets the index at the for the background color. + /// Gets or sets the index at the for the background color. /// The background color is the color used for those pixels on the screen that are not covered by an image. /// public byte BackgroundColor { get; set; } diff --git a/tests/ImageSharp.Tests/Formats/Gif/GifEncoderTests.cs b/tests/ImageSharp.Tests/Formats/Gif/GifEncoderTests.cs index 0b8034572f..de70077745 100644 --- a/tests/ImageSharp.Tests/Formats/Gif/GifEncoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Gif/GifEncoderTests.cs @@ -175,11 +175,11 @@ public void NonMutatingEncodePreservesPaletteCount() int maxColors; if (colorMode == GifColorTableMode.Global) { - maxColors = metaData.DecodedGlobalColorTable.Length; + maxColors = metaData.GlobalColorTable.Value.Length; } else { - maxColors = frameMetadata.DecodedLocalColorTable.Length; + maxColors = frameMetadata.LocalColorTable.Value.Length; } GifEncoder encoder = new() @@ -201,11 +201,11 @@ public void NonMutatingEncodePreservesPaletteCount() colorMode = cloneMetadata.ColorTableMode; if (colorMode == GifColorTableMode.Global) { - maxColors = metaData.DecodedGlobalColorTable.Length; + maxColors = metaData.GlobalColorTable.Value.Length; } else { - maxColors = frameMetadata.DecodedLocalColorTable.Length; + maxColors = frameMetadata.LocalColorTable.Value.Length; } Assert.Equal(64, maxColors); @@ -217,7 +217,7 @@ public void NonMutatingEncodePreservesPaletteCount() if (iMeta.ColorTableMode == GifColorTableMode.Local) { - Assert.Equal(iMeta.DecodedLocalColorTable.Length, cMeta.DecodedLocalColorTable.Length); + Assert.Equal(iMeta.LocalColorTable.Value.Length, cMeta.LocalColorTable.Value.Length); } Assert.Equal(iMeta.FrameDelay, cMeta.FrameDelay); diff --git a/tests/ImageSharp.Tests/Formats/Gif/GifFrameMetadataTests.cs b/tests/ImageSharp.Tests/Formats/Gif/GifFrameMetadataTests.cs index 70d75cdd49..774638311d 100644 --- a/tests/ImageSharp.Tests/Formats/Gif/GifFrameMetadataTests.cs +++ b/tests/ImageSharp.Tests/Formats/Gif/GifFrameMetadataTests.cs @@ -15,18 +15,18 @@ public void CloneIsDeep() { FrameDelay = 1, DisposalMethod = GifDisposalMethod.RestoreToBackground, - DecodedLocalColorTable = new[] { Color.Black, Color.White } + LocalColorTable = new[] { Color.Black, Color.White } }; GifFrameMetadata clone = (GifFrameMetadata)meta.DeepClone(); clone.FrameDelay = 2; clone.DisposalMethod = GifDisposalMethod.RestoreToPrevious; - clone.DecodedLocalColorTable = new[] { Color.Black }; + clone.LocalColorTable = new[] { Color.Black }; Assert.False(meta.FrameDelay.Equals(clone.FrameDelay)); Assert.False(meta.DisposalMethod.Equals(clone.DisposalMethod)); - Assert.False(meta.DecodedLocalColorTable.Length == clone.DecodedLocalColorTable.Length); - Assert.Equal(1, clone.DecodedLocalColorTable.Length); + Assert.False(meta.LocalColorTable.Value.Length == clone.LocalColorTable.Value.Length); + Assert.Equal(1, clone.LocalColorTable.Value.Length); } } diff --git a/tests/ImageSharp.Tests/Formats/Gif/GifMetadataTests.cs b/tests/ImageSharp.Tests/Formats/Gif/GifMetadataTests.cs index 82a999b696..fb4445cdac 100644 --- a/tests/ImageSharp.Tests/Formats/Gif/GifMetadataTests.cs +++ b/tests/ImageSharp.Tests/Formats/Gif/GifMetadataTests.cs @@ -34,7 +34,7 @@ public void CloneIsDeep() { RepeatCount = 1, ColorTableMode = GifColorTableMode.Global, - DecodedGlobalColorTable = new[] { Color.Black, Color.White }, + GlobalColorTable = new[] { Color.Black, Color.White }, Comments = new List { "Foo" } }; @@ -42,12 +42,12 @@ public void CloneIsDeep() clone.RepeatCount = 2; clone.ColorTableMode = GifColorTableMode.Local; - clone.DecodedGlobalColorTable = new[] { Color.Black }; + clone.GlobalColorTable = new[] { Color.Black }; Assert.False(meta.RepeatCount.Equals(clone.RepeatCount)); Assert.False(meta.ColorTableMode.Equals(clone.ColorTableMode)); - Assert.False(meta.DecodedGlobalColorTable.Length == clone.DecodedGlobalColorTable.Length); - Assert.Equal(1, clone.DecodedGlobalColorTable.Length); + Assert.False(meta.GlobalColorTable.Value.Length == clone.GlobalColorTable.Value.Length); + Assert.Equal(1, clone.GlobalColorTable.Value.Length); Assert.False(meta.Comments.Equals(clone.Comments)); Assert.True(meta.Comments.SequenceEqual(clone.Comments)); } @@ -208,7 +208,7 @@ public void Identify_Frames( if (colorTableMode == GifColorTableMode.Global) { - Assert.Equal(globalColorTableLength, gifMetadata.DecodedGlobalColorTable.Length); + Assert.Equal(globalColorTableLength, gifMetadata.GlobalColorTable.Value.Length); } Assert.Equal(frameDelay, gifFrameMetadata.FrameDelay); diff --git a/tests/ImageSharp.Tests/Image/ImageFrameCollectionTests.NonGeneric.cs b/tests/ImageSharp.Tests/Image/ImageFrameCollectionTests.NonGeneric.cs index 7c1150b774..9cfd393906 100644 --- a/tests/ImageSharp.Tests/Image/ImageFrameCollectionTests.NonGeneric.cs +++ b/tests/ImageSharp.Tests/Image/ImageFrameCollectionTests.NonGeneric.cs @@ -318,7 +318,7 @@ private static void CompareGifMetadata(ImageFrame a, ImageFrame b) if (aData.ColorTableMode == GifColorTableMode.Local && bData.ColorTableMode == GifColorTableMode.Local) { - Assert.Equal(aData.DecodedLocalColorTable.Length, bData.DecodedLocalColorTable.Length); + Assert.Equal(aData.LocalColorTable.Value.Length, bData.LocalColorTable.Value.Length); } } } diff --git a/tests/ImageSharp.Tests/Metadata/ImageFrameMetadataTests.cs b/tests/ImageSharp.Tests/Metadata/ImageFrameMetadataTests.cs index 9d11bb897a..bcc9675404 100644 --- a/tests/ImageSharp.Tests/Metadata/ImageFrameMetadataTests.cs +++ b/tests/ImageSharp.Tests/Metadata/ImageFrameMetadataTests.cs @@ -26,14 +26,14 @@ public void ConstructorImageFrameMetadata() ImageFrameMetadata metaData = new(); GifFrameMetadata gifFrameMetadata = metaData.GetGifMetadata(); gifFrameMetadata.FrameDelay = frameDelay; - gifFrameMetadata.DecodedLocalColorTable = Enumerable.Repeat(Color.HotPink, colorTableLength).ToArray(); + gifFrameMetadata.LocalColorTable = Enumerable.Repeat(Color.HotPink, colorTableLength).ToArray(); gifFrameMetadata.DisposalMethod = disposalMethod; ImageFrameMetadata clone = new(metaData); GifFrameMetadata cloneGifFrameMetadata = clone.GetGifMetadata(); Assert.Equal(frameDelay, cloneGifFrameMetadata.FrameDelay); - Assert.Equal(colorTableLength, cloneGifFrameMetadata.DecodedLocalColorTable.Length); + Assert.Equal(colorTableLength, cloneGifFrameMetadata.LocalColorTable.Value.Length); Assert.Equal(disposalMethod, cloneGifFrameMetadata.DisposalMethod); } diff --git a/tests/ImageSharp.Tests/TestImages.cs b/tests/ImageSharp.Tests/TestImages.cs index 409378b179..065c5bbf84 100644 --- a/tests/ImageSharp.Tests/TestImages.cs +++ b/tests/ImageSharp.Tests/TestImages.cs @@ -482,6 +482,8 @@ public static class Issues public const string Issue2288_B = "Gif/issues/issue_2288_2.gif"; public const string Issue2288_C = "Gif/issues/issue_2288_3.gif"; public const string Issue2288_D = "Gif/issues/issue_2288_4.gif"; + public const string Issue2450 = "Gif/issues/issue_2450.gif"; + public const string Issue2198 = "Gif/issues/issue_2198.gif"; } public static readonly string[] All = { Rings, Giphy, Cheers, Trans, Kumin, Leo, Ratio4x1, Ratio1x4 }; From fc7219d1fa20d91d5af50644768571f6bf6367f0 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 19 May 2023 23:58:03 +1000 Subject: [PATCH 04/18] Add quantizer property tests --- .../Formats/Bmp/BmpEncoderTests.cs | 39 +++++----- .../Formats/Gif/GifEncoderTests.cs | 3 + .../Formats/Png/PngEncoderTests.cs | 55 +++++++------- .../Formats/Tiff/TiffEncoderTests.cs | 76 ++++++++++--------- 4 files changed, 95 insertions(+), 78 deletions(-) diff --git a/tests/ImageSharp.Tests/Formats/Bmp/BmpEncoderTests.cs b/tests/ImageSharp.Tests/Formats/Bmp/BmpEncoderTests.cs index f486310b78..4a124fbee2 100644 --- a/tests/ImageSharp.Tests/Formats/Bmp/BmpEncoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Bmp/BmpEncoderTests.cs @@ -46,17 +46,20 @@ public class BmpEncoderTests { Bit32Rgb, BmpBitsPerPixel.Pixel32 } }; + [Fact] + public void BmpEncoderDefaultInstanceHasQuantizer() => Assert.NotNull(BmpEncoder.Quantizer); + [Theory] [MemberData(nameof(RatioFiles))] public void Encode_PreserveRatio(string imagePath, int xResolution, int yResolution, PixelResolutionUnit resolutionUnit) { - var testFile = TestFile.Create(imagePath); + TestFile testFile = TestFile.Create(imagePath); using Image input = testFile.CreateRgba32Image(); - using var memStream = new MemoryStream(); + using MemoryStream memStream = new(); input.Save(memStream, BmpEncoder); memStream.Position = 0; - using var output = Image.Load(memStream); + using Image output = Image.Load(memStream); ImageMetadata meta = output.Metadata; Assert.Equal(xResolution, meta.HorizontalResolution); Assert.Equal(yResolution, meta.VerticalResolution); @@ -67,13 +70,13 @@ public void Encode_PreserveRatio(string imagePath, int xResolution, int yResolut [MemberData(nameof(BmpBitsPerPixelFiles))] public void Encode_PreserveBitsPerPixel(string imagePath, BmpBitsPerPixel bmpBitsPerPixel) { - var testFile = TestFile.Create(imagePath); + TestFile testFile = TestFile.Create(imagePath); using Image input = testFile.CreateRgba32Image(); - using var memStream = new MemoryStream(); + using MemoryStream memStream = new(); input.Save(memStream, BmpEncoder); memStream.Position = 0; - using var output = Image.Load(memStream); + using Image output = Image.Load(memStream); BmpMetadata meta = output.Metadata.GetBmpMetadata(); Assert.Equal(bmpBitsPerPixel, meta.BitsPerPixel); @@ -196,8 +199,8 @@ public void Encode_2Bit_WithV3Header_Works( where TPixel : unmanaged, IPixel { // arrange - var encoder = new BmpEncoder() { BitsPerPixel = bitsPerPixel }; - using var memoryStream = new MemoryStream(); + BmpEncoder encoder = new() { BitsPerPixel = bitsPerPixel }; + using MemoryStream memoryStream = new(); using Image input = provider.GetImage(BmpDecoder.Instance); // act @@ -205,7 +208,7 @@ public void Encode_2Bit_WithV3Header_Works( memoryStream.Position = 0; // assert - using var actual = Image.Load(memoryStream); + using Image actual = Image.Load(memoryStream); ImageSimilarityReport similarityReport = ImageComparer.Exact.CompareImagesOrFrames(input, actual); Assert.True(similarityReport.IsEmpty, "encoded image does not match reference image"); } @@ -218,8 +221,8 @@ public void Encode_2Bit_WithV4Header_Works( where TPixel : unmanaged, IPixel { // arrange - var encoder = new BmpEncoder() { BitsPerPixel = bitsPerPixel }; - using var memoryStream = new MemoryStream(); + BmpEncoder encoder = new() { BitsPerPixel = bitsPerPixel }; + using MemoryStream memoryStream = new(); using Image input = provider.GetImage(BmpDecoder.Instance); // act @@ -227,7 +230,7 @@ public void Encode_2Bit_WithV4Header_Works( memoryStream.Position = 0; // assert - using var actual = Image.Load(memoryStream); + using Image actual = Image.Load(memoryStream); ImageSimilarityReport similarityReport = ImageComparer.Exact.CompareImagesOrFrames(input, actual); Assert.True(similarityReport.IsEmpty, "encoded image does not match reference image"); } @@ -266,7 +269,7 @@ public void Encode_8BitColor_WithWuQuantizer(TestImageProvider p } using Image image = provider.GetImage(); - var encoder = new BmpEncoder + BmpEncoder encoder = new() { BitsPerPixel = BmpBitsPerPixel.Pixel8, Quantizer = new WuQuantizer() @@ -298,7 +301,7 @@ public void Encode_8BitColor_WithOctreeQuantizer(TestImageProvider image = provider.GetImage(); - var encoder = new BmpEncoder + BmpEncoder encoder = new() { BitsPerPixel = BmpBitsPerPixel.Pixel8, Quantizer = new OctreeQuantizer() @@ -333,11 +336,11 @@ public void Encode_PreservesColorProfile(TestImageProvider provi ImageSharp.Metadata.Profiles.Icc.IccProfile expectedProfile = input.Metadata.IccProfile; byte[] expectedProfileBytes = expectedProfile.ToByteArray(); - using var memStream = new MemoryStream(); + using MemoryStream memStream = new(); input.Save(memStream, new BmpEncoder()); memStream.Position = 0; - using var output = Image.Load(memStream); + using Image output = Image.Load(memStream); ImageSharp.Metadata.Profiles.Icc.IccProfile actualProfile = output.Metadata.IccProfile; byte[] actualProfileBytes = actualProfile.ToByteArray(); @@ -353,7 +356,7 @@ public void Encode_WorksWithSizeGreaterThen65k(int width, int height) Exception exception = Record.Exception(() => { using Image image = new Image(width, height); - using var memStream = new MemoryStream(); + using MemoryStream memStream = new(); image.Save(memStream, BmpEncoder); }); @@ -387,7 +390,7 @@ private static void TestBmpEncoderCore( image.Mutate(c => c.MakeOpaque()); } - var encoder = new BmpEncoder + BmpEncoder encoder = new() { BitsPerPixel = bitsPerPixel, SupportTransparency = supportTransparency, diff --git a/tests/ImageSharp.Tests/Formats/Gif/GifEncoderTests.cs b/tests/ImageSharp.Tests/Formats/Gif/GifEncoderTests.cs index de70077745..43114fa7e9 100644 --- a/tests/ImageSharp.Tests/Formats/Gif/GifEncoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Gif/GifEncoderTests.cs @@ -33,6 +33,9 @@ public GifEncoderTests() } } + [Fact] + public void GifEncoderDefaultInstanceHasNullQuantizer() => Assert.Null(new GifEncoder().Quantizer); + [Theory] [WithTestPatternImages(100, 100, TestPixelTypes, false)] [WithTestPatternImages(100, 100, TestPixelTypes, false)] diff --git a/tests/ImageSharp.Tests/Formats/Png/PngEncoderTests.cs b/tests/ImageSharp.Tests/Formats/Png/PngEncoderTests.cs index 74038c7616..f06fdd2d5c 100644 --- a/tests/ImageSharp.Tests/Formats/Png/PngEncoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Png/PngEncoderTests.cs @@ -99,6 +99,9 @@ public static readonly TheoryData CompressionLevels { TestImages.Png.Ratio4x1, 4, 1, PixelResolutionUnit.AspectRatio } }; + [Fact] + public void PngEncoderDefaultInstanceHasNullQuantizer() => Assert.Null(PngEncoder.Quantizer); + [Theory] [WithFile(TestImages.Png.Palette8Bpp, nameof(PngColorTypes), PixelTypes.Rgba32)] [WithTestPatternImages(nameof(PngColorTypes), 48, 24, PixelTypes.Rgba32)] @@ -129,8 +132,8 @@ public void IsNotBoundToSinglePixelType(TestImageProvider provid PngFilterMethod.Adaptive, PngBitDepth.Bit8, interlaceMode, - appendPixelType: true, - appendPngColorType: true); + appendPngColorType: true, + appendPixelType: true); } } @@ -321,7 +324,7 @@ public void WritesFileMarker(TestImageProvider provider) where TPixel : unmanaged, IPixel { using Image image = provider.GetImage(); - using var ms = new MemoryStream(); + using MemoryStream ms = new(); image.Save(ms, PngEncoder); byte[] data = ms.ToArray().Take(8).ToArray(); @@ -344,13 +347,13 @@ public void WritesFileMarker(TestImageProvider provider) [MemberData(nameof(RatioFiles))] public void Encode_PreserveRatio(string imagePath, int xResolution, int yResolution, PixelResolutionUnit resolutionUnit) { - var testFile = TestFile.Create(imagePath); + TestFile testFile = TestFile.Create(imagePath); using Image input = testFile.CreateRgba32Image(); - using var memStream = new MemoryStream(); + using MemoryStream memStream = new(); input.Save(memStream, PngEncoder); memStream.Position = 0; - using var output = Image.Load(memStream); + using Image output = Image.Load(memStream); ImageMetadata meta = output.Metadata; Assert.Equal(xResolution, meta.HorizontalResolution); Assert.Equal(yResolution, meta.VerticalResolution); @@ -361,13 +364,13 @@ public void Encode_PreserveRatio(string imagePath, int xResolution, int yResolut [MemberData(nameof(PngBitDepthFiles))] public void Encode_PreserveBits(string imagePath, PngBitDepth pngBitDepth) { - var testFile = TestFile.Create(imagePath); + TestFile testFile = TestFile.Create(imagePath); using Image input = testFile.CreateRgba32Image(); - using var memStream = new MemoryStream(); + using MemoryStream memStream = new(); input.Save(memStream, PngEncoder); memStream.Position = 0; - using var output = Image.Load(memStream); + using Image output = Image.Load(memStream); PngMetadata meta = output.Metadata.GetPngMetadata(); Assert.Equal(pngBitDepth, meta.BitDepth); @@ -380,8 +383,8 @@ public void Encode_PreserveBits(string imagePath, PngBitDepth pngBitDepth) public void Encode_WithPngTransparentColorBehaviorClear_Works(PngColorType colorType) { // arrange - var image = new Image(50, 50); - var encoder = new PngEncoder() + Image image = new(50, 50); + PngEncoder encoder = new() { TransparentColorMode = PngTransparentColorMode.Clear, ColorType = colorType @@ -391,7 +394,7 @@ public void Encode_WithPngTransparentColorBehaviorClear_Works(PngColorType color { for (int y = 0; y < image.Height; y++) { - System.Span rowSpan = accessor.GetRowSpan(y); + Span rowSpan = accessor.GetRowSpan(y); // Half of the test image should be transparent. if (y > 25) @@ -407,12 +410,12 @@ public void Encode_WithPngTransparentColorBehaviorClear_Works(PngColorType color }); // act - using var memStream = new MemoryStream(); + using MemoryStream memStream = new(); image.Save(memStream, encoder); // assert memStream.Position = 0; - using var actual = Image.Load(memStream); + using Image actual = Image.Load(memStream); Rgba32 expectedColor = Color.Blue; if (colorType is PngColorType.Grayscale or PngColorType.GrayscaleWithAlpha) { @@ -424,7 +427,7 @@ public void Encode_WithPngTransparentColorBehaviorClear_Works(PngColorType color { for (int y = 0; y < accessor.Height; y++) { - System.Span rowSpan = accessor.GetRowSpan(y); + Span rowSpan = accessor.GetRowSpan(y); if (y > 25) { @@ -443,15 +446,15 @@ public void Encode_WithPngTransparentColorBehaviorClear_Works(PngColorType color [MemberData(nameof(PngTrnsFiles))] public void Encode_PreserveTrns(string imagePath, PngBitDepth pngBitDepth, PngColorType pngColorType) { - var testFile = TestFile.Create(imagePath); + TestFile testFile = TestFile.Create(imagePath); using Image input = testFile.CreateRgba32Image(); PngMetadata inMeta = input.Metadata.GetPngMetadata(); Assert.True(inMeta.HasTransparency); - using var memStream = new MemoryStream(); + using MemoryStream memStream = new(); input.Save(memStream, PngEncoder); memStream.Position = 0; - using var output = Image.Load(memStream); + using Image output = Image.Load(memStream); PngMetadata outMeta = output.Metadata.GetPngMetadata(); Assert.True(outMeta.HasTransparency); @@ -501,8 +504,8 @@ public void Encode_WorksWithDiscontiguousBuffers(TestImageProvider image = testFile.CreateRgba32Image(PngDecoder.Instance); image.Save(ms, new PngEncoder { ColorType = PngColorType.RgbWithAlpha }); @@ -563,7 +566,7 @@ private static void TestPngEncoderCore( where TPixel : unmanaged, IPixel { using Image image = provider.GetImage(); - var encoder = new PngEncoder + PngEncoder encoder = new() { ColorType = pngColorType, FilterMethod = pngFilterMethod, @@ -581,7 +584,7 @@ private static void TestPngEncoderCore( string pngBitDepthInfo = appendPngBitDepth ? bitDepth.ToString() : string.Empty; string pngInterlaceModeInfo = interlaceMode != PngInterlaceMode.None ? $"_{interlaceMode}" : string.Empty; - string debugInfo = $"{pngColorTypeInfo}{pngFilterMethodInfo}{compressionLevelInfo}{paletteSizeInfo}{pngBitDepthInfo}{pngInterlaceModeInfo}"; + string debugInfo = pngColorTypeInfo + pngFilterMethodInfo + compressionLevelInfo + paletteSizeInfo + pngBitDepthInfo + pngInterlaceModeInfo; string actualOutputFile = provider.Utility.SaveTestOutputFile(image, "png", encoder, debugInfo, appendPixelType); diff --git a/tests/ImageSharp.Tests/Formats/Tiff/TiffEncoderTests.cs b/tests/ImageSharp.Tests/Formats/Tiff/TiffEncoderTests.cs index f8aa1551fc..1fafb4cd04 100644 --- a/tests/ImageSharp.Tests/Formats/Tiff/TiffEncoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Tiff/TiffEncoderTests.cs @@ -11,6 +11,9 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff; [Trait("Format", "Tiff")] public class TiffEncoderTests : TiffEncoderBaseTester { + [Fact] + public void TiffEncoderDefaultInstanceHasQuantizer() => Assert.NotNull(new TiffEncoder().Quantizer); + [Theory] [InlineData(null, TiffBitsPerPixel.Bit24)] [InlineData(TiffPhotometricInterpretation.Rgb, TiffBitsPerPixel.Bit24)] @@ -28,18 +31,18 @@ public class TiffEncoderTests : TiffEncoderBaseTester public void EncoderOptions_SetPhotometricInterpretation_Works(TiffPhotometricInterpretation? photometricInterpretation, TiffBitsPerPixel expectedBitsPerPixel) { // arrange - var tiffEncoder = new TiffEncoder { PhotometricInterpretation = photometricInterpretation }; + TiffEncoder tiffEncoder = new() { PhotometricInterpretation = photometricInterpretation }; using Image input = expectedBitsPerPixel is TiffBitsPerPixel.Bit16 ? new Image(10, 10) : new Image(10, 10); - using var memStream = new MemoryStream(); + using MemoryStream memStream = new(); // act input.Save(memStream, tiffEncoder); // assert memStream.Position = 0; - using var output = Image.Load(memStream); + using Image output = Image.Load(memStream); TiffFrameMetadata frameMetaData = output.Frames.RootFrame.Metadata.GetTiffMetadata(); Assert.Equal(expectedBitsPerPixel, frameMetaData.BitsPerPixel); Assert.Equal(TiffCompression.None, frameMetaData.Compression); @@ -54,16 +57,17 @@ public void EncoderOptions_SetPhotometricInterpretation_Works(TiffPhotometricInt public void EncoderOptions_SetBitPerPixel_Works(TiffBitsPerPixel bitsPerPixel) { // arrange - var tiffEncoder = new TiffEncoder { BitsPerPixel = bitsPerPixel }; + TiffEncoder tiffEncoder = new() + { BitsPerPixel = bitsPerPixel }; using Image input = new Image(10, 10); - using var memStream = new MemoryStream(); + using MemoryStream memStream = new(); // act input.Save(memStream, tiffEncoder); // assert memStream.Position = 0; - using var output = Image.Load(memStream); + using Image output = Image.Load(memStream); TiffFrameMetadata frameMetaData = output.Frames.RootFrame.Metadata.GetTiffMetadata(); Assert.Equal(bitsPerPixel, frameMetaData.BitsPerPixel); @@ -81,16 +85,17 @@ public void EncoderOptions_SetBitPerPixel_Works(TiffBitsPerPixel bitsPerPixel) public void EncoderOptions_UnsupportedBitPerPixel_DefaultTo24Bits(TiffBitsPerPixel bitsPerPixel) { // arrange - var tiffEncoder = new TiffEncoder { BitsPerPixel = bitsPerPixel }; + TiffEncoder tiffEncoder = new() + { BitsPerPixel = bitsPerPixel }; using Image input = new Image(10, 10); - using var memStream = new MemoryStream(); + using MemoryStream memStream = new(); // act input.Save(memStream, tiffEncoder); // assert memStream.Position = 0; - using var output = Image.Load(memStream); + using Image output = Image.Load(memStream); TiffFrameMetadata frameMetaData = output.Frames.RootFrame.Metadata.GetTiffMetadata(); Assert.Equal(TiffBitsPerPixel.Bit24, frameMetaData.BitsPerPixel); @@ -103,16 +108,17 @@ public void EncoderOptions_UnsupportedBitPerPixel_DefaultTo24Bits(TiffBitsPerPix public void EncoderOptions_WithInvalidCompressionAndPixelTypeCombination_DefaultsToRgb(TiffPhotometricInterpretation photometricInterpretation, TiffCompression compression) { // arrange - var tiffEncoder = new TiffEncoder { PhotometricInterpretation = photometricInterpretation, Compression = compression }; + TiffEncoder tiffEncoder = new() + { PhotometricInterpretation = photometricInterpretation, Compression = compression }; using Image input = new Image(10, 10); - using var memStream = new MemoryStream(); + using MemoryStream memStream = new(); // act input.Save(memStream, tiffEncoder); // assert memStream.Position = 0; - using var output = Image.Load(memStream); + using Image output = Image.Load(memStream); TiffFrameMetadata frameMetaData = output.Frames.RootFrame.Metadata.GetTiffMetadata(); Assert.Equal(TiffBitsPerPixel.Bit24, frameMetaData.BitsPerPixel); @@ -149,18 +155,19 @@ public void EncoderOptions_SetPhotometricInterpretationAndCompression_Works( TiffCompression expectedCompression) { // arrange - var tiffEncoder = new TiffEncoder { PhotometricInterpretation = photometricInterpretation, Compression = compression }; + TiffEncoder tiffEncoder = new() + { PhotometricInterpretation = photometricInterpretation, Compression = compression }; using Image input = expectedBitsPerPixel is TiffBitsPerPixel.Bit16 ? new Image(10, 10) : new Image(10, 10); - using var memStream = new MemoryStream(); + using MemoryStream memStream = new(); // act input.Save(memStream, tiffEncoder); // assert memStream.Position = 0; - using var output = Image.Load(memStream); + using Image output = Image.Load(memStream); TiffFrameMetadata rootFrameMetaData = output.Frames.RootFrame.Metadata.GetTiffMetadata(); Assert.Equal(expectedBitsPerPixel, rootFrameMetaData.BitsPerPixel); Assert.Equal(expectedCompression, rootFrameMetaData.Compression); @@ -178,16 +185,16 @@ public void TiffEncoder_PreservesBitsPerPixel(TestImageProvider where TPixel : unmanaged, IPixel { // arrange - var tiffEncoder = new TiffEncoder(); + TiffEncoder tiffEncoder = new(); using Image input = provider.GetImage(); - using var memStream = new MemoryStream(); + using MemoryStream memStream = new(); // act input.Save(memStream, tiffEncoder); // assert memStream.Position = 0; - using var output = Image.Load(memStream); + using Image output = Image.Load(memStream); TiffFrameMetadata frameMetaData = output.Frames.RootFrame.Metadata.GetTiffMetadata(); Assert.Equal(expectedBitsPerPixel, frameMetaData.BitsPerPixel); } @@ -196,17 +203,17 @@ public void TiffEncoder_PreservesBitsPerPixel(TestImageProvider public void TiffEncoder_PreservesBitsPerPixel_WhenInputIsL8() { // arrange - var tiffEncoder = new TiffEncoder(); + TiffEncoder tiffEncoder = new(); using Image input = new Image(10, 10); - using var memStream = new MemoryStream(); - TiffBitsPerPixel expectedBitsPerPixel = TiffBitsPerPixel.Bit8; + using MemoryStream memStream = new(); + const TiffBitsPerPixel expectedBitsPerPixel = TiffBitsPerPixel.Bit8; // act input.Save(memStream, tiffEncoder); // assert memStream.Position = 0; - using var output = Image.Load(memStream); + using Image output = Image.Load(memStream); TiffFrameMetadata frameMetaData = output.Frames.RootFrame.Metadata.GetTiffMetadata(); Assert.Equal(expectedBitsPerPixel, frameMetaData.BitsPerPixel); } @@ -220,16 +227,16 @@ public void TiffEncoder_PreservesCompression(TestImageProvider p where TPixel : unmanaged, IPixel { // arrange - var tiffEncoder = new TiffEncoder(); + TiffEncoder tiffEncoder = new(); using Image input = provider.GetImage(); - using var memStream = new MemoryStream(); + using MemoryStream memStream = new(); // act input.Save(memStream, tiffEncoder); // assert memStream.Position = 0; - using var output = Image.Load(memStream); + using Image output = Image.Load(memStream); Assert.Equal(expectedCompression, output.Frames.RootFrame.Metadata.GetTiffMetadata().Compression); } @@ -242,16 +249,16 @@ public void TiffEncoder_PreservesPredictor(TestImageProvider pro where TPixel : unmanaged, IPixel { // arrange - var tiffEncoder = new TiffEncoder(); + TiffEncoder tiffEncoder = new(); using Image input = provider.GetImage(); - using var memStream = new MemoryStream(); + using MemoryStream memStream = new(); // act input.Save(memStream, tiffEncoder); // assert memStream.Position = 0; - using var output = Image.Load(memStream); + using Image output = Image.Load(memStream); TiffFrameMetadata frameMetadata = output.Frames.RootFrame.Metadata.GetTiffMetadata(); Assert.Equal(expectedPredictor, frameMetadata.Predictor); } @@ -261,8 +268,8 @@ public void TiffEncoder_PreservesPredictor(TestImageProvider pro public void TiffEncoder_WritesIfdOffsetAtWordBoundary() { // arrange - var tiffEncoder = new TiffEncoder(); - using var memStream = new MemoryStream(); + TiffEncoder tiffEncoder = new(); + using MemoryStream memStream = new(); using Image image = new(1, 1); byte[] expectedIfdOffsetBytes = { 12, 0 }; @@ -286,16 +293,16 @@ public void TiffEncoder_EncodesWithCorrectBiColorModeCompression(TestIma where TPixel : unmanaged, IPixel { // arrange - var encoder = new TiffEncoder() { Compression = compression, BitsPerPixel = TiffBitsPerPixel.Bit1 }; + TiffEncoder encoder = new() { Compression = compression, BitsPerPixel = TiffBitsPerPixel.Bit1 }; using Image input = provider.GetImage(); - using var memStream = new MemoryStream(); + using MemoryStream memStream = new(); // act input.Save(memStream, encoder); // assert memStream.Position = 0; - using var output = Image.Load(memStream); + using Image output = Image.Load(memStream); TiffFrameMetadata frameMetaData = output.Frames.RootFrame.Metadata.GetTiffMetadata(); Assert.Equal(TiffBitsPerPixel.Bit1, frameMetaData.BitsPerPixel); Assert.Equal(expectedCompression, frameMetaData.Compression); @@ -545,7 +552,8 @@ public void TiffEncode_WorksWithDiscontiguousBuffers(TestImageProvider image = provider.GetImage(); - var encoder = new TiffEncoder { PhotometricInterpretation = photometricInterpretation }; + TiffEncoder encoder = new() + { PhotometricInterpretation = photometricInterpretation }; image.DebugSave(provider, encoder); } } From b126b777422400d3695dcb2e5957e8a1b98db557 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Sat, 20 May 2023 00:38:22 +1000 Subject: [PATCH 05/18] Use background index as fallback during dedup. --- src/ImageSharp/Formats/Gif/GifEncoderCore.cs | 42 ++++++++++++++------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs index 90e7a8b1ea..6fe8e83c18 100644 --- a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs @@ -135,13 +135,15 @@ public void Encode(Image image, Stream stream, CancellationToken // Write the LSD. image.Frames.RootFrame.Metadata.TryGetGifMetadata(out GifFrameMetadata? frameMetadata); - int index = GetTransparentIndex(quantized, frameMetadata); - if (index == -1) + + int transparentIndex = GetTransparentIndex(quantized, frameMetadata); + byte backgroundIndex = unchecked((byte)transparentIndex); + if (transparentIndex == -1) { - index = gifMetadata.BackgroundColor; + backgroundIndex = gifMetadata.BackgroundColor; } - this.WriteLogicalScreenDescriptor(metadata, image.Width, image.Height, index, useGlobalTable, stream); + this.WriteLogicalScreenDescriptor(metadata, image.Width, image.Height, backgroundIndex, useGlobalTable, stream); if (useGlobalTable) { @@ -158,7 +160,7 @@ public void Encode(Image image, Stream stream, CancellationToken this.WriteApplicationExtensions(stream, image.Frames.Count, gifMetadata.RepeatCount, xmpProfile); } - this.EncodeFrames(stream, image, quantized, quantized.Palette.ToArray()); + this.EncodeFrames(stream, image, backgroundIndex, quantized, quantized.Palette.ToArray()); stream.WriteByte(GifConstants.EndIntroducer); } @@ -166,6 +168,7 @@ public void Encode(Image image, Stream stream, CancellationToken private void EncodeFrames( Stream stream, Image image, + byte backgroundIndex, IndexedImageFrame quantized, ReadOnlyMemory palette) where TPixel : unmanaged, IPixel @@ -197,7 +200,17 @@ private void EncodeFrames( paletteQuantizer = new(this.configuration, this.quantizer!.Options, palette); } - this.EncodeFrame(stream, frame, i, useLocal, frameMetadata, indices, ref previousQuantized, ref quantized!, ref paletteQuantizer); + this.EncodeFrame( + stream, + frame, + i, + useLocal, + frameMetadata, + indices, + backgroundIndex, + ref previousQuantized, + ref quantized!, + ref paletteQuantizer); // Clean up for the next run. if (quantized != previousQuantized) @@ -222,6 +235,7 @@ private void EncodeFrame( bool useLocal, GifFrameMetadata? metadata, Buffer2D indices, + byte backgroundIndex, ref IndexedImageFrame previousQuantized, ref IndexedImageFrame quantized, ref PaletteQuantizer globalPaletteQuantizer) @@ -256,10 +270,16 @@ private void EncodeFrame( quantized = globalPaletteQuantizer.QuantizeFrame(frame, frame.Bounds()); transparencyIndex = GetTransparentIndex(quantized, metadata); + byte replacementIndex = unchecked((byte)transparencyIndex); + if (transparencyIndex == -1) + { + replacementIndex = backgroundIndex; + } + // De-duplicate pixels comparing to the previous frame. // Only global is supported for now as the color palettes as the operation required to compare // and offset the index lookups is too expensive for local palettes. - DeDuplicatePixels(previousQuantized, quantized, indices, transparencyIndex); + DeDuplicatePixels(previousQuantized, quantized, indices, replacementIndex); } this.bitDepth = ColorNumerics.GetBitsNeededForColorDepth(quantized.Palette.Length); @@ -290,11 +310,9 @@ private static void DeDuplicatePixels( IndexedImageFrame background, IndexedImageFrame source, Buffer2D indices, - int transparencyIndex) + byte replacementIndex) where TPixel : unmanaged, IPixel { - // TODO: This should be the background color if not transparent. - byte replacementIndex = unchecked((byte)transparencyIndex); for (int y = 0; y < background.Height; y++) { ref byte backgroundRowBase = ref MemoryMarshal.GetReference(background.DangerousGetRowSpan(y)); @@ -421,7 +439,7 @@ private void WriteLogicalScreenDescriptor( ImageMetadata metadata, int width, int height, - int backgroundIndex, + byte backgroundIndex, bool useGlobalTable, Stream stream) { @@ -459,7 +477,7 @@ private void WriteLogicalScreenDescriptor( width: (ushort)width, height: (ushort)height, packed: packedValue, - backgroundColorIndex: unchecked((byte)backgroundIndex), + backgroundColorIndex: backgroundIndex, ratio); Span buffer = stackalloc byte[20]; From 53510f0220134b2beae0bee23cef526781d621d7 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Sat, 10 Jun 2023 15:42:23 +1000 Subject: [PATCH 06/18] Add explicit tests for #2450 --- src/ImageSharp/Formats/Gif/GifEncoderCore.cs | 4 ++++ tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs | 11 +++++++++++ tests/ImageSharp.Tests/TestImages.cs | 3 ++- .../Decode_Issue2450_Rgba32_issue_2450.gif/00.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/01.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/02.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/03.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/04.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/05.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/06.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/07.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/08.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/09.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/10.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/100.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/101.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/102.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/103.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/104.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/105.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/106.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/107.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/108.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/109.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/11.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/110.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/111.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/112.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/113.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/114.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/115.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/116.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/117.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/118.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/119.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/12.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/120.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/121.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/122.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/123.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/124.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/125.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/126.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/127.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/128.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/129.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/13.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/130.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/131.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/132.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/133.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/134.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/135.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/136.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/137.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/138.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/139.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/14.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/140.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/141.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/142.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/143.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/144.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/145.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/146.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/147.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/148.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/149.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/15.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/150.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/151.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/152.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/153.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/154.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/155.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/156.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/16.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/17.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/18.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/19.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/20.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/21.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/22.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/23.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/24.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/25.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/26.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/27.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/28.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/29.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/30.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/31.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/32.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/33.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/34.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/35.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/36.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/37.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/38.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/39.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/40.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/41.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/42.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/43.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/44.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/45.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/46.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/47.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/48.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/49.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/50.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/51.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/52.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/53.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/54.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/55.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/56.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/57.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/58.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/59.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/60.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/61.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/62.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/63.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/64.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/65.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/66.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/67.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/68.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/69.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/70.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/71.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/72.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/73.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/74.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/75.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/76.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/77.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/78.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/79.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/80.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/81.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/82.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/83.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/84.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/85.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/86.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/87.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/88.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/89.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/90.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/91.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/92.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/93.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/94.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/95.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/96.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/97.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/98.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450.gif/99.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/00.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/01.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/02.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/03.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/04.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/05.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/06.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/07.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/08.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/09.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/10.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/11.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/12.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/13.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/14.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/15.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/16.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/17.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/18.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/19.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/20.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/21.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/22.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/23.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/24.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/25.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/26.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/27.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/28.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/29.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/30.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/31.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/32.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/33.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/34.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/35.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/36.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/37.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/38.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/39.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/40.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/41.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/42.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/43.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/44.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/45.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/46.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/47.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/48.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/49.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/50.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/51.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/52.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/53.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/54.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/55.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/56.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/57.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/58.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/59.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/60.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/61.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/62.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/63.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/64.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/65.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/66.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/67.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/68.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/69.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/70.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/71.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/72.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/73.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/74.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/75.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/76.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/77.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/78.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/79.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/80.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/81.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/82.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/83.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/84.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/85.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/86.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/87.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/88.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/89.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/90.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/91.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/92.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/93.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/94.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/95.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/96.png | 3 +++ .../Decode_Issue2450_Rgba32_issue_2450_2.gif/97.png | 3 +++ tests/Images/Input/Gif/issues/issue_2198.gif | 3 +++ tests/Images/Input/Gif/issues/issue_2450.gif | 3 +++ tests/Images/Input/Gif/issues/issue_2450_2.gif | 3 +++ 261 files changed, 791 insertions(+), 1 deletion(-) create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/00.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/01.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/02.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/03.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/04.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/05.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/06.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/07.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/08.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/09.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/10.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/100.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/101.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/102.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/103.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/104.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/105.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/106.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/107.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/108.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/109.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/11.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/110.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/111.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/112.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/113.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/114.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/115.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/116.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/117.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/118.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/119.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/12.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/120.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/121.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/122.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/123.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/124.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/125.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/126.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/127.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/128.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/129.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/13.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/130.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/131.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/132.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/133.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/134.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/135.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/136.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/137.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/138.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/139.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/14.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/140.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/141.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/142.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/143.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/144.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/145.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/146.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/147.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/148.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/149.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/15.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/150.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/151.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/152.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/153.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/154.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/155.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/156.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/16.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/17.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/18.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/19.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/20.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/21.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/22.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/23.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/24.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/25.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/26.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/27.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/28.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/29.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/30.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/31.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/32.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/33.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/34.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/35.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/36.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/37.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/38.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/39.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/40.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/41.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/42.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/43.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/44.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/45.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/46.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/47.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/48.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/49.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/50.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/51.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/52.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/53.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/54.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/55.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/56.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/57.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/58.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/59.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/60.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/61.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/62.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/63.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/64.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/65.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/66.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/67.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/68.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/69.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/70.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/71.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/72.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/73.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/74.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/75.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/76.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/77.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/78.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/79.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/80.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/81.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/82.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/83.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/84.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/85.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/86.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/87.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/88.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/89.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/90.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/91.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/92.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/93.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/94.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/95.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/96.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/97.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/98.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/99.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/00.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/01.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/02.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/03.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/04.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/05.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/06.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/07.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/08.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/09.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/10.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/11.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/12.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/13.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/14.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/15.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/16.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/17.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/18.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/19.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/20.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/21.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/22.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/23.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/24.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/25.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/26.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/27.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/28.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/29.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/30.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/31.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/32.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/33.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/34.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/35.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/36.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/37.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/38.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/39.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/40.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/41.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/42.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/43.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/44.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/45.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/46.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/47.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/48.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/49.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/50.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/51.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/52.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/53.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/54.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/55.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/56.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/57.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/58.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/59.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/60.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/61.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/62.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/63.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/64.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/65.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/66.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/67.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/68.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/69.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/70.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/71.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/72.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/73.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/74.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/75.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/76.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/77.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/78.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/79.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/80.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/81.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/82.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/83.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/84.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/85.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/86.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/87.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/88.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/89.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/90.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/91.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/92.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/93.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/94.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/95.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/96.png create mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/97.png create mode 100644 tests/Images/Input/Gif/issues/issue_2198.gif create mode 100644 tests/Images/Input/Gif/issues/issue_2450.gif create mode 100644 tests/Images/Input/Gif/issues/issue_2450_2.gif diff --git a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs index 6fe8e83c18..c861e2c961 100644 --- a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs @@ -290,6 +290,10 @@ private void EncodeFrame( } this.WriteGraphicalControlExtension(metadata, transparencyIndex, stream); + + // TODO: Consider an optimization that trims down the buffer to the minimum size required. + // We would use a process similar to entropy crop where we trim the buffer from the edges + // until we hit a non-transparent pixel. this.WriteImageDescriptor(frame, useLocal, stream); if (useLocal) diff --git a/tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs b/tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs index 376bb4a06f..f87636bb12 100644 --- a/tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs @@ -34,6 +34,17 @@ public void Decode_VerifyAllFrames(TestImageProvider provider) image.CompareToReferenceOutputMultiFrame(provider, ImageComparer.Exact); } + [Theory] + [WithFile(TestImages.Gif.Issues.Issue2450_A, PixelTypes.Rgba32)] + [WithFile(TestImages.Gif.Issues.Issue2450_B, PixelTypes.Rgba32)] + public void Decode_Issue2450(TestImageProvider provider) + where TPixel : unmanaged, IPixel + { + using Image image = provider.GetImage(); + image.DebugSaveMultiFrame(provider); + image.CompareToReferenceOutputMultiFrame(provider, ImageComparer.Exact); + } + [Theory] [WithFile(TestImages.Gif.Giphy, PixelTypes.Rgba32)] public void GifDecoder_Decode_Resize(TestImageProvider provider) diff --git a/tests/ImageSharp.Tests/TestImages.cs b/tests/ImageSharp.Tests/TestImages.cs index 2677670679..24a801f90c 100644 --- a/tests/ImageSharp.Tests/TestImages.cs +++ b/tests/ImageSharp.Tests/TestImages.cs @@ -484,7 +484,8 @@ public static class Issues public const string Issue2288_B = "Gif/issues/issue_2288_2.gif"; public const string Issue2288_C = "Gif/issues/issue_2288_3.gif"; public const string Issue2288_D = "Gif/issues/issue_2288_4.gif"; - public const string Issue2450 = "Gif/issues/issue_2450.gif"; + public const string Issue2450_A = "Gif/issues/issue_2450.gif"; + public const string Issue2450_B = "Gif/issues/issue_2450_2.gif"; public const string Issue2198 = "Gif/issues/issue_2198.gif"; } diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/00.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/00.png new file mode 100644 index 0000000000..c3d260c9ed --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/00.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3cdb964aad36076ab02233f82eab7616c8b763fbf75f6cb17b8c38d69c76443 +size 304 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/01.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/01.png new file mode 100644 index 0000000000..927b92ffff --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/01.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adda2f029171fcf7ee867bdc04f4bbf5c4c1992eacbe69b673fb337f11c56889 +size 302 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/02.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/02.png new file mode 100644 index 0000000000..7cce12f7df --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/02.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:782df1adafc8ec5865c3d375042af25b3f15292780f4a2498da99fd0df4abf26 +size 80613 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/03.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/03.png new file mode 100644 index 0000000000..b16cf6ef01 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/03.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c55f249b6c297a37387a9242c4e3d9f3a37ded7c31827e748d16cd51e91759a +size 80622 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/04.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/04.png new file mode 100644 index 0000000000..51a96627a6 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/04.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fed4cbdf85eb80acadf49d3254e8637fa2497cf4773f263b087f020b59f3213a +size 80666 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/05.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/05.png new file mode 100644 index 0000000000..f81d289d96 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/05.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9fcb1d0fc7adc967f44fbbb6a876687a3cd40d6761f7ca79c6ad1777b8a5c27 +size 80572 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/06.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/06.png new file mode 100644 index 0000000000..9df9996e01 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/06.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9bdd5378174e80c5d48b4ac15b00944c1cde69274c8fb9788625484f1a3e848 +size 80742 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/07.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/07.png new file mode 100644 index 0000000000..673ae5b1db --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/07.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3f53b5703f3a0963548bac0a222c1da5614df0aabf47b4dcbc64d87fc6057d3 +size 80926 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/08.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/08.png new file mode 100644 index 0000000000..be6081e34c --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/08.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5c5742e4d4bbab99efd83c7a2dcfc0b1073283dc24d480da15c2ca9b660a607 +size 80842 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/09.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/09.png new file mode 100644 index 0000000000..23e856ce82 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/09.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aac1840358e6d49f9cdf1fdfaec46c7a53783a74d2c0d2418e94576cc515c5a8 +size 80988 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/10.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/10.png new file mode 100644 index 0000000000..ac34c19d59 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/10.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ad7afcf812e7b2c54d1a35bf679dc66a595785b6ed21be9b1ac0a0d3be7021b +size 81022 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/100.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/100.png new file mode 100644 index 0000000000..175aadbb7b --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/100.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2d5d2a92ff3089e182b762cfd9848135fa2471ae457dc2e825fe15f88ebafe8 +size 90646 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/101.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/101.png new file mode 100644 index 0000000000..299cdc1f45 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/101.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:043939303c791e358b6efc5a735db8b450ee67f46443d77020880109b1f50ec0 +size 90063 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/102.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/102.png new file mode 100644 index 0000000000..4adbfb3de9 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/102.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65096d70821cd32ab9a82b738932356cdedaf81b225dbc205606fdd6bec0fd55 +size 90187 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/103.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/103.png new file mode 100644 index 0000000000..edd0b27442 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/103.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ca39f84832d36206d1143fbdbce1cc3292782c9123c4f1a9074cc577bb11e1b +size 90645 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/104.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/104.png new file mode 100644 index 0000000000..53dac78722 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/104.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7853f700649807e58b3ad30491337da1ba168b9e39ea5ed55235582e947e84e +size 90737 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/105.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/105.png new file mode 100644 index 0000000000..a0a73193ee --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/105.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc4442952eb03f1289e7e22c33da5fe78175f93673f98a62b2a75855fe197ea1 +size 89983 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/106.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/106.png new file mode 100644 index 0000000000..ea6b1e6229 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/106.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0663168c15142cba35f1de1855f9823c1a3b4ee75ef5b2153b6306e8f3890ad +size 90471 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/107.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/107.png new file mode 100644 index 0000000000..84a3ec1656 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/107.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:550f4527ccf9698d4d67b9136974530d780191439648de6ecfe8dcdf1f3a3346 +size 90291 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/108.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/108.png new file mode 100644 index 0000000000..6095a182db --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/108.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6850f89ff854dc286ddb53d7568e2c60be7bcb38f6f01f806e3329b785af860 +size 90550 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/109.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/109.png new file mode 100644 index 0000000000..0655380310 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/109.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8d32f6419f42b5cdb27ff74195553ab14af71589ec82826840e0b29f8e5bd60 +size 90795 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/11.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/11.png new file mode 100644 index 0000000000..26db53bfde --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/11.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b06038174968095d91b149d6d6bbe4eb6d5512c1f03c782027538481dd4d7522 +size 81038 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/110.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/110.png new file mode 100644 index 0000000000..3fa57157cc --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/110.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc580f96657c211030ca6c72bf6170fb04a5772541ca25e4889039c8ea16f074 +size 89545 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/111.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/111.png new file mode 100644 index 0000000000..5c07811884 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/111.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5c521c01a541f3ec0cb10bb24063c913bc08aac8a3d25776f3fd5aa31c59554 +size 89598 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/112.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/112.png new file mode 100644 index 0000000000..674de30222 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/112.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c276752cef8561b4a62a9b603be641d45e0b7f8b2e768ce8d7c27bb49b9cda9b +size 90470 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/113.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/113.png new file mode 100644 index 0000000000..27ce8ccc49 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/113.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc76499d1727ed39c2b6a08d5a5d46d6c59b2d557f95addba884761b1e8a983e +size 90039 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/114.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/114.png new file mode 100644 index 0000000000..c7bed0aca8 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/114.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e7563ca91a86aea26d649f72b24205cadd014480816c48c900b452859e05c88 +size 90744 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/115.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/115.png new file mode 100644 index 0000000000..20b3fd4b64 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/115.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e6e62f57aa793240276cc0f0ea97a1b6291baf7dce572920eab2ba09fe2eb45 +size 90893 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/116.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/116.png new file mode 100644 index 0000000000..34fe54377b --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/116.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:308002fc980a329c5d18981a4a94e64899e7d5c1881e66f7329fd357c20463aa +size 91100 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/117.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/117.png new file mode 100644 index 0000000000..ca16370786 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/117.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4aac1f9446939b9a2170b8ae7959030a67fc648d28840f859669b70c2a8455a8 +size 91121 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/118.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/118.png new file mode 100644 index 0000000000..52e96e0af5 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/118.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af66e8710ddac5f7ea54b7d20071fa24eeaed1b0d287448af4683a0166be0a96 +size 90963 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/119.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/119.png new file mode 100644 index 0000000000..23507a7713 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/119.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bf3419704ebb0679cf0a7193af10e3bba12d15ed5ca6427af5de49621ea52e1 +size 90859 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/12.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/12.png new file mode 100644 index 0000000000..3dd5406031 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/12.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:833d4ea63528961a170443b227a9dd02faeeaf1c483d4f72ec0b4e608cbc16d0 +size 81095 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/120.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/120.png new file mode 100644 index 0000000000..495e9513d9 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/120.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d4ffb85d7d7486eb27611c74dd2eb3d5b4f8f81d7f86e3bdf6c4b495eb37d1c +size 90775 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/121.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/121.png new file mode 100644 index 0000000000..a605e34bab --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/121.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b90d80e6bf96e5ed2236e8310d2834d083d27aff967035b5767b1b8868bce2e6 +size 91223 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/122.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/122.png new file mode 100644 index 0000000000..647503131f --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/122.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ad49b7a27cf63d025b0b0aeaac5a2e7cf5a9a11ca2ae0a7a4e658d1ed5b999a +size 90644 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/123.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/123.png new file mode 100644 index 0000000000..499c2f9679 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/123.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1fca2cce7ee6edaf47dcabbdcc3f134e8185778449933f6b8ec11716667cd9a +size 90688 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/124.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/124.png new file mode 100644 index 0000000000..df9e3b36fe --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/124.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9cf616f46500b85fca0259316ebc0987ad847377981ea532fd804efbbc7ceea +size 90814 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/125.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/125.png new file mode 100644 index 0000000000..18b8744254 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/125.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a265a8a55bf7e45390168fb3e0851c9f55549ffbb287289120506b371e39867 +size 90809 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/126.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/126.png new file mode 100644 index 0000000000..db32d5901d --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/126.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0009f8098652dce0f75831823a592fd63d01ad9b16a58ad49e96f320a20e2a76 +size 90810 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/127.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/127.png new file mode 100644 index 0000000000..e4a4d81870 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/127.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b054a3b3b1e2218cb2309dcb540f2d0ccea1c3499edf408174bf778ac21279c4 +size 90854 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/128.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/128.png new file mode 100644 index 0000000000..faea8d6437 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/128.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2b6e2fc76144ce475007700d6be278d5308aef7e8d2fa3d0cc9c419967c395e +size 90543 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/129.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/129.png new file mode 100644 index 0000000000..c1d2fb3be4 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/129.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9307016c702527df9497b124c70b06b5c51c9a81abda1a8031d5641814dc675e +size 90570 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/13.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/13.png new file mode 100644 index 0000000000..2ef225ea72 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/13.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3da499346f5160e5f1a63b48e822a93ac0a022f99a5206b521631e8058923a02 +size 81070 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/130.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/130.png new file mode 100644 index 0000000000..fbe6c4c3da --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/130.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3566ad9a244e15ef8cb05c0b36c6fa80b60d35e5419d7995a3f12eb87a61dcdf +size 90560 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/131.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/131.png new file mode 100644 index 0000000000..000eaf1f44 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/131.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:124e86127a063eb135b0fb4f11d8195f940ed99995e41482db9d4f826ce00aa0 +size 90442 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/132.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/132.png new file mode 100644 index 0000000000..fcb471adc3 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/132.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cfa9f35cb5d09bbbf77bea47d493576df232ebe6f62d190ac1f186abbf0074c +size 91076 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/133.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/133.png new file mode 100644 index 0000000000..6fa4cb9b14 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/133.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7b243ba5ba552250abae243d049b30c0ae38aef61b2b17982eb0ff034ac73f1 +size 91105 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/134.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/134.png new file mode 100644 index 0000000000..798ad2c670 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/134.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:461eb6bf55b1fcc720baebea9ae7404cd437bd534f58ed391b72360e0b222dbb +size 91070 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/135.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/135.png new file mode 100644 index 0000000000..94bd811bbf --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/135.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31cc9ee5552b470ca46e4559bff12b1163e159b9394d758414f1cddf3dd7b6b7 +size 90432 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/136.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/136.png new file mode 100644 index 0000000000..788bd5273b --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/136.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ca147ca90fb4f09f07f4df297217b0da88f640d11d94c7cb9040a084a09bd11 +size 91145 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/137.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/137.png new file mode 100644 index 0000000000..7680e09c58 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/137.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ef4be0ff52d54a3ff71b88d3e751d39d36e3ef7b3b7b0f803912282dc39375e +size 90438 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/138.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/138.png new file mode 100644 index 0000000000..fe1897af3c --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/138.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38bcab10db96c367d3e4d39b4bc5a77423bc1c27e7cfb4ab09810f293f392e19 +size 91124 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/139.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/139.png new file mode 100644 index 0000000000..bc36d86d4f --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/139.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51a494f2600c46dffe2b8160c16bdf0982b4a00fb9cbf8a5cb399f8015a2d3ed +size 91137 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/14.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/14.png new file mode 100644 index 0000000000..37e0749155 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/14.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62aab9d77fecdd00e3274c7f9b1355b8023ca95860ff78352a20a588d6fb2c19 +size 80756 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/140.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/140.png new file mode 100644 index 0000000000..c1db51b749 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/140.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a97b9230eafa5ce2ef87229172d7a4cd899b917005caf09d65cde600b0058dfe +size 91097 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/141.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/141.png new file mode 100644 index 0000000000..d27a0f0cb1 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/141.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e651932e4b2fcc8b678094febacffe3b9a9c88a4bd685dc329eb20150f922a8 +size 91160 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/142.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/142.png new file mode 100644 index 0000000000..a6ef12e05b --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/142.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a91a8c5452fb698d3f482b3c94e8d0f165a5a6544f2202ba28f2b587a2630ce0 +size 90562 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/143.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/143.png new file mode 100644 index 0000000000..0fcc98806d --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/143.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97fe0a7756c3a6db31f05da9c6f4d1ef5e884a89276ee3e826d630d633c4d4a3 +size 91216 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/144.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/144.png new file mode 100644 index 0000000000..6fb0ad4555 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/144.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fbf83374eee52013921f064ff2f6b3228d2b3ab4d7feb531c9271d930e716a4 +size 91063 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/145.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/145.png new file mode 100644 index 0000000000..d0b1ef950b --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/145.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62160c2267597134d2f17f9fec796bd49a616c2c4245877c65023a58d0d295e1 +size 91175 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/146.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/146.png new file mode 100644 index 0000000000..c7a45c3a3a --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/146.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da652da914ce3d93fdcdbba84cd305433f3d8136fff4a2090467099ee1449c9b +size 90756 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/147.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/147.png new file mode 100644 index 0000000000..c7a45c3a3a --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/147.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da652da914ce3d93fdcdbba84cd305433f3d8136fff4a2090467099ee1449c9b +size 90756 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/148.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/148.png new file mode 100644 index 0000000000..d0b1ef950b --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/148.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62160c2267597134d2f17f9fec796bd49a616c2c4245877c65023a58d0d295e1 +size 91175 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/149.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/149.png new file mode 100644 index 0000000000..972a631e4a --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/149.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50d8b8ff77ad4a3e9d1e13d595fe0cc6a5adc1b1d858ebcb3790bd16a2f73cb2 +size 90712 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/15.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/15.png new file mode 100644 index 0000000000..3abe5af7de --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/15.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ae506a1118ace979328e734809a5f485ab83f21da5d8d61cc97891378eeaac2 +size 83239 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/150.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/150.png new file mode 100644 index 0000000000..9efaa9a7b4 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/150.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bb4c96cbb53bac6dd209ebfa92aaed295be1896c2d693ba9e4d962a86129d88 +size 90340 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/151.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/151.png new file mode 100644 index 0000000000..9b785b22f6 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/151.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54d9bdd9e29f371e5136edbddac0f053c671faf32be2bf7e0fc730029e430b75 +size 90665 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/152.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/152.png new file mode 100644 index 0000000000..8f540a68c5 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/152.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78085a65f1aa683f09b51ada512bb959b9df5dfc977d1d5ebe64eab5aac90a97 +size 90627 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/153.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/153.png new file mode 100644 index 0000000000..3f092be72f --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/153.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e52291d1c328f02e377795a8e91b84ba6cda1154691b9d95cd2b0a562d420de +size 91549 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/154.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/154.png new file mode 100644 index 0000000000..3f092be72f --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/154.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e52291d1c328f02e377795a8e91b84ba6cda1154691b9d95cd2b0a562d420de +size 91549 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/155.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/155.png new file mode 100644 index 0000000000..3f092be72f --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/155.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e52291d1c328f02e377795a8e91b84ba6cda1154691b9d95cd2b0a562d420de +size 91549 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/156.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/156.png new file mode 100644 index 0000000000..9ebaf7ada6 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/156.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1cb3a5b6e629416a49bb8d07d63ee938143f251e378288b9042d0fb2ae7c1f77 +size 97680 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/16.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/16.png new file mode 100644 index 0000000000..9c383ae83c --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/16.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2aed3183e03f4a8584b73ba05b19e6afd716702ff3274882f53efe1dee26ed8 +size 83360 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/17.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/17.png new file mode 100644 index 0000000000..a6d4fe592f --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/17.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32205de5eaf6401c3cb2b76f6c03c30df5fab9155885223b5a586079e1e0970d +size 83295 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/18.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/18.png new file mode 100644 index 0000000000..e1eb1cbc91 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/18.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b65723e9f68a6ca1c0e0c62a30dd9d1c12c5b0c039d8349f813f59380666c53 +size 84097 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/19.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/19.png new file mode 100644 index 0000000000..d237f97fe2 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/19.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c63463a59b0a522691c8183f6f9c05e19adcc99189885139236af0693f9a6353 +size 83758 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/20.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/20.png new file mode 100644 index 0000000000..6da8818b14 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/20.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5de8be56644a16b52d740d9d31be5948524dc093c0cb2440ad31dd0978227202 +size 84012 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/21.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/21.png new file mode 100644 index 0000000000..b9f469f91a --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/21.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a988693f2fc435445b0c9715a7900877b034391934228b0cd82017e181f785c +size 85506 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/22.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/22.png new file mode 100644 index 0000000000..5df3baf4d2 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/22.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1eb6ec971d615b2fa63e179292e412a7b2da440fbd8bc8adc7a98191a6775a70 +size 85576 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/23.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/23.png new file mode 100644 index 0000000000..d76f7161e6 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/23.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:525f92878be95186f1cd80d16946d6fa5673225396eef91396ca9bad3319a3c4 +size 86021 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/24.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/24.png new file mode 100644 index 0000000000..2488f2ee8c --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/24.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efa27089c7e13adcbed4320423211b29d76931aa6f60c4b432c712410ace0a39 +size 86068 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/25.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/25.png new file mode 100644 index 0000000000..af74889482 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/25.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:309ca3a3533c62a77fa4f9e1550998c34f2c61e13647c923808c007bb77e24b1 +size 86311 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/26.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/26.png new file mode 100644 index 0000000000..41153d2337 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/26.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:353a0f661ca24bc353b0fb76d9a84134620fa4f7a867326b05c1fdf5d6e99d80 +size 86583 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/27.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/27.png new file mode 100644 index 0000000000..d688572a35 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/27.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98c1cf1c2378f3e6850c1c29a1a1a5c5041f7ffc8a7cc85d01034c5e7dabdc08 +size 86556 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/28.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/28.png new file mode 100644 index 0000000000..c609db6bbc --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/28.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf87ee7ce8ee67bd80549cf5d73b0678d40c4b0d9541e91a67e3570ebb40ca8e +size 86543 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/29.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/29.png new file mode 100644 index 0000000000..9520e8cf87 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/29.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:961141884be8843665e1a49633ba64995c1c3180071676aa6f4349dc9ce76178 +size 86556 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/30.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/30.png new file mode 100644 index 0000000000..dc951623f1 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/30.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bad967fd018d21d0e6baf314dbd097382f40ee221642eb62dd542e19e6e2d69 +size 86518 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/31.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/31.png new file mode 100644 index 0000000000..696f889152 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/31.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96e64876e783307fc9406f3a803c248aa7efe284739e67171afd0dfb9a06e1ba +size 86466 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/32.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/32.png new file mode 100644 index 0000000000..2f643f5882 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/32.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1a9c1cdcc9dcba627c808969eeaa375b1ad19914a8d869c96b930fed377eaef +size 86489 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/33.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/33.png new file mode 100644 index 0000000000..2090232c59 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/33.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d4459a8b8693b683f294bd8e243f5acf59b07e8b6f4f2997ee0057243c6b3b5 +size 86443 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/34.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/34.png new file mode 100644 index 0000000000..3e4e127709 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/34.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d0ad71c14229f92edbf75831b5445b6fa2f10b729cfd2fff353867485c0c31d +size 86474 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/35.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/35.png new file mode 100644 index 0000000000..85ebc7fe89 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/35.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc899d9e0d5b5927f6c9c58bd3353a4763e94d20e2a0d1e6b2fee84f977d286d +size 86501 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/36.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/36.png new file mode 100644 index 0000000000..561bd2efda --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/36.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1091ea6a809ab826e8eab80b4772545204f25f37a8dfd1cb81b373d1f0884b02 +size 86703 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/37.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/37.png new file mode 100644 index 0000000000..2808bfe1ec --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/37.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73ba47a8cbff29676da7922d5a75eabd9ca34a4411109d10e4eee950de5c9903 +size 86896 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/38.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/38.png new file mode 100644 index 0000000000..bf3ebf09fc --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/38.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:676dd694214821c29e81ae4fd071b8862bb8232237dd12c56d3b4313d1765384 +size 86546 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/39.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/39.png new file mode 100644 index 0000000000..72f6662b22 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/39.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43d1304b128cec9b6b81292d9c915e5900e16d0a4431ac0aa502136302a0a378 +size 86618 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/40.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/40.png new file mode 100644 index 0000000000..47ef2064c6 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/40.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3270ba7320dd1d471eb79f09a1de3a55f13cd2ec9e3ee1e0ba900562aa3f268f +size 86517 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/41.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/41.png new file mode 100644 index 0000000000..75a5dd6795 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/41.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ddff78b086b2d0ab06efcf79149d1f3a1f640ac20c2768e1e2b14d3e4cc880ad +size 86541 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/42.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/42.png new file mode 100644 index 0000000000..c9a4eb3370 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/42.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c18f34434f321312968d170c3360f0526ce66ffb9b8ec9f687b2c99cdb857345 +size 87084 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/43.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/43.png new file mode 100644 index 0000000000..0850a80352 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/43.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91be26ae870a42583c795c4ffd64997759024c9f693d09e7ba688986a2d88c04 +size 87180 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/44.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/44.png new file mode 100644 index 0000000000..076fa1b02f --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/44.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a082b13f2c4573359f1c5dc5501c238bd8924f29c1cc5622964b6a8b183cf42 +size 88442 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/45.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/45.png new file mode 100644 index 0000000000..3013ae975d --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/45.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60c20f14a19716acd516037790f47c2d5990af205098a9264906dfdf668ec834 +size 88244 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/46.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/46.png new file mode 100644 index 0000000000..7c1233d858 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/46.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:990cbfac63f555b691ace87b7b6a96513b070d4f2db324b3fc30012de6c6e0b2 +size 87871 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/47.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/47.png new file mode 100644 index 0000000000..526d669b3c --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/47.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1552dd8d2aeab83a9ade1d427dc0f8e2f3ced941ad25e269f5ce19b288b14fe3 +size 87461 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/48.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/48.png new file mode 100644 index 0000000000..82ccabacc7 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/48.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5c3a511e11c0fde8ca612e76d552843b14eaf58f92fcaf27d6bbf176e38313a +size 87291 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/49.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/49.png new file mode 100644 index 0000000000..41c973a3e0 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/49.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f12eed5b1c1407ef74ef57c7dc2b0938e8b24d2e14028224a0aa731f2ffce1d0 +size 88652 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/50.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/50.png new file mode 100644 index 0000000000..9664d4dbad --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/50.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:370c001d67435a6e56f1095b409a81d6b543331954e4e726b49cc74bbab22a1f +size 89535 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/51.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/51.png new file mode 100644 index 0000000000..079e4fe548 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/51.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:265a05f09ea95e89a107520dfc9c68e98397daa5e9fe6afa6247a4e0cd735acc +size 89745 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/52.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/52.png new file mode 100644 index 0000000000..71a7bbab39 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/52.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c28210a192b0ac6d2909faa6d02c941487440a564bced2c74473644de187df26 +size 88555 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/53.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/53.png new file mode 100644 index 0000000000..59bc8fb61c --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/53.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdd0251b7aeac50e9eac79da861348c82d93223fbde584d364747396ddb9e1d0 +size 88460 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/54.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/54.png new file mode 100644 index 0000000000..e60ae7dcf7 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/54.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e06d6488d7f6e095ee4688349696762a01d14eb1c2c804cddb02e079e825ed8 +size 88518 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/55.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/55.png new file mode 100644 index 0000000000..ce3ca6227c --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/55.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:206453ada2e47b9efed6c5f3ea647b34e0f637410cbe08b52f6a6f983514bacd +size 88356 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/56.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/56.png new file mode 100644 index 0000000000..3992d94f5f --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/56.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa09a6cfdfefe9d3ec92e46976ca4a4308b347c2bc86a503b8169d03a5deea29 +size 88157 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/57.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/57.png new file mode 100644 index 0000000000..5f1e17d816 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/57.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:223f46270ca8c34e483e52cbbf08338563f860a2e10dc10ac60be2e26420f16e +size 87795 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/58.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/58.png new file mode 100644 index 0000000000..77dc71aa6a --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/58.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18c89772368faeca028a5615eac6e6f4cdc099e32eedba35194fe26012b41993 +size 87811 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/59.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/59.png new file mode 100644 index 0000000000..25d05e342e --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/59.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:082b1cf9afb8b6326e0d25c9d2fa0a526954fe35373505be10a064c320df421b +size 87287 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/60.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/60.png new file mode 100644 index 0000000000..ae2dba0fd5 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/60.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f152235cdac241d80855b4ad576b63003567a84c32774ddc9935f495b3fb76d +size 88399 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/61.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/61.png new file mode 100644 index 0000000000..07eaf9cf91 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/61.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3dc016699e0165bbf2dc7a1ed15fcb7287d9706d106cda0b1b6d899080f93cb9 +size 88620 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/62.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/62.png new file mode 100644 index 0000000000..727aca9a59 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/62.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3adffa61fa758f4b3b879592b5694bb35e89bf18de35c2007ea1697f70c849f +size 88242 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/63.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/63.png new file mode 100644 index 0000000000..452f560c88 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/63.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67251119284fe920f77fddff86c4c92e83ae59f4a0a44ec77f63521a78cce035 +size 88901 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/64.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/64.png new file mode 100644 index 0000000000..70ec3e3acd --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/64.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6c8c32a54bcbb50af853d9e1e302d4b3f6c12cf4b2b2d40b4f9dab2b93438dd +size 89284 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/65.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/65.png new file mode 100644 index 0000000000..f2b4af8ca8 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/65.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdbc1b27e61503e06b6cc5a336eea5923732396c0690f73780072913477e2e2e +size 89230 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/66.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/66.png new file mode 100644 index 0000000000..1df03896bf --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/66.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc53bddc7c3073ac0cf6e6c9515963f40bea2049d4f5142886a84265f4959f54 +size 88752 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/67.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/67.png new file mode 100644 index 0000000000..d4ff6bbd84 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/67.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e91f67dd90e9f689d9f090aba3c422316606e04190cef56d6b51be7d4e8dcb31 +size 89007 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/68.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/68.png new file mode 100644 index 0000000000..f5601279d5 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/68.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da3bf1c1bb959bc84281cd4bcc73f9a82bc4a3bc5171c3de3414472e2b15186c +size 88733 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/69.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/69.png new file mode 100644 index 0000000000..ee08d95558 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/69.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fcf1fe38e4cddfef685553347054c5484b2cbf3d62a3bf1ce3c281848ae9af4 +size 88605 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/70.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/70.png new file mode 100644 index 0000000000..b9b8bb99b5 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/70.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45cddf0b6b281f9b1860b0762cc788395c1b756b0ed43b7ed593eabda7d6857f +size 88911 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/71.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/71.png new file mode 100644 index 0000000000..66cf5cf7bc --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/71.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c82ab09fcf208ebc8ae8e7c156011e8dc37da18adab54fecbf556777f3bb7135 +size 88827 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/72.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/72.png new file mode 100644 index 0000000000..d25bc06a6f --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/72.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:312dc9671a700eed29af27d80825c1e67338ba2f4b00d83af9c4a08dd9ec94ae +size 90810 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/73.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/73.png new file mode 100644 index 0000000000..708c1a705f --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/73.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ba6923f3752a609636458f99d84055070e593507cd2383e42d55700465fb406 +size 91335 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/74.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/74.png new file mode 100644 index 0000000000..8bf7a78078 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/74.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfae6ddcc1347387b2dad74b4d5c9718dcf3c0666dd7dee8d7bb69e3adcb2547 +size 91183 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/75.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/75.png new file mode 100644 index 0000000000..dd2d44207b --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/75.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa8da378d7746d4a6ae0ad9bdcf7c6da761364962e1275062a12a1b98b14806c +size 91120 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/76.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/76.png new file mode 100644 index 0000000000..25639bc0ac --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/76.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b9f26d87ca2975ff9a6e067b427c3035b50410e6b7f37016c5f6c9a84c370f0 +size 91290 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/77.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/77.png new file mode 100644 index 0000000000..8924a8f9b3 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/77.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1d3c31057bff24b1b20120af7666fc6b17c6886cd74991f0fe9367b796fedde +size 90739 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/78.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/78.png new file mode 100644 index 0000000000..b5e7bf9586 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/78.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac72bb354c75b65eb285e685a53f8bb634836f43c0bd7d3fa2bb04c4e913a363 +size 90306 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/79.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/79.png new file mode 100644 index 0000000000..a06ce3207e --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/79.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3284e752d9cc8070b92eb92a153f9a432613df4974b9a08e95b6004f33ee260a +size 88977 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/80.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/80.png new file mode 100644 index 0000000000..f654bacb92 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/80.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4dd5d277ee2881dcda5c6730e9ba6bc7b4c906989e3814a050c03503f4eed2f3 +size 88910 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/81.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/81.png new file mode 100644 index 0000000000..c22b3aacde --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/81.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c650f2ad3b4d0fe65e98cb68311712e3bc27e396f452c7b35611a1ed1c9adb07 +size 90362 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/82.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/82.png new file mode 100644 index 0000000000..b24d93bd4c --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/82.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53ecce04621a69e2b15dc17dafef91dd2ee00c878e0f202aa9491dd5d070e94d +size 90453 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/83.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/83.png new file mode 100644 index 0000000000..d423b90261 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/83.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88825afb2464e456de5d639a962b83c64457083ff420cf90deeb65d940aa4d42 +size 90226 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/84.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/84.png new file mode 100644 index 0000000000..3a8ef85ce1 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/84.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4446e36e0a17f9a26e747dd2a959a188dbd9c7cddd440f71e08ae4bdc0d714a2 +size 90592 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/85.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/85.png new file mode 100644 index 0000000000..2d0b3c9a61 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/85.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2a68791aa3148b485a8c6f489d2cc604db2703bbd2b9bef876c64a4167b84d2 +size 89893 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/86.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/86.png new file mode 100644 index 0000000000..bcd047d9b1 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/86.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6aa7297dde9679ea85136a4a15934786f7420146af1008d0637e14be3346fa03 +size 89612 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/87.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/87.png new file mode 100644 index 0000000000..0c72d26092 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/87.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfbf2b9c41085541c2d076473285e0b53aa67e3af39b6e99f45bd2ccca891288 +size 91049 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/88.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/88.png new file mode 100644 index 0000000000..eb29ec9410 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/88.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:923b68618a0aa3f32ebc80f9e391596f92918a74653a869f6f85a0aa049803bc +size 89217 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/89.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/89.png new file mode 100644 index 0000000000..5d40b073ed --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/89.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:097db6b014944a5e5eb4e9520a61dbcab94c057ea68356999bc17f1abbd36574 +size 90725 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/90.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/90.png new file mode 100644 index 0000000000..39717e83a5 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/90.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95e3553d18a23384caf1882deabd102a4c16d07b3071bd1290a6c7443f57ac0c +size 90399 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/91.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/91.png new file mode 100644 index 0000000000..64533acbcb --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/91.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c72cec167b574a5aaa1f5d7425baae252f2d9fa83ce31564cf2f234eb9d11d24 +size 90033 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/92.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/92.png new file mode 100644 index 0000000000..c146d4cb8b --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/92.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32db98a758e764f6b79f4cd65756734951d6a4f75963e04338b38aa615e3c415 +size 89923 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/93.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/93.png new file mode 100644 index 0000000000..c4ab2291f1 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/93.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:536b58e956586bb4ab99c5ebaf821718972d77e2b09963d6cf77db0b2c0eab49 +size 90559 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/94.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/94.png new file mode 100644 index 0000000000..7c19eb7d38 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/94.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:708d6e85c6ac70278a27061f350b3f0dd61e05e7519a59847e969f24599ab549 +size 91347 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/95.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/95.png new file mode 100644 index 0000000000..a866ff23bb --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/95.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c6c53d159845db20cc8329d6f89b03347d4a0788aad7f7829696a83626d4663 +size 90784 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/96.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/96.png new file mode 100644 index 0000000000..902431e44f --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/96.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:308f9a8e778a31f0b2da54e2adf701a5c1c655f760afc2a825ca6c12bb631c1f +size 91294 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/97.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/97.png new file mode 100644 index 0000000000..56c66a5854 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/97.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6355ce47f7b4da54bb64f985bf5d5e4e7c25223aa1c0ff0a02e76088b2648031 +size 91084 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/98.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/98.png new file mode 100644 index 0000000000..0e86fe146c --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/98.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3c455888d0eababa537204c5cf2e800c669240128732a8364bd36915335c2d7 +size 90835 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/99.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/99.png new file mode 100644 index 0000000000..663fe3feef --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/99.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:228f03f3aa0e4c642c1fefdef74fa2ba0324f661fa9be177270dd10f8a44c5c2 +size 90696 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/00.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/00.png new file mode 100644 index 0000000000..6d59d9c7a7 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/00.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:500bde67abcd11d9fb5f8af8850931e2c9d803743d0e3363963088cecbb0ae75 +size 2600 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/01.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/01.png new file mode 100644 index 0000000000..6bb84111a6 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/01.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:324ab3f3f09da631883700abf184736a2cdb48c3de70b4526d5f2e550f135bf9 +size 2609 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/02.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/02.png new file mode 100644 index 0000000000..5f9536b545 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/02.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e45013b2e06695a863aa79178eef75418a366e216ca66baa8ee463e12a797b0c +size 2688 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/03.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/03.png new file mode 100644 index 0000000000..22ebcbdcad --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/03.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:080221f71e837c62063850aee578ef92bab4e8789a95663e514a0075388be7e9 +size 2670 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/04.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/04.png new file mode 100644 index 0000000000..7937cdc8ec --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/04.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4f9ddd2071f74b1b28e7662d96555b62463ee7314a17bb258fc66a02e9b99a8 +size 2666 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/05.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/05.png new file mode 100644 index 0000000000..f529f535dd --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/05.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0f76db6415ba64e6278361386ac9bc1950ba30bcadd95e081ce5673c5e37eab +size 2652 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/06.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/06.png new file mode 100644 index 0000000000..77c5c5bb63 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/06.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9161301f079b6476334e46570378cae5f5717fdd840ab3adb8c02823fa095e6 +size 2659 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/07.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/07.png new file mode 100644 index 0000000000..dc29597d49 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/07.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f6dc13fa8836e91572296de9eec99dc29df9c8ebb96684543bc73d1e8ae7b5f +size 2665 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/08.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/08.png new file mode 100644 index 0000000000..015f7cc872 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/08.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:046df7272277b8836a798902fdb51efff5ceb66775b891e72d1e084640f41b51 +size 2650 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/09.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/09.png new file mode 100644 index 0000000000..47d0fb8e82 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/09.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cf9733ae7cdd2844afcb2aa90ec1b1cef00384509fbb85f5195874261e260c6 +size 2661 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/10.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/10.png new file mode 100644 index 0000000000..3b45cb810b --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/10.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d2de9cbcc62fa1bf3977d4920553498499add65657ac968f85de0da5036d4e0 +size 2660 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/11.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/11.png new file mode 100644 index 0000000000..bfa23b917b --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/11.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae2f2ddf367ac3881374cb70478e41d6eec11e2b66c1e443243c3c6a734d6579 +size 2642 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/12.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/12.png new file mode 100644 index 0000000000..50d3072e5c --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/12.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07856ee43d16fdfdfd8d34fd75905dfd569dbb2ab80306dfdda9cc92a3bcd30b +size 2697 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/13.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/13.png new file mode 100644 index 0000000000..5c59c9f323 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/13.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f2e8ec69af48772cabce17a5f72afce267e659de55d9e32fb02dbf00985844b +size 2696 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/14.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/14.png new file mode 100644 index 0000000000..ff3cac8ade --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/14.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:356c66a6a22cb02a586debe8aa82046975cb62ae6abc04c06cc41bb65b9a7b4a +size 2682 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/15.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/15.png new file mode 100644 index 0000000000..19ad5429f7 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/15.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cceed937cf5698cf12e0bc0ebb50713ffab27a75a097c857ba389e5ac21c12a +size 2561 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/16.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/16.png new file mode 100644 index 0000000000..209db7de7b --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/16.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d258ee37a3d16503c339d597f0e781170516c1945ff297dbcfca2256ff5b9e4f +size 2690 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/17.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/17.png new file mode 100644 index 0000000000..48e67732c3 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/17.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acc2d96b74e4d7f3e7fd85b9a54225a97476663c87b6bf4750baa224c007d5d0 +size 2493 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/18.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/18.png new file mode 100644 index 0000000000..3a51727a14 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/18.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4e7140f1eab449ccede07a7cb358cbf599dba70c8fd3a806edc3c4c10904501 +size 2518 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/19.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/19.png new file mode 100644 index 0000000000..94cc451023 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/19.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ada57124045c86cfa32f644a3adde26bd40ab29f084aafaac2f75853bf043a1b +size 2538 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/20.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/20.png new file mode 100644 index 0000000000..e0fdb26e14 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/20.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d9237d845cd27b1894aeaff3cb468d6d92711901098936a602fdc97ddb005b4 +size 2552 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/21.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/21.png new file mode 100644 index 0000000000..dc40c7b113 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/21.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a53b8a65eec93c35544d0b01df3520af939569e10ce1238457b465b1f72cb7d +size 2591 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/22.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/22.png new file mode 100644 index 0000000000..7f26331cda --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/22.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f42da30d9d4767ee5b3ddfbbf17bbf9dfea40590bc5e275066e05711bca329e9 +size 2613 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/23.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/23.png new file mode 100644 index 0000000000..f977ba0571 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/23.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42c34ae8e8b0028ef7be09a8914ad8e01d181ed1059b22f0003953ce33710e8c +size 2609 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/24.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/24.png new file mode 100644 index 0000000000..7f26331cda --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/24.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f42da30d9d4767ee5b3ddfbbf17bbf9dfea40590bc5e275066e05711bca329e9 +size 2613 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/25.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/25.png new file mode 100644 index 0000000000..d39b460bc7 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/25.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f89519f852f0f41e355e026cb71539a9a4974d00cd1b6548fbcc51d5a4709b49 +size 2643 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/26.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/26.png new file mode 100644 index 0000000000..9026666721 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/26.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:783d3bf28fa0f8f9f03241a8f5ef446493b6c903f0958cf8f3c09dfe8cf1ef1b +size 2542 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/27.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/27.png new file mode 100644 index 0000000000..4917522f8b --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/27.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a9fe1b5c98f5f08f839533b375f0f92e42149ea3f6cda32f315f476a6791d1a +size 2544 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/28.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/28.png new file mode 100644 index 0000000000..9895573582 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/28.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6c38f43f1bdc1e4f035a1e1883d2e674e550e0c1fcbfa909d1b363e110f32e5 +size 2658 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/29.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/29.png new file mode 100644 index 0000000000..c338dbe94f --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/29.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79a39a2eb2c92902203d81e2630b63085d65f6887f06337017cf58fe9910f587 +size 2419 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/30.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/30.png new file mode 100644 index 0000000000..a0c08fc466 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/30.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0aa7026750f1d4660c3942dd50dd98da799466bb18ee466993aa96e9626959da +size 2415 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/31.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/31.png new file mode 100644 index 0000000000..c91a061343 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/31.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1e1f2f855f38182a0a79acf1089b1c69ab0040a47ed61b23ef891e46d7aea9f +size 2406 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/32.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/32.png new file mode 100644 index 0000000000..bf4fc02186 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/32.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:842d9ddb805a43935ebca61d494a9f64319870f98512264b46157223d7f4085c +size 2469 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/33.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/33.png new file mode 100644 index 0000000000..b067b6f1ba --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/33.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bec7ac994204cbd9fdd287e732f0de772ca7700b4b22ebc48c65b40807b1c5c +size 2491 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/34.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/34.png new file mode 100644 index 0000000000..844413001d --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/34.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4edd2611ead2b0f4bdcbce42e533f4a8810ef0d0a85488dadbf602fd192439f3 +size 2545 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/35.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/35.png new file mode 100644 index 0000000000..9b643fb4c8 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/35.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f26b7ff0f9f8dfd0b9bfc012ada2df33a3f51810b2ff357cddec1dd050c661d5 +size 2546 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/36.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/36.png new file mode 100644 index 0000000000..97dc247bb8 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/36.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3878fefe9d4e97c9351410d4d754955b52799136974617cd80617138893d503 +size 2547 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/37.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/37.png new file mode 100644 index 0000000000..2c19f0a19b --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/37.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45f5a2d728876d1449b4b468fff3d2f9492859de8b853403d7b508eee12926f9 +size 2555 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/38.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/38.png new file mode 100644 index 0000000000..ebc6bfa77c --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/38.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0341923302c3c8016cc186218a1bad241e762a9ffe21e288168cddd986991921 +size 2579 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/39.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/39.png new file mode 100644 index 0000000000..d00d7e7fa1 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/39.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8096be053925bbb1b82a8a1b3afa372c62900923ca70f2e1d670d13ea8bbd638 +size 2531 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/40.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/40.png new file mode 100644 index 0000000000..2b65fb9115 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/40.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e82f2db413da5e9a5149019f1b0f77c745f4f3d67b8466eea9ab06555ad6da4 +size 2519 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/41.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/41.png new file mode 100644 index 0000000000..e93804bbbe --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/41.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dad4c0a206a0b5daade5de05e385f88d84cbf7bb6836335414ddc8c76980f4c0 +size 2628 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/42.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/42.png new file mode 100644 index 0000000000..8bbd137bb4 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/42.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:653ee205dbd29aa5109c80adf92ebe9631aee24f062de6cfb3aa3206cd2069e1 +size 2634 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/43.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/43.png new file mode 100644 index 0000000000..973d894154 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/43.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03c74d84677cc7c8529100f3e2ca7ee4bc24ea65155897973d6b8609571bd0fd +size 2645 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/44.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/44.png new file mode 100644 index 0000000000..514924d167 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/44.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2843a4fbb695788c6396c4fe858a01f1ec9637d3de9ce282794a6d4e7753ce1 +size 2674 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/45.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/45.png new file mode 100644 index 0000000000..e8fe7c05ac --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/45.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72b2cb0532d1d4e0dc0883a8f7a02a8879d71e94c74dbdf7a4778a73773e205d +size 2681 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/46.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/46.png new file mode 100644 index 0000000000..bfbb072d8e --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/46.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9f1f6cf44695759b743cc60e464e69c787268106bf4730be6c5d51693ff5316 +size 2680 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/47.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/47.png new file mode 100644 index 0000000000..299295a804 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/47.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb6acc80f928cb2fe5073e568c498ae73baf2fc9ccac80b75bfb946b07d27829 +size 2703 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/48.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/48.png new file mode 100644 index 0000000000..b1945b513a --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/48.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:527d3ae20e1a91cdf0b38f9f7a13fda95f0cafe238597e4ffa9a250d8cac3c96 +size 2741 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/49.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/49.png new file mode 100644 index 0000000000..3c4ce8b639 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/49.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52c9c8d71cdd46d1b26cda4c5de43fcd529c8a98e80e3bb3ab508f9f89838f78 +size 2749 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/50.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/50.png new file mode 100644 index 0000000000..00c53ed925 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/50.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a53d8bb9c4c7247a489bd211dea9d874e131d3833600c9a517f999b0f0c90a6 +size 2754 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/51.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/51.png new file mode 100644 index 0000000000..6ae18affad --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/51.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f01d194256260353748aee5fd28b6a4f5478995f6ca5f6feeac3fac0f0a8639 +size 2727 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/52.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/52.png new file mode 100644 index 0000000000..10b60ea1be --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/52.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ba7ba520a85ee5053ff9cf409dca7f84643f9073a5c7c8ebeef70995e7d6df1 +size 2766 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/53.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/53.png new file mode 100644 index 0000000000..1e77c95cfb --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/53.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:475ef9aa23558839bf32892b24e052de2bd4102c4dc694a60ccca532c1e3c647 +size 2781 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/54.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/54.png new file mode 100644 index 0000000000..838d24393c --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/54.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6a42284d33f1ea8a073c8d43dde695631d73c67464ed8b25708e84f1670e408 +size 2717 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/55.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/55.png new file mode 100644 index 0000000000..ad17ff8e10 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/55.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f8d5d304eb9b8d37ff381c74953362965735fc65dcf0a840546428f7ad2854a +size 2712 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/56.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/56.png new file mode 100644 index 0000000000..0fc8d1f960 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/56.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f920a110ee50da45502ed94d87a6d2765df5f0dbd5d08853daf0be602d32f3f7 +size 2699 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/57.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/57.png new file mode 100644 index 0000000000..601ee64e8b --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/57.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1482d6aa9131901d81bf3eb27cee5631e251f998d723fb5306d3b4da3252dbc +size 2739 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/58.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/58.png new file mode 100644 index 0000000000..7b9ba8e2b8 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/58.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4971039b84f4356b304ea6eb27059abb6d8eea70e3f3f7814d9f5a0797d852c8 +size 2712 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/59.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/59.png new file mode 100644 index 0000000000..fa7a83b9a6 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/59.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40863291c67b6b4f1db961289eeb6531e480c841f9d5557a23bf81ad8b9dfeba +size 2753 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/60.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/60.png new file mode 100644 index 0000000000..2366dfc84b --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/60.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07803f744c5f9b4538e673301772a2b04902f5a9d03c6e76d2a787a3e931ee79 +size 2784 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/61.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/61.png new file mode 100644 index 0000000000..9297037caa --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/61.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d549f6d3d0d458f543c2fa89dd7ae94f0940c86a804fc792deb5c0d93436c546 +size 2804 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/62.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/62.png new file mode 100644 index 0000000000..5dc7081cf3 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/62.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62a37d97203eba5489d4120370a7c13899ac08e413744698e22653567ad98770 +size 2827 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/63.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/63.png new file mode 100644 index 0000000000..b8a4df99d9 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/63.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e72ac1011d36bca745587bd8d0dd15dc24a81c5f0d5bf0e0d886ba7426c76a3a +size 2829 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/64.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/64.png new file mode 100644 index 0000000000..c73ef6c2df --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/64.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:230c98d931e17e1602ec2bbb81f46a7f6bd722e012fbad2f7c1b8880fe8df0bb +size 2882 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/65.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/65.png new file mode 100644 index 0000000000..a3a614fd55 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/65.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:467dec2d45a93b334ee315b847b86cbda5a168b0925e64844bdf220eaa613ec7 +size 2940 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/66.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/66.png new file mode 100644 index 0000000000..6ca917cd15 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/66.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b382138da1a80f16e394dc44dc386441b855f1a214aaecbfdcf37245afcdf3b +size 2930 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/67.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/67.png new file mode 100644 index 0000000000..d70c0d83c9 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/67.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07a50f98aaf5d081d6508437f4d732d92d3849ee157024fddb562e4e08b413f4 +size 2926 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/68.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/68.png new file mode 100644 index 0000000000..2f36427381 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/68.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:662c21e4a45f6df6cb35c6bac728b91ddaf810232a271eae6ba50f18ce947d29 +size 2925 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/69.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/69.png new file mode 100644 index 0000000000..f5d86c640b --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/69.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b8450537ca109d466b59453f4658e2c0bba98991a6c030d1b0cac9d90040b9e +size 2943 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/70.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/70.png new file mode 100644 index 0000000000..dbd02a7508 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/70.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:248023838ff7ff6ddf3b828cee410abca1e465a4c15ffcabab37e31f635d099f +size 2942 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/71.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/71.png new file mode 100644 index 0000000000..60e44ba229 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/71.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4ba0c81be4b0d9d72dac0a51f8fd8a8ada371e5eb68d91dd252626702c19b9f +size 2937 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/72.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/72.png new file mode 100644 index 0000000000..ce15613fca --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/72.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37e4d7d3440f6f475e23bd93ef799ebb353867f66253087feb58f72edec224ef +size 2935 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/73.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/73.png new file mode 100644 index 0000000000..35f9c6b7b4 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/73.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77f4cd2f765e7762b25019d9fc871bbd8eff422be94af5a667abd18a28e214b4 +size 2935 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/74.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/74.png new file mode 100644 index 0000000000..70f2ceb082 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/74.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:246959de00e7be13a219777bb598096f51473eb6a3f17c9f91ee925c45b86942 +size 3626 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/75.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/75.png new file mode 100644 index 0000000000..35f9c6b7b4 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/75.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77f4cd2f765e7762b25019d9fc871bbd8eff422be94af5a667abd18a28e214b4 +size 2935 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/76.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/76.png new file mode 100644 index 0000000000..ef8ead126d --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/76.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:756f131b5d045ec4b9ce1d0a4d6e63ae5fe5041d5d6f2aa7b120181f2f8aa27e +size 2939 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/77.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/77.png new file mode 100644 index 0000000000..3b5b677fe8 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/77.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de9d5e84bf261a0209265453b6aa1bdeb9df33cbe04987b56e799e5aa26dec02 +size 2956 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/78.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/78.png new file mode 100644 index 0000000000..66fb4fac43 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/78.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22e98986545caa160fe2cd871f91b36e39f4a0376c8c29591ddaa109d4f8a9b3 +size 2944 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/79.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/79.png new file mode 100644 index 0000000000..a237d00222 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/79.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71795a1b3a9cb02c34c54a3236d5e888951aff5b2334d555b2ee159e61704007 +size 2950 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/80.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/80.png new file mode 100644 index 0000000000..a84b576841 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/80.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f114078df51c5156f234fd87f34cfd15cf75701f4071698e31b351a34d4b315b +size 2938 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/81.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/81.png new file mode 100644 index 0000000000..2cefdfa1b2 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/81.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c02af983a1a3404fd47980c2ab6f62fdb41af413e72ab5f14c1ff66693ce0cdc +size 2950 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/82.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/82.png new file mode 100644 index 0000000000..3ceb941d41 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/82.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f2cff244004843869e21c27b073cae70c20c1a4668fb8f3f6789ad2296a3fd2 +size 4231 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/83.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/83.png new file mode 100644 index 0000000000..e9205c8d8e --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/83.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f174eea88b36c58c444bb52aca5f86e358615074e12500b00625409a8b3a849 +size 4217 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/84.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/84.png new file mode 100644 index 0000000000..755b8df700 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/84.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f6cdee87fd32dfb2c791c30f1d196dcc397d8b846fc3e7427f0c42d2d51bb4d +size 4347 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/85.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/85.png new file mode 100644 index 0000000000..daa60002ae --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/85.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8975890483e6c9df538992899c65965abdccb821e7ed1de7becc120a494a6bd1 +size 4338 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/86.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/86.png new file mode 100644 index 0000000000..dc86c5b45d --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/86.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9638dd90c863c4beea5ce477bfeb43ebab047b3eea6c8502bd697628a67837a0 +size 4336 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/87.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/87.png new file mode 100644 index 0000000000..ac46b3d3f7 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/87.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eadc2958b0ce324e230b519bb5dc9ea794f55939e8067e4152b341b539206a4a +size 4332 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/88.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/88.png new file mode 100644 index 0000000000..b20527d458 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/88.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f02f99250c1db0528dc1a963220f74a3d5959de74760b9d66c2473061398b26 +size 4334 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/89.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/89.png new file mode 100644 index 0000000000..b56cfad41c --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/89.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60898d0e2249341d3e6eff975a3210ef84cd08324114b465c0a829af887c2bd7 +size 4338 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/90.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/90.png new file mode 100644 index 0000000000..bf2fc5c41a --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/90.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70c61c8079696dff7950b0a21148b3099b48b75c77e39961e3465f8fcd4f1454 +size 4338 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/91.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/91.png new file mode 100644 index 0000000000..75fbaffd6d --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/91.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45db3b50db0124ae7b96b406c458d5e0ed0a0f79b8630666684cfe1fc60def34 +size 4351 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/92.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/92.png new file mode 100644 index 0000000000..6576055286 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/92.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:755e602cc4e468d369513cbf34aacc8230066c4d4512d47a4552aeb7d5b88526 +size 4371 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/93.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/93.png new file mode 100644 index 0000000000..6e35336f7a --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/93.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce8999857d1f6c93d124e874a340109da1b72c555a50b3aef49d7ba62c1659cf +size 2953 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/94.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/94.png new file mode 100644 index 0000000000..77ae30b0c6 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/94.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d958f3dc09d422da9aed5cad593d377628831ff9de5aeb7585ebfcebde0d805 +size 2954 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/95.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/95.png new file mode 100644 index 0000000000..74a45d319c --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/95.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a803d68a3c38db135f936cd46b70899da187c38d5d3ba840ffeb26fbdbdfca67 +size 2906 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/96.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/96.png new file mode 100644 index 0000000000..58fa65a082 --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/96.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c6d2ac82f55fe8bd7cfca502d1895c416ba4da10d97ab35c7cb9d6ba742c23d +size 2856 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/97.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/97.png new file mode 100644 index 0000000000..38b32593ab --- /dev/null +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/97.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe38a57d81138107fd41613db2e839b7815e6bda2ad7119e817794254853337a +size 2822 diff --git a/tests/Images/Input/Gif/issues/issue_2198.gif b/tests/Images/Input/Gif/issues/issue_2198.gif new file mode 100644 index 0000000000..4f9375a4b3 --- /dev/null +++ b/tests/Images/Input/Gif/issues/issue_2198.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48bd8a2992c3aeda920250effb53d4e9aef09c76dc5d0c5fade545ec5ba522a4 +size 1863378 diff --git a/tests/Images/Input/Gif/issues/issue_2450.gif b/tests/Images/Input/Gif/issues/issue_2450.gif new file mode 100644 index 0000000000..7e85e2dad1 --- /dev/null +++ b/tests/Images/Input/Gif/issues/issue_2450.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de38adf0b7347862db03ef10f17df231e2985e6f0bfa2eb824d9bbca007ff04e +size 4107068 diff --git a/tests/Images/Input/Gif/issues/issue_2450_2.gif b/tests/Images/Input/Gif/issues/issue_2450_2.gif new file mode 100644 index 0000000000..42c95fa329 --- /dev/null +++ b/tests/Images/Input/Gif/issues/issue_2450_2.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af7c04d8a5db464be782aba904ad1fc6168d5ab196fef84314b1e2f6d703e923 +size 29995 From e307da5c45dd9312f23146e21fe33fd90fc9042d Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 30 Jun 2023 08:55:23 +1000 Subject: [PATCH 07/18] Update SimdUtils.HwIntrinsics.cs --- src/ImageSharp/Common/Helpers/SimdUtils.HwIntrinsics.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ImageSharp/Common/Helpers/SimdUtils.HwIntrinsics.cs b/src/ImageSharp/Common/Helpers/SimdUtils.HwIntrinsics.cs index 5c0902f052..7caaa5868d 100644 --- a/src/ImageSharp/Common/Helpers/SimdUtils.HwIntrinsics.cs +++ b/src/ImageSharp/Common/Helpers/SimdUtils.HwIntrinsics.cs @@ -640,7 +640,7 @@ public static Vector256 MultiplyAddNegated( /// The mask vector. /// The . [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector128 BlendVariable(in Vector128 left, in Vector128 right, in Vector128 mask) + public static Vector128 BlendVariable(Vector128 left, Vector128 right, Vector128 mask) { if (Sse41.IsSupported) { From 4f6a53c2b2aba2a09ae5669e489624785f565450 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 30 Jun 2023 09:03:43 +1000 Subject: [PATCH 08/18] Compare to zero --- src/ImageSharp/Formats/Gif/GifEncoderCore.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs index c861e2c961..23e6ed094f 100644 --- a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs @@ -583,7 +583,7 @@ private void WriteGraphicalControlExtension(GifFrameMetadata? metadata, int tran if (metadata is null) { metadata = new(); - hasTransparency = transparencyIndex > -1; + hasTransparency = transparencyIndex >= 0; } else { From a29b5fc9a28247c1129f156a15baccc05017a199 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 5 Jul 2023 23:21:27 +1000 Subject: [PATCH 09/18] Trim buffer to minimum region. --- src/ImageSharp/Formats/Gif/GifEncoderCore.cs | 76 ++++++++++++++------ src/ImageSharp/Formats/Gif/LzwEncoder.cs | 4 +- 2 files changed, 58 insertions(+), 22 deletions(-) diff --git a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs index 23e6ed094f..45819b751a 100644 --- a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs @@ -291,20 +291,20 @@ private void EncodeFrame( this.WriteGraphicalControlExtension(metadata, transparencyIndex, stream); - // TODO: Consider an optimization that trims down the buffer to the minimum size required. - // We would use a process similar to entropy crop where we trim the buffer from the edges - // until we hit a non-transparent pixel. - this.WriteImageDescriptor(frame, useLocal, stream); + // Assign the correct buffer to compress. + // If we are using a local palette or it's the first run then we want to use the quantized frame. + Buffer2D buffer = useLocal || frameIndex == 0 ? ((IPixelSource)quantized).PixelBuffer : indices; + + // Trim down the buffer to the minimum size required. + Buffer2DRegion region = TrimTransparentPixels(buffer, transparencyIndex); + this.WriteImageDescriptor(region.Rectangle, useLocal, stream); if (useLocal) { this.WriteColorTable(quantized, stream); } - // Assign the correct buffer to compress. - // If we are using a local palette or it's the first run then we want to use the quantized frame. - Buffer2D buffer = useLocal || frameIndex == 0 ? ((IPixelSource)quantized).PixelBuffer : indices; - this.WriteImageData(buffer, stream); + this.WriteImageData(region, stream); // Swap the buffers. (quantized, previousQuantized) = (previousQuantized, quantized); @@ -386,6 +386,44 @@ private static void DeDuplicatePixels( } } + private static Buffer2DRegion TrimTransparentPixels(Buffer2D buffer, int transparencyIndex) + { + if (transparencyIndex < 0) + { + return buffer.GetRegion(); + } + + byte trimmableIndex = unchecked((byte)transparencyIndex); + + int top = int.MaxValue; + int bottom = int.MinValue; + int left = int.MaxValue; + int right = int.MinValue; + + for (int y = 0; y < buffer.Height; y++) + { + Span rowSpan = buffer.DangerousGetRowSpan(y); + for (int x = 0; x < rowSpan.Length; x++) + { + if (rowSpan[x] != trimmableIndex) + { + top = Math.Min(top, y); + bottom = Math.Max(bottom, y); + left = Math.Min(left, x); + right = Math.Max(right, x); + } + } + } + + if (top == int.MaxValue || bottom == int.MinValue) + { + // No valid rectangle found + return buffer.GetRegion(); + } + + return buffer.GetRegion(Rectangle.FromLTRB(left, top, right, bottom)); + } + /// /// Returns the index of the most transparent color in the palette. /// @@ -619,7 +657,7 @@ private void WriteExtension(TGifExtension extension, Stream strea } IMemoryOwner? owner = null; - Span extensionBuffer = stackalloc byte[0]; // workaround compiler limitation + Span extensionBuffer = stackalloc byte[0]; // workaround compiler limitation if (extensionSize > 128) { owner = this.memoryAllocator.Allocate(extensionSize + 3); @@ -642,14 +680,12 @@ private void WriteExtension(TGifExtension extension, Stream strea } /// - /// Writes the image descriptor to the stream. + /// Writes the image frame descriptor to the stream. /// - /// The pixel format. - /// The to be encoded. + /// The frame location and size. /// Whether to use the global color table. /// The stream to write to. - private void WriteImageDescriptor(ImageFrame image, bool hasColorTable, Stream stream) - where TPixel : unmanaged, IPixel + private void WriteImageDescriptor(Rectangle rectangle, bool hasColorTable, Stream stream) { byte packedValue = GifImageDescriptor.GetPackedValue( localColorTableFlag: hasColorTable, @@ -658,10 +694,10 @@ private void WriteImageDescriptor(ImageFrame image, bool hasColo localColorTableSize: this.bitDepth - 1); GifImageDescriptor descriptor = new( - left: 0, - top: 0, - width: (ushort)image.Width, - height: (ushort)image.Height, + left: (ushort)rectangle.X, + top: (ushort)rectangle.Y, + width: (ushort)rectangle.Width, + height: (ushort)rectangle.Height, packed: packedValue); Span buffer = stackalloc byte[20]; @@ -697,9 +733,9 @@ private void WriteColorTable(IndexedImageFrame image, Stream str /// /// Writes the image pixel data to the stream. /// - /// The containing indexed pixels. + /// The containing indexed pixels. /// The stream to write to. - private void WriteImageData(Buffer2D indices, Stream stream) + private void WriteImageData(Buffer2DRegion indices, Stream stream) { using LzwEncoder encoder = new(this.memoryAllocator, (byte)this.bitDepth); encoder.Encode(indices, stream); diff --git a/src/ImageSharp/Formats/Gif/LzwEncoder.cs b/src/ImageSharp/Formats/Gif/LzwEncoder.cs index 5253c0978a..4b40c44e45 100644 --- a/src/ImageSharp/Formats/Gif/LzwEncoder.cs +++ b/src/ImageSharp/Formats/Gif/LzwEncoder.cs @@ -186,7 +186,7 @@ public LzwEncoder(MemoryAllocator memoryAllocator, int colorDepth) /// /// The 2D buffer of indexed pixels. /// The stream to write to. - public void Encode(Buffer2D indexedPixels, Stream stream) + public void Encode(Buffer2DRegion indexedPixels, Stream stream) { // Write "initial code size" byte stream.WriteByte((byte)this.initialCodeSize); @@ -249,7 +249,7 @@ private void ClearBlock(Stream stream) /// The 2D buffer of indexed pixels. /// The initial bits. /// The stream to write to. - private void Compress(Buffer2D indexedPixels, int initialBits, Stream stream) + private void Compress(Buffer2DRegion indexedPixels, int initialBits, Stream stream) { // Set up the globals: globalInitialBits - initial number of bits this.globalInitialBits = initialBits; From 98ed0f10701ae8650e33d2daf0d024c44aecfa43 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Sun, 9 Jul 2023 21:17:26 +1000 Subject: [PATCH 10/18] Refactor and fix gif encoder --- src/ImageSharp/Color/Color.Conversions.cs | 4 +- src/ImageSharp/Formats/Gif/GifEncoderCore.cs | 475 ++++++++++-------- src/ImageSharp/ImageFrame{TPixel}.cs | 10 + .../Quantization/EuclideanPixelMap{TPixel}.cs | 55 +- .../Quantization/PaletteQuantizer.cs | 15 +- .../Quantization/PaletteQuantizer{TPixel}.cs | 17 +- .../Formats/Gif/GifEncoderTests.cs | 2 +- 7 files changed, 366 insertions(+), 212 deletions(-) diff --git a/src/ImageSharp/Color/Color.Conversions.cs b/src/ImageSharp/Color/Color.Conversions.cs index bbb848867d..309ab83ec4 100644 --- a/src/ImageSharp/Color/Color.Conversions.cs +++ b/src/ImageSharp/Color/Color.Conversions.cs @@ -139,7 +139,7 @@ public Color(Vector4 vector) /// /// The . /// The . - public static explicit operator Vector4(Color color) => color.ToVector4(); + public static explicit operator Vector4(Color color) => color.ToScaledVector4(); /// /// Converts an to . @@ -228,7 +228,7 @@ internal Bgr24 ToBgr24() } [MethodImpl(InliningOptions.ShortMethod)] - internal Vector4 ToVector4() + internal Vector4 ToScaledVector4() { if (this.boxedHighPrecisionPixel is null) { diff --git a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs index 45819b751a..4ea3795d7a 100644 --- a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs @@ -2,10 +2,10 @@ // Licensed under the Six Labors Split License. using System.Buffers; +using System.Numerics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Intrinsics; -using System.Runtime.Intrinsics.Arm; using System.Runtime.Intrinsics.X86; using SixLabors.ImageSharp.Advanced; using SixLabors.ImageSharp.Memory; @@ -52,11 +52,6 @@ internal sealed class GifEncoderCore : IImageEncoderInternals /// private GifColorTableMode? colorTableMode; - /// - /// The number of bits requires to store the color palette. - /// - private int bitDepth; - /// /// The pixel sampling strategy for global quantization. /// @@ -65,7 +60,7 @@ internal sealed class GifEncoderCore : IImageEncoderInternals /// /// Initializes a new instance of the class. /// - /// The configuration which allows altering default behaviour or extending the library. + /// The configuration which allows altering default behavior or extending the library. /// The encoder with options. public GifEncoderCore(Configuration configuration, GifEncoder encoder) { @@ -96,8 +91,13 @@ public void Encode(Image image, Stream stream, CancellationToken this.colorTableMode ??= gifMetadata.ColorTableMode; bool useGlobalTable = this.colorTableMode == GifColorTableMode.Global; - // Quantize the image returning a palette. - IndexedImageFrame? quantized; + // Quantize the first image frame returning a palette. + IndexedImageFrame? quantized = null; + + // Work out if there is an explicit transparent index set for the frame. We use that to ensure the + // correct value is set for the background index when quantizing. + image.Frames.RootFrame.Metadata.TryGetGifMetadata(out GifFrameMetadata? frameMetadata); + int transparencyIndex = GetTransparentIndex(quantized, frameMetadata); if (this.quantizer is null) { @@ -105,7 +105,7 @@ public void Encode(Image image, Stream stream, CancellationToken if (gifMetadata.ColorTableMode == GifColorTableMode.Global && gifMetadata.GlobalColorTable?.Length > 0) { // We avoid dithering by default to preserve the original colors. - this.quantizer = new PaletteQuantizer(gifMetadata.GlobalColorTable.Value, new() { Dither = null }); + this.quantizer = new PaletteQuantizer(gifMetadata.GlobalColorTable.Value, new() { Dither = null }, transparencyIndex); } else { @@ -127,27 +127,24 @@ public void Encode(Image image, Stream stream, CancellationToken } } - // Get the number of bits. - this.bitDepth = ColorNumerics.GetBitsNeededForColorDepth(quantized.Palette.Length); - // Write the header. WriteHeader(stream); // Write the LSD. - image.Frames.RootFrame.Metadata.TryGetGifMetadata(out GifFrameMetadata? frameMetadata); - - int transparentIndex = GetTransparentIndex(quantized, frameMetadata); - byte backgroundIndex = unchecked((byte)transparentIndex); - if (transparentIndex == -1) + transparencyIndex = GetTransparentIndex(quantized, frameMetadata); + byte backgroundIndex = unchecked((byte)transparencyIndex); + if (transparencyIndex == -1) { backgroundIndex = gifMetadata.BackgroundColor; } - this.WriteLogicalScreenDescriptor(metadata, image.Width, image.Height, backgroundIndex, useGlobalTable, stream); + // Get the number of bits. + int bitDepth = ColorNumerics.GetBitsNeededForColorDepth(quantized.Palette.Length); + this.WriteLogicalScreenDescriptor(metadata, image.Width, image.Height, backgroundIndex, useGlobalTable, bitDepth, stream); if (useGlobalTable) { - this.WriteColorTable(quantized, stream); + this.WriteColorTable(quantized, bitDepth, stream); } if (!this.skipMetadata) @@ -160,67 +157,69 @@ public void Encode(Image image, Stream stream, CancellationToken this.WriteApplicationExtensions(stream, image.Frames.Count, gifMetadata.RepeatCount, xmpProfile); } - this.EncodeFrames(stream, image, backgroundIndex, quantized, quantized.Palette.ToArray()); + this.EncodeFirstFrame(stream, frameMetadata, quantized, transparencyIndex); + + // Capture the global palette for reuse on subsequent frames and cleanup the quantized frame. + TPixel[] globalPalette = image.Frames.Count == 1 ? Array.Empty() : quantized.Palette.ToArray(); + + quantized.Dispose(); + + this.EncodeAdditionalFrames(stream, image, globalPalette); stream.WriteByte(GifConstants.EndIntroducer); } - private void EncodeFrames( + private void EncodeAdditionalFrames( Stream stream, Image image, - byte backgroundIndex, - IndexedImageFrame quantized, - ReadOnlyMemory palette) + ReadOnlyMemory globalPalette) where TPixel : unmanaged, IPixel { + if (image.Frames.Count == 1) + { + return; + } + PaletteQuantizer paletteQuantizer = default; bool hasPaletteQuantizer = false; - // Create a buffer to store de-duplicated pixel indices for encoding. - // These are used when the color table is global but we must always allocate since we don't know - // in advance whether the frames will use a local palette. - Buffer2D indices = this.memoryAllocator.Allocate2D(image.Width, image.Height); - // Store the first frame as a reference for de-duplication comparison. - IndexedImageFrame previousQuantized = quantized; - for (int i = 0; i < image.Frames.Count; i++) + ImageFrame previousFrame = image.Frames.RootFrame; + + // This frame is reused to store de-duplicated pixel buffers. + // This is more expensive memory-wise than de-duplicating indexed buffer but allows us to deduplicate + // frames using both local and global palettes. + using ImageFrame encodingFrame = new(previousFrame.GetConfiguration(), previousFrame.Size()); + + for (int i = 1; i < image.Frames.Count; i++) { // Gather the metadata for this frame. - ImageFrame frame = image.Frames[i]; - ImageFrameMetadata metadata = frame.Metadata; - bool hasMetadata = metadata.TryGetGifMetadata(out GifFrameMetadata? frameMetadata); - bool useLocal = this.colorTableMode == GifColorTableMode.Local || (hasMetadata && frameMetadata!.ColorTableMode == GifColorTableMode.Local); + ImageFrame currentFrame = image.Frames[i]; + ImageFrameMetadata metadata = currentFrame.Metadata; + metadata.TryGetGifMetadata(out GifFrameMetadata? gifMetadata); + bool useLocal = this.colorTableMode == GifColorTableMode.Local || (gifMetadata?.ColorTableMode == GifColorTableMode.Local); if (!useLocal && !hasPaletteQuantizer && i > 0) { - // The palette quantizer can reuse the same pixel map across multiple frames - // since the palette is unchanging. This allows a reduction of memory usage across - // multi frame gifs using a global palette. + // The palette quantizer can reuse the same global pixel map across multiple frames since the palette is unchanging. + // This allows a reduction of memory usage across multi-frame gifs using a global palette + // and also allows use to reuse the cache from previous runs. + int transparencyIndex = gifMetadata?.HasTransparency == true ? gifMetadata.TransparencyIndex : -1; + paletteQuantizer = new(this.configuration, this.quantizer!.Options, globalPalette, transparencyIndex); hasPaletteQuantizer = true; - paletteQuantizer = new(this.configuration, this.quantizer!.Options, palette); } - this.EncodeFrame( + this.EncodeAdditionalFrame( stream, - frame, - i, + previousFrame, + currentFrame, + encodingFrame, useLocal, - frameMetadata, - indices, - backgroundIndex, - ref previousQuantized, - ref quantized!, - ref paletteQuantizer); - - // Clean up for the next run. - if (quantized != previousQuantized) - { - quantized.Dispose(); - } - } + gifMetadata, + paletteQuantizer); - previousQuantized.Dispose(); - indices.Dispose(); + previousFrame = currentFrame; + } if (hasPaletteQuantizer) { @@ -228,161 +227,175 @@ private void EncodeFrames( } } - private void EncodeFrame( + private void EncodeFirstFrame( Stream stream, - ImageFrame frame, - int frameIndex, + GifFrameMetadata? metadata, + IndexedImageFrame quantized, + int transparencyIndex) + where TPixel : unmanaged, IPixel + { + this.WriteGraphicalControlExtension(metadata, transparencyIndex, stream); + + Buffer2DRegion region = ((IPixelSource)quantized).PixelBuffer.GetRegion(); + bool useLocal = this.colorTableMode == GifColorTableMode.Local || (metadata?.ColorTableMode == GifColorTableMode.Local); + int bitDepth = ColorNumerics.GetBitsNeededForColorDepth(quantized.Palette.Length); + + this.WriteImageDescriptor(region.Rectangle, useLocal, bitDepth, stream); + + if (useLocal) + { + this.WriteColorTable(quantized, bitDepth, stream); + } + + this.WriteImageData(region, stream, quantized.Palette.Length, transparencyIndex); + } + + private void EncodeAdditionalFrame( + Stream stream, + ImageFrame previousFrame, + ImageFrame currentFrame, + ImageFrame encodingFrame, bool useLocal, GifFrameMetadata? metadata, - Buffer2D indices, - byte backgroundIndex, - ref IndexedImageFrame previousQuantized, - ref IndexedImageFrame quantized, - ref PaletteQuantizer globalPaletteQuantizer) + PaletteQuantizer globalPaletteQuantizer) where TPixel : unmanaged, IPixel { - // The first frame has already been quantized so we do not need to do so again. - int transparencyIndex = -1; - if (frameIndex > 0) + // Capture any explicit transparency index from the metadata. + // We use it to determine the value to use to replace duplicate pixels. + int transparencyIndex = metadata?.HasTransparency == true ? metadata.TransparencyIndex : -1; + Vector4 replacement = Vector4.Zero; + if (transparencyIndex >= 0) { if (useLocal) { - // Reassign using the current frame and details. if (metadata?.LocalColorTable?.Length > 0) { - // We can use the color data from the decoded metadata here. - // We avoid dithering by default to preserve the original colors. - PaletteQuantizer localQuantizer = new(metadata.LocalColorTable.Value, new() { Dither = null }); - using IQuantizer frameQuantizer = localQuantizer.CreatePixelSpecificQuantizer(this.configuration, localQuantizer.Options); - quantized = frameQuantizer.BuildPaletteAndQuantizeFrame(frame, frame.Bounds()); - } - else - { - // We must quantize the frame to generate a local color table. - IQuantizer localQuantizer = this.hasQuantizer ? this.quantizer! : KnownQuantizers.Octree; - using IQuantizer frameQuantizer = localQuantizer.CreatePixelSpecificQuantizer(this.configuration, localQuantizer.Options); - quantized = frameQuantizer.BuildPaletteAndQuantizeFrame(frame, frame.Bounds()); + ReadOnlySpan palette = metadata.LocalColorTable.Value.Span; + if (transparencyIndex < palette.Length) + { + replacement = palette[transparencyIndex].ToScaledVector4(); + } } } else { - // Quantize the image using the global palette. - quantized = globalPaletteQuantizer.QuantizeFrame(frame, frame.Bounds()); - transparencyIndex = GetTransparentIndex(quantized, metadata); - - byte replacementIndex = unchecked((byte)transparencyIndex); - if (transparencyIndex == -1) + ReadOnlySpan palette = globalPaletteQuantizer.Palette.Span; + if (transparencyIndex < palette.Length) { - replacementIndex = backgroundIndex; + replacement = palette[transparencyIndex].ToScaledVector4(); } - - // De-duplicate pixels comparing to the previous frame. - // Only global is supported for now as the color palettes as the operation required to compare - // and offset the index lookups is too expensive for local palettes. - DeDuplicatePixels(previousQuantized, quantized, indices, replacementIndex); } + } + + this.DeDuplicatePixels(previousFrame, currentFrame, encodingFrame, replacement); - this.bitDepth = ColorNumerics.GetBitsNeededForColorDepth(quantized.Palette.Length); + IndexedImageFrame quantized; + if (useLocal) + { + // Reassign using the current frame and details. + if (metadata?.LocalColorTable?.Length > 0) + { + // We can use the color data from the decoded metadata here. + // We avoid dithering by default to preserve the original colors. + ReadOnlyMemory palette = metadata.LocalColorTable.Value; + PaletteQuantizer quantizer = new(palette, new() { Dither = null }, transparencyIndex); + using IQuantizer frameQuantizer = quantizer.CreatePixelSpecificQuantizer(this.configuration, quantizer.Options); + quantized = frameQuantizer.BuildPaletteAndQuantizeFrame(encodingFrame, encodingFrame.Bounds()); + } + else + { + // We must quantize the frame to generate a local color table. + IQuantizer quantizer = this.hasQuantizer ? this.quantizer! : KnownQuantizers.Octree; + using IQuantizer frameQuantizer = quantizer.CreatePixelSpecificQuantizer(this.configuration, quantizer.Options); + quantized = frameQuantizer.BuildPaletteAndQuantizeFrame(encodingFrame, encodingFrame.Bounds()); + } } else { - transparencyIndex = GetTransparentIndex(quantized, metadata); + // Quantize the image using the global palette. + // Individual frames, though using the shared palette, can use a different transparent index to represent transparency. + globalPaletteQuantizer.SetTransparentIndex(transparencyIndex); + quantized = globalPaletteQuantizer.QuantizeFrame(encodingFrame, encodingFrame.Bounds()); } - this.WriteGraphicalControlExtension(metadata, transparencyIndex, stream); - - // Assign the correct buffer to compress. - // If we are using a local palette or it's the first run then we want to use the quantized frame. - Buffer2D buffer = useLocal || frameIndex == 0 ? ((IPixelSource)quantized).PixelBuffer : indices; + // Recalculate the transparency index as depending on the quantizer used could have a new value. + transparencyIndex = GetTransparentIndex(quantized, metadata); // Trim down the buffer to the minimum size required. - Buffer2DRegion region = TrimTransparentPixels(buffer, transparencyIndex); - this.WriteImageDescriptor(region.Rectangle, useLocal, stream); + // Buffer2DRegion region = ((IPixelSource)quantized).PixelBuffer.GetRegion(); + Buffer2DRegion region = TrimTransparentPixels(((IPixelSource)quantized).PixelBuffer, transparencyIndex); + + this.WriteGraphicalControlExtension(metadata, transparencyIndex, stream); + + int bitDepth = ColorNumerics.GetBitsNeededForColorDepth(quantized.Palette.Length); + this.WriteImageDescriptor(region.Rectangle, useLocal, bitDepth, stream); if (useLocal) { - this.WriteColorTable(quantized, stream); + this.WriteColorTable(quantized, bitDepth, stream); } - this.WriteImageData(region, stream); - - // Swap the buffers. - (quantized, previousQuantized) = (previousQuantized, quantized); + this.WriteImageData(region, stream, quantized.Palette.Length, transparencyIndex); } - private static void DeDuplicatePixels( - IndexedImageFrame background, - IndexedImageFrame source, - Buffer2D indices, - byte replacementIndex) + private void DeDuplicatePixels( + ImageFrame backgroundFrame, + ImageFrame sourceFrame, + ImageFrame resultFrame, + Vector4 replacement) where TPixel : unmanaged, IPixel { - for (int y = 0; y < background.Height; y++) + IMemoryOwner buffers = this.memoryAllocator.Allocate(backgroundFrame.Width * 3); + Span background = buffers.GetSpan()[..backgroundFrame.Width]; + Span source = buffers.GetSpan()[backgroundFrame.Width..]; + Span result = buffers.GetSpan()[(backgroundFrame.Width * 2)..]; + + // TODO: This algorithm is greedy and will always replace matching colors, however, theoretically, if the proceeding color + // is the same, but not replaced, you would actually be better of not replacing it since longer runs compress better. + // This would require a more complex algorithm. + for (int y = 0; y < backgroundFrame.Height; y++) { - ref byte backgroundRowBase = ref MemoryMarshal.GetReference(background.DangerousGetRowSpan(y)); - ref byte sourceRowBase = ref MemoryMarshal.GetReference(source.DangerousGetRowSpan(y)); - ref byte indicesRowBase = ref MemoryMarshal.GetReference(indices.DangerousGetRowSpan(y)); + PixelOperations.Instance.ToVector4(this.configuration, backgroundFrame.DangerousGetPixelRowMemory(y).Span, background, PixelConversionModifiers.Scale); + PixelOperations.Instance.ToVector4(this.configuration, sourceFrame.DangerousGetPixelRowMemory(y).Span, source, PixelConversionModifiers.Scale); + + ref Vector256 backgroundBase = ref Unsafe.As>(ref MemoryMarshal.GetReference(background)); + ref Vector256 sourceBase = ref Unsafe.As>(ref MemoryMarshal.GetReference(source)); + ref Vector256 resultBase = ref Unsafe.As>(ref MemoryMarshal.GetReference(result)); uint x = 0; - if (Avx2.IsSupported) + int remaining = background.Length; + if (Avx.IsSupported && remaining >= 2) { - int remaining = background.Width; - Vector256 transparentVector = Vector256.Create(replacementIndex); - while (remaining >= Vector256.Count) - { - Vector256 b = Unsafe.ReadUnaligned>(ref Unsafe.Add(ref backgroundRowBase, x)); - Vector256 s = Unsafe.ReadUnaligned>(ref Unsafe.Add(ref sourceRowBase, x)); - Vector256 m = Avx2.CompareEqual(b, s); - Vector256 i = Avx2.BlendVariable(s, transparentVector, m); - - Unsafe.WriteUnaligned(ref Unsafe.Add(ref indicesRowBase, x), i); + Vector256 replacement256 = Vector256.Create(replacement.X, replacement.Y, replacement.Z, replacement.W, replacement.X, replacement.Y, replacement.Z, replacement.W); - x += (uint)Vector256.Count; - remaining -= Vector256.Count; - } - } - else if (Sse2.IsSupported) - { - int remaining = background.Width; - Vector128 transparentVector = Vector128.Create(replacementIndex); - while (remaining >= Vector128.Count) + while (remaining >= 2) { - Vector128 b = Unsafe.ReadUnaligned>(ref Unsafe.Add(ref backgroundRowBase, x)); - Vector128 s = Unsafe.ReadUnaligned>(ref Unsafe.Add(ref sourceRowBase, x)); - Vector128 m = Sse2.CompareEqual(b, s); - Vector128 i = SimdUtils.HwIntrinsics.BlendVariable(s, transparentVector, m); + Vector256 b = Unsafe.Add(ref backgroundBase, x); + Vector256 s = Unsafe.Add(ref sourceBase, x); - Unsafe.WriteUnaligned(ref Unsafe.Add(ref indicesRowBase, x), i); + Vector256 m = Avx.CompareEqual(b, s).AsInt32(); - x += (uint)Vector128.Count; - remaining -= Vector128.Count; - } - } - else if (AdvSimd.Arm64.IsSupported) - { - int remaining = background.Width; - Vector128 transparentVector = Vector128.Create(replacementIndex); - while (remaining >= Vector128.Count) - { - Vector128 b = Unsafe.ReadUnaligned>(ref Unsafe.Add(ref backgroundRowBase, x)); - Vector128 s = Unsafe.ReadUnaligned>(ref Unsafe.Add(ref sourceRowBase, x)); - Vector128 m = AdvSimd.CompareEqual(b, s); - Vector128 i = SimdUtils.HwIntrinsics.BlendVariable(s, transparentVector, m); + m = Avx2.HorizontalAdd(m, m); + m = Avx2.HorizontalAdd(m, m); + m = Avx2.CompareEqual(m, Vector256.Create(-4)); - Unsafe.WriteUnaligned(ref Unsafe.Add(ref indicesRowBase, x), i); + Unsafe.Add(ref resultBase, x) = Avx.BlendVariable(s, replacement256, m.AsSingle()); - x += (uint)Vector128.Count; - remaining -= Vector128.Count; + x++; + remaining -= 2; } } - for (; x < (uint)background.Width; x++) + for (int i = remaining; i >= 0; i--) { - byte b = Unsafe.Add(ref backgroundRowBase, x); - byte s = Unsafe.Add(ref sourceRowBase, x); - ref byte i = ref Unsafe.Add(ref indicesRowBase, x); - i = (b == s) ? replacementIndex : s; + x = (uint)i; + Vector4 b = Unsafe.Add(ref Unsafe.As, Vector4>(ref backgroundBase), x); + Vector4 s = Unsafe.Add(ref Unsafe.As, Vector4>(ref sourceBase), x); + ref Vector4 r = ref Unsafe.Add(ref Unsafe.As, Vector4>(ref resultBase), x); + r = (b == s) ? replacement : s; } + + PixelOperations.Instance.FromVector4Destructive(this.configuration, result, resultFrame.DangerousGetPixelRowMemory(y).Span, PixelConversionModifiers.Scale); } } @@ -395,33 +408,85 @@ private static Buffer2DRegion TrimTransparentPixels(Buffer2D buffer, byte trimmableIndex = unchecked((byte)transparencyIndex); - int top = int.MaxValue; - int bottom = int.MinValue; + int top = int.MinValue; + int bottom = int.MaxValue; int left = int.MaxValue; int right = int.MinValue; + // Run through th buffer in a single pass. Use variables to track the min/max values. + int minY = -1; + bool isTransparentRow = true; for (int y = 0; y < buffer.Height; y++) { + isTransparentRow = true; Span rowSpan = buffer.DangerousGetRowSpan(y); + + // TODO: It may be possible to optimize this inner loop using SIMD. for (int x = 0; x < rowSpan.Length; x++) { if (rowSpan[x] != trimmableIndex) { - top = Math.Min(top, y); - bottom = Math.Max(bottom, y); + isTransparentRow = false; left = Math.Min(left, x); right = Math.Max(right, x); } } + + if (!isTransparentRow) + { + if (y == 0) + { + // First row is opaque. + // Capture to prevent over assignment when a match is found below. + top = 0; + } + + // The minimum top bounds have already been captured. + // Increment the bottom to include the current opaque row. + if (minY < 0 && top != 0) + { + // Increment to the first opaque row. + top++; + } + + minY = top; + bottom = y; + } + else + { + // We've yet to hit an opaque row. Capture the top position. + if (minY < 0) + { + top = Math.Max(top, y); + } + + bottom = Math.Min(bottom, y); + } } - if (top == int.MaxValue || bottom == int.MinValue) + if (left == int.MaxValue) { - // No valid rectangle found + left = 0; + } + + if (right == int.MinValue) + { + right = buffer.Width; + } + + if (top == bottom || left == right) + { + // The entire image is transparent. return buffer.GetRegion(); } - return buffer.GetRegion(Rectangle.FromLTRB(left, top, right, bottom)); + if (!isTransparentRow) + { + // Last row is opaque. + bottom = buffer.Height; + } + + return buffer.GetRegion(Rectangle.FromLTRB(left, top, Math.Min(right + 1, buffer.Width), Math.Min(bottom + 1, buffer.Height))); } /// @@ -433,29 +498,29 @@ private static Buffer2DRegion TrimTransparentPixels(Buffer2D buffer, /// /// The . /// - private static int GetTransparentIndex(IndexedImageFrame quantized, GifFrameMetadata? metadata) + private static int GetTransparentIndex(IndexedImageFrame? quantized, GifFrameMetadata? metadata) where TPixel : unmanaged, IPixel { - // Transparent pixels are much more likely to be found at the end of a palette. - int index = -1; - ReadOnlySpan paletteSpan = quantized.Palette.Span; - - using IMemoryOwner rgbaOwner = quantized.Configuration.MemoryAllocator.Allocate(paletteSpan.Length); - Span rgbaSpan = rgbaOwner.GetSpan(); - PixelOperations.Instance.ToRgba32(quantized.Configuration, paletteSpan, rgbaSpan); - ref Rgba32 rgbaSpanRef = ref MemoryMarshal.GetReference(rgbaSpan); - - for (int i = rgbaSpan.Length - 1; i >= 0; i--) + if (metadata?.HasTransparency == true) { - if (Unsafe.Add(ref rgbaSpanRef, (uint)i).Equals(default)) - { - index = i; - } + return metadata.TransparencyIndex; } - if (metadata?.HasTransparency == true && index == -1) + int index = -1; + if (quantized != null) { - index = metadata.TransparencyIndex; + TPixel transparentPixel = default; + transparentPixel.FromScaledVector4(Vector4.Zero); + ReadOnlySpan palette = quantized.Palette.Span; + + // Transparent pixels are much more likely to be found at the end of a palette. + for (int i = palette.Length - 1; i >= 0; i--) + { + if (palette[i].Equals(transparentPixel)) + { + index = i; + } + } } return index; @@ -476,6 +541,7 @@ private static int GetTransparentIndex(IndexedImageFrame quantiz /// The image height. /// The index to set the default background index to. /// Whether to use a global or local color table. + /// The bit depth of the color palette. /// The stream to write to. private void WriteLogicalScreenDescriptor( ImageMetadata metadata, @@ -483,9 +549,10 @@ private void WriteLogicalScreenDescriptor( int height, byte backgroundIndex, bool useGlobalTable, + int bitDepth, Stream stream) { - byte packedValue = GifLogicalScreenDescriptor.GetPackedValue(useGlobalTable, this.bitDepth - 1, false, this.bitDepth - 1); + byte packedValue = GifLogicalScreenDescriptor.GetPackedValue(useGlobalTable, bitDepth - 1, false, bitDepth - 1); // The Pixel Aspect Ratio is defined to be the quotient of the pixel's // width over its height. The value range in this field allows @@ -617,10 +684,11 @@ private static void WriteCommentSubBlock(Stream stream, ReadOnlySpan comme /// The stream to write to. private void WriteGraphicalControlExtension(GifFrameMetadata? metadata, int transparencyIndex, Stream stream) { + GifFrameMetadata? data = metadata; bool hasTransparency; if (metadata is null) { - metadata = new(); + data = new(); hasTransparency = transparencyIndex >= 0; } else @@ -629,12 +697,12 @@ private void WriteGraphicalControlExtension(GifFrameMetadata? metadata, int tran } byte packedValue = GifGraphicControlExtension.GetPackedValue( - disposalMethod: metadata!.DisposalMethod, + disposalMethod: data!.DisposalMethod, transparencyFlag: hasTransparency); GifGraphicControlExtension extension = new( packed: packedValue, - delayTime: (ushort)metadata.FrameDelay, + delayTime: (ushort)data.FrameDelay, transparencyIndex: hasTransparency ? unchecked((byte)transparencyIndex) : byte.MinValue); this.WriteExtension(extension, stream); @@ -684,14 +752,15 @@ private void WriteExtension(TGifExtension extension, Stream strea /// /// The frame location and size. /// Whether to use the global color table. + /// The bit depth of the color palette. /// The stream to write to. - private void WriteImageDescriptor(Rectangle rectangle, bool hasColorTable, Stream stream) + private void WriteImageDescriptor(Rectangle rectangle, bool hasColorTable, int bitDepth, Stream stream) { byte packedValue = GifImageDescriptor.GetPackedValue( localColorTableFlag: hasColorTable, interfaceFlag: false, sortFlag: false, - localColorTableSize: this.bitDepth - 1); + localColorTableSize: bitDepth - 1); GifImageDescriptor descriptor = new( left: (ushort)rectangle.X, @@ -711,12 +780,13 @@ private void WriteImageDescriptor(Rectangle rectangle, bool hasColorTable, Strea /// /// The pixel format. /// The to encode. + /// The bit depth of the color palette. /// The stream to write to. - private void WriteColorTable(IndexedImageFrame image, Stream stream) + private void WriteColorTable(IndexedImageFrame image, int bitDepth, Stream stream) where TPixel : unmanaged, IPixel { // The maximum number of colors for the bit depth - int colorTableLength = ColorNumerics.GetColorCountForBitDepth(this.bitDepth) * Unsafe.SizeOf(); + int colorTableLength = ColorNumerics.GetColorCountForBitDepth(bitDepth) * Unsafe.SizeOf(); using IMemoryOwner colorTable = this.memoryAllocator.Allocate(colorTableLength, AllocationOptions.Clean); Span colorTableSpan = colorTable.GetSpan(); @@ -735,9 +805,18 @@ private void WriteColorTable(IndexedImageFrame image, Stream str /// /// The containing indexed pixels. /// The stream to write to. - private void WriteImageData(Buffer2DRegion indices, Stream stream) + /// The length of the frame color palette. + /// The index of the color used to represent transparency. + private void WriteImageData(Buffer2DRegion indices, Stream stream, int paletteLength, int transparencyIndex) { - using LzwEncoder encoder = new(this.memoryAllocator, (byte)this.bitDepth); + // Pad the bit depth when required for encoding the image data. + // This is a common trick which allows to use out of range indexes for transparency and avoid allocating a larger color palette + // as decoders skip indexes that are out of range. + int padding = transparencyIndex >= paletteLength + ? 1 + : 0; + + using LzwEncoder encoder = new(this.memoryAllocator, ColorNumerics.GetBitsNeededForColorDepth(paletteLength + padding)); encoder.Encode(indices, stream); } } diff --git a/src/ImageSharp/ImageFrame{TPixel}.cs b/src/ImageSharp/ImageFrame{TPixel}.cs index 3734402d30..0e7eef11e9 100644 --- a/src/ImageSharp/ImageFrame{TPixel}.cs +++ b/src/ImageSharp/ImageFrame{TPixel}.cs @@ -21,6 +21,16 @@ public sealed class ImageFrame : ImageFrame, IPixelSource { private bool isDisposed; + /// + /// Initializes a new instance of the class. + /// + /// The configuration which allows altering default behaviour or extending the library. + /// The of the frame. + internal ImageFrame(Configuration configuration, Size size) + : this(configuration, size.Width, size.Height, new ImageFrameMetadata()) + { + } + /// /// Initializes a new instance of the class. /// diff --git a/src/ImageSharp/Processing/Processors/Quantization/EuclideanPixelMap{TPixel}.cs b/src/ImageSharp/Processing/Processors/Quantization/EuclideanPixelMap{TPixel}.cs index 0c6ba7ddc9..e767ac4f74 100644 --- a/src/ImageSharp/Processing/Processors/Quantization/EuclideanPixelMap{TPixel}.cs +++ b/src/ImageSharp/Processing/Processors/Quantization/EuclideanPixelMap{TPixel}.cs @@ -2,6 +2,7 @@ // Licensed under the Six Labors Split License. using System.Buffers; +using System.Numerics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using SixLabors.ImageSharp.Memory; @@ -14,13 +15,14 @@ namespace SixLabors.ImageSharp.Processing.Processors.Quantization; /// /// The pixel format. /// -/// This class is not threadsafe and should not be accessed in parallel. +/// This class is not thread safe and should not be accessed in parallel. /// Doing so will result in non-idempotent results. /// internal sealed class EuclideanPixelMap : IDisposable where TPixel : unmanaged, IPixel { private Rgba32[] rgbaPalette; + private int transparentIndex; /// /// Do not make this readonly! Struct value would be always copied on non-readonly method calls. @@ -34,12 +36,24 @@ internal sealed class EuclideanPixelMap : IDisposable /// The configuration. /// The color palette to map from. public EuclideanPixelMap(Configuration configuration, ReadOnlyMemory palette) + : this(configuration, palette, -1) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// The configuration. + /// The color palette to map from. + /// An explicit index at which to match transparent pixels. + public EuclideanPixelMap(Configuration configuration, ReadOnlyMemory palette, int transparentIndex = -1) { this.configuration = configuration; this.Palette = palette; this.rgbaPalette = new Rgba32[palette.Length]; this.cache = new ColorDistanceCache(configuration.MemoryAllocator); PixelOperations.Instance.ToRgba32(configuration, this.Palette.Span, this.rgbaPalette); + this.transparentIndex = transparentIndex; } /// @@ -91,16 +105,43 @@ public void Clear(ReadOnlyMemory palette) this.cache.Clear(); } + /// + /// Allows setting the transparent index after construction. + /// + /// An explicit index at which to match transparent pixels. + public void SetTransparentIndex(int index) => this.transparentIndex = index; + [MethodImpl(InliningOptions.ShortMethod)] private int GetClosestColorSlow(Rgba32 rgba, ref TPixel paletteRef, out TPixel match) { // Loop through the palette and find the nearest match. int index = 0; float leastDistance = float.MaxValue; + + if (this.transparentIndex >= 0 && rgba == default) + { + // We have explicit instructions. No need to search. + index = this.transparentIndex; + this.cache.Add(rgba, (byte)index); + + if (index >= 0 && index < this.Palette.Length) + { + match = Unsafe.Add(ref paletteRef, (uint)index); + } + else + { + Unsafe.SkipInit(out TPixel pixel); + pixel.FromScaledVector4(Vector4.Zero); + match = pixel; + } + + return index; + } + for (int i = 0; i < this.rgbaPalette.Length; i++) { Rgba32 candidate = this.rgbaPalette[i]; - int distance = DistanceSquared(rgba, candidate); + float distance = DistanceSquared(rgba, candidate); // If it's an exact match, exit the loop if (distance == 0) @@ -130,12 +171,12 @@ private int GetClosestColorSlow(Rgba32 rgba, ref TPixel paletteRef, out TPixel m /// The second point. /// The distance squared. [MethodImpl(InliningOptions.ShortMethod)] - private static int DistanceSquared(Rgba32 a, Rgba32 b) + private static float DistanceSquared(Rgba32 a, Rgba32 b) { - int deltaR = a.R - b.R; - int deltaG = a.G - b.G; - int deltaB = a.B - b.B; - int deltaA = a.A - b.A; + float deltaR = a.R - b.R; + float deltaG = a.G - b.G; + float deltaB = a.B - b.B; + float deltaA = a.A - b.A; return (deltaR * deltaR) + (deltaG * deltaG) + (deltaB * deltaB) + (deltaA * deltaA); } diff --git a/src/ImageSharp/Processing/Processors/Quantization/PaletteQuantizer.cs b/src/ImageSharp/Processing/Processors/Quantization/PaletteQuantizer.cs index fe4af9005a..acd179ffcc 100644 --- a/src/ImageSharp/Processing/Processors/Quantization/PaletteQuantizer.cs +++ b/src/ImageSharp/Processing/Processors/Quantization/PaletteQuantizer.cs @@ -11,6 +11,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Quantization; public class PaletteQuantizer : IQuantizer { private readonly ReadOnlyMemory colorPalette; + private readonly int transparentIndex; /// /// Initializes a new instance of the class. @@ -27,12 +28,24 @@ public PaletteQuantizer(ReadOnlyMemory palette) /// The color palette. /// The quantizer options defining quantization rules. public PaletteQuantizer(ReadOnlyMemory palette, QuantizerOptions options) + : this(palette, options, -1) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// The color palette. + /// The quantizer options defining quantization rules. + /// An explicit index at which to match transparent pixels. + internal PaletteQuantizer(ReadOnlyMemory palette, QuantizerOptions options, int transparentIndex) { Guard.MustBeGreaterThan(palette.Length, 0, nameof(palette)); Guard.NotNull(options, nameof(options)); this.colorPalette = palette; this.Options = options; + this.transparentIndex = transparentIndex; } /// @@ -52,6 +65,6 @@ public IQuantizer CreatePixelSpecificQuantizer(Configuration con // Always use the palette length over options since the palette cannot be reduced. TPixel[] palette = new TPixel[this.colorPalette.Length]; Color.ToPixel(this.colorPalette.Span, palette.AsSpan()); - return new PaletteQuantizer(configuration, options, palette); + return new PaletteQuantizer(configuration, options, palette, this.transparentIndex); } } diff --git a/src/ImageSharp/Processing/Processors/Quantization/PaletteQuantizer{TPixel}.cs b/src/ImageSharp/Processing/Processors/Quantization/PaletteQuantizer{TPixel}.cs index 86db9f6f01..3df80ea9b7 100644 --- a/src/ImageSharp/Processing/Processors/Quantization/PaletteQuantizer{TPixel}.cs +++ b/src/ImageSharp/Processing/Processors/Quantization/PaletteQuantizer{TPixel}.cs @@ -25,18 +25,23 @@ namespace SixLabors.ImageSharp.Processing.Processors.Quantization; /// /// Initializes a new instance of the struct. /// - /// The configuration which allows altering default behaviour or extending the library. + /// The configuration which allows altering default behavior or extending the library. /// The quantizer options defining quantization rules. /// The palette to use. + /// An explicit index at which to match transparent pixels. [MethodImpl(InliningOptions.ShortMethod)] - public PaletteQuantizer(Configuration configuration, QuantizerOptions options, ReadOnlyMemory palette) + public PaletteQuantizer( + Configuration configuration, + QuantizerOptions options, + ReadOnlyMemory palette, + int transparentIndex) { Guard.NotNull(configuration, nameof(configuration)); Guard.NotNull(options, nameof(options)); this.Configuration = configuration; this.Options = options; - this.pixelMap = new EuclideanPixelMap(configuration, palette); + this.pixelMap = new EuclideanPixelMap(configuration, palette, transparentIndex); } /// @@ -59,6 +64,12 @@ public void AddPaletteColors(Buffer2DRegion pixelRegion) { } + /// + /// Allows setting the transparent index after construction. + /// + /// An explicit index at which to match transparent pixels. + public void SetTransparentIndex(int index) => this.pixelMap.SetTransparentIndex(index); + /// [MethodImpl(InliningOptions.ShortMethod)] public readonly byte GetQuantizedColor(TPixel color, out TPixel match) diff --git a/tests/ImageSharp.Tests/Formats/Gif/GifEncoderTests.cs b/tests/ImageSharp.Tests/Formats/Gif/GifEncoderTests.cs index 43114fa7e9..31001e31b4 100644 --- a/tests/ImageSharp.Tests/Formats/Gif/GifEncoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Gif/GifEncoderTests.cs @@ -38,7 +38,7 @@ public GifEncoderTests() [Theory] [WithTestPatternImages(100, 100, TestPixelTypes, false)] - [WithTestPatternImages(100, 100, TestPixelTypes, false)] + [WithTestPatternImages(100, 100, TestPixelTypes, true)] public void EncodeGeneratedPatterns(TestImageProvider provider, bool limitAllocationBuffer) where TPixel : unmanaged, IPixel { From c3fc06261e1ffb603aadf32662f60a3e74c83d1d Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Sun, 9 Jul 2023 21:39:36 +1000 Subject: [PATCH 11/18] Update src/ImageSharp/Formats/Gif/GifEncoderCore.cs --- src/ImageSharp/Formats/Gif/GifEncoderCore.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs index 4ea3795d7a..2e514ed28e 100644 --- a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs @@ -364,7 +364,7 @@ private void DeDuplicatePixels( uint x = 0; int remaining = background.Length; - if (Avx.IsSupported && remaining >= 2) + if (Axv2.IsSupported && remaining >= 2) { Vector256 replacement256 = Vector256.Create(replacement.X, replacement.Y, replacement.Z, replacement.W, replacement.X, replacement.Y, replacement.Z, replacement.W); From ef08c82dbcc98ead4b967bec988212b392f299f4 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Sun, 9 Jul 2023 21:51:17 +1000 Subject: [PATCH 12/18] Update src/ImageSharp/Formats/Gif/GifEncoderCore.cs --- src/ImageSharp/Formats/Gif/GifEncoderCore.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs index 2e514ed28e..a66bc58960 100644 --- a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs @@ -364,7 +364,7 @@ private void DeDuplicatePixels( uint x = 0; int remaining = background.Length; - if (Axv2.IsSupported && remaining >= 2) + if (Avx2.IsSupported && remaining >= 2) { Vector256 replacement256 = Vector256.Create(replacement.X, replacement.Y, replacement.Z, replacement.W, replacement.X, replacement.Y, replacement.Z, replacement.W); From 5416edb6bcac75e5c099e2f2f8496c8949475e68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnther=20Foidl?= Date: Thu, 27 Jul 2023 21:22:09 +0200 Subject: [PATCH 13/18] Vectorize TrimTransparentPixels in GifEncoderCore --- src/ImageSharp/Formats/Gif/GifEncoderCore.cs | 133 ++++++++++++++++++- 1 file changed, 126 insertions(+), 7 deletions(-) diff --git a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs index a66bc58960..5d18823274 100644 --- a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs @@ -412,23 +412,142 @@ private static Buffer2DRegion TrimTransparentPixels(Buffer2D buffer, int bottom = int.MaxValue; int left = int.MaxValue; int right = int.MinValue; - - // Run through th buffer in a single pass. Use variables to track the min/max values. int minY = -1; bool isTransparentRow = true; + + // Run through the buffer in a single pass. Use variables to track the min/max values. for (int y = 0; y < buffer.Height; y++) { isTransparentRow = true; Span rowSpan = buffer.DangerousGetRowSpan(y); + ref byte rowPtr = ref MemoryMarshal.GetReference(rowSpan); + nint rowLength = (nint)(uint)rowSpan.Length; + nint x = 0; + +#if NET7_0_OR_GREATER + if (Vector128.IsHardwareAccelerated && rowLength >= Vector128.Count) + { + Vector256 trimmableVec256 = Vector256.Create(trimmableIndex); + + if (Vector256.IsHardwareAccelerated && rowLength >= Vector256.Count) + { + do + { + Vector256 vec = Vector256.LoadUnsafe(ref rowPtr, (nuint)x); + Vector256 notEquals = ~Vector256.Equals(vec, trimmableVec256); + + if (notEquals != Vector256.Zero) + { + isTransparentRow = false; + uint mask = notEquals.ExtractMostSignificantBits(); + nint start = x + (nint)uint.TrailingZeroCount(mask); + nint end = (nint)uint.LeadingZeroCount(mask); + + // end is from the end, but we need the index from the beginning + end = x + Vector256.Count - 1 - end; + + left = Math.Min(left, (int)start); + right = Math.Max(right, (int)end); + } + + x += Vector256.Count; + } + while (x <= rowLength - Vector256.Count); + } + + Vector128 trimmableVec = Vector256.IsHardwareAccelerated + ? trimmableVec256.GetLower() + : Vector128.Create(trimmableIndex); + + while (x <= rowLength - Vector128.Count) + { + Vector128 vec = Vector128.LoadUnsafe(ref rowPtr, (nuint)x); + Vector128 notEquals = ~Vector128.Equals(vec, trimmableVec); + + if (notEquals != Vector128.Zero) + { + isTransparentRow = false; + uint mask = notEquals.ExtractMostSignificantBits(); + nint start = x + (nint)uint.TrailingZeroCount(mask); + nint end = (nint)uint.LeadingZeroCount(mask) - Vector128.Count; + + // end is from the end, but we need the index from the beginning + end = x + Vector128.Count - 1 - end; + + left = Math.Min(left, (int)start); + right = Math.Max(right, (int)end); + } + + x += Vector128.Count; + } + } +#else + if (Sse41.IsSupported && rowLength >= Vector128.Count) + { + Vector256 trimmableVec256 = Vector256.Create(trimmableIndex); + + if (Avx2.IsSupported && rowLength >= Vector256.Count) + { + do + { + Vector256 vec = Unsafe.ReadUnaligned>(ref Unsafe.Add(ref rowPtr, x)); + Vector256 notEquals = Avx2.CompareEqual(vec, trimmableVec256); + notEquals = Avx2.Xor(notEquals, Vector256.AllBitsSet); + + if (!Avx.TestZ(notEquals, notEquals)) + { + isTransparentRow = false; + int mask = Avx2.MoveMask(notEquals); + nint start = x + (nint)(uint)BitOperations.TrailingZeroCount(mask); + nint end = (nint)(uint)BitOperations.LeadingZeroCount((uint)mask); + + // end is from the end, but we need the index from the beginning + end = x + Vector256.Count - 1 - end; + + left = Math.Min(left, (int)start); + right = Math.Max(right, (int)end); + } + + x += Vector256.Count; + } + while (x <= rowLength - Vector256.Count); + } + + Vector128 trimmableVec = Sse41.IsSupported + ? trimmableVec256.GetLower() + : Vector128.Create(trimmableIndex); + + while (x <= rowLength - Vector128.Count) + { + Vector128 vec = Unsafe.ReadUnaligned>(ref Unsafe.Add(ref rowPtr, x)); + Vector128 notEquals = Sse2.CompareEqual(vec, trimmableVec); + notEquals = Sse2.Xor(notEquals, Vector128.AllBitsSet); + + if (!Sse41.TestZ(notEquals, notEquals)) + { + isTransparentRow = false; + int mask = Sse2.MoveMask(notEquals); + nint start = x + (nint)(uint)BitOperations.TrailingZeroCount(mask); + nint end = (nint)(uint)BitOperations.LeadingZeroCount((uint)mask) - Vector128.Count; - // TODO: It may be possible to optimize this inner loop using SIMD. - for (int x = 0; x < rowSpan.Length; x++) + // end is from the end, but we need the index from the beginning + end = x + Vector128.Count - 1 - end; + + left = Math.Min(left, (int)start); + right = Math.Max(right, (int)end); + } + + x += Vector128.Count; + } + } +#endif + for (; x < rowLength; ++x) { - if (rowSpan[x] != trimmableIndex) + if (Unsafe.Add(ref rowPtr, x) != trimmableIndex) { isTransparentRow = false; - left = Math.Min(left, x); - right = Math.Max(right, x); + left = Math.Min(left, (int)x); + right = Math.Max(right, (int)x); } } From c8f1f2c89df590e5a8804ddce21c03696fd8b468 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnther=20Foidl?= Date: Thu, 27 Jul 2023 22:26:20 +0200 Subject: [PATCH 14/18] Simplified check if there are any non-equal bytes Hm, I remembered that movemask isn't the fastest, and ptest (TestZ in .NET-terms) is faster but current benchmarks didn't prove this, also Intel's instruction table didn't show any benefit in terms of latency or throughput. Thus simplified that check. --- src/ImageSharp/Formats/Gif/GifEncoderCore.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs index 5d18823274..be08c0da90 100644 --- a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs @@ -435,11 +435,11 @@ private static Buffer2DRegion TrimTransparentPixels(Buffer2D buffer, { Vector256 vec = Vector256.LoadUnsafe(ref rowPtr, (nuint)x); Vector256 notEquals = ~Vector256.Equals(vec, trimmableVec256); + uint mask = notEquals.ExtractMostSignificantBits(); - if (notEquals != Vector256.Zero) + if (mask != 0) { isTransparentRow = false; - uint mask = notEquals.ExtractMostSignificantBits(); nint start = x + (nint)uint.TrailingZeroCount(mask); nint end = (nint)uint.LeadingZeroCount(mask); @@ -463,11 +463,11 @@ private static Buffer2DRegion TrimTransparentPixels(Buffer2D buffer, { Vector128 vec = Vector128.LoadUnsafe(ref rowPtr, (nuint)x); Vector128 notEquals = ~Vector128.Equals(vec, trimmableVec); + uint mask = notEquals.ExtractMostSignificantBits(); - if (notEquals != Vector128.Zero) + if (mask != 0) { isTransparentRow = false; - uint mask = notEquals.ExtractMostSignificantBits(); nint start = x + (nint)uint.TrailingZeroCount(mask); nint end = (nint)uint.LeadingZeroCount(mask) - Vector128.Count; @@ -493,11 +493,11 @@ private static Buffer2DRegion TrimTransparentPixels(Buffer2D buffer, Vector256 vec = Unsafe.ReadUnaligned>(ref Unsafe.Add(ref rowPtr, x)); Vector256 notEquals = Avx2.CompareEqual(vec, trimmableVec256); notEquals = Avx2.Xor(notEquals, Vector256.AllBitsSet); + int mask = Avx2.MoveMask(notEquals); - if (!Avx.TestZ(notEquals, notEquals)) + if (mask != 0) { isTransparentRow = false; - int mask = Avx2.MoveMask(notEquals); nint start = x + (nint)(uint)BitOperations.TrailingZeroCount(mask); nint end = (nint)(uint)BitOperations.LeadingZeroCount((uint)mask); @@ -522,11 +522,11 @@ private static Buffer2DRegion TrimTransparentPixels(Buffer2D buffer, Vector128 vec = Unsafe.ReadUnaligned>(ref Unsafe.Add(ref rowPtr, x)); Vector128 notEquals = Sse2.CompareEqual(vec, trimmableVec); notEquals = Sse2.Xor(notEquals, Vector128.AllBitsSet); + int mask = Sse2.MoveMask(notEquals); - if (!Sse41.TestZ(notEquals, notEquals)) + if (mask != 0) { isTransparentRow = false; - int mask = Sse2.MoveMask(notEquals); nint start = x + (nint)(uint)BitOperations.TrailingZeroCount(mask); nint end = (nint)(uint)BitOperations.LeadingZeroCount((uint)mask) - Vector128.Count; From 4ef363df5d3b165e47d075d81f7300760c4cfc81 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Thu, 10 Aug 2023 20:34:04 +1000 Subject: [PATCH 15/18] Only compare a subset of frames. --- .../Formats/Gif/GifDecoderTests.cs | 7 ++- .../ImageComparison/ImageComparer.cs | 47 ++++++++++++++--- .../TestUtilities/ImagingTestCaseUtility.cs | 50 +++++++++++-------- .../TestUtilities/TestImageExtensions.cs | 34 +++++++------ .../00.png | 4 +- .../01.png | 3 -- .../02.png | 3 -- .../03.png | 3 -- .../04.png | 3 -- .../05.png | 3 -- .../06.png | 3 -- .../07.png | 3 -- .../08.png | 4 +- .../09.png | 3 -- .../10.png | 3 -- .../100.png | 3 -- .../101.png | 3 -- .../102.png | 3 -- .../103.png | 3 -- .../104.png | 4 +- .../105.png | 3 -- .../106.png | 3 -- .../107.png | 3 -- .../108.png | 3 -- .../109.png | 3 -- .../11.png | 3 -- .../110.png | 3 -- .../111.png | 3 -- .../112.png | 4 +- .../113.png | 3 -- .../114.png | 3 -- .../115.png | 3 -- .../116.png | 3 -- .../117.png | 3 -- .../118.png | 3 -- .../119.png | 3 -- .../12.png | 3 -- .../120.png | 4 +- .../121.png | 3 -- .../122.png | 3 -- .../123.png | 3 -- .../124.png | 3 -- .../125.png | 3 -- .../126.png | 3 -- .../127.png | 3 -- .../128.png | 4 +- .../129.png | 3 -- .../13.png | 3 -- .../130.png | 3 -- .../131.png | 3 -- .../132.png | 3 -- .../133.png | 3 -- .../134.png | 3 -- .../135.png | 3 -- .../136.png | 4 +- .../137.png | 3 -- .../138.png | 3 -- .../139.png | 3 -- .../14.png | 3 -- .../140.png | 3 -- .../141.png | 3 -- .../142.png | 3 -- .../143.png | 3 -- .../144.png | 4 +- .../145.png | 3 -- .../146.png | 3 -- .../147.png | 3 -- .../148.png | 3 -- .../149.png | 3 -- .../15.png | 3 -- .../150.png | 3 -- .../151.png | 3 -- .../152.png | 4 +- .../153.png | 3 -- .../154.png | 3 -- .../155.png | 3 -- .../156.png | 3 -- .../16.png | 4 +- .../17.png | 3 -- .../18.png | 3 -- .../19.png | 3 -- .../20.png | 3 -- .../21.png | 3 -- .../22.png | 3 -- .../23.png | 3 -- .../24.png | 4 +- .../25.png | 3 -- .../26.png | 3 -- .../27.png | 3 -- .../28.png | 3 -- .../29.png | 3 -- .../30.png | 3 -- .../31.png | 3 -- .../32.png | 4 +- .../33.png | 3 -- .../34.png | 3 -- .../35.png | 3 -- .../36.png | 3 -- .../37.png | 3 -- .../38.png | 3 -- .../39.png | 3 -- .../40.png | 4 +- .../41.png | 3 -- .../42.png | 3 -- .../43.png | 3 -- .../44.png | 3 -- .../45.png | 3 -- .../46.png | 3 -- .../47.png | 3 -- .../48.png | 4 +- .../49.png | 3 -- .../50.png | 3 -- .../51.png | 3 -- .../52.png | 3 -- .../53.png | 3 -- .../54.png | 3 -- .../55.png | 3 -- .../56.png | 4 +- .../57.png | 3 -- .../58.png | 3 -- .../59.png | 3 -- .../60.png | 3 -- .../61.png | 3 -- .../62.png | 3 -- .../63.png | 3 -- .../64.png | 4 +- .../65.png | 3 -- .../66.png | 3 -- .../67.png | 3 -- .../68.png | 3 -- .../69.png | 3 -- .../70.png | 3 -- .../71.png | 3 -- .../72.png | 4 +- .../73.png | 3 -- .../74.png | 3 -- .../75.png | 3 -- .../76.png | 3 -- .../77.png | 3 -- .../78.png | 3 -- .../79.png | 3 -- .../80.png | 4 +- .../81.png | 3 -- .../82.png | 3 -- .../83.png | 3 -- .../84.png | 3 -- .../85.png | 3 -- .../86.png | 3 -- .../87.png | 3 -- .../88.png | 4 +- .../89.png | 3 -- .../90.png | 3 -- .../91.png | 3 -- .../92.png | 3 -- .../93.png | 3 -- .../94.png | 3 -- .../95.png | 3 -- .../96.png | 4 +- .../97.png | 3 -- .../98.png | 3 -- .../99.png | 3 -- .../00.png | 4 +- .../01.png | 3 -- .../02.png | 3 -- .../03.png | 3 -- .../04.png | 3 -- .../05.png | 3 -- .../06.png | 3 -- .../07.png | 3 -- .../08.png | 4 +- .../09.png | 3 -- .../10.png | 3 -- .../11.png | 3 -- .../12.png | 3 -- .../13.png | 3 -- .../14.png | 3 -- .../15.png | 3 -- .../16.png | 4 +- .../17.png | 3 -- .../18.png | 3 -- .../19.png | 3 -- .../20.png | 3 -- .../21.png | 3 -- .../22.png | 3 -- .../23.png | 3 -- .../24.png | 4 +- .../25.png | 3 -- .../26.png | 3 -- .../27.png | 3 -- .../28.png | 3 -- .../29.png | 3 -- .../30.png | 3 -- .../31.png | 3 -- .../32.png | 4 +- .../33.png | 3 -- .../34.png | 3 -- .../35.png | 3 -- .../36.png | 3 -- .../37.png | 3 -- .../38.png | 3 -- .../39.png | 3 -- .../40.png | 4 +- .../41.png | 3 -- .../42.png | 3 -- .../43.png | 3 -- .../44.png | 3 -- .../45.png | 3 -- .../46.png | 3 -- .../47.png | 3 -- .../48.png | 4 +- .../49.png | 3 -- .../50.png | 3 -- .../51.png | 3 -- .../52.png | 3 -- .../53.png | 3 -- .../54.png | 3 -- .../55.png | 3 -- .../56.png | 4 +- .../57.png | 3 -- .../58.png | 3 -- .../59.png | 3 -- .../60.png | 3 -- .../61.png | 3 -- .../62.png | 3 -- .../63.png | 3 -- .../64.png | 4 +- .../65.png | 3 -- .../66.png | 3 -- .../67.png | 3 -- .../68.png | 3 -- .../69.png | 3 -- .../70.png | 3 -- .../71.png | 3 -- .../72.png | 4 +- .../73.png | 3 -- .../74.png | 3 -- .../75.png | 3 -- .../76.png | 3 -- .../77.png | 3 -- .../78.png | 3 -- .../79.png | 3 -- .../80.png | 4 +- .../81.png | 3 -- .../82.png | 3 -- .../83.png | 3 -- .../84.png | 3 -- .../85.png | 3 -- .../86.png | 3 -- .../87.png | 3 -- .../88.png | 4 +- .../89.png | 3 -- .../90.png | 3 -- .../91.png | 3 -- .../92.png | 3 -- .../93.png | 3 -- .../94.png | 3 -- .../95.png | 3 -- .../96.png | 4 +- .../97.png | 3 -- 259 files changed, 159 insertions(+), 777 deletions(-) delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/01.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/02.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/03.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/04.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/05.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/06.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/07.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/09.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/10.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/100.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/101.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/102.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/103.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/105.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/106.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/107.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/108.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/109.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/11.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/110.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/111.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/113.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/114.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/115.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/116.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/117.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/118.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/119.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/12.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/121.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/122.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/123.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/124.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/125.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/126.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/127.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/129.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/13.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/130.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/131.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/132.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/133.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/134.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/135.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/137.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/138.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/139.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/14.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/140.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/141.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/142.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/143.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/145.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/146.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/147.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/148.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/149.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/15.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/150.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/151.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/153.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/154.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/155.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/156.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/17.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/18.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/19.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/20.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/21.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/22.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/23.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/25.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/26.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/27.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/28.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/29.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/30.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/31.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/33.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/34.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/35.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/36.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/37.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/38.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/39.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/41.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/42.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/43.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/44.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/45.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/46.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/47.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/49.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/50.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/51.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/52.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/53.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/54.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/55.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/57.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/58.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/59.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/60.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/61.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/62.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/63.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/65.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/66.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/67.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/68.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/69.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/70.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/71.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/73.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/74.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/75.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/76.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/77.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/78.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/79.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/81.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/82.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/83.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/84.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/85.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/86.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/87.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/89.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/90.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/91.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/92.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/93.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/94.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/95.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/97.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/98.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/99.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/01.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/02.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/03.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/04.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/05.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/06.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/07.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/09.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/10.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/11.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/12.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/13.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/14.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/15.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/17.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/18.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/19.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/20.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/21.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/22.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/23.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/25.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/26.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/27.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/28.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/29.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/30.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/31.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/33.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/34.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/35.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/36.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/37.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/38.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/39.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/41.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/42.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/43.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/44.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/45.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/46.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/47.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/49.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/50.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/51.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/52.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/53.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/54.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/55.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/57.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/58.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/59.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/60.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/61.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/62.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/63.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/65.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/66.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/67.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/68.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/69.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/70.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/71.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/73.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/74.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/75.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/76.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/77.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/78.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/79.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/81.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/82.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/83.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/84.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/85.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/86.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/87.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/89.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/90.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/91.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/92.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/93.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/94.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/95.png delete mode 100644 tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/97.png diff --git a/tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs b/tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs index f87636bb12..8b23927418 100644 --- a/tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs @@ -40,9 +40,12 @@ public void Decode_VerifyAllFrames(TestImageProvider provider) public void Decode_Issue2450(TestImageProvider provider) where TPixel : unmanaged, IPixel { + // Images have many frames, only compare a selection of them. + static bool Predicate(int i, int _) => i % 8 == 0; + using Image image = provider.GetImage(); - image.DebugSaveMultiFrame(provider); - image.CompareToReferenceOutputMultiFrame(provider, ImageComparer.Exact); + image.DebugSaveMultiFrame(provider, predicate: Predicate); + image.CompareToReferenceOutputMultiFrame(provider, ImageComparer.Exact, predicate: Predicate); } [Theory] diff --git a/tests/ImageSharp.Tests/TestUtilities/ImageComparison/ImageComparer.cs b/tests/ImageSharp.Tests/TestUtilities/ImageComparison/ImageComparer.cs index 29f9d1626d..7153674e6b 100644 --- a/tests/ImageSharp.Tests/TestUtilities/ImageComparison/ImageComparer.cs +++ b/tests/ImageSharp.Tests/TestUtilities/ImageComparison/ImageComparer.cs @@ -46,19 +46,38 @@ public static ImageSimilarityReport CompareImagesOrFrames> CompareImages( this ImageComparer comparer, Image expected, - Image actual) + Image actual, + Func predicate = null) where TPixelA : unmanaged, IPixel where TPixelB : unmanaged, IPixel { - var result = new List>(); + List> result = new(); - if (expected.Frames.Count != actual.Frames.Count) + int expectedFrameCount = actual.Frames.Count; + if (predicate != null) + { + expectedFrameCount = 0; + for (int i = 0; i < actual.Frames.Count; i++) + { + if (predicate(i, actual.Frames.Count)) + { + expectedFrameCount++; + } + } + } + + if (expected.Frames.Count != expectedFrameCount) { - throw new Exception("Frame count does not match!"); + throw new ImagesSimilarityException("Frame count does not match!"); } for (int i = 0; i < expected.Frames.Count; i++) { + if (predicate != null && !predicate(i, expected.Frames.Count)) + { + continue; + } + ImageSimilarityReport report = comparer.CompareImagesOrFrames(i, expected.Frames[i], actual.Frames[i]); if (!report.IsEmpty) { @@ -72,7 +91,8 @@ public static IEnumerable> CompareImages public static void VerifySimilarity( this ImageComparer comparer, Image expected, - Image actual) + Image actual, + Func predicate = null) where TPixelA : unmanaged, IPixel where TPixelB : unmanaged, IPixel { @@ -81,12 +101,25 @@ public static void VerifySimilarity( throw new ImageDimensionsMismatchException(expected.Size, actual.Size); } - if (expected.Frames.Count != actual.Frames.Count) + int expectedFrameCount = actual.Frames.Count; + if (predicate != null) + { + expectedFrameCount = 0; + for (int i = 0; i < actual.Frames.Count; i++) + { + if (predicate(i, actual.Frames.Count)) + { + expectedFrameCount++; + } + } + } + + if (expected.Frames.Count != expectedFrameCount) { throw new ImagesSimilarityException("Image frame count does not match!"); } - IEnumerable reports = comparer.CompareImages(expected, actual); + IEnumerable reports = comparer.CompareImages(expected, actual, predicate); if (reports.Any()) { throw new ImageDifferenceIsOverThresholdException(reports); diff --git a/tests/ImageSharp.Tests/TestUtilities/ImagingTestCaseUtility.cs b/tests/ImageSharp.Tests/TestUtilities/ImagingTestCaseUtility.cs index 460ecac85a..3601344ee3 100644 --- a/tests/ImageSharp.Tests/TestUtilities/ImagingTestCaseUtility.cs +++ b/tests/ImageSharp.Tests/TestUtilities/ImagingTestCaseUtility.cs @@ -184,7 +184,8 @@ public IEnumerable GetTestOutputFileNamesMultiFrame( string extension = null, object testOutputDetails = null, bool appendPixelTypeToFileName = true, - bool appendSourceFileOrDescription = true) + bool appendSourceFileOrDescription = true, + Func predicate = null) { string baseDir = this.GetTestOutputFileName(string.Empty, testOutputDetails, appendPixelTypeToFileName, appendSourceFileOrDescription); @@ -195,8 +196,12 @@ public IEnumerable GetTestOutputFileNamesMultiFrame( for (int i = 0; i < frameCount; i++) { - string filePath = $"{baseDir}/{i:D2}.{extension}"; - yield return filePath; + if (predicate != null && !predicate(i, frameCount)) + { + continue; + } + + yield return $"{baseDir}/{i:D2}.{extension}"; } } @@ -205,27 +210,35 @@ public string[] SaveTestOutputFileMultiFrame( string extension = "png", IImageEncoder encoder = null, object testOutputDetails = null, - bool appendPixelTypeToFileName = true) + bool appendPixelTypeToFileName = true, + Func predicate = null) where TPixel : unmanaged, IPixel { - encoder = encoder ?? TestEnvironment.GetReferenceEncoder($"foo.{extension}"); + encoder ??= TestEnvironment.GetReferenceEncoder($"foo.{extension}"); string[] files = this.GetTestOutputFileNamesMultiFrame( image.Frames.Count, extension, testOutputDetails, - appendPixelTypeToFileName).ToArray(); + appendPixelTypeToFileName, + predicate: predicate).ToArray(); for (int i = 0; i < image.Frames.Count; i++) { - using (Image frameImage = image.Frames.CloneFrame(i)) + if (predicate != null && !predicate(i, image.Frames.Count)) { - string filePath = files[i]; - using (FileStream stream = File.OpenWrite(filePath)) - { - frameImage.Save(stream, encoder); - } + continue; } + + if (i >= files.Length) + { + break; + } + + using Image frameImage = image.Frames.CloneFrame(i); + string filePath = files[i]; + using FileStream stream = File.OpenWrite(filePath); + frameImage.Save(stream, encoder); } return files; @@ -236,20 +249,17 @@ internal string GetReferenceOutputFileName( object testOutputDetails, bool appendPixelTypeToFileName, bool appendSourceFileOrDescription) - { - return TestEnvironment.GetReferenceOutputFileName( + => TestEnvironment.GetReferenceOutputFileName( this.GetTestOutputFileName(extension, testOutputDetails, appendPixelTypeToFileName, appendSourceFileOrDescription)); - } public string[] GetReferenceOutputFileNamesMultiFrame( int frameCount, string extension, object testOutputDetails, - bool appendPixelTypeToFileName = true) - { - return this.GetTestOutputFileNamesMultiFrame(frameCount, extension, testOutputDetails) - .Select(TestEnvironment.GetReferenceOutputFileName).ToArray(); - } + bool appendPixelTypeToFileName = true, + Func predicate = null) + => this.GetTestOutputFileNamesMultiFrame(frameCount, extension, testOutputDetails, appendPixelTypeToFileName, predicate: predicate) + .Select(TestEnvironment.GetReferenceOutputFileName).ToArray(); internal void Init(string typeName, string methodName, string outputSubfolderName) { diff --git a/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs b/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs index 31c9f541ea..9951ecfa90 100644 --- a/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs +++ b/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs @@ -67,10 +67,10 @@ public static Image DebugSave( provider.Utility.SaveTestOutputFile( image, extension, + encoder: encoder, testOutputDetails: testOutputDetails, appendPixelTypeToFileName: appendPixelTypeToFileName, - appendSourceFileOrDescription: appendSourceFileOrDescription, - encoder: encoder); + appendSourceFileOrDescription: appendSourceFileOrDescription); return image; } @@ -107,7 +107,8 @@ public static Image DebugSaveMultiFrame( ITestImageProvider provider, object testOutputDetails = null, string extension = "png", - bool appendPixelTypeToFileName = true) + bool appendPixelTypeToFileName = true, + Func predicate = null) where TPixel : unmanaged, IPixel { if (TestEnvironment.RunsWithCodeCoverage) @@ -119,7 +120,8 @@ public static Image DebugSaveMultiFrame( image, extension, testOutputDetails: testOutputDetails, - appendPixelTypeToFileName: appendPixelTypeToFileName); + appendPixelTypeToFileName: appendPixelTypeToFileName, + predicate: predicate); return image; } @@ -237,7 +239,6 @@ public static Image CompareFirstFrameToReferenceOutput( ITestImageProvider provider, FormattableString testOutputDetails, string extension = "png", - bool grayscale = false, bool appendPixelTypeToFileName = true, bool appendSourceFileOrDescription = true) where TPixel : unmanaged, IPixel @@ -246,7 +247,6 @@ public static Image CompareFirstFrameToReferenceOutput( provider, (object)testOutputDetails, extension, - grayscale, appendPixelTypeToFileName, appendSourceFileOrDescription); @@ -256,12 +256,11 @@ public static Image CompareFirstFrameToReferenceOutput( ITestImageProvider provider, object testOutputDetails = null, string extension = "png", - bool grayscale = false, bool appendPixelTypeToFileName = true, bool appendSourceFileOrDescription = true) where TPixel : unmanaged, IPixel { - using (var firstFrameOnlyImage = new Image(image.Width, image.Height)) + using (Image firstFrameOnlyImage = new(image.Width, image.Height)) using (Image referenceImage = GetReferenceOutputImage( provider, testOutputDetails, @@ -284,8 +283,8 @@ public static Image CompareToReferenceOutputMultiFrame( ImageComparer comparer, object testOutputDetails = null, string extension = "png", - bool grayscale = false, - bool appendPixelTypeToFileName = true) + bool appendPixelTypeToFileName = true, + Func predicate = null) where TPixel : unmanaged, IPixel { using (Image referenceImage = GetReferenceOutputImageMultiFrame( @@ -293,9 +292,10 @@ public static Image CompareToReferenceOutputMultiFrame( image.Frames.Count, testOutputDetails, extension, - appendPixelTypeToFileName)) + appendPixelTypeToFileName, + predicate: predicate)) { - comparer.VerifySimilarity(referenceImage, image); + comparer.VerifySimilarity(referenceImage, image, predicate); } return image; @@ -332,16 +332,18 @@ public static Image GetReferenceOutputImageMultiFrame( int frameCount, object testOutputDetails = null, string extension = "png", - bool appendPixelTypeToFileName = true) + bool appendPixelTypeToFileName = true, + Func predicate = null) where TPixel : unmanaged, IPixel { string[] frameFiles = provider.Utility.GetReferenceOutputFileNamesMultiFrame( frameCount, extension, testOutputDetails, - appendPixelTypeToFileName); + appendPixelTypeToFileName, + predicate); - var temporaryFrameImages = new List>(); + List> temporaryFrameImages = new(); IImageDecoder decoder = TestEnvironment.GetReferenceDecoder(frameFiles[0]); @@ -359,7 +361,7 @@ public static Image GetReferenceOutputImageMultiFrame( Image firstTemp = temporaryFrameImages[0]; - var result = new Image(firstTemp.Width, firstTemp.Height); + Image result = new(firstTemp.Width, firstTemp.Height); foreach (Image fi in temporaryFrameImages) { diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/00.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/00.png index c3d260c9ed..98e823a955 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/00.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/00.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c3cdb964aad36076ab02233f82eab7616c8b763fbf75f6cb17b8c38d69c76443 -size 304 +oid sha256:eb615374f4c680ed4b7e4922e6a0404446c520e254365a1c2406c3dcdad8d02f +size 2574 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/01.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/01.png deleted file mode 100644 index 927b92ffff..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/01.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:adda2f029171fcf7ee867bdc04f4bbf5c4c1992eacbe69b673fb337f11c56889 -size 302 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/02.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/02.png deleted file mode 100644 index 7cce12f7df..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/02.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:782df1adafc8ec5865c3d375042af25b3f15292780f4a2498da99fd0df4abf26 -size 80613 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/03.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/03.png deleted file mode 100644 index b16cf6ef01..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/03.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5c55f249b6c297a37387a9242c4e3d9f3a37ded7c31827e748d16cd51e91759a -size 80622 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/04.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/04.png deleted file mode 100644 index 51a96627a6..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/04.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fed4cbdf85eb80acadf49d3254e8637fa2497cf4773f263b087f020b59f3213a -size 80666 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/05.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/05.png deleted file mode 100644 index f81d289d96..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/05.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e9fcb1d0fc7adc967f44fbbb6a876687a3cd40d6761f7ca79c6ad1777b8a5c27 -size 80572 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/06.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/06.png deleted file mode 100644 index 9df9996e01..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/06.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a9bdd5378174e80c5d48b4ac15b00944c1cde69274c8fb9788625484f1a3e848 -size 80742 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/07.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/07.png deleted file mode 100644 index 673ae5b1db..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/07.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f3f53b5703f3a0963548bac0a222c1da5614df0aabf47b4dcbc64d87fc6057d3 -size 80926 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/08.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/08.png index be6081e34c..c54ed5a7a7 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/08.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/08.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a5c5742e4d4bbab99efd83c7a2dcfc0b1073283dc24d480da15c2ca9b660a607 -size 80842 +oid sha256:7ac936ace1ea78c3aa7fb099853e32140278f0ce1b5f27cc1ac68aa9d256d5d6 +size 161248 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/09.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/09.png deleted file mode 100644 index 23e856ce82..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/09.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aac1840358e6d49f9cdf1fdfaec46c7a53783a74d2c0d2418e94576cc515c5a8 -size 80988 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/10.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/10.png deleted file mode 100644 index ac34c19d59..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/10.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4ad7afcf812e7b2c54d1a35bf679dc66a595785b6ed21be9b1ac0a0d3be7021b -size 81022 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/100.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/100.png deleted file mode 100644 index 175aadbb7b..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/100.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b2d5d2a92ff3089e182b762cfd9848135fa2471ae457dc2e825fe15f88ebafe8 -size 90646 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/101.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/101.png deleted file mode 100644 index 299cdc1f45..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/101.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:043939303c791e358b6efc5a735db8b450ee67f46443d77020880109b1f50ec0 -size 90063 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/102.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/102.png deleted file mode 100644 index 4adbfb3de9..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/102.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:65096d70821cd32ab9a82b738932356cdedaf81b225dbc205606fdd6bec0fd55 -size 90187 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/103.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/103.png deleted file mode 100644 index edd0b27442..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/103.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1ca39f84832d36206d1143fbdbce1cc3292782c9123c4f1a9074cc577bb11e1b -size 90645 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/104.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/104.png index 53dac78722..ca5b28022d 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/104.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/104.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f7853f700649807e58b3ad30491337da1ba168b9e39ea5ed55235582e947e84e -size 90737 +oid sha256:5cc1406b0b5c7fd60f539414249007112224388b2cc27785833cf229e1078c81 +size 181703 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/105.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/105.png deleted file mode 100644 index a0a73193ee..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/105.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cc4442952eb03f1289e7e22c33da5fe78175f93673f98a62b2a75855fe197ea1 -size 89983 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/106.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/106.png deleted file mode 100644 index ea6b1e6229..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/106.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a0663168c15142cba35f1de1855f9823c1a3b4ee75ef5b2153b6306e8f3890ad -size 90471 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/107.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/107.png deleted file mode 100644 index 84a3ec1656..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/107.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:550f4527ccf9698d4d67b9136974530d780191439648de6ecfe8dcdf1f3a3346 -size 90291 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/108.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/108.png deleted file mode 100644 index 6095a182db..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/108.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d6850f89ff854dc286ddb53d7568e2c60be7bcb38f6f01f806e3329b785af860 -size 90550 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/109.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/109.png deleted file mode 100644 index 0655380310..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/109.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a8d32f6419f42b5cdb27ff74195553ab14af71589ec82826840e0b29f8e5bd60 -size 90795 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/11.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/11.png deleted file mode 100644 index 26db53bfde..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/11.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b06038174968095d91b149d6d6bbe4eb6d5512c1f03c782027538481dd4d7522 -size 81038 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/110.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/110.png deleted file mode 100644 index 3fa57157cc..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/110.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bc580f96657c211030ca6c72bf6170fb04a5772541ca25e4889039c8ea16f074 -size 89545 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/111.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/111.png deleted file mode 100644 index 5c07811884..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/111.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b5c521c01a541f3ec0cb10bb24063c913bc08aac8a3d25776f3fd5aa31c59554 -size 89598 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/112.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/112.png index 674de30222..9e58a83cc4 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/112.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/112.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c276752cef8561b4a62a9b603be641d45e0b7f8b2e768ce8d7c27bb49b9cda9b -size 90470 +oid sha256:0fa21bee072c1e2563770759c6fb95f7dc16e467e9aa9e29c5ab482acdbee170 +size 182851 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/113.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/113.png deleted file mode 100644 index 27ce8ccc49..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/113.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fc76499d1727ed39c2b6a08d5a5d46d6c59b2d557f95addba884761b1e8a983e -size 90039 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/114.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/114.png deleted file mode 100644 index c7bed0aca8..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/114.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8e7563ca91a86aea26d649f72b24205cadd014480816c48c900b452859e05c88 -size 90744 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/115.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/115.png deleted file mode 100644 index 20b3fd4b64..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/115.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e6e62f57aa793240276cc0f0ea97a1b6291baf7dce572920eab2ba09fe2eb45 -size 90893 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/116.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/116.png deleted file mode 100644 index 34fe54377b..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/116.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:308002fc980a329c5d18981a4a94e64899e7d5c1881e66f7329fd357c20463aa -size 91100 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/117.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/117.png deleted file mode 100644 index ca16370786..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/117.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4aac1f9446939b9a2170b8ae7959030a67fc648d28840f859669b70c2a8455a8 -size 91121 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/118.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/118.png deleted file mode 100644 index 52e96e0af5..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/118.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:af66e8710ddac5f7ea54b7d20071fa24eeaed1b0d287448af4683a0166be0a96 -size 90963 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/119.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/119.png deleted file mode 100644 index 23507a7713..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/119.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3bf3419704ebb0679cf0a7193af10e3bba12d15ed5ca6427af5de49621ea52e1 -size 90859 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/12.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/12.png deleted file mode 100644 index 3dd5406031..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/12.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:833d4ea63528961a170443b227a9dd02faeeaf1c483d4f72ec0b4e608cbc16d0 -size 81095 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/120.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/120.png index 495e9513d9..b37798cd28 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/120.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/120.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d4ffb85d7d7486eb27611c74dd2eb3d5b4f8f81d7f86e3bdf6c4b495eb37d1c -size 90775 +oid sha256:da813a5f5bbbf95f7f5c8464bdab10d1a7cb7b5f60169b64910f650b98056b3a +size 183582 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/121.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/121.png deleted file mode 100644 index a605e34bab..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/121.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b90d80e6bf96e5ed2236e8310d2834d083d27aff967035b5767b1b8868bce2e6 -size 91223 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/122.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/122.png deleted file mode 100644 index 647503131f..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/122.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2ad49b7a27cf63d025b0b0aeaac5a2e7cf5a9a11ca2ae0a7a4e658d1ed5b999a -size 90644 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/123.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/123.png deleted file mode 100644 index 499c2f9679..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/123.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b1fca2cce7ee6edaf47dcabbdcc3f134e8185778449933f6b8ec11716667cd9a -size 90688 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/124.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/124.png deleted file mode 100644 index df9e3b36fe..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/124.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c9cf616f46500b85fca0259316ebc0987ad847377981ea532fd804efbbc7ceea -size 90814 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/125.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/125.png deleted file mode 100644 index 18b8744254..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/125.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3a265a8a55bf7e45390168fb3e0851c9f55549ffbb287289120506b371e39867 -size 90809 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/126.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/126.png deleted file mode 100644 index db32d5901d..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/126.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0009f8098652dce0f75831823a592fd63d01ad9b16a58ad49e96f320a20e2a76 -size 90810 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/127.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/127.png deleted file mode 100644 index e4a4d81870..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/127.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b054a3b3b1e2218cb2309dcb540f2d0ccea1c3499edf408174bf778ac21279c4 -size 90854 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/128.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/128.png index faea8d6437..51949e9b4e 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/128.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/128.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f2b6e2fc76144ce475007700d6be278d5308aef7e8d2fa3d0cc9c419967c395e -size 90543 +oid sha256:e12217fb78a91a18b0d2110ce1c38159534647e49e9f8390ae8b33eda1bf1046 +size 183390 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/129.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/129.png deleted file mode 100644 index c1d2fb3be4..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/129.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9307016c702527df9497b124c70b06b5c51c9a81abda1a8031d5641814dc675e -size 90570 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/13.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/13.png deleted file mode 100644 index 2ef225ea72..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/13.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3da499346f5160e5f1a63b48e822a93ac0a022f99a5206b521631e8058923a02 -size 81070 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/130.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/130.png deleted file mode 100644 index fbe6c4c3da..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/130.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3566ad9a244e15ef8cb05c0b36c6fa80b60d35e5419d7995a3f12eb87a61dcdf -size 90560 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/131.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/131.png deleted file mode 100644 index 000eaf1f44..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/131.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:124e86127a063eb135b0fb4f11d8195f940ed99995e41482db9d4f826ce00aa0 -size 90442 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/132.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/132.png deleted file mode 100644 index fcb471adc3..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/132.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2cfa9f35cb5d09bbbf77bea47d493576df232ebe6f62d190ac1f186abbf0074c -size 91076 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/133.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/133.png deleted file mode 100644 index 6fa4cb9b14..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/133.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d7b243ba5ba552250abae243d049b30c0ae38aef61b2b17982eb0ff034ac73f1 -size 91105 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/134.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/134.png deleted file mode 100644 index 798ad2c670..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/134.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:461eb6bf55b1fcc720baebea9ae7404cd437bd534f58ed391b72360e0b222dbb -size 91070 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/135.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/135.png deleted file mode 100644 index 94bd811bbf..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/135.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:31cc9ee5552b470ca46e4559bff12b1163e159b9394d758414f1cddf3dd7b6b7 -size 90432 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/136.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/136.png index 788bd5273b..69899bf4d5 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/136.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/136.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ca147ca90fb4f09f07f4df297217b0da88f640d11d94c7cb9040a084a09bd11 -size 91145 +oid sha256:f62ad66be6a04c50b47e1a047e54a177bbaf97ff8a3e4a170e114c3dcc2386c7 +size 183231 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/137.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/137.png deleted file mode 100644 index 7680e09c58..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/137.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3ef4be0ff52d54a3ff71b88d3e751d39d36e3ef7b3b7b0f803912282dc39375e -size 90438 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/138.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/138.png deleted file mode 100644 index fe1897af3c..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/138.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:38bcab10db96c367d3e4d39b4bc5a77423bc1c27e7cfb4ab09810f293f392e19 -size 91124 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/139.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/139.png deleted file mode 100644 index bc36d86d4f..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/139.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:51a494f2600c46dffe2b8160c16bdf0982b4a00fb9cbf8a5cb399f8015a2d3ed -size 91137 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/14.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/14.png deleted file mode 100644 index 37e0749155..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/14.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:62aab9d77fecdd00e3274c7f9b1355b8023ca95860ff78352a20a588d6fb2c19 -size 80756 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/140.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/140.png deleted file mode 100644 index c1db51b749..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/140.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a97b9230eafa5ce2ef87229172d7a4cd899b917005caf09d65cde600b0058dfe -size 91097 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/141.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/141.png deleted file mode 100644 index d27a0f0cb1..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/141.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9e651932e4b2fcc8b678094febacffe3b9a9c88a4bd685dc329eb20150f922a8 -size 91160 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/142.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/142.png deleted file mode 100644 index a6ef12e05b..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/142.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a91a8c5452fb698d3f482b3c94e8d0f165a5a6544f2202ba28f2b587a2630ce0 -size 90562 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/143.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/143.png deleted file mode 100644 index 0fcc98806d..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/143.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:97fe0a7756c3a6db31f05da9c6f4d1ef5e884a89276ee3e826d630d633c4d4a3 -size 91216 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/144.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/144.png index 6fb0ad4555..6bfbf7a89b 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/144.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/144.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5fbf83374eee52013921f064ff2f6b3228d2b3ab4d7feb531c9271d930e716a4 -size 91063 +oid sha256:1f91b0f28197e2dc9e2e010c32ae2c2cc79568c2e9158b40e383e88eb8d299f8 +size 183209 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/145.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/145.png deleted file mode 100644 index d0b1ef950b..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/145.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:62160c2267597134d2f17f9fec796bd49a616c2c4245877c65023a58d0d295e1 -size 91175 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/146.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/146.png deleted file mode 100644 index c7a45c3a3a..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/146.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:da652da914ce3d93fdcdbba84cd305433f3d8136fff4a2090467099ee1449c9b -size 90756 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/147.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/147.png deleted file mode 100644 index c7a45c3a3a..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/147.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:da652da914ce3d93fdcdbba84cd305433f3d8136fff4a2090467099ee1449c9b -size 90756 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/148.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/148.png deleted file mode 100644 index d0b1ef950b..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/148.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:62160c2267597134d2f17f9fec796bd49a616c2c4245877c65023a58d0d295e1 -size 91175 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/149.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/149.png deleted file mode 100644 index 972a631e4a..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/149.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:50d8b8ff77ad4a3e9d1e13d595fe0cc6a5adc1b1d858ebcb3790bd16a2f73cb2 -size 90712 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/15.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/15.png deleted file mode 100644 index 3abe5af7de..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/15.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0ae506a1118ace979328e734809a5f485ab83f21da5d8d61cc97891378eeaac2 -size 83239 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/150.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/150.png deleted file mode 100644 index 9efaa9a7b4..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/150.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2bb4c96cbb53bac6dd209ebfa92aaed295be1896c2d693ba9e4d962a86129d88 -size 90340 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/151.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/151.png deleted file mode 100644 index 9b785b22f6..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/151.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:54d9bdd9e29f371e5136edbddac0f053c671faf32be2bf7e0fc730029e430b75 -size 90665 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/152.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/152.png index 8f540a68c5..9970be2c2c 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/152.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/152.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:78085a65f1aa683f09b51ada512bb959b9df5dfc977d1d5ebe64eab5aac90a97 -size 90627 +oid sha256:b17a8715a14e63e7b68f77a41eb15ce07f11fc4e652b27b1c071fda9182aa4e7 +size 183214 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/153.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/153.png deleted file mode 100644 index 3f092be72f..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/153.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e52291d1c328f02e377795a8e91b84ba6cda1154691b9d95cd2b0a562d420de -size 91549 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/154.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/154.png deleted file mode 100644 index 3f092be72f..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/154.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e52291d1c328f02e377795a8e91b84ba6cda1154691b9d95cd2b0a562d420de -size 91549 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/155.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/155.png deleted file mode 100644 index 3f092be72f..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/155.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e52291d1c328f02e377795a8e91b84ba6cda1154691b9d95cd2b0a562d420de -size 91549 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/156.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/156.png deleted file mode 100644 index 9ebaf7ada6..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/156.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1cb3a5b6e629416a49bb8d07d63ee938143f251e378288b9042d0fb2ae7c1f77 -size 97680 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/16.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/16.png index 9c383ae83c..35e46fc69d 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/16.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/16.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e2aed3183e03f4a8584b73ba05b19e6afd716702ff3274882f53efe1dee26ed8 -size 83360 +oid sha256:ed78b0a881154b7867c749f4375a1341611d155aa100821211d76c70cacf70ae +size 166536 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/17.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/17.png deleted file mode 100644 index a6d4fe592f..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/17.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:32205de5eaf6401c3cb2b76f6c03c30df5fab9155885223b5a586079e1e0970d -size 83295 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/18.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/18.png deleted file mode 100644 index e1eb1cbc91..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/18.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2b65723e9f68a6ca1c0e0c62a30dd9d1c12c5b0c039d8349f813f59380666c53 -size 84097 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/19.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/19.png deleted file mode 100644 index d237f97fe2..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/19.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c63463a59b0a522691c8183f6f9c05e19adcc99189885139236af0693f9a6353 -size 83758 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/20.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/20.png deleted file mode 100644 index 6da8818b14..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/20.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5de8be56644a16b52d740d9d31be5948524dc093c0cb2440ad31dd0978227202 -size 84012 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/21.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/21.png deleted file mode 100644 index b9f469f91a..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/21.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2a988693f2fc435445b0c9715a7900877b034391934228b0cd82017e181f785c -size 85506 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/22.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/22.png deleted file mode 100644 index 5df3baf4d2..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/22.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1eb6ec971d615b2fa63e179292e412a7b2da440fbd8bc8adc7a98191a6775a70 -size 85576 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/23.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/23.png deleted file mode 100644 index d76f7161e6..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/23.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:525f92878be95186f1cd80d16946d6fa5673225396eef91396ca9bad3319a3c4 -size 86021 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/24.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/24.png index 2488f2ee8c..e3da59988d 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/24.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/24.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:efa27089c7e13adcbed4320423211b29d76931aa6f60c4b432c712410ace0a39 -size 86068 +oid sha256:f9c5ac7c97d903588ecd73205e85c732b72a708c35f1e88b3402f01e1a996222 +size 172363 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/25.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/25.png deleted file mode 100644 index af74889482..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/25.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:309ca3a3533c62a77fa4f9e1550998c34f2c61e13647c923808c007bb77e24b1 -size 86311 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/26.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/26.png deleted file mode 100644 index 41153d2337..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/26.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:353a0f661ca24bc353b0fb76d9a84134620fa4f7a867326b05c1fdf5d6e99d80 -size 86583 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/27.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/27.png deleted file mode 100644 index d688572a35..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/27.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:98c1cf1c2378f3e6850c1c29a1a1a5c5041f7ffc8a7cc85d01034c5e7dabdc08 -size 86556 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/28.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/28.png deleted file mode 100644 index c609db6bbc..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/28.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bf87ee7ce8ee67bd80549cf5d73b0678d40c4b0d9541e91a67e3570ebb40ca8e -size 86543 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/29.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/29.png deleted file mode 100644 index 9520e8cf87..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/29.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:961141884be8843665e1a49633ba64995c1c3180071676aa6f4349dc9ce76178 -size 86556 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/30.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/30.png deleted file mode 100644 index dc951623f1..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/30.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5bad967fd018d21d0e6baf314dbd097382f40ee221642eb62dd542e19e6e2d69 -size 86518 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/31.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/31.png deleted file mode 100644 index 696f889152..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/31.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:96e64876e783307fc9406f3a803c248aa7efe284739e67171afd0dfb9a06e1ba -size 86466 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/32.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/32.png index 2f643f5882..810d6f3c03 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/32.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/32.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c1a9c1cdcc9dcba627c808969eeaa375b1ad19914a8d869c96b930fed377eaef -size 86489 +oid sha256:f56c8daa27477f2e20702176f01a1e35f40a250d461fc3d5c3f4ded436b81dd9 +size 173335 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/33.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/33.png deleted file mode 100644 index 2090232c59..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/33.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6d4459a8b8693b683f294bd8e243f5acf59b07e8b6f4f2997ee0057243c6b3b5 -size 86443 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/34.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/34.png deleted file mode 100644 index 3e4e127709..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/34.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6d0ad71c14229f92edbf75831b5445b6fa2f10b729cfd2fff353867485c0c31d -size 86474 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/35.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/35.png deleted file mode 100644 index 85ebc7fe89..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/35.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dc899d9e0d5b5927f6c9c58bd3353a4763e94d20e2a0d1e6b2fee84f977d286d -size 86501 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/36.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/36.png deleted file mode 100644 index 561bd2efda..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/36.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1091ea6a809ab826e8eab80b4772545204f25f37a8dfd1cb81b373d1f0884b02 -size 86703 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/37.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/37.png deleted file mode 100644 index 2808bfe1ec..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/37.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:73ba47a8cbff29676da7922d5a75eabd9ca34a4411109d10e4eee950de5c9903 -size 86896 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/38.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/38.png deleted file mode 100644 index bf3ebf09fc..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/38.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:676dd694214821c29e81ae4fd071b8862bb8232237dd12c56d3b4313d1765384 -size 86546 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/39.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/39.png deleted file mode 100644 index 72f6662b22..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/39.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:43d1304b128cec9b6b81292d9c915e5900e16d0a4431ac0aa502136302a0a378 -size 86618 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/40.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/40.png index 47ef2064c6..f4fcd2204b 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/40.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/40.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3270ba7320dd1d471eb79f09a1de3a55f13cd2ec9e3ee1e0ba900562aa3f268f -size 86517 +oid sha256:41d36b364522adf170aa87f331ce8e1243ef24f0a0d730d8d62116d451380069 +size 174487 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/41.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/41.png deleted file mode 100644 index 75a5dd6795..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/41.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ddff78b086b2d0ab06efcf79149d1f3a1f640ac20c2768e1e2b14d3e4cc880ad -size 86541 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/42.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/42.png deleted file mode 100644 index c9a4eb3370..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/42.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c18f34434f321312968d170c3360f0526ce66ffb9b8ec9f687b2c99cdb857345 -size 87084 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/43.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/43.png deleted file mode 100644 index 0850a80352..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/43.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:91be26ae870a42583c795c4ffd64997759024c9f693d09e7ba688986a2d88c04 -size 87180 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/44.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/44.png deleted file mode 100644 index 076fa1b02f..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/44.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7a082b13f2c4573359f1c5dc5501c238bd8924f29c1cc5622964b6a8b183cf42 -size 88442 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/45.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/45.png deleted file mode 100644 index 3013ae975d..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/45.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:60c20f14a19716acd516037790f47c2d5990af205098a9264906dfdf668ec834 -size 88244 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/46.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/46.png deleted file mode 100644 index 7c1233d858..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/46.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:990cbfac63f555b691ace87b7b6a96513b070d4f2db324b3fc30012de6c6e0b2 -size 87871 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/47.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/47.png deleted file mode 100644 index 526d669b3c..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/47.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1552dd8d2aeab83a9ade1d427dc0f8e2f3ced941ad25e269f5ce19b288b14fe3 -size 87461 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/48.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/48.png index 82ccabacc7..905535d993 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/48.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/48.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a5c3a511e11c0fde8ca612e76d552843b14eaf58f92fcaf27d6bbf176e38313a -size 87291 +oid sha256:f80e8fc0f32f5eebc24066e2dca4dc193cc253561aa2d34a80055c17c9911741 +size 174931 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/49.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/49.png deleted file mode 100644 index 41c973a3e0..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/49.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f12eed5b1c1407ef74ef57c7dc2b0938e8b24d2e14028224a0aa731f2ffce1d0 -size 88652 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/50.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/50.png deleted file mode 100644 index 9664d4dbad..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/50.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:370c001d67435a6e56f1095b409a81d6b543331954e4e726b49cc74bbab22a1f -size 89535 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/51.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/51.png deleted file mode 100644 index 079e4fe548..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/51.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:265a05f09ea95e89a107520dfc9c68e98397daa5e9fe6afa6247a4e0cd735acc -size 89745 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/52.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/52.png deleted file mode 100644 index 71a7bbab39..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/52.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c28210a192b0ac6d2909faa6d02c941487440a564bced2c74473644de187df26 -size 88555 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/53.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/53.png deleted file mode 100644 index 59bc8fb61c..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/53.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cdd0251b7aeac50e9eac79da861348c82d93223fbde584d364747396ddb9e1d0 -size 88460 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/54.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/54.png deleted file mode 100644 index e60ae7dcf7..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/54.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6e06d6488d7f6e095ee4688349696762a01d14eb1c2c804cddb02e079e825ed8 -size 88518 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/55.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/55.png deleted file mode 100644 index ce3ca6227c..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/55.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:206453ada2e47b9efed6c5f3ea647b34e0f637410cbe08b52f6a6f983514bacd -size 88356 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/56.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/56.png index 3992d94f5f..e029956ab7 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/56.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/56.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa09a6cfdfefe9d3ec92e46976ca4a4308b347c2bc86a503b8169d03a5deea29 -size 88157 +oid sha256:98ab9e6879e35841ed91a3c55d3daf26bed01f4b411cdac100caf21737e197e6 +size 176282 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/57.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/57.png deleted file mode 100644 index 5f1e17d816..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/57.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:223f46270ca8c34e483e52cbbf08338563f860a2e10dc10ac60be2e26420f16e -size 87795 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/58.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/58.png deleted file mode 100644 index 77dc71aa6a..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/58.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:18c89772368faeca028a5615eac6e6f4cdc099e32eedba35194fe26012b41993 -size 87811 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/59.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/59.png deleted file mode 100644 index 25d05e342e..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/59.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:082b1cf9afb8b6326e0d25c9d2fa0a526954fe35373505be10a064c320df421b -size 87287 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/60.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/60.png deleted file mode 100644 index ae2dba0fd5..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/60.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8f152235cdac241d80855b4ad576b63003567a84c32774ddc9935f495b3fb76d -size 88399 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/61.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/61.png deleted file mode 100644 index 07eaf9cf91..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/61.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3dc016699e0165bbf2dc7a1ed15fcb7287d9706d106cda0b1b6d899080f93cb9 -size 88620 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/62.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/62.png deleted file mode 100644 index 727aca9a59..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/62.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e3adffa61fa758f4b3b879592b5694bb35e89bf18de35c2007ea1697f70c849f -size 88242 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/63.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/63.png deleted file mode 100644 index 452f560c88..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/63.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:67251119284fe920f77fddff86c4c92e83ae59f4a0a44ec77f63521a78cce035 -size 88901 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/64.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/64.png index 70ec3e3acd..ddaa4de69e 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/64.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/64.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c6c8c32a54bcbb50af853d9e1e302d4b3f6c12cf4b2b2d40b4f9dab2b93438dd -size 89284 +oid sha256:cf1fba5a468f8944dec62b0ccf723a4843b46f0e1718c2b37deca00dc048cb20 +size 179139 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/65.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/65.png deleted file mode 100644 index f2b4af8ca8..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/65.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fdbc1b27e61503e06b6cc5a336eea5923732396c0690f73780072913477e2e2e -size 89230 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/66.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/66.png deleted file mode 100644 index 1df03896bf..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/66.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dc53bddc7c3073ac0cf6e6c9515963f40bea2049d4f5142886a84265f4959f54 -size 88752 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/67.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/67.png deleted file mode 100644 index d4ff6bbd84..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/67.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e91f67dd90e9f689d9f090aba3c422316606e04190cef56d6b51be7d4e8dcb31 -size 89007 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/68.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/68.png deleted file mode 100644 index f5601279d5..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/68.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:da3bf1c1bb959bc84281cd4bcc73f9a82bc4a3bc5171c3de3414472e2b15186c -size 88733 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/69.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/69.png deleted file mode 100644 index ee08d95558..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/69.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6fcf1fe38e4cddfef685553347054c5484b2cbf3d62a3bf1ce3c281848ae9af4 -size 88605 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/70.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/70.png deleted file mode 100644 index b9b8bb99b5..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/70.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:45cddf0b6b281f9b1860b0762cc788395c1b756b0ed43b7ed593eabda7d6857f -size 88911 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/71.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/71.png deleted file mode 100644 index 66cf5cf7bc..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/71.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c82ab09fcf208ebc8ae8e7c156011e8dc37da18adab54fecbf556777f3bb7135 -size 88827 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/72.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/72.png index d25bc06a6f..ea5b52f549 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/72.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/72.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:312dc9671a700eed29af27d80825c1e67338ba2f4b00d83af9c4a08dd9ec94ae -size 90810 +oid sha256:dea9bf39eb210bfcfeb573cc50f3a9676b3d1da729b3ae2fc5af72dbc687668f +size 181197 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/73.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/73.png deleted file mode 100644 index 708c1a705f..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/73.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7ba6923f3752a609636458f99d84055070e593507cd2383e42d55700465fb406 -size 91335 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/74.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/74.png deleted file mode 100644 index 8bf7a78078..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/74.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bfae6ddcc1347387b2dad74b4d5c9718dcf3c0666dd7dee8d7bb69e3adcb2547 -size 91183 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/75.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/75.png deleted file mode 100644 index dd2d44207b..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/75.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fa8da378d7746d4a6ae0ad9bdcf7c6da761364962e1275062a12a1b98b14806c -size 91120 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/76.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/76.png deleted file mode 100644 index 25639bc0ac..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/76.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2b9f26d87ca2975ff9a6e067b427c3035b50410e6b7f37016c5f6c9a84c370f0 -size 91290 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/77.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/77.png deleted file mode 100644 index 8924a8f9b3..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/77.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f1d3c31057bff24b1b20120af7666fc6b17c6886cd74991f0fe9367b796fedde -size 90739 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/78.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/78.png deleted file mode 100644 index b5e7bf9586..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/78.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ac72bb354c75b65eb285e685a53f8bb634836f43c0bd7d3fa2bb04c4e913a363 -size 90306 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/79.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/79.png deleted file mode 100644 index a06ce3207e..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/79.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3284e752d9cc8070b92eb92a153f9a432613df4974b9a08e95b6004f33ee260a -size 88977 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/80.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/80.png index f654bacb92..5408de94d8 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/80.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/80.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4dd5d277ee2881dcda5c6730e9ba6bc7b4c906989e3814a050c03503f4eed2f3 -size 88910 +oid sha256:aa7aa1f601d12d20059bb51e8d642f72976e25f5e116a3f85b1741f0f557d8e9 +size 179779 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/81.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/81.png deleted file mode 100644 index c22b3aacde..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/81.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c650f2ad3b4d0fe65e98cb68311712e3bc27e396f452c7b35611a1ed1c9adb07 -size 90362 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/82.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/82.png deleted file mode 100644 index b24d93bd4c..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/82.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:53ecce04621a69e2b15dc17dafef91dd2ee00c878e0f202aa9491dd5d070e94d -size 90453 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/83.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/83.png deleted file mode 100644 index d423b90261..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/83.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:88825afb2464e456de5d639a962b83c64457083ff420cf90deeb65d940aa4d42 -size 90226 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/84.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/84.png deleted file mode 100644 index 3a8ef85ce1..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/84.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4446e36e0a17f9a26e747dd2a959a188dbd9c7cddd440f71e08ae4bdc0d714a2 -size 90592 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/85.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/85.png deleted file mode 100644 index 2d0b3c9a61..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/85.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e2a68791aa3148b485a8c6f489d2cc604db2703bbd2b9bef876c64a4167b84d2 -size 89893 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/86.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/86.png deleted file mode 100644 index bcd047d9b1..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/86.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6aa7297dde9679ea85136a4a15934786f7420146af1008d0637e14be3346fa03 -size 89612 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/87.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/87.png deleted file mode 100644 index 0c72d26092..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/87.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cfbf2b9c41085541c2d076473285e0b53aa67e3af39b6e99f45bd2ccca891288 -size 91049 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/88.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/88.png index eb29ec9410..c2a3e56e8d 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/88.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/88.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:923b68618a0aa3f32ebc80f9e391596f92918a74653a869f6f85a0aa049803bc -size 89217 +oid sha256:654fd1df2dec9c8694e60041a1fb8ebb3e213223038742da4b3f89173a3cf0c4 +size 180044 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/89.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/89.png deleted file mode 100644 index 5d40b073ed..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/89.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:097db6b014944a5e5eb4e9520a61dbcab94c057ea68356999bc17f1abbd36574 -size 90725 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/90.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/90.png deleted file mode 100644 index 39717e83a5..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/90.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:95e3553d18a23384caf1882deabd102a4c16d07b3071bd1290a6c7443f57ac0c -size 90399 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/91.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/91.png deleted file mode 100644 index 64533acbcb..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/91.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c72cec167b574a5aaa1f5d7425baae252f2d9fa83ce31564cf2f234eb9d11d24 -size 90033 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/92.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/92.png deleted file mode 100644 index c146d4cb8b..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/92.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:32db98a758e764f6b79f4cd65756734951d6a4f75963e04338b38aa615e3c415 -size 89923 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/93.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/93.png deleted file mode 100644 index c4ab2291f1..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/93.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:536b58e956586bb4ab99c5ebaf821718972d77e2b09963d6cf77db0b2c0eab49 -size 90559 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/94.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/94.png deleted file mode 100644 index 7c19eb7d38..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/94.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:708d6e85c6ac70278a27061f350b3f0dd61e05e7519a59847e969f24599ab549 -size 91347 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/95.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/95.png deleted file mode 100644 index a866ff23bb..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/95.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2c6c53d159845db20cc8329d6f89b03347d4a0788aad7f7829696a83626d4663 -size 90784 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/96.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/96.png index 902431e44f..f3626cadfa 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/96.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/96.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:308f9a8e778a31f0b2da54e2adf701a5c1c655f760afc2a825ca6c12bb631c1f -size 91294 +oid sha256:8102e88f544bd06317e52b485a7aaf81bb46ed82e4b617af29b4c9823d46dcfc +size 181874 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/97.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/97.png deleted file mode 100644 index 56c66a5854..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/97.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6355ce47f7b4da54bb64f985bf5d5e4e7c25223aa1c0ff0a02e76088b2648031 -size 91084 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/98.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/98.png deleted file mode 100644 index 0e86fe146c..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/98.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b3c455888d0eababa537204c5cf2e800c669240128732a8364bd36915335c2d7 -size 90835 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/99.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/99.png deleted file mode 100644 index 663fe3feef..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450.gif/99.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:228f03f3aa0e4c642c1fefdef74fa2ba0324f661fa9be177270dd10f8a44c5c2 -size 90696 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/00.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/00.png index 6d59d9c7a7..1abcd510c4 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/00.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/00.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:500bde67abcd11d9fb5f8af8850931e2c9d803743d0e3363963088cecbb0ae75 -size 2600 +oid sha256:d2cf3a4141ca32ab8f60060140f00fd79765b2950a542a146d3587596ad6770b +size 4489 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/01.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/01.png deleted file mode 100644 index 6bb84111a6..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/01.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:324ab3f3f09da631883700abf184736a2cdb48c3de70b4526d5f2e550f135bf9 -size 2609 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/02.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/02.png deleted file mode 100644 index 5f9536b545..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/02.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e45013b2e06695a863aa79178eef75418a366e216ca66baa8ee463e12a797b0c -size 2688 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/03.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/03.png deleted file mode 100644 index 22ebcbdcad..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/03.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:080221f71e837c62063850aee578ef92bab4e8789a95663e514a0075388be7e9 -size 2670 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/04.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/04.png deleted file mode 100644 index 7937cdc8ec..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/04.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b4f9ddd2071f74b1b28e7662d96555b62463ee7314a17bb258fc66a02e9b99a8 -size 2666 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/05.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/05.png deleted file mode 100644 index f529f535dd..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/05.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b0f76db6415ba64e6278361386ac9bc1950ba30bcadd95e081ce5673c5e37eab -size 2652 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/06.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/06.png deleted file mode 100644 index 77c5c5bb63..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/06.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b9161301f079b6476334e46570378cae5f5717fdd840ab3adb8c02823fa095e6 -size 2659 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/07.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/07.png deleted file mode 100644 index dc29597d49..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/07.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9f6dc13fa8836e91572296de9eec99dc29df9c8ebb96684543bc73d1e8ae7b5f -size 2665 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/08.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/08.png index 015f7cc872..3b96f149a0 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/08.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/08.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:046df7272277b8836a798902fdb51efff5ceb66775b891e72d1e084640f41b51 -size 2650 +oid sha256:3195912d89a03928926ba56e6a7845d2ea7b0f9d0efc4854d5b36d99541eb01a +size 4596 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/09.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/09.png deleted file mode 100644 index 47d0fb8e82..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/09.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6cf9733ae7cdd2844afcb2aa90ec1b1cef00384509fbb85f5195874261e260c6 -size 2661 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/10.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/10.png deleted file mode 100644 index 3b45cb810b..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/10.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9d2de9cbcc62fa1bf3977d4920553498499add65657ac968f85de0da5036d4e0 -size 2660 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/11.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/11.png deleted file mode 100644 index bfa23b917b..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/11.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ae2f2ddf367ac3881374cb70478e41d6eec11e2b66c1e443243c3c6a734d6579 -size 2642 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/12.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/12.png deleted file mode 100644 index 50d3072e5c..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/12.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:07856ee43d16fdfdfd8d34fd75905dfd569dbb2ab80306dfdda9cc92a3bcd30b -size 2697 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/13.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/13.png deleted file mode 100644 index 5c59c9f323..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/13.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6f2e8ec69af48772cabce17a5f72afce267e659de55d9e32fb02dbf00985844b -size 2696 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/14.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/14.png deleted file mode 100644 index ff3cac8ade..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/14.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:356c66a6a22cb02a586debe8aa82046975cb62ae6abc04c06cc41bb65b9a7b4a -size 2682 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/15.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/15.png deleted file mode 100644 index 19ad5429f7..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/15.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4cceed937cf5698cf12e0bc0ebb50713ffab27a75a097c857ba389e5ac21c12a -size 2561 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/16.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/16.png index 209db7de7b..cd625df7ed 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/16.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/16.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d258ee37a3d16503c339d597f0e781170516c1945ff297dbcfca2256ff5b9e4f -size 2690 +oid sha256:fb10d95b54c4c2c3b589db0fe420a79f572752e27682666fc20eada3d001e281 +size 4654 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/17.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/17.png deleted file mode 100644 index 48e67732c3..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/17.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:acc2d96b74e4d7f3e7fd85b9a54225a97476663c87b6bf4750baa224c007d5d0 -size 2493 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/18.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/18.png deleted file mode 100644 index 3a51727a14..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/18.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d4e7140f1eab449ccede07a7cb358cbf599dba70c8fd3a806edc3c4c10904501 -size 2518 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/19.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/19.png deleted file mode 100644 index 94cc451023..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/19.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ada57124045c86cfa32f644a3adde26bd40ab29f084aafaac2f75853bf043a1b -size 2538 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/20.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/20.png deleted file mode 100644 index e0fdb26e14..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/20.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5d9237d845cd27b1894aeaff3cb468d6d92711901098936a602fdc97ddb005b4 -size 2552 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/21.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/21.png deleted file mode 100644 index dc40c7b113..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/21.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7a53b8a65eec93c35544d0b01df3520af939569e10ce1238457b465b1f72cb7d -size 2591 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/22.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/22.png deleted file mode 100644 index 7f26331cda..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/22.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f42da30d9d4767ee5b3ddfbbf17bbf9dfea40590bc5e275066e05711bca329e9 -size 2613 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/23.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/23.png deleted file mode 100644 index f977ba0571..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/23.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:42c34ae8e8b0028ef7be09a8914ad8e01d181ed1059b22f0003953ce33710e8c -size 2609 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/24.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/24.png index 7f26331cda..7df0937a99 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/24.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/24.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f42da30d9d4767ee5b3ddfbbf17bbf9dfea40590bc5e275066e05711bca329e9 -size 2613 +oid sha256:0ff9524242c8ad0fa5e87f32aa3a1365fe8062fee14d594c4f66a4aecf0bde05 +size 4642 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/25.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/25.png deleted file mode 100644 index d39b460bc7..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/25.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f89519f852f0f41e355e026cb71539a9a4974d00cd1b6548fbcc51d5a4709b49 -size 2643 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/26.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/26.png deleted file mode 100644 index 9026666721..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/26.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:783d3bf28fa0f8f9f03241a8f5ef446493b6c903f0958cf8f3c09dfe8cf1ef1b -size 2542 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/27.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/27.png deleted file mode 100644 index 4917522f8b..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/27.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1a9fe1b5c98f5f08f839533b375f0f92e42149ea3f6cda32f315f476a6791d1a -size 2544 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/28.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/28.png deleted file mode 100644 index 9895573582..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/28.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a6c38f43f1bdc1e4f035a1e1883d2e674e550e0c1fcbfa909d1b363e110f32e5 -size 2658 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/29.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/29.png deleted file mode 100644 index c338dbe94f..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/29.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:79a39a2eb2c92902203d81e2630b63085d65f6887f06337017cf58fe9910f587 -size 2419 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/30.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/30.png deleted file mode 100644 index a0c08fc466..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/30.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0aa7026750f1d4660c3942dd50dd98da799466bb18ee466993aa96e9626959da -size 2415 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/31.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/31.png deleted file mode 100644 index c91a061343..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/31.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b1e1f2f855f38182a0a79acf1089b1c69ab0040a47ed61b23ef891e46d7aea9f -size 2406 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/32.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/32.png index bf4fc02186..244e8377da 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/32.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/32.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:842d9ddb805a43935ebca61d494a9f64319870f98512264b46157223d7f4085c -size 2469 +oid sha256:a0d6b4b72c5ec38f36679a38d9c0e95f1aaf5a8dbe016174593a05ae6fa28f2b +size 4317 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/33.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/33.png deleted file mode 100644 index b067b6f1ba..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/33.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6bec7ac994204cbd9fdd287e732f0de772ca7700b4b22ebc48c65b40807b1c5c -size 2491 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/34.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/34.png deleted file mode 100644 index 844413001d..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/34.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4edd2611ead2b0f4bdcbce42e533f4a8810ef0d0a85488dadbf602fd192439f3 -size 2545 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/35.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/35.png deleted file mode 100644 index 9b643fb4c8..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/35.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f26b7ff0f9f8dfd0b9bfc012ada2df33a3f51810b2ff357cddec1dd050c661d5 -size 2546 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/36.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/36.png deleted file mode 100644 index 97dc247bb8..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/36.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f3878fefe9d4e97c9351410d4d754955b52799136974617cd80617138893d503 -size 2547 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/37.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/37.png deleted file mode 100644 index 2c19f0a19b..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/37.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:45f5a2d728876d1449b4b468fff3d2f9492859de8b853403d7b508eee12926f9 -size 2555 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/38.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/38.png deleted file mode 100644 index ebc6bfa77c..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/38.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0341923302c3c8016cc186218a1bad241e762a9ffe21e288168cddd986991921 -size 2579 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/39.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/39.png deleted file mode 100644 index d00d7e7fa1..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/39.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8096be053925bbb1b82a8a1b3afa372c62900923ca70f2e1d670d13ea8bbd638 -size 2531 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/40.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/40.png index 2b65fb9115..112b70d4eb 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/40.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/40.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e82f2db413da5e9a5149019f1b0f77c745f4f3d67b8466eea9ab06555ad6da4 -size 2519 +oid sha256:70be2794b20cec8ea558b9902b04dee6b1790bf5d867c8b8531ad71f238d8b73 +size 4417 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/41.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/41.png deleted file mode 100644 index e93804bbbe..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/41.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dad4c0a206a0b5daade5de05e385f88d84cbf7bb6836335414ddc8c76980f4c0 -size 2628 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/42.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/42.png deleted file mode 100644 index 8bbd137bb4..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/42.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:653ee205dbd29aa5109c80adf92ebe9631aee24f062de6cfb3aa3206cd2069e1 -size 2634 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/43.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/43.png deleted file mode 100644 index 973d894154..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/43.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:03c74d84677cc7c8529100f3e2ca7ee4bc24ea65155897973d6b8609571bd0fd -size 2645 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/44.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/44.png deleted file mode 100644 index 514924d167..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/44.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d2843a4fbb695788c6396c4fe858a01f1ec9637d3de9ce282794a6d4e7753ce1 -size 2674 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/45.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/45.png deleted file mode 100644 index e8fe7c05ac..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/45.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:72b2cb0532d1d4e0dc0883a8f7a02a8879d71e94c74dbdf7a4778a73773e205d -size 2681 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/46.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/46.png deleted file mode 100644 index bfbb072d8e..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/46.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b9f1f6cf44695759b743cc60e464e69c787268106bf4730be6c5d51693ff5316 -size 2680 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/47.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/47.png deleted file mode 100644 index 299295a804..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/47.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fb6acc80f928cb2fe5073e568c498ae73baf2fc9ccac80b75bfb946b07d27829 -size 2703 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/48.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/48.png index b1945b513a..9a3f80dc4a 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/48.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/48.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:527d3ae20e1a91cdf0b38f9f7a13fda95f0cafe238597e4ffa9a250d8cac3c96 -size 2741 +oid sha256:3abc1beaefbc9c95a9ca828bbd06de8d1bed504b7e1877b66e3f881bbed2dbf4 +size 4716 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/49.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/49.png deleted file mode 100644 index 3c4ce8b639..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/49.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:52c9c8d71cdd46d1b26cda4c5de43fcd529c8a98e80e3bb3ab508f9f89838f78 -size 2749 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/50.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/50.png deleted file mode 100644 index 00c53ed925..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/50.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0a53d8bb9c4c7247a489bd211dea9d874e131d3833600c9a517f999b0f0c90a6 -size 2754 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/51.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/51.png deleted file mode 100644 index 6ae18affad..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/51.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4f01d194256260353748aee5fd28b6a4f5478995f6ca5f6feeac3fac0f0a8639 -size 2727 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/52.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/52.png deleted file mode 100644 index 10b60ea1be..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/52.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2ba7ba520a85ee5053ff9cf409dca7f84643f9073a5c7c8ebeef70995e7d6df1 -size 2766 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/53.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/53.png deleted file mode 100644 index 1e77c95cfb..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/53.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:475ef9aa23558839bf32892b24e052de2bd4102c4dc694a60ccca532c1e3c647 -size 2781 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/54.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/54.png deleted file mode 100644 index 838d24393c..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/54.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e6a42284d33f1ea8a073c8d43dde695631d73c67464ed8b25708e84f1670e408 -size 2717 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/55.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/55.png deleted file mode 100644 index ad17ff8e10..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/55.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2f8d5d304eb9b8d37ff381c74953362965735fc65dcf0a840546428f7ad2854a -size 2712 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/56.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/56.png index 0fc8d1f960..cf448a4f3b 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/56.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/56.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f920a110ee50da45502ed94d87a6d2765df5f0dbd5d08853daf0be602d32f3f7 -size 2699 +oid sha256:0d279d361a77bd0d95204853adf7d575a93118688625f6ec2dad3979fadfb456 +size 4697 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/57.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/57.png deleted file mode 100644 index 601ee64e8b..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/57.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b1482d6aa9131901d81bf3eb27cee5631e251f998d723fb5306d3b4da3252dbc -size 2739 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/58.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/58.png deleted file mode 100644 index 7b9ba8e2b8..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/58.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4971039b84f4356b304ea6eb27059abb6d8eea70e3f3f7814d9f5a0797d852c8 -size 2712 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/59.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/59.png deleted file mode 100644 index fa7a83b9a6..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/59.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:40863291c67b6b4f1db961289eeb6531e480c841f9d5557a23bf81ad8b9dfeba -size 2753 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/60.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/60.png deleted file mode 100644 index 2366dfc84b..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/60.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:07803f744c5f9b4538e673301772a2b04902f5a9d03c6e76d2a787a3e931ee79 -size 2784 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/61.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/61.png deleted file mode 100644 index 9297037caa..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/61.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d549f6d3d0d458f543c2fa89dd7ae94f0940c86a804fc792deb5c0d93436c546 -size 2804 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/62.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/62.png deleted file mode 100644 index 5dc7081cf3..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/62.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:62a37d97203eba5489d4120370a7c13899ac08e413744698e22653567ad98770 -size 2827 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/63.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/63.png deleted file mode 100644 index b8a4df99d9..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/63.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e72ac1011d36bca745587bd8d0dd15dc24a81c5f0d5bf0e0d886ba7426c76a3a -size 2829 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/64.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/64.png index c73ef6c2df..2130055dfd 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/64.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/64.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:230c98d931e17e1602ec2bbb81f46a7f6bd722e012fbad2f7c1b8880fe8df0bb -size 2882 +oid sha256:de60756ff2501e88c83e2732c38456b8fc66780bb2302452cdd21f8b7bd82108 +size 4936 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/65.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/65.png deleted file mode 100644 index a3a614fd55..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/65.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:467dec2d45a93b334ee315b847b86cbda5a168b0925e64844bdf220eaa613ec7 -size 2940 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/66.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/66.png deleted file mode 100644 index 6ca917cd15..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/66.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7b382138da1a80f16e394dc44dc386441b855f1a214aaecbfdcf37245afcdf3b -size 2930 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/67.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/67.png deleted file mode 100644 index d70c0d83c9..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/67.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:07a50f98aaf5d081d6508437f4d732d92d3849ee157024fddb562e4e08b413f4 -size 2926 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/68.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/68.png deleted file mode 100644 index 2f36427381..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/68.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:662c21e4a45f6df6cb35c6bac728b91ddaf810232a271eae6ba50f18ce947d29 -size 2925 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/69.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/69.png deleted file mode 100644 index f5d86c640b..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/69.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1b8450537ca109d466b59453f4658e2c0bba98991a6c030d1b0cac9d90040b9e -size 2943 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/70.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/70.png deleted file mode 100644 index dbd02a7508..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/70.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:248023838ff7ff6ddf3b828cee410abca1e465a4c15ffcabab37e31f635d099f -size 2942 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/71.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/71.png deleted file mode 100644 index 60e44ba229..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/71.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f4ba0c81be4b0d9d72dac0a51f8fd8a8ada371e5eb68d91dd252626702c19b9f -size 2937 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/72.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/72.png index ce15613fca..79ed470286 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/72.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/72.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37e4d7d3440f6f475e23bd93ef799ebb353867f66253087feb58f72edec224ef -size 2935 +oid sha256:606235a70e3b167192c0783c6eda9f2f5867cf14d5521a83af3441cfe1adc66f +size 4917 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/73.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/73.png deleted file mode 100644 index 35f9c6b7b4..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/73.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:77f4cd2f765e7762b25019d9fc871bbd8eff422be94af5a667abd18a28e214b4 -size 2935 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/74.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/74.png deleted file mode 100644 index 70f2ceb082..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/74.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:246959de00e7be13a219777bb598096f51473eb6a3f17c9f91ee925c45b86942 -size 3626 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/75.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/75.png deleted file mode 100644 index 35f9c6b7b4..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/75.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:77f4cd2f765e7762b25019d9fc871bbd8eff422be94af5a667abd18a28e214b4 -size 2935 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/76.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/76.png deleted file mode 100644 index ef8ead126d..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/76.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:756f131b5d045ec4b9ce1d0a4d6e63ae5fe5041d5d6f2aa7b120181f2f8aa27e -size 2939 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/77.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/77.png deleted file mode 100644 index 3b5b677fe8..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/77.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:de9d5e84bf261a0209265453b6aa1bdeb9df33cbe04987b56e799e5aa26dec02 -size 2956 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/78.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/78.png deleted file mode 100644 index 66fb4fac43..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/78.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:22e98986545caa160fe2cd871f91b36e39f4a0376c8c29591ddaa109d4f8a9b3 -size 2944 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/79.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/79.png deleted file mode 100644 index a237d00222..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/79.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:71795a1b3a9cb02c34c54a3236d5e888951aff5b2334d555b2ee159e61704007 -size 2950 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/80.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/80.png index a84b576841..3b74cb2dd8 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/80.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/80.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f114078df51c5156f234fd87f34cfd15cf75701f4071698e31b351a34d4b315b -size 2938 +oid sha256:1931befb45c7eedfa44518d62cf2fc8ecfc64e5505c1639d0b6187d988fa06c5 +size 4951 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/81.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/81.png deleted file mode 100644 index 2cefdfa1b2..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/81.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c02af983a1a3404fd47980c2ab6f62fdb41af413e72ab5f14c1ff66693ce0cdc -size 2950 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/82.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/82.png deleted file mode 100644 index 3ceb941d41..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/82.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3f2cff244004843869e21c27b073cae70c20c1a4668fb8f3f6789ad2296a3fd2 -size 4231 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/83.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/83.png deleted file mode 100644 index e9205c8d8e..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/83.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5f174eea88b36c58c444bb52aca5f86e358615074e12500b00625409a8b3a849 -size 4217 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/84.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/84.png deleted file mode 100644 index 755b8df700..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/84.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2f6cdee87fd32dfb2c791c30f1d196dcc397d8b846fc3e7427f0c42d2d51bb4d -size 4347 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/85.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/85.png deleted file mode 100644 index daa60002ae..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/85.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8975890483e6c9df538992899c65965abdccb821e7ed1de7becc120a494a6bd1 -size 4338 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/86.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/86.png deleted file mode 100644 index dc86c5b45d..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/86.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9638dd90c863c4beea5ce477bfeb43ebab047b3eea6c8502bd697628a67837a0 -size 4336 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/87.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/87.png deleted file mode 100644 index ac46b3d3f7..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/87.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eadc2958b0ce324e230b519bb5dc9ea794f55939e8067e4152b341b539206a4a -size 4332 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/88.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/88.png index b20527d458..122c566f0a 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/88.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/88.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7f02f99250c1db0528dc1a963220f74a3d5959de74760b9d66c2473061398b26 -size 4334 +oid sha256:785ed19db48a60886bebe90223e9f48f9d6df45b1e1c7e5ac467f6a9211db1f0 +size 7528 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/89.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/89.png deleted file mode 100644 index b56cfad41c..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/89.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:60898d0e2249341d3e6eff975a3210ef84cd08324114b465c0a829af887c2bd7 -size 4338 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/90.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/90.png deleted file mode 100644 index bf2fc5c41a..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/90.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:70c61c8079696dff7950b0a21148b3099b48b75c77e39961e3465f8fcd4f1454 -size 4338 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/91.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/91.png deleted file mode 100644 index 75fbaffd6d..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/91.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:45db3b50db0124ae7b96b406c458d5e0ed0a0f79b8630666684cfe1fc60def34 -size 4351 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/92.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/92.png deleted file mode 100644 index 6576055286..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/92.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:755e602cc4e468d369513cbf34aacc8230066c4d4512d47a4552aeb7d5b88526 -size 4371 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/93.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/93.png deleted file mode 100644 index 6e35336f7a..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/93.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ce8999857d1f6c93d124e874a340109da1b72c555a50b3aef49d7ba62c1659cf -size 2953 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/94.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/94.png deleted file mode 100644 index 77ae30b0c6..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/94.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1d958f3dc09d422da9aed5cad593d377628831ff9de5aeb7585ebfcebde0d805 -size 2954 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/95.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/95.png deleted file mode 100644 index 74a45d319c..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/95.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a803d68a3c38db135f936cd46b70899da187c38d5d3ba840ffeb26fbdbdfca67 -size 2906 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/96.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/96.png index 58fa65a082..64159bbe97 100644 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/96.png +++ b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/96.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c6d2ac82f55fe8bd7cfca502d1895c416ba4da10d97ab35c7cb9d6ba742c23d -size 2856 +oid sha256:511d2e3ffec299188a715389b7a17f35bc152e3830a8ecc34ce93c044d1c3962 +size 4897 diff --git a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/97.png b/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/97.png deleted file mode 100644 index 38b32593ab..0000000000 --- a/tests/Images/External/ReferenceOutput/GifDecoderTests/Decode_Issue2450_Rgba32_issue_2450_2.gif/97.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fe38a57d81138107fd41613db2e839b7815e6bda2ad7119e817794254853337a -size 2822 From 1a6b46504db9d0ea11e333e02ce7a7e65a3c5b44 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Tue, 22 Aug 2023 09:59:41 +1000 Subject: [PATCH 16/18] Cleanup based on feedback --- src/ImageSharp/Formats/Gif/GifEncoderCore.cs | 32 +++++++++++--------- src/ImageSharp/Formats/Gif/GifMetadata.cs | 4 +-- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs index be08c0da90..ccf8feaccd 100644 --- a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs @@ -135,7 +135,7 @@ public void Encode(Image image, Stream stream, CancellationToken byte backgroundIndex = unchecked((byte)transparencyIndex); if (transparencyIndex == -1) { - backgroundIndex = gifMetadata.BackgroundColor; + backgroundIndex = gifMetadata.BackgroundColorIndex; } // Get the number of bits. @@ -236,18 +236,19 @@ private void EncodeFirstFrame( { this.WriteGraphicalControlExtension(metadata, transparencyIndex, stream); - Buffer2DRegion region = ((IPixelSource)quantized).PixelBuffer.GetRegion(); + Buffer2D indices = ((IPixelSource)quantized).PixelBuffer; + Rectangle interest = indices.FullRectangle(); bool useLocal = this.colorTableMode == GifColorTableMode.Local || (metadata?.ColorTableMode == GifColorTableMode.Local); int bitDepth = ColorNumerics.GetBitsNeededForColorDepth(quantized.Palette.Length); - this.WriteImageDescriptor(region.Rectangle, useLocal, bitDepth, stream); + this.WriteImageDescriptor(interest, useLocal, bitDepth, stream); if (useLocal) { this.WriteColorTable(quantized, bitDepth, stream); } - this.WriteImageData(region, stream, quantized.Palette.Length, transparencyIndex); + this.WriteImageData(indices, interest, stream, quantized.Palette.Length, transparencyIndex); } private void EncodeAdditionalFrame( @@ -322,20 +323,20 @@ private void EncodeAdditionalFrame( transparencyIndex = GetTransparentIndex(quantized, metadata); // Trim down the buffer to the minimum size required. - // Buffer2DRegion region = ((IPixelSource)quantized).PixelBuffer.GetRegion(); - Buffer2DRegion region = TrimTransparentPixels(((IPixelSource)quantized).PixelBuffer, transparencyIndex); + Buffer2D indices = ((IPixelSource)quantized).PixelBuffer; + Rectangle interest = TrimTransparentPixels(indices, transparencyIndex); this.WriteGraphicalControlExtension(metadata, transparencyIndex, stream); int bitDepth = ColorNumerics.GetBitsNeededForColorDepth(quantized.Palette.Length); - this.WriteImageDescriptor(region.Rectangle, useLocal, bitDepth, stream); + this.WriteImageDescriptor(interest, useLocal, bitDepth, stream); if (useLocal) { this.WriteColorTable(quantized, bitDepth, stream); } - this.WriteImageData(region, stream, quantized.Palette.Length, transparencyIndex); + this.WriteImageData(indices, interest, stream, quantized.Palette.Length, transparencyIndex); } private void DeDuplicatePixels( @@ -399,11 +400,11 @@ private void DeDuplicatePixels( } } - private static Buffer2DRegion TrimTransparentPixels(Buffer2D buffer, int transparencyIndex) + private static Rectangle TrimTransparentPixels(Buffer2D buffer, int transparencyIndex) { if (transparencyIndex < 0) { - return buffer.GetRegion(); + return buffer.FullRectangle(); } byte trimmableIndex = unchecked((byte)transparencyIndex); @@ -596,7 +597,7 @@ private static Buffer2DRegion TrimTransparentPixels(Buffer2D buffer, if (top == bottom || left == right) { // The entire image is transparent. - return buffer.GetRegion(); + return buffer.FullRectangle(); } if (!isTransparentRow) @@ -605,7 +606,7 @@ private static Buffer2DRegion TrimTransparentPixels(Buffer2D buffer, bottom = buffer.Height; } - return buffer.GetRegion(Rectangle.FromLTRB(left, top, Math.Min(right + 1, buffer.Width), Math.Min(bottom + 1, buffer.Height))); + return Rectangle.FromLTRB(left, top, Math.Min(right + 1, buffer.Width), Math.Min(bottom + 1, buffer.Height)); } /// @@ -923,11 +924,14 @@ private void WriteColorTable(IndexedImageFrame image, int bitDep /// Writes the image pixel data to the stream. /// /// The containing indexed pixels. + /// The region of interest. /// The stream to write to. /// The length of the frame color palette. /// The index of the color used to represent transparency. - private void WriteImageData(Buffer2DRegion indices, Stream stream, int paletteLength, int transparencyIndex) + private void WriteImageData(Buffer2D indices, Rectangle interest, Stream stream, int paletteLength, int transparencyIndex) { + Buffer2DRegion region = indices.GetRegion(interest); + // Pad the bit depth when required for encoding the image data. // This is a common trick which allows to use out of range indexes for transparency and avoid allocating a larger color palette // as decoders skip indexes that are out of range. @@ -936,6 +940,6 @@ private void WriteImageData(Buffer2DRegion indices, Stream stream, int pal : 0; using LzwEncoder encoder = new(this.memoryAllocator, ColorNumerics.GetBitsNeededForColorDepth(paletteLength + padding)); - encoder.Encode(indices, stream); + encoder.Encode(region, stream); } } diff --git a/src/ImageSharp/Formats/Gif/GifMetadata.cs b/src/ImageSharp/Formats/Gif/GifMetadata.cs index 184ccd644f..0172344ff9 100644 --- a/src/ImageSharp/Formats/Gif/GifMetadata.cs +++ b/src/ImageSharp/Formats/Gif/GifMetadata.cs @@ -23,7 +23,7 @@ private GifMetadata(GifMetadata other) { this.RepeatCount = other.RepeatCount; this.ColorTableMode = other.ColorTableMode; - this.BackgroundColor = other.BackgroundColor; + this.BackgroundColorIndex = other.BackgroundColorIndex; if (other.GlobalColorTable?.Length > 0) { @@ -58,7 +58,7 @@ private GifMetadata(GifMetadata other) /// Gets or sets the index at the for the background color. /// The background color is the color used for those pixels on the screen that are not covered by an image. /// - public byte BackgroundColor { get; set; } + public byte BackgroundColorIndex { get; set; } /// /// Gets or sets the collection of comments about the graphics, credits, descriptions or any From b48dbc5087de9bd98dc8ed0f478550e22d4e1ff9 Mon Sep 17 00:00:00 2001 From: antonfirsov Date: Sat, 2 Sep 2023 00:00:47 +0200 Subject: [PATCH 17/18] if transparencyIndex is outside the palette, ignore it --- .../Quantization/EuclideanPixelMap{TPixel}.cs | 31 +++++-------------- 1 file changed, 8 insertions(+), 23 deletions(-) diff --git a/src/ImageSharp/Processing/Processors/Quantization/EuclideanPixelMap{TPixel}.cs b/src/ImageSharp/Processing/Processors/Quantization/EuclideanPixelMap{TPixel}.cs index e767ac4f74..f75664903d 100644 --- a/src/ImageSharp/Processing/Processors/Quantization/EuclideanPixelMap{TPixel}.cs +++ b/src/ImageSharp/Processing/Processors/Quantization/EuclideanPixelMap{TPixel}.cs @@ -53,21 +53,16 @@ public EuclideanPixelMap(Configuration configuration, ReadOnlyMemory pal this.rgbaPalette = new Rgba32[palette.Length]; this.cache = new ColorDistanceCache(configuration.MemoryAllocator); PixelOperations.Instance.ToRgba32(configuration, this.Palette.Span, this.rgbaPalette); - this.transparentIndex = transparentIndex; + + // If the provided transparentIndex is outside of the palette, silently ignore it. + this.transparentIndex = transparentIndex < this.Palette.Length ? transparentIndex : -1; } /// /// Gets the color palette of this . /// The palette memory is owned by the palette source that created it. /// - public ReadOnlyMemory Palette - { - [MethodImpl(InliningOptions.ShortMethod)] - get; - - [MethodImpl(InliningOptions.ShortMethod)] - private set; - } + public ReadOnlyMemory Palette { get; private set; } /// /// Returns the closest color in the palette and the index of that pixel. @@ -106,10 +101,10 @@ public void Clear(ReadOnlyMemory palette) } /// - /// Allows setting the transparent index after construction. + /// Allows setting the transparent index after construction. If the provided transparentIndex is outside of the palette, silently ignore it. /// /// An explicit index at which to match transparent pixels. - public void SetTransparentIndex(int index) => this.transparentIndex = index; + public void SetTransparentIndex(int index) => this.transparentIndex = index < this.Palette.Length ? index : -1; [MethodImpl(InliningOptions.ShortMethod)] private int GetClosestColorSlow(Rgba32 rgba, ref TPixel paletteRef, out TPixel match) @@ -122,19 +117,9 @@ private int GetClosestColorSlow(Rgba32 rgba, ref TPixel paletteRef, out TPixel m { // We have explicit instructions. No need to search. index = this.transparentIndex; + DebugGuard.MustBeLessThan(index, this.Palette.Length, nameof(index)); this.cache.Add(rgba, (byte)index); - - if (index >= 0 && index < this.Palette.Length) - { - match = Unsafe.Add(ref paletteRef, (uint)index); - } - else - { - Unsafe.SkipInit(out TPixel pixel); - pixel.FromScaledVector4(Vector4.Zero); - match = pixel; - } - + match = Unsafe.Add(ref paletteRef, (uint)index); return index; } From b56633e2f07a81f92d17c79c42990519035d6743 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Mon, 11 Sep 2023 20:51:39 +1000 Subject: [PATCH 18/18] Review fixes --- src/ImageSharp/Formats/Gif/GifDecoderCore.cs | 11 ++++++----- src/ImageSharp/Formats/Gif/GifFrameMetadata.cs | 3 +++ src/ImageSharp/Formats/Gif/GifMetadata.cs | 3 +++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/ImageSharp/Formats/Gif/GifDecoderCore.cs b/src/ImageSharp/Formats/Gif/GifDecoderCore.cs index 776cb0e3c2..bc41c89dcf 100644 --- a/src/ImageSharp/Formats/Gif/GifDecoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifDecoderCore.cs @@ -710,10 +710,10 @@ private void SetFrameMetadata(ImageFrameMetadata metadata) gifMeta.ColorTableMode = GifColorTableMode.Local; Color[] colorTable = new Color[this.imageDescriptor.LocalColorTableSize]; - ref Rgb24 localBase = ref MemoryMarshal.GetReference(MemoryMarshal.Cast(this.currentLocalColorTable!.GetSpan()[..this.currentLocalColorTableSize])); + ReadOnlySpan rgbTable = MemoryMarshal.Cast(this.currentLocalColorTable!.GetSpan()[..this.currentLocalColorTableSize]); for (int i = 0; i < colorTable.Length; i++) { - colorTable[i] = new Color(Unsafe.Add(ref localBase, (uint)i)); + colorTable[i] = new Color(rgbTable[i]); } gifMeta.LocalColorTable = colorTable; @@ -784,13 +784,14 @@ private void ReadLogicalScreenDescriptorAndGlobalColorTable(BufferedReadStream s this.globalColorTable = this.memoryAllocator.Allocate(globalColorTableLength, AllocationOptions.Clean); // Read the global color table data from the stream and preserve it in the gif metadata - stream.Read(this.globalColorTable.GetSpan()); + Span globalColorTableSpan = this.globalColorTable.GetSpan(); + stream.Read(globalColorTableSpan); Color[] colorTable = new Color[this.logicalScreenDescriptor.GlobalColorTableSize]; - ref Rgb24 globalBase = ref MemoryMarshal.GetReference(MemoryMarshal.Cast(this.globalColorTable.GetSpan())); + ReadOnlySpan rgbTable = MemoryMarshal.Cast(globalColorTableSpan); for (int i = 0; i < colorTable.Length; i++) { - colorTable[i] = new Color(Unsafe.Add(ref globalBase, (uint)i)); + colorTable[i] = new Color(rgbTable[i]); } this.gifMetadata.GlobalColorTable = colorTable; diff --git a/src/ImageSharp/Formats/Gif/GifFrameMetadata.cs b/src/ImageSharp/Formats/Gif/GifFrameMetadata.cs index f7959ac12b..faabf7dfa8 100644 --- a/src/ImageSharp/Formats/Gif/GifFrameMetadata.cs +++ b/src/ImageSharp/Formats/Gif/GifFrameMetadata.cs @@ -1,6 +1,8 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. +using SixLabors.ImageSharp.PixelFormats; + namespace SixLabors.ImageSharp.Formats.Gif; /// @@ -41,6 +43,7 @@ private GifFrameMetadata(GifFrameMetadata other) /// /// Gets or sets the local color table, if any. + /// The underlying pixel format is represented by . /// public ReadOnlyMemory? LocalColorTable { get; set; } diff --git a/src/ImageSharp/Formats/Gif/GifMetadata.cs b/src/ImageSharp/Formats/Gif/GifMetadata.cs index 0172344ff9..d25e2a5cc2 100644 --- a/src/ImageSharp/Formats/Gif/GifMetadata.cs +++ b/src/ImageSharp/Formats/Gif/GifMetadata.cs @@ -1,6 +1,8 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. +using SixLabors.ImageSharp.PixelFormats; + namespace SixLabors.ImageSharp.Formats.Gif; /// @@ -51,6 +53,7 @@ private GifMetadata(GifMetadata other) /// /// Gets or sets the global color table, if any. + /// The underlying pixel format is represented by . /// public ReadOnlyMemory? GlobalColorTable { get; set; }