From 5d1b0aa06f81ed2d3a8c41901d815712833772ab Mon Sep 17 00:00:00 2001 From: soukoku Date: Tue, 20 May 2014 07:25:57 -0400 Subject: [PATCH] Wrapped more source triplets. --- NTwain.Net35/NTwain.Net35.csproj | 3 - NTwain/ITwainOperation.cs | 66 ---- NTwain/ITwainSession.cs | 75 +++- NTwain/Internals/ITwainSessionInternal.cs | 2 + NTwain/Internals/TransferLogic.cs | 18 +- NTwain/NTwain.csproj | 1 - .../Triplets/DGAudio/DGAudio.AudioFileXfer.cs | 2 +- NTwain/Triplets/DGAudio/DGAudio.AudioInfo.cs | 2 +- .../DGAudio/DGAudio.AudioNativeXfer.cs | 2 +- .../Triplets/DGControl/DGControl.Callback.cs | 2 +- .../Triplets/DGControl/DGControl.Callback2.cs | 2 +- .../DGControl/DGControl.Capability.cs | 22 +- .../DGControl/DGControl.CapabilityCustom.cs | 22 +- .../DGControl/DGControl.CustomDSData.cs | 4 +- .../DGControl/DGControl.DeviceEvent.cs | 2 +- NTwain/Triplets/DGControl/DGControl.Event.cs | 2 +- .../DGControl/DGControl.FileSystem.cs | 22 +- .../Triplets/DGControl/DGControl.Identity.cs | 12 +- .../Triplets/DGControl/DGControl.PassThru.cs | 2 +- .../DGControl/DGControl.PendingXfers.cs | 8 +- .../DGControl/DGControl.SetupFileXfer.cs | 8 +- .../DGControl/DGControl.SetupMemXfer.cs | 2 +- NTwain/Triplets/DGControl/DGControl.Status.cs | 6 +- .../DGControl/DGControl.StatusUtf8.cs | 17 +- .../DGControl/DGControl.UserInterface.cs | 6 +- .../Triplets/DGControl/DGControl.XferGroup.cs | 4 +- NTwain/Triplets/DGControl/DGControl.cs | 4 +- NTwain/Triplets/DGCustom.cs | 2 +- NTwain/Triplets/DGImage/DGImage.CieColor.cs | 2 +- .../Triplets/DGImage/DGImage.ExtImageInfo.cs | 2 +- NTwain/Triplets/DGImage/DGImage.Filter.cs | 8 +- .../Triplets/DGImage/DGImage.GrayResponse.cs | 4 +- NTwain/Triplets/DGImage/DGImage.IccProfile.cs | 2 +- .../Triplets/DGImage/DGImage.ImageFileXfer.cs | 2 +- NTwain/Triplets/DGImage/DGImage.ImageInfo.cs | 2 +- .../Triplets/DGImage/DGImage.ImageLayout.cs | 8 +- .../DGImage/DGImage.ImageMemFileXfer.cs | 2 +- .../Triplets/DGImage/DGImage.ImageMemXfer.cs | 2 +- .../DGImage/DGImage.ImageNativeXfer.cs | 2 +- .../DGImage/DGImage.JpegCompression.cs | 8 +- NTwain/Triplets/DGImage/DGImage.Palette8.cs | 8 +- .../Triplets/DGImage/DGImage.RgbResponse.cs | 4 +- NTwain/Triplets/WhatsThis.txt | 8 +- NTwain/TwainSession.cs | 57 ++- NTwain/TwainSource.cs | 24 +- Tests/Tester.Console/Program.cs | 2 +- Tests/Tester.WPF/MainWindow.xaml.cs | 336 +++++++++--------- Tests/Tester.WPF/ViewModels/TwainVM.cs | 14 +- Tests/Tester.Winform/TestForm.cs | 38 +- 49 files changed, 465 insertions(+), 390 deletions(-) delete mode 100644 NTwain/ITwainOperation.cs diff --git a/NTwain.Net35/NTwain.Net35.csproj b/NTwain.Net35/NTwain.Net35.csproj index c6c1783..e85696c 100644 --- a/NTwain.Net35/NTwain.Net35.csproj +++ b/NTwain.Net35/NTwain.Net35.csproj @@ -100,9 +100,6 @@ Internals\WrappedManualResetEvent.cs - - ITwainOperation.cs - ITwainSession.cs diff --git a/NTwain/ITwainOperation.cs b/NTwain/ITwainOperation.cs deleted file mode 100644 index 6eab116..0000000 --- a/NTwain/ITwainOperation.cs +++ /dev/null @@ -1,66 +0,0 @@ -using NTwain.Data; -using NTwain.Triplets; -using System; -using System.Collections.Generic; - -namespace NTwain -{ - /// - /// Interface for TWAIN triplet operations. - /// - public interface ITwainOperation - { - /// - /// Gets the triplet operations defined for audio data group. - /// - DGAudio DGAudio { get; } - - /// - /// Gets the triplet operations defined for control data group. - /// - DGControl DGControl { get; } - - /// - /// Gets the triplet operations defined for image data group. - /// - DGImage DGImage { get; } - - /// - /// Gets the direct triplet operation entry for custom values. - /// - DGCustom DGCustom { get; } - - /// - /// Opens the data source manager. This must be the first method used - /// before using other TWAIN functions. Calls to this must be followed by when done with a TWAIN session. - /// - /// - ReturnCode Open(); - - /// - /// Closes the data source manager. - /// - /// - ReturnCode Close(); - - /// - /// 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. - /// - /// State of the target. - void ForceStepDown(int targetState); - - /// - /// Gets list of sources available in the system. - /// - /// - IEnumerable GetSources(); - - /// - /// Gets the manager status. Only call this at state 2 or higher. - /// - /// The session. - /// - TWStatus GetStatus(); - } -} diff --git a/NTwain/ITwainSession.cs b/NTwain/ITwainSession.cs index 6918070..70955bb 100644 --- a/NTwain/ITwainSession.cs +++ b/NTwain/ITwainSession.cs @@ -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 /// /// General interface for a TWAIN session. /// - public interface ITwainSession : INotifyPropertyChanged, ITwainOperation + public interface ITwainSession : INotifyPropertyChanged { /// /// Gets the currently open source. @@ -18,12 +19,82 @@ namespace NTwain /// /// The current source. /// - TwainSource Source { get; } + TwainSource CurrentSource { get; } + + /// + /// 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. + /// + /// + /// The default source. + /// + TwainSource DefaultSource { get; set; } /// /// Gets the current state number as defined by the TWAIN spec. /// /// The state. int State { get; } + + /// + /// Gets the triplet operations defined for audio data group. + /// + DGAudio DGAudio { get; } + + /// + /// Gets the triplet operations defined for control data group. + /// + DGControl DGControl { get; } + + /// + /// Gets the triplet operations defined for image data group. + /// + DGImage DGImage { get; } + + /// + /// Gets the direct triplet operation entry for custom values. + /// + DGCustom DGCustom { get; } + + /// + /// Try to show the built-in source selector dialog and return the selected source. + /// This is not recommended and is only included for completeness. + /// + /// + TwainSource ShowSourceSelector(); + + /// + /// Opens the data source manager. This must be the first method used + /// before using other TWAIN functions. Calls to this must be followed by when done with a TWAIN session. + /// + /// + ReturnCode Open(); + + /// + /// Closes the data source manager. + /// + /// + ReturnCode Close(); + + /// + /// 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. + /// + /// State of the target. + void ForceStepDown(int targetState); + + /// + /// Gets list of sources available in the system. + /// + /// + IEnumerable GetSources(); + + /// + /// Gets the manager status. Only call this at state 2 or higher. + /// + /// The session. + /// + TWStatus GetStatus(); } } diff --git a/NTwain/Internals/ITwainSessionInternal.cs b/NTwain/Internals/ITwainSessionInternal.cs index f687aa6..32e837d 100644 --- a/NTwain/Internals/ITwainSessionInternal.cs +++ b/NTwain/Internals/ITwainSessionInternal.cs @@ -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; } } } diff --git a/NTwain/Internals/TransferLogic.cs b/NTwain/Internals/TransferLogic.cs index 67b8415..b547c35 100644 --- a/NTwain/Internals/TransferLogic.cs +++ b/NTwain/Internals/TransferLogic.cs @@ -70,7 +70,7 @@ namespace NTwain.Internals if (xferGroup == DataGroups.None || (xferGroup & DataGroups.Image) == DataGroups.Image) { - var mech = session.Source.CapGetCurrent(CapabilityId.ICapXferMech).ConvertToEnum(); + var mech = session.CurrentSource.CapGetCurrent(CapabilityId.ICapXferMech).ConvertToEnum(); 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(); + var mech = session.CurrentSource.CapGetCurrent(CapabilityId.ACapXferMech).ConvertToEnum(); 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) { diff --git a/NTwain/NTwain.csproj b/NTwain/NTwain.csproj index c37a33d..2a3c215 100644 --- a/NTwain/NTwain.csproj +++ b/NTwain/NTwain.csproj @@ -64,7 +64,6 @@ - diff --git a/NTwain/Triplets/DGAudio/DGAudio.AudioFileXfer.cs b/NTwain/Triplets/DGAudio/DGAudio.AudioFileXfer.cs index e63f7f5..8db82b3 100644 --- a/NTwain/Triplets/DGAudio/DGAudio.AudioFileXfer.cs +++ b/NTwain/Triplets/DGAudio/DGAudio.AudioFileXfer.cs @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGAudio/DGAudio.AudioInfo.cs b/NTwain/Triplets/DGAudio/DGAudio.AudioInfo.cs index bbc4d91..6cf677e 100644 --- a/NTwain/Triplets/DGAudio/DGAudio.AudioInfo.cs +++ b/NTwain/Triplets/DGAudio/DGAudio.AudioInfo.cs @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGAudio/DGAudio.AudioNativeXfer.cs b/NTwain/Triplets/DGAudio/DGAudio.AudioNativeXfer.cs index 981e128..7dc6285 100644 --- a/NTwain/Triplets/DGAudio/DGAudio.AudioNativeXfer.cs +++ b/NTwain/Triplets/DGAudio/DGAudio.AudioNativeXfer.cs @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGControl/DGControl.Callback.cs b/NTwain/Triplets/DGControl/DGControl.Callback.cs index 85d6ed4..cbd894c 100644 --- a/NTwain/Triplets/DGControl/DGControl.Callback.cs +++ b/NTwain/Triplets/DGControl/DGControl.Callback.cs @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGControl/DGControl.Callback2.cs b/NTwain/Triplets/DGControl/DGControl.Callback2.cs index 1af4806..88c24f5 100644 --- a/NTwain/Triplets/DGControl/DGControl.Callback2.cs +++ b/NTwain/Triplets/DGControl/DGControl.Callback2.cs @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGControl/DGControl.Capability.cs b/NTwain/Triplets/DGControl/DGControl.Capability.cs index c250821..f0f5efc 100644 --- a/NTwain/Triplets/DGControl/DGControl.Capability.cs +++ b/NTwain/Triplets/DGControl/DGControl.Capability.cs @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGControl/DGControl.CapabilityCustom.cs b/NTwain/Triplets/DGControl/DGControl.CapabilityCustom.cs index 3835c66..5f7d41c 100644 --- a/NTwain/Triplets/DGControl/DGControl.CapabilityCustom.cs +++ b/NTwain/Triplets/DGControl/DGControl.CapabilityCustom.cs @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGControl/DGControl.CustomDSData.cs b/NTwain/Triplets/DGControl/DGControl.CustomDSData.cs index 94c2f16..935b97b 100644 --- a/NTwain/Triplets/DGControl/DGControl.CustomDSData.cs +++ b/NTwain/Triplets/DGControl/DGControl.CustomDSData.cs @@ -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); } /// @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGControl/DGControl.DeviceEvent.cs b/NTwain/Triplets/DGControl/DGControl.DeviceEvent.cs index 6ceb800..2ff53e7 100644 --- a/NTwain/Triplets/DGControl/DGControl.DeviceEvent.cs +++ b/NTwain/Triplets/DGControl/DGControl.DeviceEvent.cs @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGControl/DGControl.Event.cs b/NTwain/Triplets/DGControl/DGControl.Event.cs index 0c01f6d..af64236 100644 --- a/NTwain/Triplets/DGControl/DGControl.Event.cs +++ b/NTwain/Triplets/DGControl/DGControl.Event.cs @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGControl/DGControl.FileSystem.cs b/NTwain/Triplets/DGControl/DGControl.FileSystem.cs index 5dc8ff7..3b518fb 100644 --- a/NTwain/Triplets/DGControl/DGControl.FileSystem.cs +++ b/NTwain/Triplets/DGControl/DGControl.FileSystem.cs @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGControl/DGControl.Identity.cs b/NTwain/Triplets/DGControl/DGControl.Identity.cs index 60dfee5..9fcd6c1 100644 --- a/NTwain/Triplets/DGControl/DGControl.Identity.cs +++ b/NTwain/Triplets/DGControl/DGControl.Identity.cs @@ -6,9 +6,10 @@ namespace NTwain.Triplets /// /// Represents . /// - public sealed class Identity : OpBase + sealed class Identity : OpBase { internal Identity(ITwainSessionInternal session) : base(session) { } + /// /// 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. /// /// - 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 /// /// The source. /// - [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 /// /// The source. /// - [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 /// /// The source. /// - [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 /// /// The source. /// - 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); diff --git a/NTwain/Triplets/DGControl/DGControl.PassThru.cs b/NTwain/Triplets/DGControl/DGControl.PassThru.cs index f5ab619..708bb9f 100644 --- a/NTwain/Triplets/DGControl/DGControl.PassThru.cs +++ b/NTwain/Triplets/DGControl/DGControl.PassThru.cs @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGControl/DGControl.PendingXfers.cs b/NTwain/Triplets/DGControl/DGControl.PendingXfers.cs index f85e7d5..3e81527 100644 --- a/NTwain/Triplets/DGControl/DGControl.PendingXfers.cs +++ b/NTwain/Triplets/DGControl/DGControl.PendingXfers.cs @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGControl/DGControl.SetupFileXfer.cs b/NTwain/Triplets/DGControl/DGControl.SetupFileXfer.cs index d7bc2a4..296c21f 100644 --- a/NTwain/Triplets/DGControl/DGControl.SetupFileXfer.cs +++ b/NTwain/Triplets/DGControl/DGControl.SetupFileXfer.cs @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } } diff --git a/NTwain/Triplets/DGControl/DGControl.SetupMemXfer.cs b/NTwain/Triplets/DGControl/DGControl.SetupMemXfer.cs index 967f00a..6c30f10 100644 --- a/NTwain/Triplets/DGControl/DGControl.SetupMemXfer.cs +++ b/NTwain/Triplets/DGControl/DGControl.SetupMemXfer.cs @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGControl/DGControl.Status.cs b/NTwain/Triplets/DGControl/DGControl.Status.cs index 500dedf..6dacd40 100644 --- a/NTwain/Triplets/DGControl/DGControl.Status.cs +++ b/NTwain/Triplets/DGControl/DGControl.Status.cs @@ -6,7 +6,7 @@ namespace NTwain.Triplets /// /// Represents . /// - public sealed class Status : OpBase + sealed class Status : OpBase { internal Status(ITwainSessionInternal session) : base(session) { } /// @@ -14,7 +14,6 @@ namespace NTwain.Triplets /// /// The status. /// - [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 /// /// The status. /// - [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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGControl/DGControl.StatusUtf8.cs b/NTwain/Triplets/DGControl/DGControl.StatusUtf8.cs index 259a753..c1c531c 100644 --- a/NTwain/Triplets/DGControl/DGControl.StatusUtf8.cs +++ b/NTwain/Triplets/DGControl/DGControl.StatusUtf8.cs @@ -9,16 +9,29 @@ namespace NTwain.Triplets public sealed class StatusUtf8 : OpBase { internal StatusUtf8(ITwainSessionInternal session) : base(session) { } + + /// + /// Translate the contents of a TW_STATUS structure received from the manager into a localized UTF-8 + /// encoded string. + /// + /// The status. + /// + public ReturnCode GetManager(TWStatusUtf8 status) + { + Session.VerifyState(3, 7, DataGroups.Control, DataArgumentType.StatusUtf8, Message.Get); + return Dsm.DsmEntry(Session.AppId, null, Message.Get, status); + } + /// /// Translate the contents of a TW_STATUS structure received from a Source into a localized UTF-8 /// encoded string. /// /// The status. /// - 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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGControl/DGControl.UserInterface.cs b/NTwain/Triplets/DGControl/DGControl.UserInterface.cs index b9fb330..5adb2b4 100644 --- a/NTwain/Triplets/DGControl/DGControl.UserInterface.cs +++ b/NTwain/Triplets/DGControl/DGControl.UserInterface.cs @@ -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(); diff --git a/NTwain/Triplets/DGControl/DGControl.XferGroup.cs b/NTwain/Triplets/DGControl/DGControl.XferGroup.cs index 8bb30fb..181298f 100644 --- a/NTwain/Triplets/DGControl/DGControl.XferGroup.cs +++ b/NTwain/Triplets/DGControl/DGControl.XferGroup.cs @@ -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); } /// @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGControl/DGControl.cs b/NTwain/Triplets/DGControl/DGControl.cs index b7020b6..9c6f14b 100644 --- a/NTwain/Triplets/DGControl/DGControl.cs +++ b/NTwain/Triplets/DGControl/DGControl.cs @@ -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 { diff --git a/NTwain/Triplets/DGCustom.cs b/NTwain/Triplets/DGCustom.cs index eb33afb..2aef0bd 100644 --- a/NTwain/Triplets/DGCustom.cs +++ b/NTwain/Triplets/DGCustom.cs @@ -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? diff --git a/NTwain/Triplets/DGImage/DGImage.CieColor.cs b/NTwain/Triplets/DGImage/DGImage.CieColor.cs index a5a0efc..5b173cf 100644 --- a/NTwain/Triplets/DGImage/DGImage.CieColor.cs +++ b/NTwain/Triplets/DGImage/DGImage.CieColor.cs @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGImage/DGImage.ExtImageInfo.cs b/NTwain/Triplets/DGImage/DGImage.ExtImageInfo.cs index 1306530..92c7197 100644 --- a/NTwain/Triplets/DGImage/DGImage.ExtImageInfo.cs +++ b/NTwain/Triplets/DGImage/DGImage.ExtImageInfo.cs @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGImage/DGImage.Filter.cs b/NTwain/Triplets/DGImage/DGImage.Filter.cs index fc4a209..7bce3b4 100644 --- a/NTwain/Triplets/DGImage/DGImage.Filter.cs +++ b/NTwain/Triplets/DGImage/DGImage.Filter.cs @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGImage/DGImage.GrayResponse.cs b/NTwain/Triplets/DGImage/DGImage.GrayResponse.cs index 158370f..48da269 100644 --- a/NTwain/Triplets/DGImage/DGImage.GrayResponse.cs +++ b/NTwain/Triplets/DGImage/DGImage.GrayResponse.cs @@ -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); } /// @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGImage/DGImage.IccProfile.cs b/NTwain/Triplets/DGImage/DGImage.IccProfile.cs index 185cf42..78e9250 100644 --- a/NTwain/Triplets/DGImage/DGImage.IccProfile.cs +++ b/NTwain/Triplets/DGImage/DGImage.IccProfile.cs @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGImage/DGImage.ImageFileXfer.cs b/NTwain/Triplets/DGImage/DGImage.ImageFileXfer.cs index e3002db..1cabe54 100644 --- a/NTwain/Triplets/DGImage/DGImage.ImageFileXfer.cs +++ b/NTwain/Triplets/DGImage/DGImage.ImageFileXfer.cs @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGImage/DGImage.ImageInfo.cs b/NTwain/Triplets/DGImage/DGImage.ImageInfo.cs index 0ce5794..12022a4 100644 --- a/NTwain/Triplets/DGImage/DGImage.ImageInfo.cs +++ b/NTwain/Triplets/DGImage/DGImage.ImageInfo.cs @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGImage/DGImage.ImageLayout.cs b/NTwain/Triplets/DGImage/DGImage.ImageLayout.cs index e0542e7..abbb5ea 100644 --- a/NTwain/Triplets/DGImage/DGImage.ImageLayout.cs +++ b/NTwain/Triplets/DGImage/DGImage.ImageLayout.cs @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGImage/DGImage.ImageMemFileXfer.cs b/NTwain/Triplets/DGImage/DGImage.ImageMemFileXfer.cs index 93da140..f1e8a37 100644 --- a/NTwain/Triplets/DGImage/DGImage.ImageMemFileXfer.cs +++ b/NTwain/Triplets/DGImage/DGImage.ImageMemFileXfer.cs @@ -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); } } diff --git a/NTwain/Triplets/DGImage/DGImage.ImageMemXfer.cs b/NTwain/Triplets/DGImage/DGImage.ImageMemXfer.cs index 447bd93..5e7d8c7 100644 --- a/NTwain/Triplets/DGImage/DGImage.ImageMemXfer.cs +++ b/NTwain/Triplets/DGImage/DGImage.ImageMemXfer.cs @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGImage/DGImage.ImageNativeXfer.cs b/NTwain/Triplets/DGImage/DGImage.ImageNativeXfer.cs index b03bf9a..edb16c6 100644 --- a/NTwain/Triplets/DGImage/DGImage.ImageNativeXfer.cs +++ b/NTwain/Triplets/DGImage/DGImage.ImageNativeXfer.cs @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGImage/DGImage.JpegCompression.cs b/NTwain/Triplets/DGImage/DGImage.JpegCompression.cs index a6402f5..b6ee44d 100644 --- a/NTwain/Triplets/DGImage/DGImage.JpegCompression.cs +++ b/NTwain/Triplets/DGImage/DGImage.JpegCompression.cs @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGImage/DGImage.Palette8.cs b/NTwain/Triplets/DGImage/DGImage.Palette8.cs index 763655d..d772e16 100644 --- a/NTwain/Triplets/DGImage/DGImage.Palette8.cs +++ b/NTwain/Triplets/DGImage/DGImage.Palette8.cs @@ -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); } /// @@ -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); } /// @@ -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); } /// @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/DGImage/DGImage.RgbResponse.cs b/NTwain/Triplets/DGImage/DGImage.RgbResponse.cs index f18e1aa..62abc97 100644 --- a/NTwain/Triplets/DGImage/DGImage.RgbResponse.cs +++ b/NTwain/Triplets/DGImage/DGImage.RgbResponse.cs @@ -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); } /// @@ -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); } } } \ No newline at end of file diff --git a/NTwain/Triplets/WhatsThis.txt b/NTwain/Triplets/WhatsThis.txt index d5871ae..f5c0f2f 100644 --- a/NTwain/Triplets/WhatsThis.txt +++ b/NTwain/Triplets/WhatsThis.txt @@ -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. \ No newline at end of file diff --git a/NTwain/TwainSession.cs b/NTwain/TwainSession.cs index 1bb5e01..bff165d 100644 --- a/NTwain/TwainSession.cs +++ b/NTwain/TwainSession.cs @@ -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 /// /// The current source. /// - public TwainSource Source { get; private set; } + public TwainSource CurrentSource { get; private set; } + + /// + /// 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. + /// + /// + /// The default source. + /// + 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); + } + } + } + + /// + /// Try to show the built-in source selector dialog and return the selected source. + /// This is not recommended and is only included for completeness. + /// + /// + public TwainSource ShowSourceSelector() + { + TWIdentity id; + if (DGControl.Identity.UserSelect(out id) == ReturnCode.Success) + { + return new TwainSource(this, id); + } + return null; + } int _state; /// @@ -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 /// public event EventHandler StateChanged; /// - /// Occurs when has changed. + /// Occurs when has changed. /// public event EventHandler SourceChanged; /// @@ -572,7 +615,7 @@ namespace NTwain protected virtual void OnStateChanged() { } /// - /// Called when changed. + /// Called when changed. /// 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. diff --git a/NTwain/TwainSource.cs b/NTwain/TwainSource.cs index 6c35a66..3f8c0c0 100644 --- a/NTwain/TwainSource.cs +++ b/NTwain/TwainSource.cs @@ -187,12 +187,28 @@ namespace NTwain /// Name of the property. protected void OnPropertyChanged(string propertyName) { - try + var syncer = _session.SynchronizationContext; + if (syncer == null) { - var hand = PropertyChanged; - if (hand != null) { hand(this, new PropertyChangedEventArgs(propertyName)); } + try + { + var hand = PropertyChanged; + if (hand != null) { hand(this, new PropertyChangedEventArgs(propertyName)); } + } + catch { } + } + else + { + syncer.Post(o => + { + try + { + var hand = PropertyChanged; + if (hand != null) { hand(this, new PropertyChangedEventArgs(propertyName)); } + } + catch { } + }, null); } - catch { } } #endregion diff --git a/Tests/Tester.Console/Program.cs b/Tests/Tester.Console/Program.cs index 175e31c..55c9438 100644 --- a/Tests/Tester.Console/Program.cs +++ b/Tests/Tester.Console/Program.cs @@ -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(); } diff --git a/Tests/Tester.WPF/MainWindow.xaml.cs b/Tests/Tester.WPF/MainWindow.xaml.cs index 7311dbb..6f2ee34 100644 --- a/Tests/Tester.WPF/MainWindow.xaml.cs +++ b/Tests/Tester.WPF/MainWindow.xaml.cs @@ -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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.CapAlarms: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.CapDoubleFeedDetectionSensitivity: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.CapDuplex: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.CapFeederPocket: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.CapJobControl: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.CapLanguage: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.CapPrinter: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.CapPrinterMode: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.ICapBitOrder: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.ICapFilmType: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.ICapFilter: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.ICapImageFilter: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.ICapImageMerge: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.ICapJpegQuality: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.ICapJpegSubsampling: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.ICapLightSource: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.ICapNoiseFilter: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.ICapOrientation: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.ICapOverScan: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.ICapPlanarChunky: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.ICapRotation: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.ICapSupportedExtImageInfo: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.ICapSupportedPatchCodeTypes: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.ICapSupportedSizes: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); break; case CapabilityId.ICapXferMech: - CapDetailList.ItemsSource = _twainVM.Source.CapGetValues(cap).CastToEnum(); + CapDetailList.ItemsSource = _twainVM.CurrentSource.CapGetValues(cap).CastToEnum(); 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 { diff --git a/Tests/Tester.WPF/ViewModels/TwainVM.cs b/Tests/Tester.WPF/ViewModels/TwainVM.cs index d47bff4..39302b6 100644 --- a/Tests/Tester.WPF/ViewModels/TwainVM.cs +++ b/Tests/Tester.WPF/ViewModels/TwainVM.cs @@ -68,9 +68,9 @@ namespace Tester.WPF { // set it up to use file xfer - if (this.Source.CapGetCurrent(CapabilityId.ICapXferMech).ConvertToEnum() == XferMech.File) + if (this.CurrentSource.CapGetCurrent(CapabilityId.ICapXferMech).ConvertToEnum() == 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); } } } diff --git a/Tests/Tester.Winform/TestForm.cs b/Tests/Tester.Winform/TestForm.cs index 1637452..8a20504 100644 --- a/Tests/Tester.Winform/TestForm.cs +++ b/Tests/Tester.Winform/TestForm.cs @@ -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(); + var cur = _twain.CurrentSource.CapGetCurrent(CapabilityId.ICapSupportedSizes).ConvertToEnum(); 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() != 0; + ckDuplex.Checked = _twain.CurrentSource.CapGetCurrent(CapabilityId.CapDuplexEnabled).ConvertToEnum() != 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(); + var cur = _twain.CurrentSource.CapGetCurrent(CapabilityId.ICapPixelType).ConvertToEnum(); 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