private static void AddError(string errorMessage, List <Directory> directories) { ErrorDirectory directory = directories.OfType <ErrorDirectory>().FirstOrDefault(); if (directory == null) { directories.Add(new ErrorDirectory(errorMessage)); } else { directory.AddError(errorMessage); } }
private static Directory?ReadGifExtensionBlock(SequentialReader reader) { var extensionLabel = reader.GetByte(); var blockSizeBytes = reader.GetByte(); var blockStartPos = reader.Position; Directory?directory; switch (extensionLabel) { case 0x01: { directory = ReadPlainTextBlock(reader, blockSizeBytes); break; } case 0xf9: { directory = ReadControlBlock(reader, blockSizeBytes); break; } case 0xfe: { directory = ReadCommentBlock(reader, blockSizeBytes); break; } case 0xff: { directory = ReadApplicationExtensionBlock(reader, blockSizeBytes); break; } default: { directory = new ErrorDirectory($"Unsupported GIF extension block with type 0x{extensionLabel:X2}."); break; } } var skipCount = blockStartPos + blockSizeBytes - reader.Position; if (skipCount > 0) { reader.Skip(skipCount); } return(directory); }
private Directory GetCurrentOrErrorDirectory() { if (CurrentDirectory != null) { return(CurrentDirectory); } var error = Directories.OfType <ErrorDirectory>().FirstOrDefault(); if (error != null) { return(error); } error = new ErrorDirectory(); PushDirectory(error); return(error); }