From e015151f8948468bd9d75c1e85fd0690e9f3cd21 Mon Sep 17 00:00:00 2001 From: Ben Olden-Cooligan Date: Thu, 8 Jun 2017 11:53:12 -0400 Subject: [PATCH] Add new twain impl option for MemXfer --- .../Lang/Resources/SettingsResources.Designer.cs | 9 +++++++++ NAPS2.Core/Lang/Resources/SettingsResources.resx | 3 +++ NAPS2.Core/Scan/ScanProfile.cs | 2 ++ NAPS2.Core/Scan/Twain/TwainWrapper.cs | 11 +++++++---- NAPS2.Core/WinForms/FAdvancedScanSettings.cs | 1 + 5 files changed, 22 insertions(+), 4 deletions(-) diff --git a/NAPS2.Core/Lang/Resources/SettingsResources.Designer.cs b/NAPS2.Core/Lang/Resources/SettingsResources.Designer.cs index a50c27495..3246abcc1 100644 --- a/NAPS2.Core/Lang/Resources/SettingsResources.Designer.cs +++ b/NAPS2.Core/Lang/Resources/SettingsResources.Designer.cs @@ -366,6 +366,15 @@ namespace NAPS2.Lang.Resources { } } + /// + /// Looks up a localized string similar to Alternative Transfer. + /// + internal static string TwainImpl_MemXfer { + get { + return ResourceManager.GetString("TwainImpl_MemXfer", resourceCulture); + } + } + /// /// Looks up a localized string similar to Old DSM. /// diff --git a/NAPS2.Core/Lang/Resources/SettingsResources.resx b/NAPS2.Core/Lang/Resources/SettingsResources.resx index 96ea0f744..e5a0e50e0 100644 --- a/NAPS2.Core/Lang/Resources/SettingsResources.resx +++ b/NAPS2.Core/Lang/Resources/SettingsResources.resx @@ -219,6 +219,9 @@ Legacy (native UI only) + + Alternative Transfer + Old DSM diff --git a/NAPS2.Core/Scan/ScanProfile.cs b/NAPS2.Core/Scan/ScanProfile.cs index e6507a793..5bbbdc32c 100644 --- a/NAPS2.Core/Scan/ScanProfile.cs +++ b/NAPS2.Core/Scan/ScanProfile.cs @@ -139,6 +139,8 @@ namespace NAPS2.Scan { [LocalizedDescription(typeof(SettingsResources), "TwainImpl_Default")] Default, + [LocalizedDescription(typeof(SettingsResources), "TwainImpl_MemXfer")] + MemXfer, [LocalizedDescription(typeof(SettingsResources), "TwainImpl_OldDsm")] OldDsm, [LocalizedDescription(typeof(SettingsResources), "TwainImpl_Legacy")] diff --git a/NAPS2.Core/Scan/Twain/TwainWrapper.cs b/NAPS2.Core/Scan/Twain/TwainWrapper.cs index 62075e0bf..5a9da322d 100644 --- a/NAPS2.Core/Scan/Twain/TwainWrapper.cs +++ b/NAPS2.Core/Scan/Twain/TwainWrapper.cs @@ -85,8 +85,6 @@ namespace NAPS2.Scan.Twain int pageNumber = 0; - bool useMemXfer = false; - session.TransferReady += (sender, eventArgs) => { Debug.WriteLine("NAPS2.TW - TransferReady"); @@ -101,7 +99,7 @@ namespace NAPS2.Scan.Twain { Debug.WriteLine("NAPS2.TW - DataTransferred"); pageNumber++; - using (var output = useMemXfer + using (var output = scanProfile.TwainImpl == TwainImpl.MemXfer ? GetBitmapFromMemXFer(eventArgs.MemoryData, eventArgs.ImageInfo) : Image.FromStream(eventArgs.GetNativeImageStream())) { @@ -198,7 +196,6 @@ namespace NAPS2.Scan.Twain return; } ConfigureDS(ds, scanProfile, scanParams); - useMemXfer = ds.Capabilities.ICapXferMech.GetCurrent() == XferMech.Memory; var ui = scanProfile.UseNativeUI ? SourceEnableMode.ShowUI : SourceEnableMode.NoUI; Debug.WriteLine("NAPS2.TW - Enabling DS"); rc = ds.Enable(ui, true, twainForm.Handle); @@ -310,6 +307,12 @@ namespace NAPS2.Scan.Twain return; } + // Transfer Mode + if (scanProfile.TwainImpl == TwainImpl.MemXfer) + { + ds.Capabilities.ICapXferMech.SetValue(XferMech.Memory); + } + // Paper Source switch (scanProfile.PaperSource) { diff --git a/NAPS2.Core/WinForms/FAdvancedScanSettings.cs b/NAPS2.Core/WinForms/FAdvancedScanSettings.cs index 24afbf335..ae8f576ed 100644 --- a/NAPS2.Core/WinForms/FAdvancedScanSettings.cs +++ b/NAPS2.Core/WinForms/FAdvancedScanSettings.cs @@ -19,6 +19,7 @@ namespace NAPS2.WinForms cmbTwainImpl.Format += (sender, e) => e.Value = ((Enum) e.ListItem).Description(); cmbTwainImpl.Items.Add(TwainImpl.Default); + cmbTwainImpl.Items.Add(TwainImpl.MemXfer); cmbTwainImpl.Items.Add(TwainImpl.OldDsm); cmbTwainImpl.Items.Add(TwainImpl.Legacy); if (Environment.Is64BitProcess)