Beispiel #1
0
        internal static GifApplicationExtension ReadApplication(Stream stream)
        {
            var ext = new GifApplicationExtension();

            ext.Read(stream);
            return(ext);
        }
Beispiel #2
0
        internal static GifExtension ReadExtension(Stream stream, IEnumerable <GifExtension> controlExtensions, bool metadataOnly)
        {
            // Note: at this point, the Extension Introducer (0x21) has already been read

            var label = stream.ReadByte();

            if (label < 0)
            {
                throw GifHelpers.UnexpectedEndOfStreamException();
            }
            return(label switch
            {
                GifGraphicControlExtension.ExtensionLabel => (GifExtension)GifGraphicControlExtension.ReadGraphicsControl(stream),
                GifCommentExtension.ExtensionLabel => GifCommentExtension.ReadComment(stream),
                GifPlainTextExtension.ExtensionLabel => GifPlainTextExtension.ReadPlainText(stream, controlExtensions, metadataOnly),
                GifApplicationExtension.ExtensionLabel => GifApplicationExtension.ReadApplication(stream),
                _ => throw GifHelpers.UnknownExtensionTypeException(label)
            });
Beispiel #3
0
 public static ushort GetRepeatCount(GifApplicationExtension ext)
 {
     return(ext.Data?.Length >= 3 ? BitConverter.ToUInt16(ext.Data, 1) : (ushort)1);
 }
Beispiel #4
0
 public static bool IsNetscapeExtension(GifApplicationExtension ext)
 {
     return(ext.ApplicationIdentifier == "NETSCAPE" &&
            Encoding.ASCII.GetString(ext.AuthenticationCode ?? Array.Empty <byte>()) == "2.0");
 }