aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.AnimatedGif/Decoding/GifExtension.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Tango.AnimatedGif/Decoding/GifExtension.cs')
-rw-r--r--Software/Visual_Studio/Tango.AnimatedGif/Decoding/GifExtension.cs32
1 files changed, 32 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.AnimatedGif/Decoding/GifExtension.cs b/Software/Visual_Studio/Tango.AnimatedGif/Decoding/GifExtension.cs
new file mode 100644
index 000000000..fda8909ec
--- /dev/null
+++ b/Software/Visual_Studio/Tango.AnimatedGif/Decoding/GifExtension.cs
@@ -0,0 +1,32 @@
+using System.Collections.Generic;
+using System.IO;
+
+namespace Tango.AnimatedGif.Decoding
+{
+ internal abstract class GifExtension : GifBlock
+ {
+ internal const int ExtensionIntroducer = 0x21;
+
+ 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);
+ }
+ }
+ }
+}