private void Read(Stream stream, IEnumerable <GifExtension> controlExtensions, bool metadataOnly) { this.Descriptor = GifImageDescriptor.ReadImageDescriptor(stream); if (this.Descriptor.HasLocalColorTable) { this.LocalColorTable = GifHelpers.ReadColorTable(stream, this.Descriptor.LocalColorTableSize); } this.ImageData = GifImageData.ReadImageData(stream, metadataOnly); this.Extensions = controlExtensions.ToList <GifExtension>().AsReadOnly(); }
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) { this.Header = GifHeader.ReadHeader(stream); if (this.Header.LogicalScreenDescriptor.HasGlobalColorTable) { this.GlobalColorTable = GifHelpers.ReadColorTable(stream, this.Header.LogicalScreenDescriptor.GlobalColorTableSize); } this.ReadFrames(stream, metadataOnly); GifApplicationExtension ext = this.Extensions.OfType <GifApplicationExtension>().FirstOrDefault <GifApplicationExtension>(new Func <GifApplicationExtension, bool>(GifHelpers.IsNetscapeExtension)); if (ext != null) { this.RepeatCount = GifHelpers.GetRepeatCount(ext); } else { this.RepeatCount = 1; } }
private void Read(Stream stream, bool metadataOnly) { Header = GifHeader.ReadHeader(stream); if (Header.LogicalScreenDescriptor.HasGlobalColorTable) { GlobalColorTable = GifHelpers.ReadColorTable(stream, Header.LogicalScreenDescriptor.GlobalColorTableSize); } ReadFrames(stream, metadataOnly); var netscapeExtension = Extensions .OfType <GifApplicationExtension>() .FirstOrDefault(GifHelpers.IsNetscapeExtension); if (netscapeExtension != null) { RepeatCount = GifHelpers.GetRepeatCount(netscapeExtension); } else { RepeatCount = 1; } }