Wrapped more source triplets.

This commit is contained in:
soukoku
2014-05-20 07:25:57 -04:00
parent 9bf86464c8
commit 5d1b0aa06f
49 changed files with 465 additions and 390 deletions

View File

@@ -100,9 +100,6 @@
<Compile Include="..\NTwain\Internals\WrappedManualResetEvent.cs">
<Link>Internals\WrappedManualResetEvent.cs</Link>
</Compile>
<Compile Include="..\NTwain\ITwainOperation.cs">
<Link>ITwainOperation.cs</Link>
</Compile>
<Compile Include="..\NTwain\ITwainSession.cs">
<Link>ITwainSession.cs</Link>
</Compile>

View File

@@ -1,66 +0,0 @@
using NTwain.Data;
using NTwain.Triplets;
using System;
using System.Collections.Generic;
namespace NTwain
{
/// <summary>
/// Interface for TWAIN triplet operations.
/// </summary>
public interface ITwainOperation
{
/// <summary>
/// Gets the triplet operations defined for audio data group.
/// </summary>
DGAudio DGAudio { get; }
/// <summary>
/// Gets the triplet operations defined for control data group.
/// </summary>
DGControl DGControl { get; }
/// <summary>
/// Gets the triplet operations defined for image data group.
/// </summary>
DGImage DGImage { get; }
/// <summary>
/// Gets the direct triplet operation entry for custom values.
/// </summary>
DGCustom DGCustom { get; }
/// <summary>
/// Opens the data source manager. This must be the first method used
/// before using other TWAIN functions. Calls to this must be followed by <see cref="Close"/> when done with a TWAIN session.
/// </summary>
/// <returns></returns>
ReturnCode Open();
/// <summary>
/// Closes the data source manager.
/// </summary>
/// <returns></returns>
ReturnCode Close();
/// <summary>
/// Forces the stepping down of an opened source when things gets out of control.
/// Used when session state and source state become out of sync.
/// </summary>
/// <param name="targetState">State of the target.</param>
void ForceStepDown(int targetState);
/// <summary>
/// Gets list of sources available in the system.
/// </summary>
/// <returns></returns>
IEnumerable<TwainSource> GetSources();
/// <summary>
/// Gets the manager status. Only call this at state 2 or higher.
/// </summary>
/// <param name="session">The session.</param>
/// <returns></returns>
TWStatus GetStatus();
}
}

View File

@@ -1,4 +1,5 @@
using NTwain.Data;
using NTwain.Triplets;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -10,7 +11,7 @@ namespace NTwain
/// <summary>
/// General interface for a TWAIN session.
/// </summary>
public interface ITwainSession : INotifyPropertyChanged, ITwainOperation
public interface ITwainSession : INotifyPropertyChanged
{
/// <summary>
/// Gets the currently open source.
@@ -18,12 +19,82 @@ namespace NTwain
/// <value>
/// The current source.
/// </value>
TwainSource Source { get; }
TwainSource CurrentSource { get; }
/// <summary>
/// Gets or sets the default source for this application.
/// While this can be get as long as the session is open,
/// it can only be set at State 3.
/// </summary>
/// <value>
/// The default source.
/// </value>
TwainSource DefaultSource { get; set; }
/// <summary>
/// Gets the current state number as defined by the TWAIN spec.
/// </summary>
/// <value>The state.</value>
int State { get; }
/// <summary>
/// Gets the triplet operations defined for audio data group.
/// </summary>
DGAudio DGAudio { get; }
/// <summary>
/// Gets the triplet operations defined for control data group.
/// </summary>
DGControl DGControl { get; }
/// <summary>
/// Gets the triplet operations defined for image data group.
/// </summary>
DGImage DGImage { get; }
/// <summary>
/// Gets the direct triplet operation entry for custom values.
/// </summary>
DGCustom DGCustom { get; }
/// <summary>
/// Try to show the built-in source selector dialog and return the selected source.
/// This is not recommended and is only included for completeness.
/// </summary>
/// <returns></returns>
TwainSource ShowSourceSelector();
/// <summary>
/// Opens the data source manager. This must be the first method used
/// before using other TWAIN functions. Calls to this must be followed by <see cref="Close"/> when done with a TWAIN session.
/// </summary>
/// <returns></returns>
ReturnCode Open();
/// <summary>
/// Closes the data source manager.
/// </summary>
/// <returns></returns>
ReturnCode Close();
/// <summary>
/// Forces the stepping down of an opened source when things gets out of control.
/// Used when session state and source state become out of sync.
/// </summary>
/// <param name="targetState">State of the target.</param>
void ForceStepDown(int targetState);
/// <summary>
/// Gets list of sources available in the system.
/// </summary>
/// <returns></returns>
IEnumerable<TwainSource> GetSources();
/// <summary>
/// Gets the manager status. Only call this at state 2 or higher.
/// </summary>
/// <param name="session">The session.</param>
/// <returns></returns>
TWStatus GetStatus();
}
}

View File

@@ -1,6 +1,7 @@
using NTwain.Data;
using System;
using System.Collections.Generic;
using System.Threading;
namespace NTwain.Internals
{
@@ -44,5 +45,6 @@ namespace NTwain.Internals
void SafeSyncableRaiseEvent(TransferReadyEventArgs e);
ReturnCode EnableSource(SourceEnableMode mode, bool modal, IntPtr windowHandle);
SynchronizationContext SynchronizationContext { get; set; }
}
}

View File

@@ -70,7 +70,7 @@ namespace NTwain.Internals
if (xferGroup == DataGroups.None ||
(xferGroup & DataGroups.Image) == DataGroups.Image)
{
var mech = session.Source.CapGetCurrent(CapabilityId.ICapXferMech).ConvertToEnum<XferMech>();
var mech = session.CurrentSource.CapGetCurrent(CapabilityId.ICapXferMech).ConvertToEnum<XferMech>();
switch (mech)
{
case XferMech.Memory:
@@ -91,7 +91,7 @@ namespace NTwain.Internals
}
if ((xferGroup & DataGroups.Audio) == DataGroups.Audio)
{
var mech = session.Source.CapGetCurrent(CapabilityId.ACapXferMech).ConvertToEnum<XferMech>();
var mech = session.CurrentSource.CapGetCurrent(CapabilityId.ACapXferMech).ConvertToEnum<XferMech>();
switch (mech)
{
case XferMech.File:
@@ -136,7 +136,7 @@ namespace NTwain.Internals
}
else
{
session.SafeSyncableRaiseEvent(new TransferErrorEventArgs { ReturnCode = xrc, SourceStatus = session.Source.GetStatus() });
session.SafeSyncableRaiseEvent(new TransferErrorEventArgs { ReturnCode = xrc, SourceStatus = session.CurrentSource.GetStatus() });
}
}
catch (Exception ex)
@@ -176,7 +176,7 @@ namespace NTwain.Internals
}
else
{
session.SafeSyncableRaiseEvent(new TransferErrorEventArgs { ReturnCode = xrc, SourceStatus = session.Source.GetStatus() });
session.SafeSyncableRaiseEvent(new TransferErrorEventArgs { ReturnCode = xrc, SourceStatus = session.CurrentSource.GetStatus() });
}
}
@@ -202,7 +202,7 @@ namespace NTwain.Internals
}
else
{
session.SafeSyncableRaiseEvent(new TransferErrorEventArgs { ReturnCode = xrc, SourceStatus = session.Source.GetStatus() });
session.SafeSyncableRaiseEvent(new TransferErrorEventArgs { ReturnCode = xrc, SourceStatus = session.CurrentSource.GetStatus() });
}
}
catch (Exception ex)
@@ -242,7 +242,7 @@ namespace NTwain.Internals
}
else
{
session.SafeSyncableRaiseEvent(new TransferErrorEventArgs { ReturnCode = xrc, SourceStatus = session.Source.GetStatus() });
session.SafeSyncableRaiseEvent(new TransferErrorEventArgs { ReturnCode = xrc, SourceStatus = session.CurrentSource.GetStatus() });
}
}
@@ -305,7 +305,7 @@ namespace NTwain.Internals
}
else
{
session.SafeSyncableRaiseEvent(new TransferErrorEventArgs { ReturnCode = xrc, SourceStatus = session.Source.GetStatus() });
session.SafeSyncableRaiseEvent(new TransferErrorEventArgs { ReturnCode = xrc, SourceStatus = session.CurrentSource.GetStatus() });
}
}
}
@@ -384,7 +384,7 @@ namespace NTwain.Internals
}
else
{
session.SafeSyncableRaiseEvent(new TransferErrorEventArgs { ReturnCode = xrc, SourceStatus = session.Source.GetStatus() });
session.SafeSyncableRaiseEvent(new TransferErrorEventArgs { ReturnCode = xrc, SourceStatus = session.CurrentSource.GetStatus() });
}
}
catch (Exception ex)
@@ -415,7 +415,7 @@ namespace NTwain.Internals
{
TWImageInfo imgInfo;
TWExtImageInfo extInfo = null;
if (session.Source.SupportedCaps.Contains(CapabilityId.ICapExtImageInfo))
if (session.CurrentSource.SupportedCaps.Contains(CapabilityId.ICapExtImageInfo))
{
if (session.DGImage.ExtImageInfo.Get(out extInfo) != ReturnCode.Success)
{

View File

@@ -64,7 +64,6 @@
<Compile Include="Internals\TransferLogic.cs" />
<Compile Include="Internals\WindowsHook.cs" />
<Compile Include="Internals\WrappedManualResetEvent.cs" />
<Compile Include="ITwainOperation.cs" />
<Compile Include="ITwainSession.cs" />
<Compile Include="Internals\WinMemoryManager.cs" />
<Compile Include="Internals\MessageLoop.cs" />

View File

@@ -19,7 +19,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(6, 6, DataGroups.Audio, DataArgumentType.AudioFileXfer, Message.Get);
IntPtr z = IntPtr.Zero;
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataGroups.Audio, DataArgumentType.AudioFileXfer, Message.Get, ref z);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataGroups.Audio, DataArgumentType.AudioFileXfer, Message.Get, ref z);
}
}
}

View File

@@ -19,7 +19,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(6, 7, DataGroups.Audio, DataArgumentType.AudioInfo, Message.Get);
info = new TWAudioInfo();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Get, info);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Get, info);
}
}
}

View File

@@ -22,7 +22,7 @@ namespace NTwain.Triplets
public ReturnCode Get(ref IntPtr handle)
{
Session.VerifyState(6, 6, DataGroups.Audio, DataArgumentType.AudioNativeXfer, Message.Get);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataGroups.Audio, DataArgumentType.AudioNativeXfer, Message.Get, ref handle);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataGroups.Audio, DataArgumentType.AudioNativeXfer, Message.Get, ref handle);
}
}
}

View File

@@ -16,7 +16,7 @@ namespace NTwain.Triplets
public ReturnCode RegisterCallback(TWCallback callback)
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.Callback, Message.RegisterCallback);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.RegisterCallback, callback);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.RegisterCallback, callback);
}
}
}

View File

@@ -16,7 +16,7 @@ namespace NTwain.Triplets
public ReturnCode RegisterCallback(TWCallback2 callback)
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.Callback, Message.RegisterCallback);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.RegisterCallback, callback);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.RegisterCallback, callback);
}
}
}

View File

@@ -17,7 +17,7 @@ namespace NTwain.Triplets
public ReturnCode Get(TWCapability capability)
{
Session.VerifyState(4, 7, DataGroups.Control, DataArgumentType.Capability, Message.Get);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataArgumentType.Capability, Message.Get, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataArgumentType.Capability, Message.Get, capability);
}
/// <summary>
@@ -28,7 +28,7 @@ namespace NTwain.Triplets
public ReturnCode GetCurrent(TWCapability capability)
{
Session.VerifyState(4, 7, DataGroups.Control, DataArgumentType.Capability, Message.GetCurrent);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataArgumentType.Capability, Message.GetCurrent, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataArgumentType.Capability, Message.GetCurrent, capability);
}
/// <summary>
@@ -39,7 +39,7 @@ namespace NTwain.Triplets
public ReturnCode GetDefault(TWCapability capability)
{
Session.VerifyState(4, 7, DataGroups.Control, DataArgumentType.Capability, Message.GetDefault);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataArgumentType.Capability, Message.GetDefault, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataArgumentType.Capability, Message.GetDefault, capability);
}
/// <summary>
@@ -51,7 +51,7 @@ namespace NTwain.Triplets
public ReturnCode GetHelp(TWCapability capability)
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.Capability, Message.GetHelp);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataArgumentType.Capability, Message.GetHelp, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataArgumentType.Capability, Message.GetHelp, capability);
}
/// <summary>
@@ -63,7 +63,7 @@ namespace NTwain.Triplets
public ReturnCode GetLabel(TWCapability capability)
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.Capability, Message.GetLabel);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataArgumentType.Capability, Message.GetLabel, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataArgumentType.Capability, Message.GetLabel, capability);
}
/// <summary>
@@ -75,7 +75,7 @@ namespace NTwain.Triplets
public ReturnCode GetLabelEnum(TWCapability capability)
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.Capability, Message.GetLabelEnum);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataArgumentType.Capability, Message.GetLabelEnum, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataArgumentType.Capability, Message.GetLabelEnum, capability);
}
/// <summary>
@@ -86,7 +86,7 @@ namespace NTwain.Triplets
public ReturnCode QuerySupport(TWCapability capability)
{
Session.VerifyState(4, 7, DataGroups.Control, DataArgumentType.Capability, Message.QuerySupport);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataArgumentType.Capability, Message.QuerySupport, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataArgumentType.Capability, Message.QuerySupport, capability);
}
/// <summary>
@@ -98,7 +98,7 @@ namespace NTwain.Triplets
public ReturnCode Reset(TWCapability capability)
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.Capability, Message.Reset);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataArgumentType.Capability, Message.Reset, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataArgumentType.Capability, Message.Reset, capability);
}
/// <summary>
@@ -110,7 +110,7 @@ namespace NTwain.Triplets
public ReturnCode ResetAll(TWCapability capability)
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.Capability, Message.ResetAll);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataArgumentType.Capability, Message.ResetAll, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataArgumentType.Capability, Message.ResetAll, capability);
}
/// <summary>
@@ -125,7 +125,7 @@ namespace NTwain.Triplets
public ReturnCode Set(TWCapability capability)
{
Session.VerifyState(4, 6, DataGroups.Control, DataArgumentType.Capability, Message.Set);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataArgumentType.Capability, Message.Set, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataArgumentType.Capability, Message.Set, capability);
}
/// <summary>
@@ -139,7 +139,7 @@ namespace NTwain.Triplets
public ReturnCode SetConstraint(TWCapability capability)
{
Session.VerifyState(4, 7, DataGroups.Control, DataArgumentType.Capability, Message.SetConstraint);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataArgumentType.Capability, Message.SetConstraint, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataArgumentType.Capability, Message.SetConstraint, capability);
}
}
}

View File

@@ -19,7 +19,7 @@ namespace NTwain.Triplets
public ReturnCode Get(ushort customDAT, TWCapability capability)
{
Session.VerifyState(4, 7, DataGroups.Control, (DataArgumentType)customDAT, Message.Get);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, (DataArgumentType)customDAT, Message.Get, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, (DataArgumentType)customDAT, Message.Get, capability);
}
/// <summary>
@@ -31,7 +31,7 @@ namespace NTwain.Triplets
public ReturnCode GetCurrent(ushort customDAT, TWCapability capability)
{
Session.VerifyState(4, 7, DataGroups.Control, (DataArgumentType)customDAT, Message.GetCurrent);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, (DataArgumentType)customDAT, Message.GetCurrent, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, (DataArgumentType)customDAT, Message.GetCurrent, capability);
}
/// <summary>
@@ -43,7 +43,7 @@ namespace NTwain.Triplets
public ReturnCode GetDefault(ushort customDAT, TWCapability capability)
{
Session.VerifyState(4, 7, DataGroups.Control, (DataArgumentType)customDAT, Message.GetDefault);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, (DataArgumentType)customDAT, Message.GetDefault, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, (DataArgumentType)customDAT, Message.GetDefault, capability);
}
/// <summary>
@@ -56,7 +56,7 @@ namespace NTwain.Triplets
public ReturnCode GetHelp(ushort customDAT, TWCapability capability)
{
Session.VerifyState(4, 4, DataGroups.Control, (DataArgumentType)customDAT, Message.GetHelp);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, (DataArgumentType)customDAT, Message.GetHelp, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, (DataArgumentType)customDAT, Message.GetHelp, capability);
}
/// <summary>
@@ -69,7 +69,7 @@ namespace NTwain.Triplets
public ReturnCode GetLabel(ushort customDAT, TWCapability capability)
{
Session.VerifyState(4, 4, DataGroups.Control, (DataArgumentType)customDAT, Message.GetLabel);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, (DataArgumentType)customDAT, Message.GetLabel, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, (DataArgumentType)customDAT, Message.GetLabel, capability);
}
/// <summary>
@@ -82,7 +82,7 @@ namespace NTwain.Triplets
public ReturnCode GetLabelEnum(ushort customDAT, TWCapability capability)
{
Session.VerifyState(4, 4, DataGroups.Control, (DataArgumentType)customDAT, Message.GetLabelEnum);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, (DataArgumentType)customDAT, Message.GetLabelEnum, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, (DataArgumentType)customDAT, Message.GetLabelEnum, capability);
}
/// <summary>
@@ -94,7 +94,7 @@ namespace NTwain.Triplets
public ReturnCode QuerySupport(ushort customDAT, TWCapability capability)
{
Session.VerifyState(4, 7, DataGroups.Control, (DataArgumentType)customDAT, Message.QuerySupport);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, (DataArgumentType)customDAT, Message.QuerySupport, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, (DataArgumentType)customDAT, Message.QuerySupport, capability);
}
/// <summary>
@@ -107,7 +107,7 @@ namespace NTwain.Triplets
public ReturnCode Reset(ushort customDAT, TWCapability capability)
{
Session.VerifyState(4, 4, DataGroups.Control, (DataArgumentType)customDAT, Message.Reset);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, (DataArgumentType)customDAT, Message.Reset, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, (DataArgumentType)customDAT, Message.Reset, capability);
}
/// <summary>
@@ -120,7 +120,7 @@ namespace NTwain.Triplets
public ReturnCode ResetAll(ushort customDAT, TWCapability capability)
{
Session.VerifyState(4, 4, DataGroups.Control, (DataArgumentType)customDAT, Message.ResetAll);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, (DataArgumentType)customDAT, Message.ResetAll, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, (DataArgumentType)customDAT, Message.ResetAll, capability);
}
/// <summary>
@@ -136,7 +136,7 @@ namespace NTwain.Triplets
public ReturnCode Set(ushort customDAT, TWCapability capability)
{
Session.VerifyState(4, 6, DataGroups.Control, (DataArgumentType)customDAT, Message.Set);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, (DataArgumentType)customDAT, Message.Set, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, (DataArgumentType)customDAT, Message.Set, capability);
}
/// <summary>
@@ -151,7 +151,7 @@ namespace NTwain.Triplets
public ReturnCode SetConstraint(ushort customDAT, TWCapability capability)
{
Session.VerifyState(4, 7, DataGroups.Control, (DataArgumentType)customDAT, Message.SetConstraint);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, (DataArgumentType)customDAT, Message.SetConstraint, capability);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, (DataArgumentType)customDAT, Message.SetConstraint, capability);
}
}
}

View File

@@ -21,7 +21,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.CustomDSData, Message.Get);
customData = new TWCustomDSData();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Get, customData);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Get, customData);
}
/// <summary>
@@ -34,7 +34,7 @@ namespace NTwain.Triplets
public ReturnCode Set(TWCustomDSData customData)
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.CustomDSData, Message.Set);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Set, customData);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Set, customData);
}
}
}

View File

@@ -14,7 +14,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 7, DataGroups.Control, DataArgumentType.DeviceEvent, Message.Get);
sourceDeviceEvent = new TWDeviceEvent();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Get, sourceDeviceEvent);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Get, sourceDeviceEvent);
}
}
}

View File

@@ -22,7 +22,7 @@ namespace NTwain.Triplets
public ReturnCode ProcessEvent(TWEvent theEvent)
{
Session.VerifyState(4, 7, DataGroups.Control, DataArgumentType.Event, Message.ProcessEvent);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.ProcessEvent, theEvent);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.ProcessEvent, theEvent);
}
}
}

View File

@@ -21,7 +21,7 @@ namespace NTwain.Triplets
public ReturnCode AutomaticCaptureDirectory(TWFileSystem fileSystem)
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.FileSystem, Message.AutomaticCaptureDirectory);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.AutomaticCaptureDirectory, fileSystem);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.AutomaticCaptureDirectory, fileSystem);
}
/// <summary>
@@ -36,7 +36,7 @@ namespace NTwain.Triplets
public ReturnCode ChangeDirectory(TWFileSystem fileSystem)
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.FileSystem, Message.ChangeDirectory);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.ChangeDirectory, fileSystem);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.ChangeDirectory, fileSystem);
}
/// <summary>
@@ -52,7 +52,7 @@ namespace NTwain.Triplets
public ReturnCode Copy(TWFileSystem fileSystem)
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.FileSystem, Message.Copy);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Copy, fileSystem);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Copy, fileSystem);
}
/// <summary>
@@ -64,7 +64,7 @@ namespace NTwain.Triplets
public ReturnCode CreateDirectory(TWFileSystem fileSystem)
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.FileSystem, Message.CreateDirectory);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.CreateDirectory, fileSystem);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.CreateDirectory, fileSystem);
}
/// <summary>
@@ -77,7 +77,7 @@ namespace NTwain.Triplets
public ReturnCode Delete(TWFileSystem fileSystem)
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.FileSystem, Message.Delete);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Delete, fileSystem);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Delete, fileSystem);
}
/// <summary>
@@ -89,7 +89,7 @@ namespace NTwain.Triplets
public ReturnCode FormatMedia(TWFileSystem fileSystem)
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.FileSystem, Message.FormatMedia);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.FormatMedia, fileSystem);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.FormatMedia, fileSystem);
}
/// <summary>
@@ -102,7 +102,7 @@ namespace NTwain.Triplets
public ReturnCode GetClose(TWFileSystem fileSystem)
{
Session.VerifyState(4, 6, DataGroups.Control, DataArgumentType.FileSystem, Message.GetClose);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.GetClose, fileSystem);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.GetClose, fileSystem);
}
/// <summary>
@@ -114,7 +114,7 @@ namespace NTwain.Triplets
public ReturnCode GetFirstFile(TWFileSystem fileSystem)
{
Session.VerifyState(4, 6, DataGroups.Control, DataArgumentType.FileSystem, Message.GetFirstFile);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.GetFirstFile, fileSystem);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.GetFirstFile, fileSystem);
}
/// <summary>
@@ -127,7 +127,7 @@ namespace NTwain.Triplets
public ReturnCode GetInfo(TWFileSystem fileSystem)
{
Session.VerifyState(4, 7, DataGroups.Control, DataArgumentType.FileSystem, Message.GetInfo);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.GetInfo, fileSystem);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.GetInfo, fileSystem);
}
/// <summary>
@@ -139,7 +139,7 @@ namespace NTwain.Triplets
public ReturnCode GetNextFile(TWFileSystem fileSystem)
{
Session.VerifyState(4, 6, DataGroups.Control, DataArgumentType.FileSystem, Message.GetNextFile);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.GetNextFile, fileSystem);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.GetNextFile, fileSystem);
}
/// <summary>
@@ -155,7 +155,7 @@ namespace NTwain.Triplets
public ReturnCode Rename(TWFileSystem fileSystem)
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.FileSystem, Message.Rename);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Rename, fileSystem);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Rename, fileSystem);
}
}
}

View File

@@ -6,9 +6,10 @@ namespace NTwain.Triplets
/// <summary>
/// Represents <see cref="DataArgumentType.Identity"/>.
/// </summary>
public sealed class Identity : OpBase
sealed class Identity : OpBase
{
internal Identity(ITwainSessionInternal session) : base(session) { }
/// <summary>
/// When an application is finished with a Source, it must formally close the session between them
/// using this operation. This is necessary in case the Source only supports connection with a single
@@ -16,10 +17,10 @@ namespace NTwain.Triplets
/// accessed by other applications until its current session is terminated.
/// </summary>
/// <returns></returns>
internal ReturnCode CloseDS()
public ReturnCode CloseDS()
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.Identity, Message.CloseDS);
var rc = Dsm.DsmEntry(Session.AppId, Message.CloseDS, Session.Source.Identity);
var rc = Dsm.DsmEntry(Session.AppId, Message.CloseDS, Session.CurrentSource.Identity);
if (rc == ReturnCode.Success)
{
Session.ChangeSourceId(null);
@@ -33,7 +34,6 @@ namespace NTwain.Triplets
/// </summary>
/// <param name="source">The source.</param>
/// <returns></returns>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "0#")]
public ReturnCode GetDefault(out TWIdentity source)
{
Session.VerifyState(3, 7, DataGroups.Control, DataArgumentType.Identity, Message.GetDefault);
@@ -48,7 +48,6 @@ namespace NTwain.Triplets
/// </summary>
/// <param name="source">The source.</param>
/// <returns></returns>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "0#")]
public ReturnCode GetFirst(out TWIdentity source)
{
Session.VerifyState(3, 7, DataGroups.Control, DataArgumentType.Identity, Message.GetFirst);
@@ -62,7 +61,6 @@ namespace NTwain.Triplets
/// </summary>
/// <param name="source">The source.</param>
/// <returns></returns>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "0#")]
public ReturnCode GetNext(out TWIdentity source)
{
Session.VerifyState(3, 7, DataGroups.Control, DataArgumentType.Identity, Message.GetNext);
@@ -75,7 +73,7 @@ namespace NTwain.Triplets
/// </summary>
/// <param name="source">The source.</param>
/// <returns></returns>
internal ReturnCode OpenDS(TwainSource source)
public ReturnCode OpenDS(TwainSource source)
{
Session.VerifyState(3, 3, DataGroups.Control, DataArgumentType.Identity, Message.OpenDS);
var rc = Dsm.DsmEntry(Session.AppId, Message.OpenDS, source.Identity);

View File

@@ -18,7 +18,7 @@ namespace NTwain.Triplets
public ReturnCode PassThrough(TWPassThru sourcePassThru)
{
Session.VerifyState(4, 7, DataGroups.Control, DataArgumentType.PassThru, Message.PassThru);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.PassThru, sourcePassThru);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.PassThru, sourcePassThru);
}
}
}

View File

@@ -20,7 +20,7 @@ namespace NTwain.Triplets
internal ReturnCode EndXfer(TWPendingXfers pendingXfers)
{
Session.VerifyState(6, 7, DataGroups.Control, DataArgumentType.PendingXfers, Message.EndXfer);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.EndXfer, pendingXfers);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.EndXfer, pendingXfers);
}
/// <summary>
@@ -34,7 +34,7 @@ namespace NTwain.Triplets
public ReturnCode Get(TWPendingXfers pendingXfers)
{
Session.VerifyState(4, 7, DataGroups.Control, DataArgumentType.PendingXfers, Message.Get);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Get, pendingXfers);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Get, pendingXfers);
}
/// <summary>
@@ -45,7 +45,7 @@ namespace NTwain.Triplets
internal ReturnCode Reset(TWPendingXfers pendingXfers)
{
Session.VerifyState(6, 6, DataGroups.Control, DataArgumentType.PendingXfers, Message.Reset);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Reset, pendingXfers);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Reset, pendingXfers);
}
/// <summary>
@@ -57,7 +57,7 @@ namespace NTwain.Triplets
public ReturnCode StopFeeder(TWPendingXfers pendingXfers)
{
Session.VerifyState(6, 6, DataGroups.Control, DataArgumentType.PendingXfers, Message.StopFeeder);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.StopFeeder, pendingXfers);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.StopFeeder, pendingXfers);
}
}
}

View File

@@ -21,7 +21,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 6, DataGroups.Control, DataArgumentType.SetupFileXfer, Message.Get);
setupFileXfer = new TWSetupFileXfer();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Get, setupFileXfer);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Get, setupFileXfer);
}
/// <summary>
@@ -34,7 +34,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 6, DataGroups.Control, DataArgumentType.SetupFileXfer, Message.GetDefault);
setupFileXfer = new TWSetupFileXfer();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.GetDefault, setupFileXfer);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.GetDefault, setupFileXfer);
}
/// <summary>
@@ -48,7 +48,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.SetupFileXfer, Message.Reset);
setupFileXfer = new TWSetupFileXfer();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Reset, setupFileXfer);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Reset, setupFileXfer);
}
/// <summary>
@@ -63,7 +63,7 @@ namespace NTwain.Triplets
public ReturnCode Set(TWSetupFileXfer setupFileXfer)
{
Session.VerifyState(4, 6, DataGroups.Control, DataArgumentType.SetupFileXfer, Message.Set);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Set, setupFileXfer);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Set, setupFileXfer);
}
}

View File

@@ -21,7 +21,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 6, DataGroups.Control, DataArgumentType.SetupMemXfer, Message.Get);
setupMemXfer = new TWSetupMemXfer();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Get, setupMemXfer);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Get, setupMemXfer);
}
}
}

View File

@@ -6,7 +6,7 @@ namespace NTwain.Triplets
/// <summary>
/// Represents <see cref="DataArgumentType.Status"/>.
/// </summary>
public sealed class Status : OpBase
sealed class Status : OpBase
{
internal Status(ITwainSessionInternal session) : base(session) { }
/// <summary>
@@ -14,7 +14,6 @@ namespace NTwain.Triplets
/// </summary>
/// <param name="status">The status.</param>
/// <returns></returns>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "0#")]
public ReturnCode GetManager(out TWStatus status)
{
Session.VerifyState(2, 7, DataGroups.Control, DataArgumentType.Status, Message.Get);
@@ -27,12 +26,11 @@ namespace NTwain.Triplets
/// </summary>
/// <param name="status">The status.</param>
/// <returns></returns>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "0#")]
public ReturnCode GetSource(out TWStatus status)
{
Session.VerifyState(4, 7, DataGroups.Control, DataArgumentType.Status, Message.Get);
status = new TWStatus();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Get, status);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Get, status);
}
}
}

View File

@@ -9,16 +9,29 @@ namespace NTwain.Triplets
public sealed class StatusUtf8 : OpBase
{
internal StatusUtf8(ITwainSessionInternal session) : base(session) { }
/// <summary>
/// Translate the contents of a TW_STATUS structure received from the manager into a localized UTF-8
/// encoded string.
/// </summary>
/// <param name="status">The status.</param>
/// <returns></returns>
public ReturnCode GetManager(TWStatusUtf8 status)
{
Session.VerifyState(3, 7, DataGroups.Control, DataArgumentType.StatusUtf8, Message.Get);
return Dsm.DsmEntry(Session.AppId, null, Message.Get, status);
}
/// <summary>
/// Translate the contents of a TW_STATUS structure received from a Source into a localized UTF-8
/// encoded string.
/// </summary>
/// <param name="status">The status.</param>
/// <returns></returns>
public ReturnCode Get(TWStatusUtf8 status)
public ReturnCode GetSource(TWStatusUtf8 status)
{
Session.VerifyState(3, 7, DataGroups.Control, DataArgumentType.StatusUtf8, Message.Get);
return Dsm.DsmEntry(Session.AppId, null, Message.Get, status);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Get, status);
}
}
}

View File

@@ -22,7 +22,7 @@ namespace NTwain.Triplets
public ReturnCode DisableDS(TWUserInterface userInterface)
{
Session.VerifyState(5, 5, DataGroups.Control, DataArgumentType.UserInterface, Message.DisableDS);
var rc = Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.DisableDS, userInterface);
var rc = Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.DisableDS, userInterface);
if (rc == ReturnCode.Success)
{
Session.ChangeState(4, true);
@@ -40,7 +40,7 @@ namespace NTwain.Triplets
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.UserInterface, Message.EnableDS);
using (var pending = Session.GetPendingStateChanger(5))
{
var rc = Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.EnableDS, userInterface);
var rc = Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.EnableDS, userInterface);
if (rc == ReturnCode.Success ||
(!userInterface.ShowUI && rc == ReturnCode.CheckStatus))
{
@@ -62,7 +62,7 @@ namespace NTwain.Triplets
Session.VerifyState(4, 4, DataGroups.Control, DataArgumentType.UserInterface, Message.EnableDSUIOnly);
using (var pending = Session.GetPendingStateChanger(5))
{
var rc = Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.EnableDSUIOnly, userInterface);
var rc = Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.EnableDSUIOnly, userInterface);
if (rc == ReturnCode.Success)
{
pending.Commit();

View File

@@ -20,7 +20,7 @@ namespace NTwain.Triplets
public ReturnCode Get(ref DataGroups value)
{
Session.VerifyState(4, 6, DataGroups.Control, DataArgumentType.XferGroup, Message.Get);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataGroups.Control, DataArgumentType.XferGroup, Message.Get, ref value);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataGroups.Control, DataArgumentType.XferGroup, Message.Get, ref value);
}
/// <summary>
@@ -33,7 +33,7 @@ namespace NTwain.Triplets
public ReturnCode Set(DataGroups value)
{
Session.VerifyState(6, 6, DataGroups.Control, DataArgumentType.XferGroup, Message.Set);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataGroups.Control, DataArgumentType.XferGroup, Message.Set, ref value);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataGroups.Control, DataArgumentType.XferGroup, Message.Set, ref value);
}
}
}

View File

@@ -98,7 +98,7 @@ namespace NTwain.Triplets
}
}
Identity _identity;
public Identity Identity
internal Identity Identity
{
get
{
@@ -154,7 +154,7 @@ namespace NTwain.Triplets
}
}
Status _status;
public Status Status
internal Status Status
{
get
{

View File

@@ -35,7 +35,7 @@ namespace NTwain.Triplets
ref IntPtr data)
{
_session.VerifyState(3, 7, group, dat, message);
return Dsm.DsmEntry(_session.AppId, _session.Source.Identity, group, dat, message, ref data);
return Dsm.DsmEntry(_session.AppId, _session.CurrentSource.Identity, group, dat, message, ref data);
}
// todo: add other data value types?

View File

@@ -21,7 +21,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 6, DataGroups.Image, DataArgumentType.CieColor, Message.Get);
cieColor = new TWCieColor();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Get, cieColor);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Get, cieColor);
}
}
}

View File

@@ -15,7 +15,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(7, 7, DataGroups.Image, DataArgumentType.ExtImageInfo, Message.Get);
info = new TWExtImageInfo();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Get, info);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Get, info);
}
}
}

View File

@@ -22,7 +22,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 6, DataGroups.Image, DataArgumentType.Filter, Message.Get);
filter = new TWFilter();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Get, filter);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Get, filter);
}
/// <summary>
@@ -35,7 +35,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 6, DataGroups.Image, DataArgumentType.Filter, Message.GetDefault);
filter = new TWFilter();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.GetDefault, filter);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.GetDefault, filter);
}
/// <summary>
@@ -47,7 +47,7 @@ namespace NTwain.Triplets
public ReturnCode Set(TWFilter filter)
{
Session.VerifyState(4, 4, DataGroups.Image, DataArgumentType.Filter, Message.Set);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Set, filter);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Set, filter);
}
/// <summary>
@@ -60,7 +60,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 4, DataGroups.Image, DataArgumentType.Filter, Message.Reset);
filter = new TWFilter();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Reset, filter);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Reset, filter);
}
}
}

View File

@@ -21,7 +21,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 4, DataGroups.Image, DataArgumentType.GrayResponse, Message.Reset);
response = new TWGrayResponse();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Reset, response);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Reset, response);
}
/// <summary>
@@ -33,7 +33,7 @@ namespace NTwain.Triplets
public ReturnCode Set(TWGrayResponse response)
{
Session.VerifyState(4, 4, DataGroups.Image, DataArgumentType.GrayResponse, Message.Set);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Set, response);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Set, response);
}
}
}

View File

@@ -21,7 +21,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(6, 7, DataGroups.Image, DataArgumentType.IccProfile, Message.Get);
profile = new TWMemory();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataArgumentType.IccProfile, Message.Get, ref profile);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataArgumentType.IccProfile, Message.Get, ref profile);
}
}
}

View File

@@ -20,7 +20,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(6, 6, DataGroups.Image, DataArgumentType.ImageFileXfer, Message.Get);
IntPtr z = IntPtr.Zero;
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataGroups.Image, DataArgumentType.ImageFileXfer, Message.Get, ref z);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataGroups.Image, DataArgumentType.ImageFileXfer, Message.Get, ref z);
}
}
}

View File

@@ -15,7 +15,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(6, 7, DataGroups.Image, DataArgumentType.ImageInfo, Message.Get);
info = new TWImageInfo();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Get, info);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Get, info);
}
}
}

View File

@@ -15,7 +15,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 6, DataGroups.Image, DataArgumentType.ImageLayout, Message.Get);
layout = new TWImageLayout();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Get, layout);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Get, layout);
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "0#")]
@@ -23,7 +23,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 6, DataGroups.Image, DataArgumentType.ImageLayout, Message.GetDefault);
layout = new TWImageLayout();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.GetDefault, layout);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.GetDefault, layout);
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "0#")]
@@ -31,13 +31,13 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 4, DataGroups.Image, DataArgumentType.ImageLayout, Message.Reset);
layout = new TWImageLayout();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Reset, layout);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Reset, layout);
}
public ReturnCode Set(TWImageLayout layout)
{
Session.VerifyState(4, 4, DataGroups.Image, DataArgumentType.ImageLayout, Message.Set);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Set, layout);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Set, layout);
}
}
}

View File

@@ -16,7 +16,7 @@ namespace NTwain.Triplets
public ReturnCode Get(TWImageMemXfer xfer)
{
Session.VerifyState(6, 6, DataGroups.Image, DataArgumentType.ImageMemFileXfer, Message.Get);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Get, xfer);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Get, xfer);
}
}

View File

@@ -16,7 +16,7 @@ namespace NTwain.Triplets
public ReturnCode Get(TWImageMemXfer xfer)
{
Session.VerifyState(6, 7, DataGroups.Image, DataArgumentType.ImageMemXfer, Message.Get);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Get, xfer);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Get, xfer);
}
}
}

View File

@@ -20,7 +20,7 @@ namespace NTwain.Triplets
public ReturnCode Get(ref IntPtr handle)
{
Session.VerifyState(6, 6, DataGroups.Image, DataArgumentType.ImageNativeXfer, Message.Get);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, DataGroups.Image, DataArgumentType.ImageNativeXfer, Message.Get, ref handle);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, DataGroups.Image, DataArgumentType.ImageNativeXfer, Message.Get, ref handle);
}
}
}

View File

@@ -21,7 +21,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 6, DataGroups.Image, DataArgumentType.JpegCompression, Message.Get);
compression = new TWJpegCompression();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Get, compression);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Get, compression);
}
/// <summary>
@@ -35,7 +35,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 6, DataGroups.Image, DataArgumentType.JpegCompression, Message.GetDefault);
compression = new TWJpegCompression();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.GetDefault, compression);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.GetDefault, compression);
}
/// <summary>
@@ -48,7 +48,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 4, DataGroups.Image, DataArgumentType.JpegCompression, Message.Reset);
compression = new TWJpegCompression();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Reset, compression);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Reset, compression);
}
/// <summary>
@@ -61,7 +61,7 @@ namespace NTwain.Triplets
public ReturnCode Set(TWJpegCompression compression)
{
Session.VerifyState(4, 4, DataGroups.Image, DataArgumentType.JpegCompression, Message.Set);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Set, compression);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Set, compression);
}
}
}

View File

@@ -20,7 +20,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 6, DataGroups.Image, DataArgumentType.Palette8, Message.Get);
palette = new TWPalette8();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Get, palette);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Get, palette);
}
/// <summary>
@@ -33,7 +33,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 6, DataGroups.Image, DataArgumentType.Palette8, Message.GetDefault);
palette = new TWPalette8();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.GetDefault, palette);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.GetDefault, palette);
}
/// <summary>
@@ -47,7 +47,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 4, DataGroups.Image, DataArgumentType.Palette8, Message.Reset);
palette = new TWPalette8();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Reset, palette);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Reset, palette);
}
/// <summary>
@@ -61,7 +61,7 @@ namespace NTwain.Triplets
public ReturnCode Set(TWPalette8 palette)
{
Session.VerifyState(4, 4, DataGroups.Image, DataArgumentType.Palette8, Message.Set);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Set, palette);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Set, palette);
}
}
}

View File

@@ -22,7 +22,7 @@ namespace NTwain.Triplets
{
Session.VerifyState(4, 4, DataGroups.Image, DataArgumentType.RgbResponse, Message.Reset);
response = new TWRgbResponse();
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Reset, response);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Reset, response);
}
/// <summary>
@@ -34,7 +34,7 @@ namespace NTwain.Triplets
public ReturnCode Set(TWRgbResponse response)
{
Session.VerifyState(4, 4, DataGroups.Image, DataArgumentType.RgbResponse, Message.Set);
return Dsm.DsmEntry(Session.AppId, Session.Source.Identity, Message.Set, response);
return Dsm.DsmEntry(Session.AppId, Session.CurrentSource.Identity, Message.Set, response);
}
}
}

View File

@@ -15,5 +15,9 @@ or better explained in code:
DGControl.Status.Get(...)
and that's the triplet at-a-glance. Only triplets used by the
application are explicitly defined this way.
and that's the triplet at-a-glance. Only triplets usable by the
application-side are explicitly defined this way.
Also some of the operations are marked as internal when there are
better wrapped managed version available. Goal is to
eventually keep the exposed triplets to a minimum.

View File

@@ -94,7 +94,7 @@ namespace NTwain
void ITwainSessionInternal.ChangeSourceId(TwainSource source)
{
Source = source;
CurrentSource = source;
OnPropertyChanged("SourceId");
SafeAsyncSyncableRaiseOnEvent(OnSourceChanged, SourceChanged);
}
@@ -122,7 +122,50 @@ namespace NTwain
/// <value>
/// The current source.
/// </value>
public TwainSource Source { get; private set; }
public TwainSource CurrentSource { get; private set; }
/// <summary>
/// Gets or sets the default source for this application.
/// While this can be get as long as the session is open,
/// it can only be set at State 3.
/// </summary>
/// <value>
/// The default source.
/// </value>
public TwainSource DefaultSource
{
get
{
TWIdentity id;
if (DGControl.Identity.GetDefault(out id) == ReturnCode.Success)
{
return new TwainSource(this, id);
}
return null;
}
set
{
if (value != null)
{
DGControl.Identity.Set(value.Identity);
}
}
}
/// <summary>
/// Try to show the built-in source selector dialog and return the selected source.
/// This is not recommended and is only included for completeness.
/// </summary>
/// <returns></returns>
public TwainSource ShowSourceSelector()
{
TWIdentity id;
if (DGControl.Identity.UserSelect(out id) == ReturnCode.Success)
{
return new TwainSource(this, id);
}
return null;
}
int _state;
/// <summary>
@@ -450,9 +493,9 @@ namespace NTwain
{
((ITwainSessionInternal)this).DisableSource();
}
if (targetState < 4 && Source != null)
if (targetState < 4 && CurrentSource != null)
{
Source.Close();
CurrentSource.Close();
}
if (targetState < 3)
{
@@ -471,7 +514,7 @@ namespace NTwain
/// </summary>
public event EventHandler StateChanged;
/// <summary>
/// Occurs when <see cref="Source"/> has changed.
/// Occurs when <see cref="CurrentSource"/> has changed.
/// </summary>
public event EventHandler SourceChanged;
/// <summary>
@@ -572,7 +615,7 @@ namespace NTwain
protected virtual void OnStateChanged() { }
/// <summary>
/// Called when <see cref="Source"/> changed.
/// Called when <see cref="CurrentSource"/> changed.
/// </summary>
protected virtual void OnSourceChanged() { }
@@ -640,7 +683,7 @@ namespace NTwain
ReturnCode HandleCallback(TWIdentity origin, TWIdentity destination, DataGroups dg, DataArgumentType dat, Message msg, IntPtr data)
{
if (origin != null && Source != null && origin.Id == Source.Identity.Id && _state >= 5)
if (origin != null && CurrentSource != null && origin.Id == CurrentSource.Identity.Id && _state >= 5)
{
Debug.WriteLine(string.Format(CultureInfo.InvariantCulture, "Thread {0}: CallbackHandler at state {1} with MSG={2}.", Thread.CurrentThread.ManagedThreadId, State, msg));
// spec says we must handle this on the thread that enabled the DS.

View File

@@ -186,6 +186,9 @@ namespace NTwain
/// </summary>
/// <param name="propertyName">Name of the property.</param>
protected void OnPropertyChanged(string propertyName)
{
var syncer = _session.SynchronizationContext;
if (syncer == null)
{
try
{
@@ -194,6 +197,19 @@ namespace NTwain
}
catch { }
}
else
{
syncer.Post(o =>
{
try
{
var hand = PropertyChanged;
if (hand != null) { hand(this, new PropertyChangedEventArgs(propertyName)); }
}
catch { }
}, null);
}
}
#endregion
}

View File

@@ -72,7 +72,7 @@ namespace Tester
static void twain_SourceDisabled(object sender, EventArgs e)
{
Console.WriteLine("Source disabled on thread {0}.", Thread.CurrentThread.ManagedThreadId);
var rc = twain.Source.Close();
var rc = twain.CurrentSource.Close();
rc = twain.Close();
}

View File

@@ -56,7 +56,7 @@ namespace Tester.WPF
{
if (_twainVM.State == 4)
{
_twainVM.Source.Close();
_twainVM.CurrentSource.Close();
}
base.OnClosed(e);
}
@@ -80,7 +80,7 @@ namespace Tester.WPF
{
if (_twainVM.State == 4)
{
_twainVM.Source.Close();
_twainVM.CurrentSource.Close();
}
var dsId = SrcList.SelectedItem as DSVM;
@@ -114,505 +114,505 @@ namespace Tester.WPF
switch (cap)
{
case CapabilityId.ACapXferMech:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<XferMech>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<XferMech>();
break;
case CapabilityId.CapAlarms:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<AlarmType>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<AlarmType>();
break;
case CapabilityId.CapAlarmVolume:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapAuthor:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapAutoFeed:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapAutomaticCapture:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapAutomaticSenseMedium:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapAutoScan:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapBatteryMinutes:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapBatteryPercentage:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapCameraEnabled:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapCameraOrder:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapCameraPreviewUI:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapCameraSide:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<CameraSide>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<CameraSide>();
break;
case CapabilityId.CapCaption:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapClearBuffers:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<ClearBuffer>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<ClearBuffer>();
break;
case CapabilityId.CapClearPage:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapCustomDSData:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapCustomInterfaceGuid:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapDeviceEvent:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<DeviceEvent>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<DeviceEvent>();
break;
case CapabilityId.CapDeviceOnline:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapDeviceTimeDate:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapDoubleFeedDetection:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<DoubleFeedDetection>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<DoubleFeedDetection>();
break;
case CapabilityId.CapDoubleFeedDetectionLength:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapDoubleFeedDetectionResponse:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<DoubleFeedDetectionResponse>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<DoubleFeedDetectionResponse>();
break;
case CapabilityId.CapDoubleFeedDetectionSensitivity:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<DoubleFeedDetectionSensitivity>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<DoubleFeedDetectionSensitivity>();
break;
case CapabilityId.CapDuplex:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<Duplex>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<Duplex>();
break;
case CapabilityId.CapDuplexEnabled:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapEnableDSUIOnly:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapEndorser:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapExtendedCaps:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapFeederAlignment:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<FeederAlignment>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<FeederAlignment>();
break;
case CapabilityId.CapFeederEnabled:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapFeederLoaded:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapFeederOrder:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<FeederOrder>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<FeederOrder>();
break;
case CapabilityId.CapFeederPocket:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<FeederPocket>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<FeederPocket>();
break;
case CapabilityId.CapFeederPrep:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapFeedPage:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapIndicators:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapIndicatorsMode:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<IndicatorsMode>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<IndicatorsMode>();
break;
case CapabilityId.CapJobControl:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<JobControl>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<JobControl>();
break;
case CapabilityId.CapLanguage:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<Language>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<Language>();
break;
case CapabilityId.CapMaxBatchBuffers:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapMicrEnabled:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapPaperDetectable:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapPaperHandling:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<PaperHandling>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<PaperHandling>();
break;
case CapabilityId.CapPowerSaveTime:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapPowerSupply:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<PowerSupply>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<PowerSupply>();
break;
case CapabilityId.CapPrinter:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<Printer>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<Printer>();
break;
case CapabilityId.CapPrinterCharRotation:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapPrinterEnabled:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapPrinterFontStyle:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<PrinterFontStyle>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<PrinterFontStyle>();
break;
case CapabilityId.CapPrinterIndex:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapPrinterIndexLeadChar:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapPrinterIndexMaxValue:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapPrinterIndexNumDigits:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapPrinterIndexStep:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapPrinterIndexTrigger:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<PrinterIndexTrigger>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<PrinterIndexTrigger>();
break;
case CapabilityId.CapPrinterMode:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<PrinterMode>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<PrinterMode>();
break;
case CapabilityId.CapPrinterString:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapPrinterStringPreview:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapPrinterSuffix:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapPrinterVerticalOffset:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapReacquireAllowed:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapRewindPage:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapSegmented:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<Segmented>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<Segmented>();
break;
case CapabilityId.CapSerialNumber:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapSupportedCaps:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<CapabilityId>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<CapabilityId>();
break;
case CapabilityId.CapSupportedCapsSegmentUnique:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapSupportedDATs:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapThumbnailsEnabled:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapTimeBeforeFirstCapture:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapTimeBetweenCaptures:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapTimeDate:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapUIControllable:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CapXferCount:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.CustomBase:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapAutoBright:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapAutoDiscardBlankPages:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapAutomaticBorderDetection:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapAutomaticColorEnabled:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapAutomaticColorNonColorPixelType:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<PixelType>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<PixelType>();
break;
case CapabilityId.ICapAutomaticCropUsesFrame:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapAutomaticDeskew:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapAutomaticLengthDetection:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapAutomaticRotate:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapAutoSize:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapBarcodeDetectionEnabled:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapBarcodeMaxRetries:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapBarcodeMaxSearchPriorities:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapBarcodeSearchMode:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapBarcodeSearchPriorities:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapBarcodeTimeout:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapBitDepth:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapBitDepthReduction:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<BitDepthReduction>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<BitDepthReduction>();
break;
case CapabilityId.ICapBitOrder:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<BitOrder>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<BitOrder>();
break;
case CapabilityId.ICapBitOrderCodes:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapBrightness:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapCCITTKFactor:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapColorManagementEnabled:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapCompression:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<CompressionType>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<CompressionType>();
break;
case CapabilityId.ICapContrast:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapCustHalftone:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapExposureTime:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapExtImageInfo:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapFeederType:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<FeederType>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<FeederType>();
break;
case CapabilityId.ICapFilmType:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<FilmType>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<FilmType>();
break;
case CapabilityId.ICapFilter:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<FilterType>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<FilterType>();
break;
case CapabilityId.ICapFlashUsed:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapFlashUsed2:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapFlipRotation:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<FlipRotation>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<FlipRotation>();
break;
case CapabilityId.ICapFrames:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapGamma:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapHalftones:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapHighlight:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapICCProfile:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<IccProfile>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<IccProfile>();
break;
case CapabilityId.ICapImageDataSet:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapImageFileFormat:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<FileFormat>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<FileFormat>();
break;
case CapabilityId.ICapImageFilter:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<ImageFilter>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<ImageFilter>();
break;
case CapabilityId.ICapImageMerge:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<ImageMerge>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<ImageMerge>();
break;
case CapabilityId.ICapImageMergeHeightThreshold:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapJpegPixelType:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<PixelType>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<PixelType>();
break;
case CapabilityId.ICapJpegQuality:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<JpegQuality>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<JpegQuality>();
break;
case CapabilityId.ICapJpegSubsampling:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<JpegSubsampling>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<JpegSubsampling>();
break;
case CapabilityId.ICapLampState:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapLightPath:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<LightPath>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<LightPath>();
break;
case CapabilityId.ICapLightSource:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<LightSource>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<LightSource>();
break;
case CapabilityId.ICapMaxFrames:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapMinimumHeight:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapMinimumWidth:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapMirror:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<Mirror>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<Mirror>();
break;
case CapabilityId.ICapNoiseFilter:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<NoiseFilter>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<NoiseFilter>();
break;
case CapabilityId.ICapOrientation:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<OrientationType>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<OrientationType>();
break;
case CapabilityId.ICapOverScan:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<OverScan>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<OverScan>();
break;
case CapabilityId.ICapPatchCodeDetectionEnabled:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapPatchCodeMaxRetries:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapPatchCodeMaxSearchPriorities:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<PatchCode>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<PatchCode>();
break;
case CapabilityId.ICapPatchCodeSearchMode:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapPatchCodeSearchPriorities:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapPatchCodeTimeout:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
// TODO phys size are twfix32
case CapabilityId.ICapPhysicalHeight:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapPhysicalWidth:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapPixelFlavor:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<PixelFlavor>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<PixelFlavor>();
break;
case CapabilityId.ICapPixelFlavorCodes:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapPixelType:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<PixelType>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<PixelType>();
break;
case CapabilityId.ICapPlanarChunky:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<PlanarChunky>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<PlanarChunky>();
break;
case CapabilityId.ICapRotation:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<Rotation>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<Rotation>();
break;
case CapabilityId.ICapShadow:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapSupportedBarcodeTypes:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<BarcodeType>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<BarcodeType>();
break;
case CapabilityId.ICapSupportedExtImageInfo:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<ExtendedImageInfo>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<ExtendedImageInfo>();
break;
case CapabilityId.ICapSupportedPatchCodeTypes:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<PatchCode>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<PatchCode>();
break;
case CapabilityId.ICapSupportedSizes:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<SupportedSize>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<SupportedSize>();
break;
case CapabilityId.ICapThreshold:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapTiles:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapTimeFill:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapUndefinedImageSize:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapUnits:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<Unit>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<Unit>();
break;
case CapabilityId.ICapXferMech:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum<XferMech>();
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum<XferMech>();
break;
case CapabilityId.ICapXNativeResolution:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapXResolution:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapXScaling:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapYNativeResolution:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapYResolution:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapYScaling:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
case CapabilityId.ICapZoomFactor:
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
break;
default:
if (cap > CapabilityId.CustomBase)
{
CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap);
CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap);
}
else
{

View File

@@ -68,9 +68,9 @@ namespace Tester.WPF
{
// set it up to use file xfer
if (this.Source.CapGetCurrent(CapabilityId.ICapXferMech).ConvertToEnum<XferMech>() == XferMech.File)
if (this.CurrentSource.CapGetCurrent(CapabilityId.ICapXferMech).ConvertToEnum<XferMech>() == XferMech.File)
{
var formats = this.Source.CapGetImageFileFormat();
var formats = this.CurrentSource.CapGetImageFileFormat();
var wantFormat = formats.Contains(FileFormat.Tiff) ? FileFormat.Tiff : FileFormat.Bmp;
var fileSetup = new TWSetupFileXfer
@@ -110,17 +110,17 @@ namespace Tester.WPF
{
if (State == 4)
{
if (this.Source.CapGetPixelTypes().Contains(PixelType.BlackWhite))
if (this.CurrentSource.CapGetPixelTypes().Contains(PixelType.BlackWhite))
{
this.Source.CapSetPixelType(PixelType.BlackWhite);
this.CurrentSource.CapSetPixelType(PixelType.BlackWhite);
}
if (this.Source.CapGetImageXferMechs().Contains(XferMech.File))
if (this.CurrentSource.CapGetImageXferMechs().Contains(XferMech.File))
{
this.Source.CapSetImageXferMech(XferMech.File);
this.CurrentSource.CapSetImageXferMech(XferMech.File);
}
var rc = this.Source.StartTransfer(SourceEnableMode.NoUI, false, hwnd);
var rc = this.CurrentSource.StartTransfer(SourceEnableMode.NoUI, false, hwnd);
}
}
}

View File

@@ -107,7 +107,7 @@ namespace Tester.Winform
{
if (_twain.State == 4)
{
_twain.Source.Close();
_twain.CurrentSource.Close();
}
if (_twain.State == 3)
{
@@ -143,7 +143,7 @@ namespace Tester.Winform
// do nothing if source is enabled
if (_twain.State > 4) { return; }
if (_twain.State == 4) { _twain.Source.Close(); }
if (_twain.State == 4) { _twain.CurrentSource.Close(); }
foreach (var btn in btnSources.DropDownItems)
{
@@ -167,10 +167,10 @@ namespace Tester.Winform
{
_stopScan = false;
if (_twain.Source.SupportedCaps.Contains(CapabilityId.CapUIControllable))
if (_twain.CurrentSource.SupportedCaps.Contains(CapabilityId.CapUIControllable))
{
// hide scanner ui if possible
if (_twain.Source.StartTransfer(SourceEnableMode.NoUI, false, this.Handle) == ReturnCode.Success)
if (_twain.CurrentSource.StartTransfer(SourceEnableMode.NoUI, false, this.Handle) == ReturnCode.Success)
{
btnStopScan.Enabled = true;
btnStartCapture.Enabled = false;
@@ -179,7 +179,7 @@ namespace Tester.Winform
}
else
{
if (_twain.Source.StartTransfer(SourceEnableMode.ShowUI, true, this.Handle) == ReturnCode.Success)
if (_twain.CurrentSource.StartTransfer(SourceEnableMode.ShowUI, true, this.Handle) == ReturnCode.Success)
{
btnStopScan.Enabled = true;
btnStartCapture.Enabled = false;
@@ -255,7 +255,7 @@ namespace Tester.Winform
var srcBtn = new ToolStripMenuItem(src.Name);
srcBtn.Tag = src;
srcBtn.Click += SourceMenuItem_Click;
srcBtn.Checked = _twain.Source != null && _twain.Source.Name == src.Name;
srcBtn.Checked = _twain.CurrentSource != null && _twain.CurrentSource.Name == src.Name;
btnSources.DropDownItems.Insert(0, srcBtn);
}
}
@@ -267,7 +267,7 @@ namespace Tester.Winform
private void LoadSourceCaps()
{
var caps = _twain.Source.SupportedCaps;
var caps = _twain.CurrentSource.SupportedCaps;
_loadingCaps = true;
if (groupDepth.Enabled = caps.Contains(CapabilityId.ICapPixelType))
{
@@ -292,9 +292,9 @@ namespace Tester.Winform
private void LoadPaperSize()
{
var list = _twain.Source.CapGetSupportedSizes();
var list = _twain.CurrentSource.CapGetSupportedSizes();
comboSize.DataSource = list;
var cur = _twain.Source.CapGetCurrent(CapabilityId.ICapSupportedSizes).ConvertToEnum<SupportedSize>();
var cur = _twain.CurrentSource.CapGetCurrent(CapabilityId.ICapSupportedSizes).ConvertToEnum<SupportedSize>();
if (list.Contains(cur))
{
comboSize.SelectedItem = cur;
@@ -303,15 +303,15 @@ namespace Tester.Winform
private void LoadDuplex()
{
ckDuplex.Checked = _twain.Source.CapGetCurrent(CapabilityId.CapDuplexEnabled).ConvertToEnum<uint>() != 0;
ckDuplex.Checked = _twain.CurrentSource.CapGetCurrent(CapabilityId.CapDuplexEnabled).ConvertToEnum<uint>() != 0;
}
private void LoadDPI()
{
// only allow dpi of certain values for those source that lists everything
var list = _twain.Source.CapGetDPIs().Where(dpi => (dpi % 50) == 0).ToList();
var list = _twain.CurrentSource.CapGetDPIs().Where(dpi => (dpi % 50) == 0).ToList();
comboDPI.DataSource = list;
var cur = (TWFix32)_twain.Source.CapGetCurrent(CapabilityId.ICapXResolution);
var cur = (TWFix32)_twain.CurrentSource.CapGetCurrent(CapabilityId.ICapXResolution);
if (list.Contains(cur))
{
comboDPI.SelectedItem = cur;
@@ -320,9 +320,9 @@ namespace Tester.Winform
private void LoadDepth()
{
var list = _twain.Source.CapGetPixelTypes();
var list = _twain.CurrentSource.CapGetPixelTypes();
comboDepth.DataSource = list;
var cur = _twain.Source.CapGetCurrent(CapabilityId.ICapPixelType).ConvertToEnum<PixelType>();
var cur = _twain.CurrentSource.CapGetCurrent(CapabilityId.ICapPixelType).ConvertToEnum<PixelType>();
if (list.Contains(cur))
{
comboDepth.SelectedItem = cur;
@@ -334,7 +334,7 @@ namespace Tester.Winform
if (!_loadingCaps && _twain.State == 4)
{
var sel = (SupportedSize)comboSize.SelectedItem;
_twain.Source.CapSetSupportedSize(sel);
_twain.CurrentSource.CapSetSupportedSize(sel);
}
}
@@ -343,7 +343,7 @@ namespace Tester.Winform
if (!_loadingCaps && _twain.State == 4)
{
var sel = (PixelType)comboDepth.SelectedItem;
_twain.Source.CapSetPixelType(sel);
_twain.CurrentSource.CapSetPixelType(sel);
}
}
@@ -352,7 +352,7 @@ namespace Tester.Winform
if (!_loadingCaps && _twain.State == 4)
{
var sel = (TWFix32)comboDPI.SelectedItem;
_twain.Source.CapSetDPI(sel);
_twain.CurrentSource.CapSetDPI(sel);
}
}
@@ -360,13 +360,13 @@ namespace Tester.Winform
{
if (!_loadingCaps && _twain.State == 4)
{
_twain.Source.CapSetDuplex(ckDuplex.Checked);
_twain.CurrentSource.CapSetDuplex(ckDuplex.Checked);
}
}
private void btnAllSettings_Click(object sender, EventArgs e)
{
_twain.Source.StartTransfer(SourceEnableMode.ShowUIOnly, true, this.Handle);
_twain.CurrentSource.StartTransfer(SourceEnableMode.ShowUIOnly, true, this.Handle);
}
#endregion