From 1718aaef48c2ce355f7d7eb89c47fdef523126b6 Mon Sep 17 00:00:00 2001 From: Eugene Wang Date: Sun, 18 Nov 2018 11:01:25 -0500 Subject: [PATCH] Added rest of audio triplets. --- src/NTwain/Triplets/Audio/AudioFileXfer.cs | 40 ++++++++++++++++++++ src/NTwain/Triplets/Audio/AudioNativeXfer.cs | 39 +++++++++++++++++++ src/NTwain/Triplets/DGAudio.cs | 10 ++++- src/NTwain/TwainSession.MsgHandling.cs | 1 + src/NTwain/TwainSession.Props.cs | 2 +- 5 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 src/NTwain/Triplets/Audio/AudioFileXfer.cs create mode 100644 src/NTwain/Triplets/Audio/AudioNativeXfer.cs diff --git a/src/NTwain/Triplets/Audio/AudioFileXfer.cs b/src/NTwain/Triplets/Audio/AudioFileXfer.cs new file mode 100644 index 0000000..4893568 --- /dev/null +++ b/src/NTwain/Triplets/Audio/AudioFileXfer.cs @@ -0,0 +1,40 @@ +using NTwain.Data; +using NTwain.Internals; +using System; + +namespace NTwain.Triplets.Audio +{ + sealed class AudioFileXfer : BaseTriplet + { + internal AudioFileXfer(TwainSession session) : base(session) { } + + public ReturnCode Get() + { + IntPtr zero = IntPtr.Zero; + if (Is32Bit) + { + if (IsWin) + return NativeMethods.DsmWin32(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Audio, DataArgumentType.AudioFileXfer, Message.Get, ref zero); + if (IsLinux) + return NativeMethods.DsmLinux32(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Audio, DataArgumentType.AudioFileXfer, Message.Get, ref zero); + if (IsMac) + return NativeMethods.DsmMac32(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Audio, DataArgumentType.AudioFileXfer, Message.Get, ref zero); + } + + if (IsWin) + return NativeMethods.DsmWin64(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Audio, DataArgumentType.AudioFileXfer, Message.Get, ref zero); + if (IsLinux) + return NativeMethods.DsmLinux64(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Audio, DataArgumentType.AudioFileXfer, Message.Get, ref zero); + if (IsMac) + return NativeMethods.DsmMac64(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Audio, DataArgumentType.AudioFileXfer, Message.Get, ref zero); + + return ReturnCode.Failure; + } + } +} \ No newline at end of file diff --git a/src/NTwain/Triplets/Audio/AudioNativeXfer.cs b/src/NTwain/Triplets/Audio/AudioNativeXfer.cs new file mode 100644 index 0000000..1c5e2ea --- /dev/null +++ b/src/NTwain/Triplets/Audio/AudioNativeXfer.cs @@ -0,0 +1,39 @@ +using NTwain.Data; +using NTwain.Internals; +using System; + +namespace NTwain.Triplets.Audio +{ + sealed class AudioNativeXfer : BaseTriplet + { + internal AudioNativeXfer(TwainSession session) : base(session) { } + + public ReturnCode Get(ref IntPtr handle) + { + if (Is32Bit) + { + if (IsWin) + return NativeMethods.DsmWin32(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Audio, DataArgumentType.AudioNativeXfer, Message.Get, ref handle); + if (IsLinux) + return NativeMethods.DsmLinux32(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Audio, DataArgumentType.AudioNativeXfer, Message.Get, ref handle); + if (IsMac) + return NativeMethods.DsmMac32(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Audio, DataArgumentType.AudioNativeXfer, Message.Get, ref handle); + } + + if (IsWin) + return NativeMethods.DsmWin64(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Audio, DataArgumentType.AudioNativeXfer, Message.Get, ref handle); + if (IsLinux) + return NativeMethods.DsmLinux64(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Audio, DataArgumentType.AudioNativeXfer, Message.Get, ref handle); + if (IsMac) + return NativeMethods.DsmMac64(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Audio, DataArgumentType.AudioNativeXfer, Message.Get, ref handle); + + return ReturnCode.Failure; + } + } +} \ No newline at end of file diff --git a/src/NTwain/Triplets/DGAudio.cs b/src/NTwain/Triplets/DGAudio.cs index 9266c3f..b5be214 100644 --- a/src/NTwain/Triplets/DGAudio.cs +++ b/src/NTwain/Triplets/DGAudio.cs @@ -10,11 +10,17 @@ namespace NTwain.Triplets /// /// Represents . /// - public partial class DGAudio : BaseTriplet + partial class DGAudio : BaseTriplet { internal DGAudio(TwainSession session) : base(session) { } - + + AudioFileXfer _fileXfer; + internal AudioFileXfer AudioFileXfer => _fileXfer ?? (_fileXfer = new AudioFileXfer(Session)); + AudioInfo _info; internal AudioInfo AudioInfo => _info ?? (_info = new AudioInfo(Session)); + + AudioNativeXfer _natXfer; + internal AudioNativeXfer AudioNativeXfer => _natXfer ?? (_natXfer = new AudioNativeXfer(Session)); } } diff --git a/src/NTwain/TwainSession.MsgHandling.cs b/src/NTwain/TwainSession.MsgHandling.cs index 80a8dbc..eb4610b 100644 --- a/src/NTwain/TwainSession.MsgHandling.cs +++ b/src/NTwain/TwainSession.MsgHandling.cs @@ -247,6 +247,7 @@ namespace NTwain // some DS returns none but we will assume it's image xferImage = xferGroup == DataGroups.None || (xferGroup & DataGroups.Image) == DataGroups.Image; } + // TODO: restore this if (xferImage) { //imgXferMech = CurrentSource.Capabilities.ICapXferMech.GetCurrent(); diff --git a/src/NTwain/TwainSession.Props.cs b/src/NTwain/TwainSession.Props.cs index d2797aa..9b5d95d 100644 --- a/src/NTwain/TwainSession.Props.cs +++ b/src/NTwain/TwainSession.Props.cs @@ -40,7 +40,7 @@ namespace NTwain /// /// Gets the triplet operations defined for audio data group. /// - public DGAudio DGAudio => dgAudio ?? (dgAudio = new DGAudio(this)); + DGAudio DGAudio => dgAudio ?? (dgAudio = new DGAudio(this)); ///// ///// Gets/sets the direct triplet operation entry for custom values.