コード例 #1
0
        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);
        }
コード例 #2
0
        internal static GifApplicationExtension ReadApplication(Stream stream)
        {
            GifApplicationExtension extension = new GifApplicationExtension();

            extension.Read(stream);
            return(extension);
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        internal static GifApplicationExtension ReadApplication(Stream stream)
        {
            var ext = new GifApplicationExtension();

            ext.Read(stream);
            return(ext);
        }
コード例 #5
0
 public static ushort GetRepeatCount(GifApplicationExtension ext)
 {
     if (ext.Data.Length >= 3)
     {
         return BitConverter.ToUInt16(ext.Data, 1);
     }
     return 1;
 }
コード例 #6
0
ファイル: GifHelpers.cs プロジェクト: bibikov505/Ubiquitous2
 public static ushort GetRepeatCount(GifApplicationExtension ext)
 {
     if (ext.Data.Length >= 3)
     {
         return(BitConverter.ToUInt16(ext.Data, 1));
     }
     return(1);
 }
コード例 #7
0
        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;
            }
        }
コード例 #8
0
 internal static GifApplicationExtension ReadApplication(Stream stream)
 {
     var ext = new GifApplicationExtension();
     ext.Read(stream);
     return ext;
 }
コード例 #9
0
 public static bool IsNetscapeExtension(GifApplicationExtension ext)
 {
     return ext.ApplicationIdentifier == "NETSCAPE"
         && Encoding.ASCII.GetString(ext.AuthenticationCode) == "2.0";
 }
コード例 #10
0
ファイル: GifHelpers.cs プロジェクト: bibikov505/Ubiquitous2
 public static bool IsNetscapeExtension(GifApplicationExtension ext)
 {
     return(ext.ApplicationIdentifier == "NETSCAPE" &&
            Encoding.ASCII.GetString(ext.AuthenticationCode) == "2.0");
 }
コード例 #11
0
 public static ushort GetRepeatCount(GifApplicationExtension ext) =>
 ((ext.Data.Length < 3) ? 1 : BitConverter.ToUInt16(ext.Data, 1));