internal static GifExtension ReadExtension(Stream stream, IEnumerable <GifExtension> controlExtensions, bool metadataOnly) { int extensionLabel = stream.ReadByte(); if (extensionLabel < 0) { throw GifHelpers.UnexpectedEndOfStreamException(); } int num2 = extensionLabel; if (num2 == 1) { return(GifPlainTextExtension.ReadPlainText(stream, controlExtensions, metadataOnly)); } if (num2 == 0xf9) { return(GifGraphicControlExtension.ReadGraphicsControl(stream)); } switch (num2) { case 0xfe: return(GifCommentExtension.ReadComment(stream)); case 0xff: return(GifApplicationExtension.ReadApplication(stream)); } throw GifHelpers.UnknownExtensionTypeException(extensionLabel); }
internal static GifApplicationExtension ReadApplication(Stream stream) { GifApplicationExtension extension = new GifApplicationExtension(); extension.Read(stream); return(extension); }
internal static GifExtension ReadExtension(Stream stream, IEnumerable <GifExtension> controlExtensions, bool metadataOnly) { // Note: at this point, the Extension Introducer (0x21) has already been read int label = stream.ReadByte(); if (label < 0) { throw GifHelpers.UnexpectedEndOfStreamException(); } switch (label) { case GifGraphicControlExtension.ExtensionLabel: return(GifGraphicControlExtension.ReadGraphicsControl(stream)); case GifCommentExtension.ExtensionLabel: return(GifCommentExtension.ReadComment(stream)); case GifPlainTextExtension.ExtensionLabel: return(GifPlainTextExtension.ReadPlainText(stream, controlExtensions, metadataOnly)); case GifApplicationExtension.ExtensionLabel: return(GifApplicationExtension.ReadApplication(stream)); default: throw GifHelpers.UnknownExtensionTypeException(label); } }
internal static GifApplicationExtension ReadApplication(Stream stream) { var ext = new GifApplicationExtension(); ext.Read(stream); return(ext); }
public static ushort GetRepeatCount(GifApplicationExtension ext) { if (ext.Data.Length >= 3) { return BitConverter.ToUInt16(ext.Data, 1); } return 1; }
public static ushort GetRepeatCount(GifApplicationExtension ext) { if (ext.Data.Length >= 3) { return(BitConverter.ToUInt16(ext.Data, 1)); } return(1); }
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; } }
internal static GifApplicationExtension ReadApplication(Stream stream) { var ext = new GifApplicationExtension(); ext.Read(stream); return ext; }
public static bool IsNetscapeExtension(GifApplicationExtension ext) { return ext.ApplicationIdentifier == "NETSCAPE" && Encoding.ASCII.GetString(ext.AuthenticationCode) == "2.0"; }
public static bool IsNetscapeExtension(GifApplicationExtension ext) { return(ext.ApplicationIdentifier == "NETSCAPE" && Encoding.ASCII.GetString(ext.AuthenticationCode) == "2.0"); }
public static ushort GetRepeatCount(GifApplicationExtension ext) => ((ext.Data.Length < 3) ? 1 : BitConverter.ToUInt16(ext.Data, 1));