From d6440ba74755caa363be5567a4f78f7b259885c8 Mon Sep 17 00:00:00 2001 From: Ben Olden-Cooligan Date: Sat, 23 Jul 2022 09:36:06 -0700 Subject: [PATCH] Use ScanningContext to create images in PdfSharpImporter --- .../Recovery/RecoveryStorageManagerTests.cs | 3 +-- NAPS2.Lib.WinForms/Scan/Twain/Legacy/TwainApi.cs | 2 +- NAPS2.Sdk/ImportExport/Images/ImageImporter.cs | 3 +-- NAPS2.Sdk/ImportExport/Pdf/PdfSharpImporter.cs | 10 +++------- NAPS2.Sdk/Scan/Internal/RemotePostProcessor.cs | 2 +- NAPS2.Sdk/Scan/ScanningContext.cs | 5 +++++ 6 files changed, 12 insertions(+), 13 deletions(-) diff --git a/NAPS2.Lib.Tests/Recovery/RecoveryStorageManagerTests.cs b/NAPS2.Lib.Tests/Recovery/RecoveryStorageManagerTests.cs index 22dd91412..ef61c72fe 100644 --- a/NAPS2.Lib.Tests/Recovery/RecoveryStorageManagerTests.cs +++ b/NAPS2.Lib.Tests/Recovery/RecoveryStorageManagerTests.cs @@ -83,8 +83,7 @@ public class RecoveryStorageManagerTests : ContextualTests new GdiImage(new Bitmap(100, 100)), BitDepth.Grayscale, true, - -1, - Enumerable.Empty())); + -1)); _recoveryStorageManager.WriteIndex(new[] {image1}); var indexFileContent = File.ReadAllText(Path.Combine(_recoveryFolder, "index.xml")); diff --git a/NAPS2.Lib.WinForms/Scan/Twain/Legacy/TwainApi.cs b/NAPS2.Lib.WinForms/Scan/Twain/Legacy/TwainApi.cs index d1b84bc73..339d1320a 100644 --- a/NAPS2.Lib.WinForms/Scan/Twain/Legacy/TwainApi.cs +++ b/NAPS2.Lib.WinForms/Scan/Twain/Legacy/TwainApi.cs @@ -127,7 +127,7 @@ internal static class TwainApi // TODO: Clean this up a bit using Bitmap bmp = DibUtils.BitmapFromDib(img, out bitcount); - Bitmaps.Add(_scanningContext.CreateProcessedImage(new GdiImage(bmp), bitcount == 1 ? BitDepth.BlackAndWhite : BitDepth.Color, _settings.MaxQuality, _settings.Quality, Enumerable.Empty())); + Bitmaps.Add(_scanningContext.CreateProcessedImage(new GdiImage(bmp), bitcount == 1 ? BitDepth.BlackAndWhite : BitDepth.Color, _settings.MaxQuality, _settings.Quality)); } _form.Close(); break; diff --git a/NAPS2.Sdk/ImportExport/Images/ImageImporter.cs b/NAPS2.Sdk/ImportExport/Images/ImageImporter.cs index 7063096c2..fd1461e0f 100644 --- a/NAPS2.Sdk/ImportExport/Images/ImageImporter.cs +++ b/NAPS2.Sdk/ImportExport/Images/ImageImporter.cs @@ -60,8 +60,7 @@ public class ImageImporter : IImageImporter frame, BitDepth.Color, lossless, - -1, - Enumerable.Empty()); + -1); image = _importPostProcessor.AddPostProcessingData( image, frame, diff --git a/NAPS2.Sdk/ImportExport/Pdf/PdfSharpImporter.cs b/NAPS2.Sdk/ImportExport/Pdf/PdfSharpImporter.cs index 734e578e8..d7013de9f 100644 --- a/NAPS2.Sdk/ImportExport/Pdf/PdfSharpImporter.cs +++ b/NAPS2.Sdk/ImportExport/Pdf/PdfSharpImporter.cs @@ -11,6 +11,7 @@ using PdfSharp.Pdf.IO; namespace NAPS2.ImportExport.Pdf; // TODO: We should have a "nicer" name (PdfImporter) for SDK users, or maybe have this be internal and have the public ScannedImageImporter (which should also maybe be renamed...) +// TODO: Add tests public class PdfSharpImporter : IPdfImporter { static PdfSharpImporter() @@ -228,11 +229,7 @@ public class PdfSharpImporter : IPdfImporter using var memoryStream = new MemoryStream(imageBytes); using var storage = _scanningContext.ImageContext.Load(memoryStream); storage.SetResolution(storage.Width / (float) page.Width.Inch, storage.Height / (float) page.Height.Inch); - var image = new ProcessedImage( - storage, - new ImageMetadata(BitDepth.Color, false), - new PostProcessingData(), - TransformState.Empty); + var image = _scanningContext.CreateProcessedImage(storage, BitDepth.Color, false, -1); return _importPostProcessor.AddPostProcessingData( image, storage, @@ -270,8 +267,7 @@ public class PdfSharpImporter : IPdfImporter using (storage) { storage.SetResolution(storage.Width / (float) page.Width.Inch, storage.Height / (float) page.Height.Inch); - // TODO: This should probably use CreateProcessedImage to convert the storage? And also make a copy/clone if needed - var image = new ProcessedImage(storage, new ImageMetadata(bitDepth, true), new PostProcessingData(), TransformState.Empty); + var image = _scanningContext.CreateProcessedImage(storage, bitDepth, true, -1); return _importPostProcessor.AddPostProcessingData( image, storage, diff --git a/NAPS2.Sdk/Scan/Internal/RemotePostProcessor.cs b/NAPS2.Sdk/Scan/Internal/RemotePostProcessor.cs index acc228b97..74cebae1c 100644 --- a/NAPS2.Sdk/Scan/Internal/RemotePostProcessor.cs +++ b/NAPS2.Sdk/Scan/Internal/RemotePostProcessor.cs @@ -41,7 +41,7 @@ internal class RemotePostProcessor : IRemotePostProcessor var bitDepth = options.UseNativeUI ? BitDepth.Color : options.BitDepth; var scannedImage = _scanningContext.CreateProcessedImage(image, bitDepth, options.MaxQuality, - options.Quality, Enumerable.Empty()); + options.Quality); DoRevertibleTransforms(ref scannedImage, ref image, options, postProcessingContext); postProcessingContext.TempPath = SaveForBackgroundOcr(image, options); // TODO: We need to attach the thumbnail to the scanned image diff --git a/NAPS2.Sdk/Scan/ScanningContext.cs b/NAPS2.Sdk/Scan/ScanningContext.cs index c03da9875..12cb735e1 100644 --- a/NAPS2.Sdk/Scan/ScanningContext.cs +++ b/NAPS2.Sdk/Scan/ScanningContext.cs @@ -54,6 +54,11 @@ public class ScanningContext : IDisposable return CreateProcessedImage(storage, BitDepth.Color, false, -1, transforms); } + public ProcessedImage CreateProcessedImage(IImageStorage storage, BitDepth bitDepth, bool lossless, int quality) + { + return CreateProcessedImage(storage, bitDepth, lossless, quality, Enumerable.Empty()); + } + public ProcessedImage CreateProcessedImage(IImageStorage storage, BitDepth bitDepth, bool lossless, int quality, IEnumerable transforms) {