ScreenToGif/ImageUtil/Decoder/GifExtension.cs

(完整代码) 1KB

using System.Collections.Generic;
using System.IO;

namespace ScreenToGif.ImageUtil.Decoder
{
    public abstract class GifExtension : GifBlock
    {
        public const int ExtensionIntroducer = 0x21;

        public 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);
            }
        }
    }
}

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。