private void Read(Stream stream, IEnumerable <GifExtension> controlExtensions, bool metadataOnly) { // Note: at this point, the Image Separator (0x2C) has already been read Descriptor = GifImageDescriptor.ReadImageDescriptor(stream); if (Descriptor.HasLocalColorTable) { LocalColorTable = GifHelpers.ReadColorTable(stream, Descriptor.LocalColorTableSize); } ImageData = GifImageData.ReadImageData(stream, metadataOnly); Extensions = controlExtensions.ToList().AsReadOnly(); }
private void Read(Stream stream, bool metadataOnly) { Header = GifHeader.ReadHeader(stream); if (Header.LogicalScreenDescriptor?.HasGlobalColorTable == true) { GlobalColorTable = GifHelpers.ReadColorTable(stream, Header.LogicalScreenDescriptor.GlobalColorTableSize); } ReadFrames(stream, metadataOnly); var netscapeExtension = Extensions .OfType <GifApplicationExtension>() .FirstOrDefault(GifHelpers.IsNetscapeExtension); RepeatCount = netscapeExtension != null?GifHelpers.GetRepeatCount(netscapeExtension) : (ushort)1; }