Add new twain impl option for MemXfer

This commit is contained in:
Ben Olden-Cooligan 2017-06-08 11:53:12 -04:00
parent bf938742a6
commit e015151f89
5 changed files with 22 additions and 4 deletions

View File

@ -366,6 +366,15 @@ namespace NAPS2.Lang.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Alternative Transfer.
/// </summary>
internal static string TwainImpl_MemXfer {
get {
return ResourceManager.GetString("TwainImpl_MemXfer", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Old DSM.
/// </summary>

View File

@ -219,6 +219,9 @@
<data name="TwainImpl_Legacy" xml:space="preserve">
<value>Legacy (native UI only)</value>
</data>
<data name="TwainImpl_MemXfer" xml:space="preserve">
<value>Alternative Transfer</value>
</data>
<data name="TwainImpl_OldDsm" xml:space="preserve">
<value>Old DSM</value>
</data>

View File

@ -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")]

View File

@ -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)
{

View File

@ -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)