mirror of
https://github.com/soukoku/ntwain.git
synced 2025-04-05 20:59:23 +08:00
Added twaindirect call.
This commit is contained in:
parent
679a00818a
commit
acfbec6a38
@ -1,31 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace NTwain
|
||||
{
|
||||
/// <summary>
|
||||
/// Uses a WPF dispatcher to do the work.
|
||||
/// </summary>
|
||||
public class DispatcherMarshaller : IThreadMarshaller
|
||||
{
|
||||
private readonly System.Windows.Threading.Dispatcher _dispatcher;
|
||||
|
||||
/// <summary>
|
||||
/// Uses a dispatcher whose UI thread is used to run the work.
|
||||
/// </summary>
|
||||
/// <param name="dispatcher"></param>
|
||||
public DispatcherMarshaller(System.Windows.Threading.Dispatcher dispatcher)
|
||||
{
|
||||
_dispatcher = dispatcher ?? throw new ArgumentNullException(nameof(dispatcher));
|
||||
}
|
||||
|
||||
public void BeginInvoke(Delegate work, params object[] args)
|
||||
{
|
||||
_dispatcher.BeginInvoke(work, args);
|
||||
}
|
||||
|
||||
public object Invoke(Delegate work, params object[] args)
|
||||
{
|
||||
return _dispatcher.Invoke(work, args);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<PackageId>NTwain.Win</PackageId>
|
||||
<Description>Contains Windows specific things for NTwain.</Description>
|
||||
<TargetFrameworks>net462;netcoreapp3.1;net5.0-windows;net6.0-windows</TargetFrameworks>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<UseWPF>true</UseWPF>
|
||||
<RootNamespace>NTwain</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\NTwain\NTwain.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
@ -1,31 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace NTwain
|
||||
{
|
||||
/// <summary>
|
||||
/// Uses a winform UI thread to do the work.
|
||||
/// </summary>
|
||||
public class WinformMarshaller : IThreadMarshaller
|
||||
{
|
||||
private readonly System.Windows.Forms.Control _uiControl;
|
||||
|
||||
/// <summary>
|
||||
/// Uses a control whose UI thread is used to run the work.
|
||||
/// </summary>
|
||||
/// <param name="uiControl"></param>
|
||||
public WinformMarshaller(System.Windows.Forms.Control uiControl)
|
||||
{
|
||||
_uiControl = uiControl ?? throw new ArgumentNullException(nameof(uiControl));
|
||||
}
|
||||
|
||||
public void BeginInvoke(Delegate work, params object[] args)
|
||||
{
|
||||
_uiControl.BeginInvoke(work, args);
|
||||
}
|
||||
|
||||
public object Invoke(Delegate work, params object[] args)
|
||||
{
|
||||
return _uiControl.Invoke(work, args);
|
||||
}
|
||||
}
|
||||
}
|
@ -140,6 +140,13 @@ namespace NTwain.DSM
|
||||
DG dg, DAT dat, MSG msg, ref TW_EVENT evt
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.identityClass #> origin, ref <#= file.identityClass #> dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_TWAINDIRECT task
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
|
@ -120,6 +120,13 @@ namespace NTwain.DSM
|
||||
DG dg, DAT dat, MSG msg, ref TW_EVENT evt
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref TW_IDENTITY_LEGACY origin, ref TW_IDENTITY_LEGACY dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_TWAINDIRECT task
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
|
@ -120,6 +120,13 @@ namespace NTwain.DSM
|
||||
DG dg, DAT dat, MSG msg, ref TW_EVENT evt
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref TW_IDENTITY origin, ref TW_IDENTITY dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_TWAINDIRECT task
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
|
@ -120,6 +120,13 @@ namespace NTwain.DSM
|
||||
DG dg, DAT dat, MSG msg, ref TW_EVENT evt
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref TW_IDENTITY_LEGACY origin, ref TW_IDENTITY_LEGACY dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_TWAINDIRECT task
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
|
@ -120,6 +120,13 @@ namespace NTwain.DSM
|
||||
DG dg, DAT dat, MSG msg, ref TW_EVENT evt
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref TW_IDENTITY_MACOSX origin, ref TW_IDENTITY_MACOSX dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_TWAINDIRECT task
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
|
@ -120,6 +120,13 @@ namespace NTwain.DSM
|
||||
DG dg, DAT dat, MSG msg, ref TW_EVENT evt
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref TW_IDENTITY_MACOSX origin, ref TW_IDENTITY_MACOSX dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_TWAINDIRECT task
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
|
@ -120,6 +120,13 @@ namespace NTwain.DSM
|
||||
DG dg, DAT dat, MSG msg, ref TW_EVENT evt
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref TW_IDENTITY_LEGACY origin, ref TW_IDENTITY_LEGACY dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_TWAINDIRECT task
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
|
@ -120,6 +120,13 @@ namespace NTwain.DSM
|
||||
DG dg, DAT dat, MSG msg, ref TW_EVENT evt
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref TW_IDENTITY_LEGACY origin, ref TW_IDENTITY_LEGACY dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_TWAINDIRECT task
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
|
@ -28,4 +28,8 @@
|
||||
<LastGenOutput>DSMGenerator.dummy</LastGenOutput>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
44
src/NTwain/Triplets/ControlDATs/TwainDirect.cs
Normal file
44
src/NTwain/Triplets/ControlDATs/TwainDirect.cs
Normal file
@ -0,0 +1,44 @@
|
||||
using NTwain.Data;
|
||||
using NTwain.DSM;
|
||||
|
||||
namespace NTwain.Triplets.ControlDATs
|
||||
{
|
||||
/// <summary>
|
||||
/// Contains calls used with <see cref="DG.CONTROL"/> and <see cref="DAT.TWAINDIRECT"/>.
|
||||
/// </summary>
|
||||
public class TwainDirect
|
||||
{
|
||||
public STS SetTask(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, ref TW_TWAINDIRECT data)
|
||||
=> DoIt(ref app, ref ds, MSG.SETTASK, ref data);
|
||||
|
||||
static STS DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg, ref TW_TWAINDIRECT data)
|
||||
{
|
||||
var rc = STS.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = (STS)WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.CIECOLOR, msg, ref data);
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = (STS)WinNewDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.CIECOLOR, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = (STS)OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.CIECOLOR, msg, ref data);
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = (STS)OSXNewDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.CIECOLOR, msg, ref data);
|
||||
}
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
}
|
@ -41,6 +41,8 @@ namespace NTwain.Triplets
|
||||
|
||||
public static readonly StatusUtf8 StatusUtf8 = new();
|
||||
|
||||
public static readonly TwainDirect TwainDirect = new();
|
||||
|
||||
public static readonly UserInterface UserInterface = new();
|
||||
|
||||
public static readonly XferGroup XferGroup = new();
|
||||
|
Loading…
Reference in New Issue
Block a user