mirror of
https://github.com/soukoku/ntwain.git
synced 2025-04-05 20:59:23 +08:00
Using template to generate DSM classes like I should've done.
This commit is contained in:
parent
3115da95d6
commit
5bd4a42015
1
src/NTwain/DSM/DSMGenerator.dummy
Normal file
1
src/NTwain/DSM/DSMGenerator.dummy
Normal file
@ -0,0 +1 @@
|
||||
|
201
src/NTwain/DSM/DSMGenerator.tt
Normal file
201
src/NTwain/DSM/DSMGenerator.tt
Normal file
@ -0,0 +1,201 @@
|
||||
<#@ template debug="false" hostspecific="true" language="C#" #>
|
||||
<#@ assembly name="System.Core" #>
|
||||
<#@ import namespace="System.IO" #>
|
||||
<#@ import namespace="System.Linq" #>
|
||||
<#@ import namespace="System.Text" #>
|
||||
<#@ import namespace="System.Collections.Generic" #>
|
||||
<#@ output extension="dummy" #>
|
||||
<#
|
||||
List<(string, string, string)> className_dllPath_identityStruct = new() {
|
||||
("OSXLegacyDSM", "/System/Library/Frameworks/framework/TWAIN", "TW_IDENTITY_MACOSX"),
|
||||
("OSXNewDSM", "/Library/Frameworks/TWAINDSM.framework/TWAINDSM", "TW_IDENTITY_MACOSX"),
|
||||
("WinLegacyDSM", "twain_32.dll", "TW_IDENTITY_LEGACY"),
|
||||
("WinNewDSM", "twaindsm.dll", "TW_IDENTITY_LEGACY")
|
||||
};
|
||||
|
||||
foreach(var file in className_dllPath_identityStruct) {
|
||||
#>
|
||||
using NTwain.Data;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace NTwain.DSM
|
||||
{
|
||||
/// <summary>
|
||||
/// Low-level pinvoke methods using <#= file.Item2 #>.
|
||||
/// </summary>
|
||||
public static class <#= file.Item1 #>
|
||||
{
|
||||
const string DsmName = "<#= file.Item2 #>";
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, IntPtr dest,
|
||||
DG dg, DAT dat, MSG msg, ref IntPtr hwnd
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, IntPtr dest,
|
||||
DG dg, DAT dat, MSG msg, IntPtr zero
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, ref <#= file.Item3 #> dest,
|
||||
DG dg, DAT dat, MSG msg, IntPtr zero
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, ref <#= file.Item3 #> dest,
|
||||
DG dg, DAT dat, MSG msg, ref IntPtr mem
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, IntPtr dest,
|
||||
DG dg, DAT dat, MSG msg, ref <#= file.Item3 #> twidentity
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, ref <#= file.Item3 #> dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_STATUS twstatus
|
||||
);
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, IntPtr dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_STATUS twstatus
|
||||
);
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, IntPtr dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_STATUSUTF8 twstatusutf8
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, IntPtr dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_ENTRYPOINT twentrypoint
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, ref <#= file.Item3 #> dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_DEVICEEVENT twdeviceevent
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, ref <#= file.Item3 #> dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_CUSTOMDSDATA twcustomedsdata
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, ref <#= file.Item3 #> dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_CALLBACK twcallback
|
||||
);
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, ref <#= file.Item3 #> dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_CALLBACK2 twcallback
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, ref <#= file.Item3 #> dest,
|
||||
DG dg, DAT dat, MSG msg, ref DG xfergroup
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, ref <#= file.Item3 #> dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_USERINTERFACE userinterface
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, ref <#= file.Item3 #> dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_EVENT evt
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, ref <#= file.Item3 #> dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_PENDINGXFERS pendingxfers
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, ref <#= file.Item3 #> dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_SETUPMEMXFER memxfer
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, ref <#= file.Item3 #> dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_SETUPFILEXFER filexfer
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, ref <#= file.Item3 #> dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_PASSTHRU passthru
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, ref <#= file.Item3 #> dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_FILESYSTEM filesystem
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, ref <#= file.Item3 #> dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_CAPABILITY cap
|
||||
);
|
||||
|
||||
[DllImport(DsmName, CharSet = CharSet.Ansi)]
|
||||
public static extern ushort DSM_Entry
|
||||
(
|
||||
ref <#= file.Item3 #> origin, ref <#= file.Item3 #> dest,
|
||||
DG dg, DAT dat, MSG msg, ref TW_AUDIOINFO auioinfo
|
||||
);
|
||||
}
|
||||
}
|
||||
<#
|
||||
SaveOutput(file.Item1 + ".cs");
|
||||
}#>
|
||||
|
||||
<#+
|
||||
private void SaveOutput(string outputFileName) {
|
||||
string templateDirectory = Path.GetDirectoryName(Host.TemplateFile);
|
||||
string outputFilePath = Path.Combine(templateDirectory, outputFileName);
|
||||
File.WriteAllText(outputFilePath, this.GenerationEnvironment.ToString());
|
||||
this.GenerationEnvironment.Clear();
|
||||
}
|
||||
#>
|
@ -1,11 +1,11 @@
|
||||
using NTwain.Data;
|
||||
using NTwain.Data;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace NTwain.DSM
|
||||
{
|
||||
/// <summary>
|
||||
/// Low-level pinvoke methods for /System/Library/Frameworks/framework/TWAIN.
|
||||
/// Low-level pinvoke methods using /System/Library/Frameworks/framework/TWAIN.
|
||||
/// </summary>
|
||||
public static class OSXLegacyDSM
|
||||
{
|
||||
|
@ -1,11 +1,11 @@
|
||||
using NTwain.Data;
|
||||
using NTwain.Data;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace NTwain.DSM
|
||||
{
|
||||
/// <summary>
|
||||
/// Low-level pinvoke methods for /Library/Frameworks/TWAINDSM.framework/TWAINDSM.
|
||||
/// Low-level pinvoke methods using /Library/Frameworks/TWAINDSM.framework/TWAINDSM.
|
||||
/// </summary>
|
||||
public static class OSXNewDSM
|
||||
{
|
||||
|
@ -1,11 +1,11 @@
|
||||
using NTwain.Data;
|
||||
using NTwain.Data;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace NTwain.DSM
|
||||
{
|
||||
/// <summary>
|
||||
/// Low-level pinvoke methods for twain_32.dll.
|
||||
/// Low-level pinvoke methods using twain_32.dll.
|
||||
/// </summary>
|
||||
public static class WinLegacyDSM
|
||||
{
|
||||
|
@ -1,11 +1,11 @@
|
||||
using NTwain.Data;
|
||||
using NTwain.Data;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace NTwain.DSM
|
||||
{
|
||||
/// <summary>
|
||||
/// Low-level pinvoke methods for twaindsm.dll.
|
||||
/// Low-level pinvoke methods using twaindsm.dll.
|
||||
/// </summary>
|
||||
public static class WinNewDSM
|
||||
{
|
||||
|
@ -19,4 +19,20 @@
|
||||
<ItemGroup>
|
||||
<Folder Include="Triplets\ImageDATs\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="DSM\DSMGenerator.dummy">
|
||||
<DesignTime>True</DesignTime>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>DSMGenerator.tt</DependentUpon>
|
||||
</None>
|
||||
<None Update="DSM\DSMGenerator.tt">
|
||||
<Generator>TextTemplatingFileGenerator</Generator>
|
||||
<LastGenOutput>DSMGenerator.dummy</LastGenOutput>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
Loading…
Reference in New Issue
Block a user