mirror of
https://github.com/soukoku/ntwain.git
synced 2025-08-20 06:46:51 +08:00
V4 add extimginfo (#37)
* Added my old struct size tester cpp proj. * Added transfercanceled event like PR #35. * Renamed datatransferred event. * Idea for getting EXT_IMAGEINFO in transferred event. * Renamed twain const and platform classes to shorter name. * First attempt at reading TW_INFO, probably not correct.
This commit is contained in:
parent
a0da65dcca
commit
fe89e661fc
42
NTwain.sln
42
NTwain.sln
@ -27,24 +27,66 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinForm32", "samples\WinFor
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinForm64", "samples\WinForm64\WinForm64.csproj", "{C9666CB2-C9A6-48C8-AB51-D616A48058A7}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "csizes", "csizes\csizes.vcxproj", "{1AABD2DC-3F81-4301-938B-3EC2EDEF38D4}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{3C8A3CF9-A60D-4F21-B866-D291A7AABD4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3C8A3CF9-A60D-4F21-B866-D291A7AABD4A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3C8A3CF9-A60D-4F21-B866-D291A7AABD4A}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{3C8A3CF9-A60D-4F21-B866-D291A7AABD4A}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{3C8A3CF9-A60D-4F21-B866-D291A7AABD4A}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{3C8A3CF9-A60D-4F21-B866-D291A7AABD4A}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{3C8A3CF9-A60D-4F21-B866-D291A7AABD4A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3C8A3CF9-A60D-4F21-B866-D291A7AABD4A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3C8A3CF9-A60D-4F21-B866-D291A7AABD4A}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{3C8A3CF9-A60D-4F21-B866-D291A7AABD4A}.Release|x64.Build.0 = Release|Any CPU
|
||||
{3C8A3CF9-A60D-4F21-B866-D291A7AABD4A}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{3C8A3CF9-A60D-4F21-B866-D291A7AABD4A}.Release|x86.Build.0 = Release|Any CPU
|
||||
{7792A94E-D0B4-440D-8BD5-CA1CA548782C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7792A94E-D0B4-440D-8BD5-CA1CA548782C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7792A94E-D0B4-440D-8BD5-CA1CA548782C}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{7792A94E-D0B4-440D-8BD5-CA1CA548782C}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{7792A94E-D0B4-440D-8BD5-CA1CA548782C}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{7792A94E-D0B4-440D-8BD5-CA1CA548782C}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{7792A94E-D0B4-440D-8BD5-CA1CA548782C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7792A94E-D0B4-440D-8BD5-CA1CA548782C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7792A94E-D0B4-440D-8BD5-CA1CA548782C}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{7792A94E-D0B4-440D-8BD5-CA1CA548782C}.Release|x64.Build.0 = Release|Any CPU
|
||||
{7792A94E-D0B4-440D-8BD5-CA1CA548782C}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{7792A94E-D0B4-440D-8BD5-CA1CA548782C}.Release|x86.Build.0 = Release|Any CPU
|
||||
{C9666CB2-C9A6-48C8-AB51-D616A48058A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C9666CB2-C9A6-48C8-AB51-D616A48058A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C9666CB2-C9A6-48C8-AB51-D616A48058A7}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{C9666CB2-C9A6-48C8-AB51-D616A48058A7}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{C9666CB2-C9A6-48C8-AB51-D616A48058A7}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{C9666CB2-C9A6-48C8-AB51-D616A48058A7}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{C9666CB2-C9A6-48C8-AB51-D616A48058A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C9666CB2-C9A6-48C8-AB51-D616A48058A7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C9666CB2-C9A6-48C8-AB51-D616A48058A7}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{C9666CB2-C9A6-48C8-AB51-D616A48058A7}.Release|x64.Build.0 = Release|Any CPU
|
||||
{C9666CB2-C9A6-48C8-AB51-D616A48058A7}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{C9666CB2-C9A6-48C8-AB51-D616A48058A7}.Release|x86.Build.0 = Release|Any CPU
|
||||
{1AABD2DC-3F81-4301-938B-3EC2EDEF38D4}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{1AABD2DC-3F81-4301-938B-3EC2EDEF38D4}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{1AABD2DC-3F81-4301-938B-3EC2EDEF38D4}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{1AABD2DC-3F81-4301-938B-3EC2EDEF38D4}.Debug|x64.Build.0 = Debug|x64
|
||||
{1AABD2DC-3F81-4301-938B-3EC2EDEF38D4}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{1AABD2DC-3F81-4301-938B-3EC2EDEF38D4}.Debug|x86.Build.0 = Debug|Win32
|
||||
{1AABD2DC-3F81-4301-938B-3EC2EDEF38D4}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{1AABD2DC-3F81-4301-938B-3EC2EDEF38D4}.Release|Any CPU.Build.0 = Release|x64
|
||||
{1AABD2DC-3F81-4301-938B-3EC2EDEF38D4}.Release|x64.ActiveCfg = Release|x64
|
||||
{1AABD2DC-3F81-4301-938B-3EC2EDEF38D4}.Release|x64.Build.0 = Release|x64
|
||||
{1AABD2DC-3F81-4301-938B-3EC2EDEF38D4}.Release|x86.ActiveCfg = Release|Win32
|
||||
{1AABD2DC-3F81-4301-938B-3EC2EDEF38D4}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
160
csizes/csizes.vcxproj
Normal file
160
csizes/csizes.vcxproj
Normal file
@ -0,0 +1,160 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>16.0</VCProjectVersion>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<ProjectGuid>{1aabd2dc-3f81-4301-938b-3ec2edef38d4}</ProjectGuid>
|
||||
<RootNamespace>csizes</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>csizes</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<OutDir>$(ProjectDir)bin\$(Platform)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<IntDir>$(ProjectDir)obj\$(Platform)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="main.cpp" />
|
||||
<ClCompile Include="pch.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="pch.h" />
|
||||
<ClInclude Include="twain.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
33
csizes/csizes.vcxproj.filters
Normal file
33
csizes/csizes.vcxproj.filters
Normal file
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="main.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="pch.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="pch.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="twain.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
61
csizes/main.cpp
Normal file
61
csizes/main.cpp
Normal file
@ -0,0 +1,61 @@
|
||||
// this is used to verify size of things on different platforms and archtectures
|
||||
|
||||
#include "pch.h"
|
||||
#include <iostream>
|
||||
#include "twain.h"
|
||||
|
||||
int main()
|
||||
{
|
||||
bool is32 = sizeof(void*) == 4;
|
||||
bool is64 = sizeof(void*) == 8;
|
||||
std::cout << (is32 ? "32bit" : "") << (is64 ? "64bit" : "") << std::endl;
|
||||
std::cout << std::endl;
|
||||
std::cout << "TW_STR32 = " << sizeof(TW_STR32) << std::endl;
|
||||
std::cout << "TW_STR64 = " << sizeof(TW_STR64) << std::endl;
|
||||
std::cout << "TW_STR128 = " << sizeof(TW_STR128) << std::endl;
|
||||
std::cout << "TW_STR255 = " << sizeof(TW_STR255) << std::endl;
|
||||
std::cout << std::endl;
|
||||
std::cout << "TW_INT8 = " << sizeof(TW_INT8) << std::endl;
|
||||
std::cout << "TW_INT16 = " << sizeof(TW_INT16) << std::endl;
|
||||
std::cout << "TW_INT32 = " << sizeof(TW_INT32) << std::endl;
|
||||
std::cout << "TW_UINT8 = " << sizeof(TW_UINT8) << std::endl;
|
||||
std::cout << "TW_UINT16 = " << sizeof(TW_UINT16) << std::endl;
|
||||
std::cout << "TW_UINT32 = " << sizeof(TW_UINT32) << std::endl;
|
||||
std::cout << "TW_BOOL = " << sizeof(TW_BOOL) << std::endl;
|
||||
std::cout << std::endl;
|
||||
std::cout << "TW_IDENTITY = " << sizeof(TW_IDENTITY) << std::endl;
|
||||
std::cout << std::endl;
|
||||
std::cout << "TW_HANDLE = " << sizeof(TW_HANDLE) << std::endl;
|
||||
std::cout << "TW_MEMREF = " << sizeof(TW_MEMREF) << std::endl;
|
||||
std::cout << "TW_UINTPTR= " << sizeof(TW_UINTPTR) << std::endl;
|
||||
std::cout << std::endl;
|
||||
std::cout << "TW_ONEVALUE = " << sizeof(TW_ONEVALUE) << std::endl;
|
||||
std::cout << "TW_ARRAY = " << sizeof(TW_ARRAY) << std::endl;
|
||||
std::cout << "TW_ENUMERATION = " << sizeof(TW_ENUMERATION) << std::endl;
|
||||
std::cout << "TW_RANGE = " << sizeof(TW_RANGE) << std::endl;
|
||||
std::cout << std::endl;
|
||||
std::cout << "TW_GRAYRESPONSE = " << sizeof(TW_GRAYRESPONSE) << std::endl;
|
||||
std::cout << "TW_RGBRESPONSE = " << sizeof(TW_RGBRESPONSE) << std::endl;
|
||||
std::cout << std::endl;
|
||||
std::cout << "TW_CALLBACK = " << sizeof(TW_CALLBACK) << std::endl;
|
||||
std::cout << "TW_CALLBACK2 = " << sizeof(TW_CALLBACK2) << std::endl;
|
||||
std::cout << std::endl;
|
||||
std::cout << "TW_USERINTERFACE = " << sizeof(TW_USERINTERFACE) << std::endl;
|
||||
std::cout << "TW_PENDINGXFERS = " << sizeof(TW_PENDINGXFERS) << std::endl;
|
||||
std::cout << "TW_IMAGEMEMXFER = " << sizeof(TW_IMAGEMEMXFER) << std::endl;
|
||||
std::cout << "TW_MEMORY = " << sizeof(TW_MEMORY) << std::endl;
|
||||
std::cout << std::endl;
|
||||
std::cout << "TW_CAPABILITY = " << sizeof(TW_CAPABILITY) << std::endl;
|
||||
std::cout << "TW_CUSTOMDSDATA = " << sizeof(TW_CUSTOMDSDATA) << std::endl;
|
||||
std::cout << "TW_EVENT = " << sizeof(TW_EVENT) << std::endl;
|
||||
std::cout << "TW_FILESYSTEM = " << sizeof(TW_FILESYSTEM) << std::endl;
|
||||
std::cout << "TW_JPEGCOMPRESSION = " << sizeof(TW_JPEGCOMPRESSION) << std::endl;
|
||||
std::cout << "TW_PASSTHRU = " << sizeof(TW_PASSTHRU) << std::endl;
|
||||
std::cout << "TW_STATUSUTF8 = " << sizeof(TW_STATUSUTF8) << std::endl;
|
||||
std::cout << "TW_TWAINDIRECT = " << sizeof(TW_TWAINDIRECT) << std::endl;
|
||||
std::cout << std::endl;
|
||||
std::cout << "TW_EXTIMAGEINFO = " << sizeof(TW_EXTIMAGEINFO) << std::endl;
|
||||
std::cout << "TW_INFO = " << sizeof(TW_INFO) << std::endl;
|
||||
int test;
|
||||
std::cin >> test;
|
||||
}
|
5
csizes/pch.cpp
Normal file
5
csizes/pch.cpp
Normal file
@ -0,0 +1,5 @@
|
||||
// pch.cpp: source file corresponding to the pre-compiled header
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
// When you are using pre-compiled headers, this source file is necessary for compilation to succeed.
|
18
csizes/pch.h
Normal file
18
csizes/pch.h
Normal file
@ -0,0 +1,18 @@
|
||||
// pch.h: This is a precompiled header file.
|
||||
// Files listed below are compiled only once, improving build performance for future builds.
|
||||
// This also affects IntelliSense performance, including code completion and many code browsing features.
|
||||
// However, files listed here are ALL re-compiled if any one of them is updated between builds.
|
||||
// Do not add files here that you will be updating frequently as this negates the performance advantage.
|
||||
|
||||
#ifndef PCH_H
|
||||
#define PCH_H
|
||||
|
||||
// add headers that you want to pre-compile here
|
||||
|
||||
#if _WIN32
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
|
||||
#endif //PCH_H
|
2302
csizes/twain.h
Normal file
2302
csizes/twain.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -25,7 +25,7 @@ namespace WinFormSample
|
||||
{
|
||||
var dll = Path.Combine(
|
||||
Path.GetDirectoryName(Environment.ProcessPath ?? Assembly.GetExecutingAssembly().Location)!,
|
||||
$@"runtimes\win-{(TwainPlatform.Is32bit ? "x86" : "x64")}\native\TWAINDSM.dll");
|
||||
$@"runtimes\win-{(TWPlatform.Is32bit ? "x86" : "x64")}\native\TWAINDSM.dll");
|
||||
|
||||
__dllPtr = LoadLibraryW(dll);
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Versioning;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace WinFormSample
|
||||
@ -23,16 +24,16 @@ namespace WinFormSample
|
||||
{
|
||||
InitializeComponent();
|
||||
var libVer = FileVersionInfo.GetVersionInfo(typeof(TwainAppSession).Assembly.Location).ProductVersion;
|
||||
Text += $"{(TwainPlatform.Is32bit ? " 32bit" : " 64bit")} on NTwain {libVer}";
|
||||
Text += $"{(TWPlatform.Is32bit ? " 32bit" : " 64bit")} on NTwain {libVer}";
|
||||
|
||||
TwainPlatform.PreferLegacyDSM = false;
|
||||
TWPlatform.PreferLegacyDSM = false;
|
||||
|
||||
twain = new TwainAppSession(new WinformMarshaller(this), Assembly.GetExecutingAssembly().Location);
|
||||
twain.StateChanged += Twain_StateChanged;
|
||||
twain.DefaultSourceChanged += Twain_DefaultSourceChanged;
|
||||
twain.CurrentSourceChanged += Twain_CurrentSourceChanged;
|
||||
twain.TransferReady += Twain_TransferReady;
|
||||
twain.DataTransferred += Twain_DataTransferred;
|
||||
twain.Transferred += Twain_DataTransferred;
|
||||
twain.TransferError += Twain_TransferError;
|
||||
twain.DeviceEvent += Twain_DeviceEvent;
|
||||
|
||||
@ -101,7 +102,7 @@ namespace WinFormSample
|
||||
|
||||
}
|
||||
|
||||
private void Twain_DataTransferred(TwainAppSession sender, DataTransferredEventArgs e)
|
||||
private void Twain_DataTransferred(TwainAppSession sender, TransferredEventArgs e)
|
||||
{
|
||||
Debug.WriteLine($"[thread {Environment.CurrentManagedThreadId}] data transferred with info {e.ImageInfo}");
|
||||
if (e.Data == null) return;
|
||||
@ -148,14 +149,18 @@ namespace WinFormSample
|
||||
{
|
||||
LoadCapInfoList();
|
||||
|
||||
// never seen a driver support these but here it is
|
||||
var sts = twain.GetCapLabel(CAP.ICAP_SUPPORTEDSIZES, out string? test);
|
||||
var sts2 = twain.GetCapHelp(CAP.ICAP_SUPPORTEDSIZES, out string? test2);
|
||||
var sts3 = twain.GetCapLabelEnum(CAP.ICAP_SUPPORTEDSIZES, out IList<string>? test3);
|
||||
|
||||
if (sts.RC == TWRC.SUCCESS || sts2.RC == TWRC.SUCCESS || sts3.RC == TWRC.SUCCESS)
|
||||
// never seen a driver support these but here it is to test it
|
||||
if (twain.GetCapLabel(CAP.ICAP_SUPPORTEDSIZES, out string? test).RC == TWRC.SUCCESS)
|
||||
{
|
||||
Debugger.Break();
|
||||
Debug.WriteLine($"Supported sizes label from ds = {test}");
|
||||
}
|
||||
if (twain.GetCapHelp(CAP.ICAP_SUPPORTEDSIZES, out string? test2).RC == TWRC.SUCCESS)
|
||||
{
|
||||
Debug.WriteLine($"Supported sizes help from ds = {test2}");
|
||||
}
|
||||
if (twain.GetCapLabelEnum(CAP.ICAP_SUPPORTEDSIZES, out IList<string>? test3).RC == TWRC.SUCCESS && test3 != null)
|
||||
{
|
||||
Debug.WriteLine($"Supported sizes label enum from ds = {string.Join(Environment.NewLine, test3)}");
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -174,7 +179,7 @@ namespace WinFormSample
|
||||
|
||||
if (twain.GetCapCurrent(c, out TW_CAPABILITY twcap).RC == TWRC.SUCCESS)
|
||||
{
|
||||
var enumType = KnownCapEnumMap.GetEnumType(c);
|
||||
var enumType = SizeAndConversionUtils.GetEnumType(c);
|
||||
var realType = twcap.DetermineValueType(twain);
|
||||
it.SubItems.Add(enumType?.Name.ToString() ?? realType.ToString());
|
||||
it.SubItems.Add(ReadTypedValue(c, enumType, realType, forCurrent: true));
|
||||
@ -187,7 +192,9 @@ namespace WinFormSample
|
||||
it.SubItems.Add("");
|
||||
}
|
||||
it.SubItems.Add(extended.Contains(c).ToString());
|
||||
it.SubItems.Add(twain.QueryCapSupport(c).ToString());
|
||||
var supports = twain.QueryCapSupport(c);
|
||||
it.SubItems.Add(supports.ToString());
|
||||
if (!supports.HasFlag(TWQC.SET)) it.ForeColor = Color.Gray;
|
||||
capListView.Items.Add(it);
|
||||
}
|
||||
}
|
||||
|
@ -3,23 +3,25 @@ using System.Collections.Generic;
|
||||
|
||||
namespace NTwain.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// Just an attempt for mapping <see cref="CAP"/>
|
||||
/// type with its enum value type when applicable.
|
||||
/// </summary>
|
||||
public static class KnownCapEnumMap
|
||||
|
||||
public static class SizeAndConversionUtils
|
||||
{
|
||||
/// <summary>
|
||||
/// Maps <see cref="CAP"/> id with its enum
|
||||
/// value type when applicable
|
||||
/// (e.g. <see cref="CAP.ICAP_XFERMECH"/> to <see cref="TWSX"/>).
|
||||
/// </summary>
|
||||
/// <param name="cap"></param>
|
||||
/// <returns></returns>
|
||||
public static Type? GetEnumType(CAP cap)
|
||||
{
|
||||
if (__map.ContainsKey(cap)) return __map[cap];
|
||||
return null;
|
||||
}
|
||||
|
||||
static readonly Dictionary<CAP, Type> __map = new()
|
||||
static readonly Dictionary<CAP, Type> __map = new()
|
||||
{
|
||||
{ CAP.ACAP_XFERMECH, typeof(TWSX) },
|
||||
{ CAP.CAP_ALARMS, typeof(TWAL) },
|
||||
{ CAP.CAP_AUTHOR, typeof(TWSX) },
|
||||
{ CAP.CAP_AUTOFEED, typeof(TW_BOOL) },
|
||||
{ CAP.CAP_AUTOMATICSENSEMEDIUM, typeof(TW_BOOL) },
|
||||
{ CAP.CAP_AUTOSCAN, typeof(TW_BOOL) },
|
||||
@ -149,6 +151,40 @@ namespace NTwain.Data
|
||||
{ CAP.ICAP_TILES, typeof(TW_BOOL) },
|
||||
{ CAP.ICAP_UNDEFINEDIMAGESIZE, typeof(TW_BOOL) },
|
||||
{ CAP.ICAP_UNITS, typeof(TWUN) },
|
||||
{ CAP.ICAP_XFERMECH, typeof(TWSX) },
|
||||
};
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gets the byte size of the TWAIN item value type.
|
||||
/// </summary>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
public static int GetItemTypeSize(this TWTY type)
|
||||
{
|
||||
if (__sizes.TryGetValue(type, out int size))
|
||||
{
|
||||
return size;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
static readonly IDictionary<TWTY, int> __sizes = new Dictionary<TWTY, int>
|
||||
{
|
||||
{TWTY.INT8, 1},
|
||||
{TWTY.UINT8, 1},
|
||||
{TWTY.INT16, 2},
|
||||
{TWTY.UINT16, 2},
|
||||
{TWTY.BOOL, 2},
|
||||
{TWTY.INT32, 4},
|
||||
{TWTY.UINT32, 4},
|
||||
{TWTY.FIX32, 4},
|
||||
{TWTY.FRAME, 16},
|
||||
{TWTY.STR32, TW_STR32.Size},
|
||||
{TWTY.STR64, TW_STR64.Size},
|
||||
{TWTY.STR128, TW_STR128.Size},
|
||||
{TWTY.STR255, TW_STR255.Size},
|
||||
// is it fixed 4 bytes or intptr size?
|
||||
{TWTY.HANDLE, IntPtr.Size},
|
||||
};
|
||||
}
|
||||
}
|
@ -206,7 +206,7 @@ namespace NTwain.Data
|
||||
}
|
||||
|
||||
// If we're running on a Mac, take off the prefix 'byte'...
|
||||
if (a_blMayHavePrefix && TwainPlatform.IsMacOSX)
|
||||
if (a_blMayHavePrefix && TWPlatform.IsMacOSX)
|
||||
{
|
||||
sz = sz.Remove(0, 1);
|
||||
}
|
||||
@ -257,7 +257,7 @@ namespace NTwain.Data
|
||||
{
|
||||
a_sz = "";
|
||||
}
|
||||
else if (a_blMayHavePrefix && TwainPlatform.IsMacOSX)
|
||||
else if (a_blMayHavePrefix && TWPlatform.IsMacOSX)
|
||||
{
|
||||
a_sz = (char)a_sz.Length + a_sz;
|
||||
}
|
||||
@ -391,7 +391,7 @@ namespace NTwain.Data
|
||||
}
|
||||
|
||||
// If we're running on a Mac, take off the prefix 'byte'...
|
||||
if (a_blMayHavePrefix && TwainPlatform.IsMacOSX)
|
||||
if (a_blMayHavePrefix && TWPlatform.IsMacOSX)
|
||||
{
|
||||
sz = sz.Remove(0, 1);
|
||||
}
|
||||
@ -442,7 +442,7 @@ namespace NTwain.Data
|
||||
{
|
||||
a_sz = "";
|
||||
}
|
||||
else if (a_blMayHavePrefix && TwainPlatform.IsMacOSX)
|
||||
else if (a_blMayHavePrefix && TWPlatform.IsMacOSX)
|
||||
{
|
||||
a_sz = (char)a_sz.Length + a_sz;
|
||||
}
|
||||
@ -615,7 +615,7 @@ namespace NTwain.Data
|
||||
}
|
||||
|
||||
// If we're running on a Mac, take off the prefix 'byte'...
|
||||
if (a_blMayHavePrefix && TwainPlatform.IsMacOSX)
|
||||
if (a_blMayHavePrefix && TWPlatform.IsMacOSX)
|
||||
{
|
||||
sz = sz.Remove(0, 1);
|
||||
}
|
||||
@ -666,7 +666,7 @@ namespace NTwain.Data
|
||||
{
|
||||
a_sz = "";
|
||||
}
|
||||
else if (a_blMayHavePrefix && TwainPlatform.IsMacOSX)
|
||||
else if (a_blMayHavePrefix && TWPlatform.IsMacOSX)
|
||||
{
|
||||
a_sz = (char)a_sz.Length + a_sz;
|
||||
}
|
||||
@ -919,7 +919,7 @@ namespace NTwain.Data
|
||||
}
|
||||
|
||||
// If we're running on a Mac, take off the prefix 'byte'...
|
||||
if (a_blMayHavePrefix && TwainPlatform.IsMacOSX)
|
||||
if (a_blMayHavePrefix && TWPlatform.IsMacOSX)
|
||||
{
|
||||
sz = sz.Remove(0, 1);
|
||||
}
|
||||
@ -970,7 +970,7 @@ namespace NTwain.Data
|
||||
{
|
||||
a_sz = "";
|
||||
}
|
||||
else if (a_blMayHavePrefix && TwainPlatform.IsMacOSX)
|
||||
else if (a_blMayHavePrefix && TWPlatform.IsMacOSX)
|
||||
{
|
||||
a_sz = (char)a_sz.Length + a_sz;
|
||||
}
|
||||
@ -1241,16 +1241,16 @@ namespace NTwain.Data
|
||||
/// Provides information about the Event that was raised by the Source.
|
||||
/// </summary>
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 2)]
|
||||
public struct TW_DEVICEEVENT
|
||||
public partial struct TW_DEVICEEVENT
|
||||
{
|
||||
public uint Event;
|
||||
private uint _Event;
|
||||
public TW_STR255 DeviceName;
|
||||
public uint BatteryMinutes;
|
||||
public short BatteryPercentage;
|
||||
public int PowerSupply;
|
||||
public TW_FIX32 XResolution;
|
||||
public TW_FIX32 YResolution;
|
||||
public uint FlashUsed2;
|
||||
private uint _FlashUsed2;
|
||||
public uint AutomaticCapture;
|
||||
public uint TimeBeforeFirstCapture;
|
||||
public uint TimeBetweenCaptures;
|
||||
@ -1395,225 +1395,226 @@ namespace NTwain.Data
|
||||
/// This structure is used to pass specific information between the data source and the application.
|
||||
/// </summary>
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 2)]
|
||||
public struct TW_INFO
|
||||
public partial struct TW_INFO
|
||||
{
|
||||
public ushort InfoId;
|
||||
public ushort ItemType;
|
||||
public TWEI InfoId;
|
||||
public TWTY ItemType;
|
||||
public ushort NumItems;
|
||||
public ushort ReturnCode;
|
||||
public TWRC ReturnCode;
|
||||
[SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible")]
|
||||
public UIntPtr Item;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This structure is used to pass specific information between the data source and the application.
|
||||
/// </summary>
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 2)]
|
||||
public struct TW_EXTIMAGEINFO
|
||||
public partial struct TW_EXTIMAGEINFO
|
||||
{
|
||||
public uint NumInfos;
|
||||
public TW_INFO Info_000;
|
||||
public TW_INFO Info_001;
|
||||
public TW_INFO Info_002;
|
||||
public TW_INFO Info_003;
|
||||
public TW_INFO Info_004;
|
||||
public TW_INFO Info_005;
|
||||
public TW_INFO Info_006;
|
||||
public TW_INFO Info_007;
|
||||
public TW_INFO Info_008;
|
||||
public TW_INFO Info_009;
|
||||
public TW_INFO Info_010;
|
||||
public TW_INFO Info_011;
|
||||
public TW_INFO Info_012;
|
||||
public TW_INFO Info_013;
|
||||
public TW_INFO Info_014;
|
||||
public TW_INFO Info_015;
|
||||
public TW_INFO Info_016;
|
||||
public TW_INFO Info_017;
|
||||
public TW_INFO Info_018;
|
||||
public TW_INFO Info_019;
|
||||
public TW_INFO Info_020;
|
||||
public TW_INFO Info_021;
|
||||
public TW_INFO Info_022;
|
||||
public TW_INFO Info_023;
|
||||
public TW_INFO Info_024;
|
||||
public TW_INFO Info_025;
|
||||
public TW_INFO Info_026;
|
||||
public TW_INFO Info_027;
|
||||
public TW_INFO Info_028;
|
||||
public TW_INFO Info_029;
|
||||
public TW_INFO Info_030;
|
||||
public TW_INFO Info_031;
|
||||
public TW_INFO Info_032;
|
||||
public TW_INFO Info_033;
|
||||
public TW_INFO Info_034;
|
||||
public TW_INFO Info_035;
|
||||
public TW_INFO Info_036;
|
||||
public TW_INFO Info_037;
|
||||
public TW_INFO Info_038;
|
||||
public TW_INFO Info_039;
|
||||
public TW_INFO Info_040;
|
||||
public TW_INFO Info_041;
|
||||
public TW_INFO Info_042;
|
||||
public TW_INFO Info_043;
|
||||
public TW_INFO Info_044;
|
||||
public TW_INFO Info_045;
|
||||
public TW_INFO Info_046;
|
||||
public TW_INFO Info_047;
|
||||
public TW_INFO Info_048;
|
||||
public TW_INFO Info_049;
|
||||
public TW_INFO Info_050;
|
||||
public TW_INFO Info_051;
|
||||
public TW_INFO Info_052;
|
||||
public TW_INFO Info_053;
|
||||
public TW_INFO Info_054;
|
||||
public TW_INFO Info_055;
|
||||
public TW_INFO Info_056;
|
||||
public TW_INFO Info_057;
|
||||
public TW_INFO Info_058;
|
||||
public TW_INFO Info_059;
|
||||
public TW_INFO Info_060;
|
||||
public TW_INFO Info_061;
|
||||
public TW_INFO Info_062;
|
||||
public TW_INFO Info_063;
|
||||
public TW_INFO Info_064;
|
||||
public TW_INFO Info_065;
|
||||
public TW_INFO Info_066;
|
||||
public TW_INFO Info_067;
|
||||
public TW_INFO Info_068;
|
||||
public TW_INFO Info_069;
|
||||
public TW_INFO Info_070;
|
||||
public TW_INFO Info_071;
|
||||
public TW_INFO Info_072;
|
||||
public TW_INFO Info_073;
|
||||
public TW_INFO Info_074;
|
||||
public TW_INFO Info_075;
|
||||
public TW_INFO Info_076;
|
||||
public TW_INFO Info_077;
|
||||
public TW_INFO Info_078;
|
||||
public TW_INFO Info_079;
|
||||
public TW_INFO Info_080;
|
||||
public TW_INFO Info_081;
|
||||
public TW_INFO Info_082;
|
||||
public TW_INFO Info_083;
|
||||
public TW_INFO Info_084;
|
||||
public TW_INFO Info_085;
|
||||
public TW_INFO Info_086;
|
||||
public TW_INFO Info_087;
|
||||
public TW_INFO Info_088;
|
||||
public TW_INFO Info_089;
|
||||
public TW_INFO Info_090;
|
||||
public TW_INFO Info_091;
|
||||
public TW_INFO Info_092;
|
||||
public TW_INFO Info_093;
|
||||
public TW_INFO Info_094;
|
||||
public TW_INFO Info_095;
|
||||
public TW_INFO Info_096;
|
||||
public TW_INFO Info_097;
|
||||
public TW_INFO Info_098;
|
||||
public TW_INFO Info_099;
|
||||
public TW_INFO Info_100;
|
||||
public TW_INFO Info_101;
|
||||
public TW_INFO Info_102;
|
||||
public TW_INFO Info_103;
|
||||
public TW_INFO Info_104;
|
||||
public TW_INFO Info_105;
|
||||
public TW_INFO Info_106;
|
||||
public TW_INFO Info_107;
|
||||
public TW_INFO Info_108;
|
||||
public TW_INFO Info_109;
|
||||
public TW_INFO Info_110;
|
||||
public TW_INFO Info_111;
|
||||
public TW_INFO Info_112;
|
||||
public TW_INFO Info_113;
|
||||
public TW_INFO Info_114;
|
||||
public TW_INFO Info_115;
|
||||
public TW_INFO Info_116;
|
||||
public TW_INFO Info_117;
|
||||
public TW_INFO Info_118;
|
||||
public TW_INFO Info_119;
|
||||
public TW_INFO Info_120;
|
||||
public TW_INFO Info_121;
|
||||
public TW_INFO Info_122;
|
||||
public TW_INFO Info_123;
|
||||
public TW_INFO Info_124;
|
||||
public TW_INFO Info_125;
|
||||
public TW_INFO Info_126;
|
||||
public TW_INFO Info_127;
|
||||
public TW_INFO Info_128;
|
||||
public TW_INFO Info_129;
|
||||
public TW_INFO Info_130;
|
||||
public TW_INFO Info_131;
|
||||
public TW_INFO Info_132;
|
||||
public TW_INFO Info_133;
|
||||
public TW_INFO Info_134;
|
||||
public TW_INFO Info_135;
|
||||
public TW_INFO Info_136;
|
||||
public TW_INFO Info_137;
|
||||
public TW_INFO Info_138;
|
||||
public TW_INFO Info_139;
|
||||
public TW_INFO Info_140;
|
||||
public TW_INFO Info_141;
|
||||
public TW_INFO Info_142;
|
||||
public TW_INFO Info_143;
|
||||
public TW_INFO Info_144;
|
||||
public TW_INFO Info_145;
|
||||
public TW_INFO Info_146;
|
||||
public TW_INFO Info_147;
|
||||
public TW_INFO Info_148;
|
||||
public TW_INFO Info_149;
|
||||
public TW_INFO Info_150;
|
||||
public TW_INFO Info_151;
|
||||
public TW_INFO Info_152;
|
||||
public TW_INFO Info_153;
|
||||
public TW_INFO Info_154;
|
||||
public TW_INFO Info_155;
|
||||
public TW_INFO Info_156;
|
||||
public TW_INFO Info_157;
|
||||
public TW_INFO Info_158;
|
||||
public TW_INFO Info_159;
|
||||
public TW_INFO Info_160;
|
||||
public TW_INFO Info_161;
|
||||
public TW_INFO Info_162;
|
||||
public TW_INFO Info_163;
|
||||
public TW_INFO Info_164;
|
||||
public TW_INFO Info_165;
|
||||
public TW_INFO Info_166;
|
||||
public TW_INFO Info_167;
|
||||
public TW_INFO Info_168;
|
||||
public TW_INFO Info_169;
|
||||
public TW_INFO Info_170;
|
||||
public TW_INFO Info_171;
|
||||
public TW_INFO Info_172;
|
||||
public TW_INFO Info_173;
|
||||
public TW_INFO Info_174;
|
||||
public TW_INFO Info_175;
|
||||
public TW_INFO Info_176;
|
||||
public TW_INFO Info_177;
|
||||
public TW_INFO Info_178;
|
||||
public TW_INFO Info_179;
|
||||
public TW_INFO Info_180;
|
||||
public TW_INFO Info_181;
|
||||
public TW_INFO Info_182;
|
||||
public TW_INFO Info_183;
|
||||
public TW_INFO Info_184;
|
||||
public TW_INFO Info_185;
|
||||
public TW_INFO Info_186;
|
||||
public TW_INFO Info_187;
|
||||
public TW_INFO Info_188;
|
||||
public TW_INFO Info_189;
|
||||
public TW_INFO Info_190;
|
||||
public TW_INFO Info_191;
|
||||
public TW_INFO Info_192;
|
||||
public TW_INFO Info_193;
|
||||
public TW_INFO Info_194;
|
||||
public TW_INFO Info_195;
|
||||
public TW_INFO Info_196;
|
||||
public TW_INFO Info_197;
|
||||
public TW_INFO Info_198;
|
||||
public TW_INFO Info_199;
|
||||
private uint NumInfos;
|
||||
private TW_INFO Info_000;
|
||||
private TW_INFO Info_001;
|
||||
private TW_INFO Info_002;
|
||||
private TW_INFO Info_003;
|
||||
private TW_INFO Info_004;
|
||||
private TW_INFO Info_005;
|
||||
private TW_INFO Info_006;
|
||||
private TW_INFO Info_007;
|
||||
private TW_INFO Info_008;
|
||||
private TW_INFO Info_009;
|
||||
private TW_INFO Info_010;
|
||||
private TW_INFO Info_011;
|
||||
private TW_INFO Info_012;
|
||||
private TW_INFO Info_013;
|
||||
private TW_INFO Info_014;
|
||||
private TW_INFO Info_015;
|
||||
private TW_INFO Info_016;
|
||||
private TW_INFO Info_017;
|
||||
private TW_INFO Info_018;
|
||||
private TW_INFO Info_019;
|
||||
private TW_INFO Info_020;
|
||||
private TW_INFO Info_021;
|
||||
private TW_INFO Info_022;
|
||||
private TW_INFO Info_023;
|
||||
private TW_INFO Info_024;
|
||||
private TW_INFO Info_025;
|
||||
private TW_INFO Info_026;
|
||||
private TW_INFO Info_027;
|
||||
private TW_INFO Info_028;
|
||||
private TW_INFO Info_029;
|
||||
private TW_INFO Info_030;
|
||||
private TW_INFO Info_031;
|
||||
private TW_INFO Info_032;
|
||||
private TW_INFO Info_033;
|
||||
private TW_INFO Info_034;
|
||||
private TW_INFO Info_035;
|
||||
private TW_INFO Info_036;
|
||||
private TW_INFO Info_037;
|
||||
private TW_INFO Info_038;
|
||||
private TW_INFO Info_039;
|
||||
private TW_INFO Info_040;
|
||||
private TW_INFO Info_041;
|
||||
private TW_INFO Info_042;
|
||||
private TW_INFO Info_043;
|
||||
private TW_INFO Info_044;
|
||||
private TW_INFO Info_045;
|
||||
private TW_INFO Info_046;
|
||||
private TW_INFO Info_047;
|
||||
private TW_INFO Info_048;
|
||||
private TW_INFO Info_049;
|
||||
private TW_INFO Info_050;
|
||||
private TW_INFO Info_051;
|
||||
private TW_INFO Info_052;
|
||||
private TW_INFO Info_053;
|
||||
private TW_INFO Info_054;
|
||||
private TW_INFO Info_055;
|
||||
private TW_INFO Info_056;
|
||||
private TW_INFO Info_057;
|
||||
private TW_INFO Info_058;
|
||||
private TW_INFO Info_059;
|
||||
private TW_INFO Info_060;
|
||||
private TW_INFO Info_061;
|
||||
private TW_INFO Info_062;
|
||||
private TW_INFO Info_063;
|
||||
private TW_INFO Info_064;
|
||||
private TW_INFO Info_065;
|
||||
private TW_INFO Info_066;
|
||||
private TW_INFO Info_067;
|
||||
private TW_INFO Info_068;
|
||||
private TW_INFO Info_069;
|
||||
private TW_INFO Info_070;
|
||||
private TW_INFO Info_071;
|
||||
private TW_INFO Info_072;
|
||||
private TW_INFO Info_073;
|
||||
private TW_INFO Info_074;
|
||||
private TW_INFO Info_075;
|
||||
private TW_INFO Info_076;
|
||||
private TW_INFO Info_077;
|
||||
private TW_INFO Info_078;
|
||||
private TW_INFO Info_079;
|
||||
private TW_INFO Info_080;
|
||||
private TW_INFO Info_081;
|
||||
private TW_INFO Info_082;
|
||||
private TW_INFO Info_083;
|
||||
private TW_INFO Info_084;
|
||||
private TW_INFO Info_085;
|
||||
private TW_INFO Info_086;
|
||||
private TW_INFO Info_087;
|
||||
private TW_INFO Info_088;
|
||||
private TW_INFO Info_089;
|
||||
private TW_INFO Info_090;
|
||||
private TW_INFO Info_091;
|
||||
private TW_INFO Info_092;
|
||||
private TW_INFO Info_093;
|
||||
private TW_INFO Info_094;
|
||||
private TW_INFO Info_095;
|
||||
private TW_INFO Info_096;
|
||||
private TW_INFO Info_097;
|
||||
private TW_INFO Info_098;
|
||||
private TW_INFO Info_099;
|
||||
|
||||
public void Get(uint a_uIndex, ref TW_INFO a_twinfo)
|
||||
// 200 seems overkill for anyone to request
|
||||
// at once so I cut it down in half
|
||||
|
||||
//private TW_INFO Info_100;
|
||||
//private TW_INFO Info_101;
|
||||
//private TW_INFO Info_102;
|
||||
//private TW_INFO Info_103;
|
||||
//private TW_INFO Info_104;
|
||||
//private TW_INFO Info_105;
|
||||
//private TW_INFO Info_106;
|
||||
//private TW_INFO Info_107;
|
||||
//private TW_INFO Info_108;
|
||||
//private TW_INFO Info_109;
|
||||
//private TW_INFO Info_110;
|
||||
//private TW_INFO Info_111;
|
||||
//private TW_INFO Info_112;
|
||||
//private TW_INFO Info_113;
|
||||
//private TW_INFO Info_114;
|
||||
//private TW_INFO Info_115;
|
||||
//private TW_INFO Info_116;
|
||||
//private TW_INFO Info_117;
|
||||
//private TW_INFO Info_118;
|
||||
//private TW_INFO Info_119;
|
||||
//private TW_INFO Info_120;
|
||||
//private TW_INFO Info_121;
|
||||
//private TW_INFO Info_122;
|
||||
//private TW_INFO Info_123;
|
||||
//private TW_INFO Info_124;
|
||||
//private TW_INFO Info_125;
|
||||
//private TW_INFO Info_126;
|
||||
//private TW_INFO Info_127;
|
||||
//private TW_INFO Info_128;
|
||||
//private TW_INFO Info_129;
|
||||
//private TW_INFO Info_130;
|
||||
//private TW_INFO Info_131;
|
||||
//private TW_INFO Info_132;
|
||||
//private TW_INFO Info_133;
|
||||
//private TW_INFO Info_134;
|
||||
//private TW_INFO Info_135;
|
||||
//private TW_INFO Info_136;
|
||||
//private TW_INFO Info_137;
|
||||
//private TW_INFO Info_138;
|
||||
//private TW_INFO Info_139;
|
||||
//private TW_INFO Info_140;
|
||||
//private TW_INFO Info_141;
|
||||
//private TW_INFO Info_142;
|
||||
//private TW_INFO Info_143;
|
||||
//private TW_INFO Info_144;
|
||||
//private TW_INFO Info_145;
|
||||
//private TW_INFO Info_146;
|
||||
//private TW_INFO Info_147;
|
||||
//private TW_INFO Info_148;
|
||||
//private TW_INFO Info_149;
|
||||
//private TW_INFO Info_150;
|
||||
//private TW_INFO Info_151;
|
||||
//private TW_INFO Info_152;
|
||||
//private TW_INFO Info_153;
|
||||
//private TW_INFO Info_154;
|
||||
//private TW_INFO Info_155;
|
||||
//private TW_INFO Info_156;
|
||||
//private TW_INFO Info_157;
|
||||
//private TW_INFO Info_158;
|
||||
//private TW_INFO Info_159;
|
||||
//private TW_INFO Info_160;
|
||||
//private TW_INFO Info_161;
|
||||
//private TW_INFO Info_162;
|
||||
//private TW_INFO Info_163;
|
||||
//private TW_INFO Info_164;
|
||||
//private TW_INFO Info_165;
|
||||
//private TW_INFO Info_166;
|
||||
//private TW_INFO Info_167;
|
||||
//private TW_INFO Info_168;
|
||||
//private TW_INFO Info_169;
|
||||
//private TW_INFO Info_170;
|
||||
//private TW_INFO Info_171;
|
||||
//private TW_INFO Info_172;
|
||||
//private TW_INFO Info_173;
|
||||
//private TW_INFO Info_174;
|
||||
//private TW_INFO Info_175;
|
||||
//private TW_INFO Info_176;
|
||||
//private TW_INFO Info_177;
|
||||
//private TW_INFO Info_178;
|
||||
//private TW_INFO Info_179;
|
||||
//private TW_INFO Info_180;
|
||||
//private TW_INFO Info_181;
|
||||
//private TW_INFO Info_182;
|
||||
//private TW_INFO Info_183;
|
||||
//private TW_INFO Info_184;
|
||||
//private TW_INFO Info_185;
|
||||
//private TW_INFO Info_186;
|
||||
//private TW_INFO Info_187;
|
||||
//private TW_INFO Info_188;
|
||||
//private TW_INFO Info_189;
|
||||
//private TW_INFO Info_190;
|
||||
//private TW_INFO Info_191;
|
||||
//private TW_INFO Info_192;
|
||||
//private TW_INFO Info_193;
|
||||
//private TW_INFO Info_194;
|
||||
//private TW_INFO Info_195;
|
||||
//private TW_INFO Info_196;
|
||||
//private TW_INFO Info_197;
|
||||
//private TW_INFO Info_198;
|
||||
//private TW_INFO Info_199;
|
||||
|
||||
public void Get(int a_uIndex, ref TW_INFO a_twinfo)
|
||||
{
|
||||
switch (a_uIndex)
|
||||
{
|
||||
@ -1718,110 +1719,110 @@ namespace NTwain.Data
|
||||
case 97: a_twinfo = Info_097; return;
|
||||
case 98: a_twinfo = Info_098; return;
|
||||
case 99: a_twinfo = Info_099; return;
|
||||
case 100: a_twinfo = Info_100; return;
|
||||
case 101: a_twinfo = Info_101; return;
|
||||
case 102: a_twinfo = Info_102; return;
|
||||
case 103: a_twinfo = Info_103; return;
|
||||
case 104: a_twinfo = Info_104; return;
|
||||
case 105: a_twinfo = Info_105; return;
|
||||
case 106: a_twinfo = Info_106; return;
|
||||
case 107: a_twinfo = Info_107; return;
|
||||
case 108: a_twinfo = Info_108; return;
|
||||
case 109: a_twinfo = Info_109; return;
|
||||
case 110: a_twinfo = Info_110; return;
|
||||
case 111: a_twinfo = Info_111; return;
|
||||
case 112: a_twinfo = Info_112; return;
|
||||
case 113: a_twinfo = Info_113; return;
|
||||
case 114: a_twinfo = Info_114; return;
|
||||
case 115: a_twinfo = Info_115; return;
|
||||
case 116: a_twinfo = Info_116; return;
|
||||
case 117: a_twinfo = Info_117; return;
|
||||
case 118: a_twinfo = Info_118; return;
|
||||
case 119: a_twinfo = Info_119; return;
|
||||
case 120: a_twinfo = Info_120; return;
|
||||
case 121: a_twinfo = Info_121; return;
|
||||
case 122: a_twinfo = Info_122; return;
|
||||
case 123: a_twinfo = Info_123; return;
|
||||
case 124: a_twinfo = Info_124; return;
|
||||
case 125: a_twinfo = Info_125; return;
|
||||
case 126: a_twinfo = Info_126; return;
|
||||
case 127: a_twinfo = Info_127; return;
|
||||
case 128: a_twinfo = Info_128; return;
|
||||
case 129: a_twinfo = Info_129; return;
|
||||
case 130: a_twinfo = Info_130; return;
|
||||
case 131: a_twinfo = Info_131; return;
|
||||
case 132: a_twinfo = Info_132; return;
|
||||
case 133: a_twinfo = Info_133; return;
|
||||
case 134: a_twinfo = Info_134; return;
|
||||
case 135: a_twinfo = Info_135; return;
|
||||
case 136: a_twinfo = Info_136; return;
|
||||
case 137: a_twinfo = Info_137; return;
|
||||
case 138: a_twinfo = Info_138; return;
|
||||
case 139: a_twinfo = Info_139; return;
|
||||
case 140: a_twinfo = Info_140; return;
|
||||
case 141: a_twinfo = Info_141; return;
|
||||
case 142: a_twinfo = Info_142; return;
|
||||
case 143: a_twinfo = Info_143; return;
|
||||
case 144: a_twinfo = Info_144; return;
|
||||
case 145: a_twinfo = Info_145; return;
|
||||
case 146: a_twinfo = Info_146; return;
|
||||
case 147: a_twinfo = Info_147; return;
|
||||
case 148: a_twinfo = Info_148; return;
|
||||
case 149: a_twinfo = Info_149; return;
|
||||
case 150: a_twinfo = Info_150; return;
|
||||
case 151: a_twinfo = Info_151; return;
|
||||
case 152: a_twinfo = Info_152; return;
|
||||
case 153: a_twinfo = Info_153; return;
|
||||
case 154: a_twinfo = Info_154; return;
|
||||
case 155: a_twinfo = Info_155; return;
|
||||
case 156: a_twinfo = Info_156; return;
|
||||
case 157: a_twinfo = Info_157; return;
|
||||
case 158: a_twinfo = Info_158; return;
|
||||
case 159: a_twinfo = Info_159; return;
|
||||
case 160: a_twinfo = Info_160; return;
|
||||
case 161: a_twinfo = Info_161; return;
|
||||
case 162: a_twinfo = Info_162; return;
|
||||
case 163: a_twinfo = Info_163; return;
|
||||
case 164: a_twinfo = Info_164; return;
|
||||
case 165: a_twinfo = Info_165; return;
|
||||
case 166: a_twinfo = Info_166; return;
|
||||
case 167: a_twinfo = Info_167; return;
|
||||
case 168: a_twinfo = Info_168; return;
|
||||
case 169: a_twinfo = Info_169; return;
|
||||
case 170: a_twinfo = Info_170; return;
|
||||
case 171: a_twinfo = Info_171; return;
|
||||
case 172: a_twinfo = Info_172; return;
|
||||
case 173: a_twinfo = Info_173; return;
|
||||
case 174: a_twinfo = Info_174; return;
|
||||
case 175: a_twinfo = Info_175; return;
|
||||
case 176: a_twinfo = Info_176; return;
|
||||
case 177: a_twinfo = Info_177; return;
|
||||
case 178: a_twinfo = Info_178; return;
|
||||
case 179: a_twinfo = Info_179; return;
|
||||
case 180: a_twinfo = Info_180; return;
|
||||
case 181: a_twinfo = Info_181; return;
|
||||
case 182: a_twinfo = Info_182; return;
|
||||
case 183: a_twinfo = Info_183; return;
|
||||
case 184: a_twinfo = Info_184; return;
|
||||
case 185: a_twinfo = Info_185; return;
|
||||
case 186: a_twinfo = Info_186; return;
|
||||
case 187: a_twinfo = Info_187; return;
|
||||
case 188: a_twinfo = Info_188; return;
|
||||
case 189: a_twinfo = Info_189; return;
|
||||
case 190: a_twinfo = Info_190; return;
|
||||
case 191: a_twinfo = Info_191; return;
|
||||
case 192: a_twinfo = Info_192; return;
|
||||
case 193: a_twinfo = Info_193; return;
|
||||
case 194: a_twinfo = Info_194; return;
|
||||
case 195: a_twinfo = Info_195; return;
|
||||
case 196: a_twinfo = Info_196; return;
|
||||
case 197: a_twinfo = Info_197; return;
|
||||
case 198: a_twinfo = Info_198; return;
|
||||
case 199: a_twinfo = Info_199; return;
|
||||
//case 100: a_twinfo = Info_100; return;
|
||||
//case 101: a_twinfo = Info_101; return;
|
||||
//case 102: a_twinfo = Info_102; return;
|
||||
//case 103: a_twinfo = Info_103; return;
|
||||
//case 104: a_twinfo = Info_104; return;
|
||||
//case 105: a_twinfo = Info_105; return;
|
||||
//case 106: a_twinfo = Info_106; return;
|
||||
//case 107: a_twinfo = Info_107; return;
|
||||
//case 108: a_twinfo = Info_108; return;
|
||||
//case 109: a_twinfo = Info_109; return;
|
||||
//case 110: a_twinfo = Info_110; return;
|
||||
//case 111: a_twinfo = Info_111; return;
|
||||
//case 112: a_twinfo = Info_112; return;
|
||||
//case 113: a_twinfo = Info_113; return;
|
||||
//case 114: a_twinfo = Info_114; return;
|
||||
//case 115: a_twinfo = Info_115; return;
|
||||
//case 116: a_twinfo = Info_116; return;
|
||||
//case 117: a_twinfo = Info_117; return;
|
||||
//case 118: a_twinfo = Info_118; return;
|
||||
//case 119: a_twinfo = Info_119; return;
|
||||
//case 120: a_twinfo = Info_120; return;
|
||||
//case 121: a_twinfo = Info_121; return;
|
||||
//case 122: a_twinfo = Info_122; return;
|
||||
//case 123: a_twinfo = Info_123; return;
|
||||
//case 124: a_twinfo = Info_124; return;
|
||||
//case 125: a_twinfo = Info_125; return;
|
||||
//case 126: a_twinfo = Info_126; return;
|
||||
//case 127: a_twinfo = Info_127; return;
|
||||
//case 128: a_twinfo = Info_128; return;
|
||||
//case 129: a_twinfo = Info_129; return;
|
||||
//case 130: a_twinfo = Info_130; return;
|
||||
//case 131: a_twinfo = Info_131; return;
|
||||
//case 132: a_twinfo = Info_132; return;
|
||||
//case 133: a_twinfo = Info_133; return;
|
||||
//case 134: a_twinfo = Info_134; return;
|
||||
//case 135: a_twinfo = Info_135; return;
|
||||
//case 136: a_twinfo = Info_136; return;
|
||||
//case 137: a_twinfo = Info_137; return;
|
||||
//case 138: a_twinfo = Info_138; return;
|
||||
//case 139: a_twinfo = Info_139; return;
|
||||
//case 140: a_twinfo = Info_140; return;
|
||||
//case 141: a_twinfo = Info_141; return;
|
||||
//case 142: a_twinfo = Info_142; return;
|
||||
//case 143: a_twinfo = Info_143; return;
|
||||
//case 144: a_twinfo = Info_144; return;
|
||||
//case 145: a_twinfo = Info_145; return;
|
||||
//case 146: a_twinfo = Info_146; return;
|
||||
//case 147: a_twinfo = Info_147; return;
|
||||
//case 148: a_twinfo = Info_148; return;
|
||||
//case 149: a_twinfo = Info_149; return;
|
||||
//case 150: a_twinfo = Info_150; return;
|
||||
//case 151: a_twinfo = Info_151; return;
|
||||
//case 152: a_twinfo = Info_152; return;
|
||||
//case 153: a_twinfo = Info_153; return;
|
||||
//case 154: a_twinfo = Info_154; return;
|
||||
//case 155: a_twinfo = Info_155; return;
|
||||
//case 156: a_twinfo = Info_156; return;
|
||||
//case 157: a_twinfo = Info_157; return;
|
||||
//case 158: a_twinfo = Info_158; return;
|
||||
//case 159: a_twinfo = Info_159; return;
|
||||
//case 160: a_twinfo = Info_160; return;
|
||||
//case 161: a_twinfo = Info_161; return;
|
||||
//case 162: a_twinfo = Info_162; return;
|
||||
//case 163: a_twinfo = Info_163; return;
|
||||
//case 164: a_twinfo = Info_164; return;
|
||||
//case 165: a_twinfo = Info_165; return;
|
||||
//case 166: a_twinfo = Info_166; return;
|
||||
//case 167: a_twinfo = Info_167; return;
|
||||
//case 168: a_twinfo = Info_168; return;
|
||||
//case 169: a_twinfo = Info_169; return;
|
||||
//case 170: a_twinfo = Info_170; return;
|
||||
//case 171: a_twinfo = Info_171; return;
|
||||
//case 172: a_twinfo = Info_172; return;
|
||||
//case 173: a_twinfo = Info_173; return;
|
||||
//case 174: a_twinfo = Info_174; return;
|
||||
//case 175: a_twinfo = Info_175; return;
|
||||
//case 176: a_twinfo = Info_176; return;
|
||||
//case 177: a_twinfo = Info_177; return;
|
||||
//case 178: a_twinfo = Info_178; return;
|
||||
//case 179: a_twinfo = Info_179; return;
|
||||
//case 180: a_twinfo = Info_180; return;
|
||||
//case 181: a_twinfo = Info_181; return;
|
||||
//case 182: a_twinfo = Info_182; return;
|
||||
//case 183: a_twinfo = Info_183; return;
|
||||
//case 184: a_twinfo = Info_184; return;
|
||||
//case 185: a_twinfo = Info_185; return;
|
||||
//case 186: a_twinfo = Info_186; return;
|
||||
//case 187: a_twinfo = Info_187; return;
|
||||
//case 188: a_twinfo = Info_188; return;
|
||||
//case 189: a_twinfo = Info_189; return;
|
||||
//case 190: a_twinfo = Info_190; return;
|
||||
//case 191: a_twinfo = Info_191; return;
|
||||
//case 192: a_twinfo = Info_192; return;
|
||||
//case 193: a_twinfo = Info_193; return;
|
||||
//case 194: a_twinfo = Info_194; return;
|
||||
//case 195: a_twinfo = Info_195; return;
|
||||
//case 196: a_twinfo = Info_196; return;
|
||||
//case 197: a_twinfo = Info_197; return;
|
||||
//case 198: a_twinfo = Info_198; return;
|
||||
//case 199: a_twinfo = Info_199; return;
|
||||
}
|
||||
}
|
||||
|
||||
public void Set(uint a_uIndex, ref TW_INFO a_twinfo)
|
||||
public void Set(int a_uIndex, ref TW_INFO a_twinfo)
|
||||
{
|
||||
switch (a_uIndex)
|
||||
{
|
||||
@ -1926,106 +1927,106 @@ namespace NTwain.Data
|
||||
case 97: Info_097 = a_twinfo; return;
|
||||
case 98: Info_098 = a_twinfo; return;
|
||||
case 99: Info_099 = a_twinfo; return;
|
||||
case 100: Info_100 = a_twinfo; return;
|
||||
case 101: Info_101 = a_twinfo; return;
|
||||
case 102: Info_102 = a_twinfo; return;
|
||||
case 103: Info_103 = a_twinfo; return;
|
||||
case 104: Info_104 = a_twinfo; return;
|
||||
case 105: Info_105 = a_twinfo; return;
|
||||
case 106: Info_106 = a_twinfo; return;
|
||||
case 107: Info_107 = a_twinfo; return;
|
||||
case 108: Info_108 = a_twinfo; return;
|
||||
case 109: Info_109 = a_twinfo; return;
|
||||
case 110: Info_110 = a_twinfo; return;
|
||||
case 111: Info_111 = a_twinfo; return;
|
||||
case 112: Info_112 = a_twinfo; return;
|
||||
case 113: Info_113 = a_twinfo; return;
|
||||
case 114: Info_114 = a_twinfo; return;
|
||||
case 115: Info_115 = a_twinfo; return;
|
||||
case 116: Info_116 = a_twinfo; return;
|
||||
case 117: Info_117 = a_twinfo; return;
|
||||
case 118: Info_118 = a_twinfo; return;
|
||||
case 119: Info_119 = a_twinfo; return;
|
||||
case 120: Info_120 = a_twinfo; return;
|
||||
case 121: Info_121 = a_twinfo; return;
|
||||
case 122: Info_122 = a_twinfo; return;
|
||||
case 123: Info_123 = a_twinfo; return;
|
||||
case 124: Info_124 = a_twinfo; return;
|
||||
case 125: Info_125 = a_twinfo; return;
|
||||
case 126: Info_126 = a_twinfo; return;
|
||||
case 127: Info_127 = a_twinfo; return;
|
||||
case 128: Info_128 = a_twinfo; return;
|
||||
case 129: Info_129 = a_twinfo; return;
|
||||
case 130: Info_130 = a_twinfo; return;
|
||||
case 131: Info_131 = a_twinfo; return;
|
||||
case 132: Info_132 = a_twinfo; return;
|
||||
case 133: Info_133 = a_twinfo; return;
|
||||
case 134: Info_134 = a_twinfo; return;
|
||||
case 135: Info_135 = a_twinfo; return;
|
||||
case 136: Info_136 = a_twinfo; return;
|
||||
case 137: Info_137 = a_twinfo; return;
|
||||
case 138: Info_138 = a_twinfo; return;
|
||||
case 139: Info_139 = a_twinfo; return;
|
||||
case 140: Info_140 = a_twinfo; return;
|
||||
case 141: Info_141 = a_twinfo; return;
|
||||
case 142: Info_142 = a_twinfo; return;
|
||||
case 143: Info_143 = a_twinfo; return;
|
||||
case 144: Info_144 = a_twinfo; return;
|
||||
case 145: Info_145 = a_twinfo; return;
|
||||
case 146: Info_146 = a_twinfo; return;
|
||||
case 147: Info_147 = a_twinfo; return;
|
||||
case 148: Info_148 = a_twinfo; return;
|
||||
case 149: Info_149 = a_twinfo; return;
|
||||
case 150: Info_150 = a_twinfo; return;
|
||||
case 151: Info_151 = a_twinfo; return;
|
||||
case 152: Info_152 = a_twinfo; return;
|
||||
case 153: Info_153 = a_twinfo; return;
|
||||
case 154: Info_154 = a_twinfo; return;
|
||||
case 155: Info_155 = a_twinfo; return;
|
||||
case 156: Info_156 = a_twinfo; return;
|
||||
case 157: Info_157 = a_twinfo; return;
|
||||
case 158: Info_158 = a_twinfo; return;
|
||||
case 159: Info_159 = a_twinfo; return;
|
||||
case 160: Info_160 = a_twinfo; return;
|
||||
case 161: Info_161 = a_twinfo; return;
|
||||
case 162: Info_162 = a_twinfo; return;
|
||||
case 163: Info_163 = a_twinfo; return;
|
||||
case 164: Info_164 = a_twinfo; return;
|
||||
case 165: Info_165 = a_twinfo; return;
|
||||
case 166: Info_166 = a_twinfo; return;
|
||||
case 167: Info_167 = a_twinfo; return;
|
||||
case 168: Info_168 = a_twinfo; return;
|
||||
case 169: Info_169 = a_twinfo; return;
|
||||
case 170: Info_170 = a_twinfo; return;
|
||||
case 171: Info_171 = a_twinfo; return;
|
||||
case 172: Info_172 = a_twinfo; return;
|
||||
case 173: Info_173 = a_twinfo; return;
|
||||
case 174: Info_174 = a_twinfo; return;
|
||||
case 175: Info_175 = a_twinfo; return;
|
||||
case 176: Info_176 = a_twinfo; return;
|
||||
case 177: Info_177 = a_twinfo; return;
|
||||
case 178: Info_178 = a_twinfo; return;
|
||||
case 179: Info_179 = a_twinfo; return;
|
||||
case 180: Info_180 = a_twinfo; return;
|
||||
case 181: Info_181 = a_twinfo; return;
|
||||
case 182: Info_182 = a_twinfo; return;
|
||||
case 183: Info_183 = a_twinfo; return;
|
||||
case 184: Info_184 = a_twinfo; return;
|
||||
case 185: Info_185 = a_twinfo; return;
|
||||
case 186: Info_186 = a_twinfo; return;
|
||||
case 187: Info_187 = a_twinfo; return;
|
||||
case 188: Info_188 = a_twinfo; return;
|
||||
case 189: Info_189 = a_twinfo; return;
|
||||
case 190: Info_190 = a_twinfo; return;
|
||||
case 191: Info_191 = a_twinfo; return;
|
||||
case 192: Info_192 = a_twinfo; return;
|
||||
case 193: Info_193 = a_twinfo; return;
|
||||
case 194: Info_194 = a_twinfo; return;
|
||||
case 195: Info_195 = a_twinfo; return;
|
||||
case 196: Info_196 = a_twinfo; return;
|
||||
case 197: Info_197 = a_twinfo; return;
|
||||
case 198: Info_198 = a_twinfo; return;
|
||||
case 199: Info_199 = a_twinfo; return;
|
||||
//case 100: Info_100 = a_twinfo; return;
|
||||
//case 101: Info_101 = a_twinfo; return;
|
||||
//case 102: Info_102 = a_twinfo; return;
|
||||
//case 103: Info_103 = a_twinfo; return;
|
||||
//case 104: Info_104 = a_twinfo; return;
|
||||
//case 105: Info_105 = a_twinfo; return;
|
||||
//case 106: Info_106 = a_twinfo; return;
|
||||
//case 107: Info_107 = a_twinfo; return;
|
||||
//case 108: Info_108 = a_twinfo; return;
|
||||
//case 109: Info_109 = a_twinfo; return;
|
||||
//case 110: Info_110 = a_twinfo; return;
|
||||
//case 111: Info_111 = a_twinfo; return;
|
||||
//case 112: Info_112 = a_twinfo; return;
|
||||
//case 113: Info_113 = a_twinfo; return;
|
||||
//case 114: Info_114 = a_twinfo; return;
|
||||
//case 115: Info_115 = a_twinfo; return;
|
||||
//case 116: Info_116 = a_twinfo; return;
|
||||
//case 117: Info_117 = a_twinfo; return;
|
||||
//case 118: Info_118 = a_twinfo; return;
|
||||
//case 119: Info_119 = a_twinfo; return;
|
||||
//case 120: Info_120 = a_twinfo; return;
|
||||
//case 121: Info_121 = a_twinfo; return;
|
||||
//case 122: Info_122 = a_twinfo; return;
|
||||
//case 123: Info_123 = a_twinfo; return;
|
||||
//case 124: Info_124 = a_twinfo; return;
|
||||
//case 125: Info_125 = a_twinfo; return;
|
||||
//case 126: Info_126 = a_twinfo; return;
|
||||
//case 127: Info_127 = a_twinfo; return;
|
||||
//case 128: Info_128 = a_twinfo; return;
|
||||
//case 129: Info_129 = a_twinfo; return;
|
||||
//case 130: Info_130 = a_twinfo; return;
|
||||
//case 131: Info_131 = a_twinfo; return;
|
||||
//case 132: Info_132 = a_twinfo; return;
|
||||
//case 133: Info_133 = a_twinfo; return;
|
||||
//case 134: Info_134 = a_twinfo; return;
|
||||
//case 135: Info_135 = a_twinfo; return;
|
||||
//case 136: Info_136 = a_twinfo; return;
|
||||
//case 137: Info_137 = a_twinfo; return;
|
||||
//case 138: Info_138 = a_twinfo; return;
|
||||
//case 139: Info_139 = a_twinfo; return;
|
||||
//case 140: Info_140 = a_twinfo; return;
|
||||
//case 141: Info_141 = a_twinfo; return;
|
||||
//case 142: Info_142 = a_twinfo; return;
|
||||
//case 143: Info_143 = a_twinfo; return;
|
||||
//case 144: Info_144 = a_twinfo; return;
|
||||
//case 145: Info_145 = a_twinfo; return;
|
||||
//case 146: Info_146 = a_twinfo; return;
|
||||
//case 147: Info_147 = a_twinfo; return;
|
||||
//case 148: Info_148 = a_twinfo; return;
|
||||
//case 149: Info_149 = a_twinfo; return;
|
||||
//case 150: Info_150 = a_twinfo; return;
|
||||
//case 151: Info_151 = a_twinfo; return;
|
||||
//case 152: Info_152 = a_twinfo; return;
|
||||
//case 153: Info_153 = a_twinfo; return;
|
||||
//case 154: Info_154 = a_twinfo; return;
|
||||
//case 155: Info_155 = a_twinfo; return;
|
||||
//case 156: Info_156 = a_twinfo; return;
|
||||
//case 157: Info_157 = a_twinfo; return;
|
||||
//case 158: Info_158 = a_twinfo; return;
|
||||
//case 159: Info_159 = a_twinfo; return;
|
||||
//case 160: Info_160 = a_twinfo; return;
|
||||
//case 161: Info_161 = a_twinfo; return;
|
||||
//case 162: Info_162 = a_twinfo; return;
|
||||
//case 163: Info_163 = a_twinfo; return;
|
||||
//case 164: Info_164 = a_twinfo; return;
|
||||
//case 165: Info_165 = a_twinfo; return;
|
||||
//case 166: Info_166 = a_twinfo; return;
|
||||
//case 167: Info_167 = a_twinfo; return;
|
||||
//case 168: Info_168 = a_twinfo; return;
|
||||
//case 169: Info_169 = a_twinfo; return;
|
||||
//case 170: Info_170 = a_twinfo; return;
|
||||
//case 171: Info_171 = a_twinfo; return;
|
||||
//case 172: Info_172 = a_twinfo; return;
|
||||
//case 173: Info_173 = a_twinfo; return;
|
||||
//case 174: Info_174 = a_twinfo; return;
|
||||
//case 175: Info_175 = a_twinfo; return;
|
||||
//case 176: Info_176 = a_twinfo; return;
|
||||
//case 177: Info_177 = a_twinfo; return;
|
||||
//case 178: Info_178 = a_twinfo; return;
|
||||
//case 179: Info_179 = a_twinfo; return;
|
||||
//case 180: Info_180 = a_twinfo; return;
|
||||
//case 181: Info_181 = a_twinfo; return;
|
||||
//case 182: Info_182 = a_twinfo; return;
|
||||
//case 183: Info_183 = a_twinfo; return;
|
||||
//case 184: Info_184 = a_twinfo; return;
|
||||
//case 185: Info_185 = a_twinfo; return;
|
||||
//case 186: Info_186 = a_twinfo; return;
|
||||
//case 187: Info_187 = a_twinfo; return;
|
||||
//case 188: Info_188 = a_twinfo; return;
|
||||
//case 189: Info_189 = a_twinfo; return;
|
||||
//case 190: Info_190 = a_twinfo; return;
|
||||
//case 191: Info_191 = a_twinfo; return;
|
||||
//case 192: Info_192 = a_twinfo; return;
|
||||
//case 193: Info_193 = a_twinfo; return;
|
||||
//case 194: Info_194 = a_twinfo; return;
|
||||
//case 195: Info_195 = a_twinfo; return;
|
||||
//case 196: Info_196 = a_twinfo; return;
|
||||
//case 197: Info_197 = a_twinfo; return;
|
||||
//case 198: Info_198 = a_twinfo; return;
|
||||
//case 199: Info_199 = a_twinfo; return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,9 +11,9 @@ namespace NTwain.Data
|
||||
/// <summary>
|
||||
/// Contains platform info for twain use.
|
||||
/// </summary>
|
||||
public static class TwainPlatform
|
||||
public static class TWPlatform
|
||||
{
|
||||
static TwainPlatform()
|
||||
static TWPlatform()
|
||||
{
|
||||
Is32bit = IntPtr.Size == 4;
|
||||
|
||||
@ -78,7 +78,7 @@ namespace NTwain.Data
|
||||
/// <summary>
|
||||
/// Contains value that don't fit into enums nicely.
|
||||
/// </summary>
|
||||
public static class TwainConst
|
||||
public static class TWConst
|
||||
{
|
||||
/// <summary>
|
||||
/// Don't care values...
|
||||
@ -86,12 +86,6 @@ namespace NTwain.Data
|
||||
public const byte TWON_DONTCARE8 = 0xff;
|
||||
public const ushort TWON_DONTCARE16 = 0xffff;
|
||||
public const uint TWON_DONTCARE32 = 0xffffffff;
|
||||
/// <summary>
|
||||
/// We're departing from a strict translation of H so that
|
||||
/// we can achieve a unified status return type.
|
||||
/// </summary>
|
||||
public const int STSCC = 0x10000; // get us past the custom space
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -739,7 +733,7 @@ namespace NTwain.Data
|
||||
public TW_CAPABILITY(CAP cap)
|
||||
{
|
||||
Cap = cap;
|
||||
ConType = (TWON)TwainConst.TWON_DONTCARE16;
|
||||
ConType = (TWON)TWConst.TWON_DONTCARE16;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -771,9 +765,9 @@ namespace NTwain.Data
|
||||
/// <returns></returns>
|
||||
public uint DetermineBufferSize()
|
||||
{
|
||||
if (Preferred != TwainConst.TWON_DONTCARE32) return Preferred;
|
||||
if (MaxBufSize != TwainConst.TWON_DONTCARE32) return MaxBufSize;
|
||||
if (MinBufSize != TwainConst.TWON_DONTCARE32) return MinBufSize;
|
||||
if (Preferred != TWConst.TWON_DONTCARE32) return Preferred;
|
||||
if (MaxBufSize != TWConst.TWON_DONTCARE32) return MaxBufSize;
|
||||
if (MinBufSize != TWConst.TWON_DONTCARE32) return MinBufSize;
|
||||
// default to 16 kb if source doesn't really want to say what it needs
|
||||
return 1024 * 16;
|
||||
}
|
||||
@ -789,13 +783,13 @@ namespace NTwain.Data
|
||||
{
|
||||
return new TW_IMAGEMEMXFER
|
||||
{
|
||||
BytesPerRow = TwainConst.TWON_DONTCARE32,
|
||||
BytesWritten = TwainConst.TWON_DONTCARE32,
|
||||
Columns = TwainConst.TWON_DONTCARE32,
|
||||
Compression = TwainConst.TWON_DONTCARE16,
|
||||
Rows = TwainConst.TWON_DONTCARE32,
|
||||
XOffset = TwainConst.TWON_DONTCARE32,
|
||||
YOffset = TwainConst.TWON_DONTCARE32,
|
||||
BytesPerRow = TWConst.TWON_DONTCARE32,
|
||||
BytesWritten = TWConst.TWON_DONTCARE32,
|
||||
Columns = TWConst.TWON_DONTCARE32,
|
||||
Compression = TWConst.TWON_DONTCARE16,
|
||||
Rows = TWConst.TWON_DONTCARE32,
|
||||
XOffset = TWConst.TWON_DONTCARE32,
|
||||
YOffset = TWConst.TWON_DONTCARE32,
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -810,20 +804,288 @@ namespace NTwain.Data
|
||||
{
|
||||
return new TW_IMAGEMEMXFER_MACOSX
|
||||
{
|
||||
BytesPerRow = TwainConst.TWON_DONTCARE32,
|
||||
BytesWritten = TwainConst.TWON_DONTCARE32,
|
||||
Columns = TwainConst.TWON_DONTCARE32,
|
||||
Compression = TwainConst.TWON_DONTCARE32,
|
||||
Rows = TwainConst.TWON_DONTCARE32,
|
||||
XOffset = TwainConst.TWON_DONTCARE32,
|
||||
YOffset = TwainConst.TWON_DONTCARE32,
|
||||
BytesPerRow = TWConst.TWON_DONTCARE32,
|
||||
BytesWritten = TWConst.TWON_DONTCARE32,
|
||||
Columns = TWConst.TWON_DONTCARE32,
|
||||
Compression = TWConst.TWON_DONTCARE32,
|
||||
Rows = TWConst.TWON_DONTCARE32,
|
||||
XOffset = TWConst.TWON_DONTCARE32,
|
||||
YOffset = TWConst.TWON_DONTCARE32,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
//partial struct TW_DEVICEEVENT
|
||||
//{
|
||||
// public TWDE Event { get { return (TWDE)_event; } }
|
||||
// public TWFL FlashUsed2 { get { return (TWFL)_flashUsed2; } }
|
||||
//}
|
||||
partial struct TW_DEVICEEVENT
|
||||
{
|
||||
// provide casted versions over raw value
|
||||
|
||||
public TWDE Event { get { return (TWDE)_Event; } }
|
||||
public TWFL FlashUsed2 { get { return (TWFL)_FlashUsed2; } }
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Container for querying ext image info. After querying and done with
|
||||
/// the data you must call <see cref="Free(IMemoryManager)"/> to
|
||||
/// free the memory allocated.
|
||||
/// </summary>
|
||||
public partial struct TW_EXTIMAGEINFO
|
||||
{
|
||||
/// <summary>
|
||||
/// A quick way to create a query object with only <see cref="TWEI"/> values.
|
||||
/// Limit is 100 at this time.
|
||||
/// </summary>
|
||||
/// <param name="memMgr"></param>
|
||||
/// <param name="infoNames"></param>
|
||||
/// <returns></returns>
|
||||
public static TW_EXTIMAGEINFO CreateRequest(params TWEI[] infoNames)
|
||||
{
|
||||
if (infoNames == null || infoNames.Length == 0) return default;
|
||||
if (infoNames.Length > 100) throw new InvalidOperationException("Cannot query more than 100 TWEIs at this time.");
|
||||
|
||||
TW_EXTIMAGEINFO container = new()
|
||||
{
|
||||
NumInfos = (uint)infoNames.Length,
|
||||
};
|
||||
|
||||
for (var i = 0; i < infoNames.Length; i++)
|
||||
{
|
||||
TW_INFO info = new() { InfoId = infoNames[i] };
|
||||
container.Set(i, ref info);
|
||||
}
|
||||
return container;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reads the info out of this as array.
|
||||
/// </summary>
|
||||
/// <param name="memMgr"></param>
|
||||
/// <returns></returns>
|
||||
public TW_INFO[] AsInfos()
|
||||
{
|
||||
if (NumInfos == 0) return Array.Empty<TW_INFO>();
|
||||
|
||||
var arr = new TW_INFO[NumInfos];
|
||||
for (var i = 0; i < NumInfos; i++)
|
||||
{
|
||||
TW_INFO blah = default;
|
||||
Get(i, ref blah);
|
||||
arr[i] = blah;
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Frees all data contained here.
|
||||
/// </summary>
|
||||
/// <param name="memMgr"></param>
|
||||
public void Free(IMemoryManager memMgr)
|
||||
{
|
||||
#region don't open this
|
||||
Info_000.Free(memMgr);
|
||||
Info_001.Free(memMgr);
|
||||
Info_002.Free(memMgr);
|
||||
Info_003.Free(memMgr);
|
||||
Info_004.Free(memMgr);
|
||||
Info_005.Free(memMgr);
|
||||
Info_006.Free(memMgr);
|
||||
Info_007.Free(memMgr);
|
||||
Info_008.Free(memMgr);
|
||||
Info_009.Free(memMgr);
|
||||
Info_010.Free(memMgr);
|
||||
Info_011.Free(memMgr);
|
||||
Info_012.Free(memMgr);
|
||||
Info_013.Free(memMgr);
|
||||
Info_014.Free(memMgr);
|
||||
Info_015.Free(memMgr);
|
||||
Info_016.Free(memMgr);
|
||||
Info_017.Free(memMgr);
|
||||
Info_018.Free(memMgr);
|
||||
Info_019.Free(memMgr);
|
||||
Info_020.Free(memMgr);
|
||||
Info_021.Free(memMgr);
|
||||
Info_022.Free(memMgr);
|
||||
Info_023.Free(memMgr);
|
||||
Info_024.Free(memMgr);
|
||||
Info_025.Free(memMgr);
|
||||
Info_026.Free(memMgr);
|
||||
Info_027.Free(memMgr);
|
||||
Info_028.Free(memMgr);
|
||||
Info_029.Free(memMgr);
|
||||
Info_030.Free(memMgr);
|
||||
Info_031.Free(memMgr);
|
||||
Info_032.Free(memMgr);
|
||||
Info_033.Free(memMgr);
|
||||
Info_034.Free(memMgr);
|
||||
Info_035.Free(memMgr);
|
||||
Info_036.Free(memMgr);
|
||||
Info_037.Free(memMgr);
|
||||
Info_038.Free(memMgr);
|
||||
Info_039.Free(memMgr);
|
||||
Info_040.Free(memMgr);
|
||||
Info_041.Free(memMgr);
|
||||
Info_042.Free(memMgr);
|
||||
Info_043.Free(memMgr);
|
||||
Info_044.Free(memMgr);
|
||||
Info_045.Free(memMgr);
|
||||
Info_046.Free(memMgr);
|
||||
Info_047.Free(memMgr);
|
||||
Info_048.Free(memMgr);
|
||||
Info_049.Free(memMgr);
|
||||
Info_050.Free(memMgr);
|
||||
Info_051.Free(memMgr);
|
||||
Info_052.Free(memMgr);
|
||||
Info_053.Free(memMgr);
|
||||
Info_054.Free(memMgr);
|
||||
Info_055.Free(memMgr);
|
||||
Info_056.Free(memMgr);
|
||||
Info_057.Free(memMgr);
|
||||
Info_058.Free(memMgr);
|
||||
Info_059.Free(memMgr);
|
||||
Info_060.Free(memMgr);
|
||||
Info_061.Free(memMgr);
|
||||
Info_062.Free(memMgr);
|
||||
Info_063.Free(memMgr);
|
||||
Info_064.Free(memMgr);
|
||||
Info_065.Free(memMgr);
|
||||
Info_066.Free(memMgr);
|
||||
Info_067.Free(memMgr);
|
||||
Info_068.Free(memMgr);
|
||||
Info_069.Free(memMgr);
|
||||
Info_070.Free(memMgr);
|
||||
Info_071.Free(memMgr);
|
||||
Info_072.Free(memMgr);
|
||||
Info_073.Free(memMgr);
|
||||
Info_074.Free(memMgr);
|
||||
Info_075.Free(memMgr);
|
||||
Info_076.Free(memMgr);
|
||||
Info_077.Free(memMgr);
|
||||
Info_078.Free(memMgr);
|
||||
Info_079.Free(memMgr);
|
||||
Info_080.Free(memMgr);
|
||||
Info_081.Free(memMgr);
|
||||
Info_082.Free(memMgr);
|
||||
Info_083.Free(memMgr);
|
||||
Info_084.Free(memMgr);
|
||||
Info_085.Free(memMgr);
|
||||
Info_086.Free(memMgr);
|
||||
Info_087.Free(memMgr);
|
||||
Info_088.Free(memMgr);
|
||||
Info_089.Free(memMgr);
|
||||
Info_090.Free(memMgr);
|
||||
Info_091.Free(memMgr);
|
||||
Info_092.Free(memMgr);
|
||||
Info_093.Free(memMgr);
|
||||
Info_094.Free(memMgr);
|
||||
Info_095.Free(memMgr);
|
||||
Info_096.Free(memMgr);
|
||||
Info_097.Free(memMgr);
|
||||
Info_098.Free(memMgr);
|
||||
Info_099.Free(memMgr);
|
||||
#endregion
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
partial struct TW_INFO
|
||||
{
|
||||
/// <summary>
|
||||
/// Quick check to see if the <see cref="Item"/> pointer is really
|
||||
/// a pointer or actual data (ugh).
|
||||
/// </summary>
|
||||
public bool IsDataAPointer =>
|
||||
ItemType == TWTY.HANDLE || (ItemType.GetItemTypeSize() * NumItems) > IntPtr.Size; // should it be intptr.size or just 4?
|
||||
|
||||
/// <summary>
|
||||
/// Try to read out the item as the type specified in <see cref="ItemType"/>.
|
||||
/// This ONLY works if the data is not a pointer (see <see cref="IsDataAPointer"/>).
|
||||
/// For pointers you'd read it yourself with
|
||||
/// <see cref="ValueReader.ReadTWTYData{TValue}(IntPtr, TWTY, int)"/>.
|
||||
/// Unless it's a handle (<see cref="TWTY.HANDLE"/>) to non-twain-strings, then you'd use
|
||||
/// <see cref="ReadHandleString(int)"/>.
|
||||
/// </summary>
|
||||
/// <param name="type"></param>
|
||||
/// <typeparam name="TValue"></typeparam>
|
||||
/// <returns></returns>
|
||||
public unsafe TValue ReadNonPointerData<TValue>() where TValue : struct
|
||||
{
|
||||
if (ReturnCode != TWRC.SUCCESS || NumItems == 0 || IsDataAPointer) return default;
|
||||
|
||||
// we can try a trick and make a pointer to this numeric data
|
||||
// and re-use our pointer reader. There's a good chance this is wrong in many ways.
|
||||
// TODO: test this idea in some unit test
|
||||
var value = TWPlatform.Is32bit ? Item.ToUInt32() : Item.ToUInt64(); // the value should be 32bit from the spec but not sure how it'll work in 64bit
|
||||
|
||||
var fakePtr = (IntPtr)(&value);
|
||||
|
||||
return fakePtr.ReadTWTYData<TValue>(ItemType, 0);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Try to read a null-terminated string from the item.
|
||||
/// </summary>
|
||||
/// <param name="memMgr"></param>
|
||||
/// <param name="index">If item is an array specify which string to read</param>
|
||||
/// <returns></returns>
|
||||
public unsafe string? ReadHandleString(IMemoryManager memMgr, int index = 0)
|
||||
{
|
||||
if (index < 0 || index >= NumItems || !IsDataAPointer) return default;
|
||||
|
||||
// why is twain being difficult and not use TW_STR* like a normal person.
|
||||
// what even is the encoding for those things? Imma yolo it.
|
||||
string? value;
|
||||
var itemAsPtr = (IntPtr)Item.ToPointer(); // this is also iffy
|
||||
|
||||
if (NumItems == 1)
|
||||
{
|
||||
// if 1, item is already the pointer to the string
|
||||
value = LockAndReadNullTerminatedString(memMgr, itemAsPtr);
|
||||
}
|
||||
else
|
||||
{
|
||||
// if more than 1, item points to an array of pointers that each points to their own string
|
||||
var lockPtr = memMgr.Lock(itemAsPtr);
|
||||
lockPtr += (IntPtr.Size * index);
|
||||
// is this even correct? I hope it is
|
||||
var subItemPtr = Marshal.PtrToStructure<IntPtr>(lockPtr);
|
||||
value = LockAndReadNullTerminatedString(memMgr, subItemPtr);
|
||||
memMgr.Unlock(itemAsPtr);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
private string? LockAndReadNullTerminatedString(IMemoryManager memMgr, IntPtr data)
|
||||
{
|
||||
var lockPtr = memMgr.Lock(data);
|
||||
// yolo as ansi, should work in most cases
|
||||
var value = Marshal.PtrToStringAnsi(lockPtr);
|
||||
memMgr.Unlock(data);
|
||||
return value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Frees all DS-allocated memory if necessary.
|
||||
/// </summary>
|
||||
/// <param name="memMgr"></param>
|
||||
internal unsafe void Free(IMemoryManager memMgr)
|
||||
{
|
||||
if (ReturnCode != TWRC.SUCCESS || !IsDataAPointer) return;
|
||||
|
||||
var itemAsPtr = (IntPtr)Item.ToPointer(); // this is also iffy
|
||||
if (ItemType == TWTY.HANDLE && NumItems > 1)
|
||||
{
|
||||
// must go into each handle in the array and free them individually :(
|
||||
var lockPtr = memMgr.Lock(itemAsPtr);
|
||||
for (var i = 0; i < NumItems; i++)
|
||||
{
|
||||
// is this even correct? I hope it is
|
||||
var subItemPtr = Marshal.PtrToStructure<IntPtr>(lockPtr);
|
||||
memMgr.Free(subItemPtr);
|
||||
lockPtr += IntPtr.Size;
|
||||
}
|
||||
}
|
||||
memMgr.Free(itemAsPtr);
|
||||
Item = UIntPtr.Zero;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
@ -61,7 +60,7 @@ namespace NTwain.Data
|
||||
|
||||
try
|
||||
{
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
type = (TWTY)(ushort)(uint)Marshal.ReadInt32(lockedPtr);
|
||||
|
||||
@ -103,7 +102,7 @@ namespace NTwain.Data
|
||||
{
|
||||
TWTY itemType;
|
||||
// Mac has a level of indirection and a different structure (ick)...
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
// Crack the container...
|
||||
var onevalue = MarshalTo<TW_ONEVALUE_MACOSX>(lockedPtr);
|
||||
@ -118,7 +117,7 @@ namespace NTwain.Data
|
||||
lockedPtr += Marshal.SizeOf(onevalue);
|
||||
}
|
||||
|
||||
return ReadContainerData<TValue>(lockedPtr, itemType, 0);
|
||||
return ReadTWTYData<TValue>(lockedPtr, itemType, 0);
|
||||
}
|
||||
finally
|
||||
{
|
||||
@ -145,7 +144,7 @@ namespace NTwain.Data
|
||||
int count = 0;
|
||||
|
||||
// Mac has a level of indirection and a different structure (ick)...
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
// Crack the container...
|
||||
var twenumerationmacosx = MarshalTo<TW_ENUMERATION_MACOSX>(lockedPtr);
|
||||
@ -188,7 +187,7 @@ namespace NTwain.Data
|
||||
|
||||
for (var i = 0; i < count; i++)
|
||||
{
|
||||
retVal.Items[i] = ReadContainerData<TValue>(lockedPtr, itemType, i);
|
||||
retVal.Items[i] = ReadTWTYData<TValue>(lockedPtr, itemType, i);
|
||||
}
|
||||
}
|
||||
finally
|
||||
@ -215,7 +214,7 @@ namespace NTwain.Data
|
||||
uint count;
|
||||
|
||||
// Mac has a level of indirection and a different structure (ick)...
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
// Crack the container...
|
||||
var twarraymacosx = MarshalTo<TW_ARRAY_MACOSX>(lockedPtr);
|
||||
@ -235,7 +234,7 @@ namespace NTwain.Data
|
||||
var arr = new TValue[count];
|
||||
for (var i = 0; i < count; i++)
|
||||
{
|
||||
arr[i] = ReadContainerData<TValue>(lockedPtr, itemType, i);
|
||||
arr[i] = ReadTWTYData<TValue>(lockedPtr, itemType, i);
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
@ -264,7 +263,7 @@ namespace NTwain.Data
|
||||
TW_RANGE_FIX32 twrangefix32 = default;
|
||||
|
||||
// Mac has a level of indirection and a different structure (ick)...
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
var twrangemacosx = MarshalTo<TW_RANGE_MACOSX>(lockedPtr);
|
||||
var twrangefix32macosx = MarshalTo<TW_RANGE_FIX32_MACOSX>(lockedPtr);
|
||||
@ -366,7 +365,7 @@ namespace NTwain.Data
|
||||
{
|
||||
TWTY itemType;
|
||||
// Mac has a level of indirection and a different structure (ick)...
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
// Crack the container...
|
||||
var onevalue = MarshalTo<TW_ONEVALUE_MACOSX>(lockedPtr);
|
||||
@ -425,13 +424,13 @@ namespace NTwain.Data
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Read the container pointer content.
|
||||
/// Read the pointer content as a value specified by <see cref="TWTY"/>, except <see cref="TWTY.HANDLE"/>.
|
||||
/// </summary>
|
||||
/// <param name="intptr">A locked pointer to the container's data pointer. If data is array this is the 0th item.</param>
|
||||
/// <param name="intptr">A locked pointer to the data pointer. If data is array this is the 0th item.</param>
|
||||
/// <param name="type">The twain type.</param>
|
||||
/// <param name="itemIndex">Index of the item if pointer is array.</param>
|
||||
/// <returns></returns>
|
||||
static TValue ReadContainerData<TValue>(IntPtr intptr, TWTY type, int itemIndex) where TValue : struct
|
||||
public static TValue ReadTWTYData<TValue>(this IntPtr intptr, TWTY type, int itemIndex) where TValue : struct
|
||||
{
|
||||
var isEnum = typeof(TValue).IsEnum;
|
||||
|
||||
|
@ -59,7 +59,7 @@ namespace NTwain.Data
|
||||
TWTY itemType = GetItemType<TValue>();
|
||||
|
||||
// Allocate the container (go for worst case, which is TW_STR255)...
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
twCap.hContainer = memMgr.Alloc((uint)(Marshal.SizeOf(default(TW_ONEVALUE_MACOSX)) + Marshal.SizeOf(default(TW_STR255))));
|
||||
lockedPtr = memMgr.Lock(twCap.hContainer);
|
||||
@ -114,7 +114,7 @@ namespace NTwain.Data
|
||||
TWTY itemType = GetItemType<TValue>();
|
||||
|
||||
// Allocate the container (go for worst case, which is TW_STR255)...
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
// Allocate...
|
||||
twCap.hContainer = memMgr.Alloc((uint)(Marshal.SizeOf(default(TW_ARRAY_MACOSX)) + ((values.Length + 1) * Marshal.SizeOf(default(TW_STR255)))));
|
||||
@ -182,7 +182,7 @@ namespace NTwain.Data
|
||||
TWTY itemType = GetItemType<TValue>();
|
||||
|
||||
// Allocate the container (go for worst case, which is TW_STR255)...
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
// Allocate...
|
||||
twCap.hContainer = memMgr.Alloc((uint)(Marshal.SizeOf(default(TW_ENUMERATION_MACOSX)) + ((value.Items.Length + 1) * Marshal.SizeOf(default(TW_STR255)))));
|
||||
@ -270,7 +270,7 @@ namespace NTwain.Data
|
||||
TWTY itemType = GetItemType<TValue>();
|
||||
|
||||
// Allocate the container (go for worst case, which is TW_STR255)...
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
// Allocate...
|
||||
twCap.hContainer = memMgr.Alloc((uint)(Marshal.SizeOf(default(TW_RANGE_MACOSX))));
|
||||
@ -314,7 +314,7 @@ namespace NTwain.Data
|
||||
default:
|
||||
throw new NotSupportedException($"{itemType} is not supported for range.");
|
||||
case TWTY.INT8:
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
twrangemacosx.ItemType = (uint)itemType;
|
||||
twrangemacosx.MinValue = (uint)Convert.ToSByte(value.MinValue);
|
||||
@ -346,7 +346,7 @@ namespace NTwain.Data
|
||||
//}
|
||||
break;
|
||||
case TWTY.UINT8:
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
twrangemacosx.ItemType = (uint)itemType;
|
||||
twrangemacosx.MinValue = Convert.ToByte(value.MinValue);
|
||||
@ -378,7 +378,7 @@ namespace NTwain.Data
|
||||
//}
|
||||
break;
|
||||
case TWTY.INT16:
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
twrangemacosx.ItemType = (uint)itemType;
|
||||
twrangemacosx.MinValue = (uint)Convert.ToInt16(value.MinValue);
|
||||
@ -411,7 +411,7 @@ namespace NTwain.Data
|
||||
break;
|
||||
case TWTY.BOOL:
|
||||
case TWTY.UINT16:
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
twrangemacosx.ItemType = (uint)itemType;
|
||||
twrangemacosx.MinValue = Convert.ToUInt16(value.MinValue);
|
||||
@ -443,7 +443,7 @@ namespace NTwain.Data
|
||||
//}
|
||||
break;
|
||||
case TWTY.INT32:
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
twrangemacosx.ItemType = (uint)itemType;
|
||||
twrangemacosx.MinValue = (uint)Convert.ToInt32(value.MinValue);
|
||||
@ -475,7 +475,7 @@ namespace NTwain.Data
|
||||
//}
|
||||
break;
|
||||
case TWTY.UINT32:
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
twrangemacosx.ItemType = (uint)itemType;
|
||||
twrangemacosx.MinValue = Convert.ToUInt32(value.MinValue);
|
||||
@ -512,7 +512,7 @@ namespace NTwain.Data
|
||||
double step = Convert.ToDouble(value.StepSize);
|
||||
double def = Convert.ToDouble(value.DefaultValue);
|
||||
double current = Convert.ToDouble(value.CurrentValue);
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_RANGE_FIX32_MACOSX twrangefix32macosx = default;
|
||||
twrangefix32macosx.ItemType = (uint)itemType;
|
||||
|
10
src/NTwain/TransferCanceledEventArgs.cs
Normal file
10
src/NTwain/TransferCanceledEventArgs.cs
Normal file
@ -0,0 +1,10 @@
|
||||
using NTwain.Data;
|
||||
using System;
|
||||
|
||||
namespace NTwain
|
||||
{
|
||||
public class TransferCanceledEventArgs : EventArgs
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -6,27 +6,30 @@ namespace NTwain
|
||||
// TODO: maybe a 2-level "dispose" with end of event being 1
|
||||
// and manual dispose 2 for perf if this is not good enough.
|
||||
|
||||
public class DataTransferredEventArgs : EventArgs
|
||||
public class TransferredEventArgs : EventArgs
|
||||
{
|
||||
public DataTransferredEventArgs(TW_AUDIOINFO info, TW_SETUPFILEXFER fileInfo)
|
||||
public TransferredEventArgs(TW_AUDIOINFO info, TW_SETUPFILEXFER fileInfo)
|
||||
{
|
||||
AudioInfo = info;
|
||||
FileInfo = fileInfo;
|
||||
}
|
||||
public DataTransferredEventArgs(TW_AUDIOINFO info, BufferedData data)
|
||||
public TransferredEventArgs(TW_AUDIOINFO info, BufferedData data)
|
||||
{
|
||||
AudioInfo = info;
|
||||
_data = data;
|
||||
}
|
||||
|
||||
public DataTransferredEventArgs(TW_IMAGEINFO info, TW_SETUPFILEXFER? fileInfo, BufferedData data)
|
||||
public TransferredEventArgs(TwainAppSession twain, TW_IMAGEINFO info, TW_SETUPFILEXFER? fileInfo, BufferedData data)
|
||||
{
|
||||
ImageInfo = info;
|
||||
FileInfo = fileInfo;
|
||||
IsImage = true;
|
||||
_data = data;
|
||||
_twain = twain;
|
||||
}
|
||||
|
||||
TwainAppSession? _twain;
|
||||
|
||||
/// <summary>
|
||||
/// Whether transferred data is an image or audio.
|
||||
/// </summary>
|
||||
@ -57,5 +60,18 @@ namespace NTwain
|
||||
/// </summary>
|
||||
public TW_AUDIOINFO AudioInfo { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the ext image info. Use any utility methods on it
|
||||
/// to read the data. Remember to call <see cref="TW_EXTIMAGEINFO.Free(IMemoryManager)"/>
|
||||
/// when done.
|
||||
/// </summary>
|
||||
/// <param name="container">Container to query. Can be created with <see cref="TW_EXTIMAGEINFO.CreateRequest(TWEI[])"/></param>
|
||||
/// <returns></returns>
|
||||
public STS GetExtendedImageInfo(ref TW_EXTIMAGEINFO container)
|
||||
{
|
||||
if (_twain == null) return default;
|
||||
return _twain.GetExtendedImageInfo(ref container);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -15,9 +15,9 @@ namespace NTwain.Triplets.AudioDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.AUDIO, DAT.AUDIOFILEXFER, msg, IntPtr.Zero);
|
||||
}
|
||||
@ -26,11 +26,11 @@ namespace NTwain.Triplets.AudioDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.AUDIO, DAT.AUDIOFILEXFER, msg, IntPtr.Zero);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.AUDIO, DAT.AUDIOFILEXFER, msg, IntPtr.Zero);
|
||||
}
|
||||
|
@ -15,9 +15,9 @@ namespace NTwain.Triplets.AudioDATs
|
||||
{
|
||||
data = default;
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.AUDIO, DAT.AUDIOINFO, msg, ref data);
|
||||
}
|
||||
@ -26,11 +26,11 @@ namespace NTwain.Triplets.AudioDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.AUDIO, DAT.AUDIOINFO, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.AUDIO, DAT.AUDIOINFO, msg, ref data);
|
||||
}
|
||||
|
@ -16,9 +16,9 @@ namespace NTwain.Triplets.AudioDATs
|
||||
{
|
||||
data = default;
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.AUDIO, DAT.AUDIONATIVEXFER, msg, ref data);
|
||||
}
|
||||
@ -27,11 +27,11 @@ namespace NTwain.Triplets.AudioDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.AUDIO, DAT.AUDIONATIVEXFER, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.AUDIO, DAT.AUDIONATIVEXFER, msg, ref data);
|
||||
}
|
||||
|
@ -11,9 +11,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
public TWRC RegisterCallback(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, ref TW_CALLBACK data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.CALLBACK, MSG.REGISTER_CALLBACK, ref data);
|
||||
}
|
||||
@ -22,11 +22,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.CALLBACK, MSG.REGISTER_CALLBACK, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.CONTROL, DAT.CALLBACK, MSG.REGISTER_CALLBACK, ref data);
|
||||
}
|
||||
|
@ -11,9 +11,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
public TWRC RegisterCallback(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, ref TW_CALLBACK2 data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.CALLBACK2, MSG.REGISTER_CALLBACK, ref data);
|
||||
}
|
||||
@ -22,11 +22,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.CALLBACK2, MSG.REGISTER_CALLBACK, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.CONTROL, DAT.CALLBACK2, MSG.REGISTER_CALLBACK, ref data);
|
||||
}
|
||||
|
@ -34,9 +34,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg, ref TW_CAPABILITY data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.CAPABILITY, msg, ref data);
|
||||
}
|
||||
@ -45,11 +45,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.CAPABILITY, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.CONTROL, DAT.CAPABILITY, msg, ref data);
|
||||
}
|
||||
|
@ -32,9 +32,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, ushort dat, MSG msg, ref TW_CAPABILITY data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, (DAT)dat, msg, ref data);
|
||||
}
|
||||
@ -43,11 +43,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, (DAT)dat, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.CONTROL, (DAT)dat, msg, ref data);
|
||||
}
|
||||
|
@ -20,9 +20,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg, ref TW_CUSTOMDSDATA data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.CUSTOMDSDATA, msg, ref data);
|
||||
}
|
||||
@ -31,11 +31,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.CUSTOMDSDATA, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.CONTROL, DAT.CUSTOMDSDATA, msg, ref data);
|
||||
}
|
||||
|
@ -12,9 +12,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
{
|
||||
data = default;
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.DEVICEEVENT, MSG.GET, ref data);
|
||||
}
|
||||
@ -23,11 +23,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.DEVICEEVENT, MSG.GET, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.CONTROL, DAT.DEVICEEVENT, MSG.GET, ref data);
|
||||
}
|
||||
|
@ -42,9 +42,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, MSG msg, ref TW_ENTRYPOINT entry)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, IntPtr.Zero, DG.CONTROL, DAT.ENTRYPOINT, msg, ref entry);
|
||||
}
|
||||
@ -57,10 +57,10 @@ namespace NTwain.Triplets.ControlDATs
|
||||
//{
|
||||
// var app = Session._appIdentity;
|
||||
//}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, IntPtr.Zero, DG.CONTROL, DAT.ENTRYPOINT, msg, ref entry);
|
||||
}
|
||||
|
@ -11,9 +11,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
public TWRC ProcessEvent(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, ref TW_EVENT data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.EVENT, MSG.PROCESSEVENT, ref data);
|
||||
}
|
||||
@ -22,11 +22,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.EVENT, MSG.PROCESSEVENT, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.CONTROL, DAT.EVENT, MSG.PROCESSEVENT, ref data);
|
||||
}
|
||||
|
@ -34,9 +34,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg, ref TW_FILESYSTEM data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.FILESYSTEM, msg, ref data);
|
||||
}
|
||||
@ -45,11 +45,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.FILESYSTEM, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.CONTROL, DAT.FILESYSTEM, msg, ref data);
|
||||
}
|
||||
|
@ -73,9 +73,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, MSG msg, ref TW_IDENTITY_LEGACY ds)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, IntPtr.Zero, DG.CONTROL, DAT.IDENTITY, msg, ref ds);
|
||||
}
|
||||
@ -84,11 +84,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, IntPtr.Zero, DG.CONTROL, DAT.IDENTITY, msg, ref ds);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX osxds = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, IntPtr.Zero, DG.CONTROL, DAT.IDENTITY, msg, ref osxds);
|
||||
}
|
||||
|
@ -15,9 +15,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
data.SizeOf = (uint)Marshal.SizeOf<TW_METRICS>();
|
||||
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.METRICS, MSG.GET, ref data);
|
||||
}
|
||||
@ -26,11 +26,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.METRICS, MSG.GET, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.CONTROL, DAT.METRICS, MSG.GET, ref data);
|
||||
}
|
||||
|
@ -30,9 +30,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, MSG msg, IntPtr hwnd)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, IntPtr.Zero, DG.CONTROL, DAT.PARENT, msg, ref hwnd);
|
||||
}
|
||||
@ -47,10 +47,10 @@ namespace NTwain.Triplets.ControlDATs
|
||||
// rc = NativeMethods.LinuxDsmEntryParent(ref app, IntPtr.Zero, DG.CONTROL, DAT.PARENT, msg, ref hwnd);
|
||||
// if (rc == TWRC.SUCCESS) Session._appIdentity = app;
|
||||
//}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, IntPtr.Zero, DG.CONTROL, DAT.PARENT, msg, hwnd);
|
||||
}
|
||||
|
@ -11,9 +11,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
public TWRC PassThrough(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, ref TW_PASSTHRU data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.PASSTHRU, MSG.PASSTHRU, ref data);
|
||||
}
|
||||
@ -22,11 +22,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.PASSTHRU, MSG.PASSTHRU, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.CONTROL, DAT.PASSTHRU, MSG.PASSTHRU, ref data);
|
||||
}
|
||||
|
@ -21,9 +21,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg, ref TW_PENDINGXFERS data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.PENDINGXFERS, msg, ref data);
|
||||
}
|
||||
@ -32,11 +32,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.PENDINGXFERS, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.CONTROL, DAT.PENDINGXFERS, msg, ref data);
|
||||
}
|
||||
|
@ -30,9 +30,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg, ref TW_SETUPFILEXFER data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.SETUPFILEXFER, msg, ref data);
|
||||
}
|
||||
@ -41,11 +41,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.SETUPFILEXFER, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.CONTROL, DAT.SETUPFILEXFER, msg, ref data);
|
||||
}
|
||||
|
@ -12,9 +12,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
{
|
||||
data = default;
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.SETUPMEMXFER, MSG.GET, ref data);
|
||||
}
|
||||
@ -23,11 +23,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.SETUPMEMXFER, MSG.GET, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.CONTROL, DAT.SETUPMEMXFER, MSG.GET, ref data);
|
||||
}
|
||||
|
@ -13,9 +13,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
{
|
||||
status = default;
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, IntPtr.Zero, DG.CONTROL, DAT.STATUS, MSG.GET, ref status);
|
||||
}
|
||||
@ -24,10 +24,10 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, IntPtr.Zero, DG.CONTROL, DAT.STATUS, MSG.GET, ref status);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, IntPtr.Zero, DG.CONTROL, DAT.STATUS, MSG.GET, ref status);
|
||||
}
|
||||
@ -43,9 +43,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
{
|
||||
status = default;
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.STATUS, MSG.GET, ref status);
|
||||
}
|
||||
@ -54,11 +54,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.STATUS, MSG.GET, ref status);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX osxds = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref osxds, DG.CONTROL, DAT.STATUS, MSG.GET, ref status);
|
||||
}
|
||||
|
@ -23,9 +23,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
{
|
||||
extendedStatus = new TW_STATUSUTF8 { Status = status };
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, IntPtr.Zero, DG.CONTROL, DAT.STATUSUTF8, MSG.GET, ref extendedStatus);
|
||||
}
|
||||
@ -34,10 +34,10 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, IntPtr.Zero, DG.CONTROL, DAT.STATUSUTF8, MSG.GET, ref extendedStatus);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, IntPtr.Zero, DG.CONTROL, DAT.STATUSUTF8, MSG.GET, ref extendedStatus);
|
||||
}
|
||||
|
@ -14,9 +14,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg, ref TW_TWAINDIRECT data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.CIECOLOR, msg, ref data);
|
||||
}
|
||||
@ -25,11 +25,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.CIECOLOR, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.CIECOLOR, msg, ref data);
|
||||
}
|
||||
|
@ -20,9 +20,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg, ref TW_USERINTERFACE data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.USERINTERFACE, msg, ref data);
|
||||
}
|
||||
@ -31,11 +31,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.USERINTERFACE, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.CONTROL, DAT.USERINTERFACE, msg, ref data);
|
||||
}
|
||||
|
@ -22,9 +22,9 @@ namespace NTwain.Triplets.ControlDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg, ref DG data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.XFERGROUP, msg, ref data);
|
||||
}
|
||||
@ -33,11 +33,11 @@ namespace NTwain.Triplets.ControlDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.CONTROL, DAT.XFERGROUP, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.CONTROL, DAT.XFERGROUP, msg, ref data);
|
||||
}
|
||||
|
@ -15,9 +15,9 @@ namespace NTwain.Triplets.ImageDATs
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
data = default;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.CIECOLOR, msg, ref data);
|
||||
}
|
||||
@ -26,11 +26,11 @@ namespace NTwain.Triplets.ImageDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.CIECOLOR, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.CIECOLOR, msg, ref data);
|
||||
}
|
||||
|
@ -8,35 +8,31 @@ namespace NTwain.Triplets.ImageDATs
|
||||
/// </summary>
|
||||
public class ExtImageInfo
|
||||
{
|
||||
public TWRC Get(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, out TW_EXTIMAGEINFO data)
|
||||
=> DoIt(ref app, ref ds, MSG.GET, out data);
|
||||
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg, out TW_EXTIMAGEINFO data)
|
||||
public TWRC Get(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, ref TW_EXTIMAGEINFO data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
data = default;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.EXTIMAGEINFO, msg, ref data);
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.EXTIMAGEINFO, MSG.GET, ref data);
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.EXTIMAGEINFO, msg, ref data);
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.EXTIMAGEINFO, MSG.GET, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.EXTIMAGEINFO, msg, ref data);
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.EXTIMAGEINFO, MSG.GET, ref data);
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = OSXNewDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.EXTIMAGEINFO, msg, ref data);
|
||||
rc = OSXNewDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.EXTIMAGEINFO, MSG.GET, ref data);
|
||||
}
|
||||
}
|
||||
return rc;
|
||||
|
@ -29,9 +29,9 @@ namespace NTwain.Triplets.ImageDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg, ref TW_FILTER data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.FILTER, msg, ref data);
|
||||
}
|
||||
@ -40,11 +40,11 @@ namespace NTwain.Triplets.ImageDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.FILTER, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.FILTER, msg, ref data);
|
||||
}
|
||||
|
@ -19,9 +19,9 @@ namespace NTwain.Triplets.ImageDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg, ref TW_GRAYRESPONSE data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.GRAYRESPONSE, msg, ref data);
|
||||
}
|
||||
@ -30,11 +30,11 @@ namespace NTwain.Triplets.ImageDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.GRAYRESPONSE, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.GRAYRESPONSE, msg, ref data);
|
||||
}
|
||||
|
@ -15,9 +15,9 @@ namespace NTwain.Triplets.ImageDATs
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
data = default;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.ICCPROFILE, msg, ref data);
|
||||
}
|
||||
@ -26,11 +26,11 @@ namespace NTwain.Triplets.ImageDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.ICCPROFILE, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.ICCPROFILE, msg, ref data);
|
||||
}
|
||||
|
@ -15,9 +15,9 @@ namespace NTwain.Triplets.ImageDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.IMAGEFILEXFER, msg, IntPtr.Zero);
|
||||
}
|
||||
@ -26,11 +26,11 @@ namespace NTwain.Triplets.ImageDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.IMAGEFILEXFER, msg, IntPtr.Zero);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.IMAGEFILEXFER, msg, IntPtr.Zero);
|
||||
}
|
||||
|
@ -15,9 +15,9 @@ namespace NTwain.Triplets.ImageDATs
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
data = default;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.IMAGEINFO, msg, ref data);
|
||||
}
|
||||
@ -26,11 +26,11 @@ namespace NTwain.Triplets.ImageDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.IMAGEINFO, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.IMAGEINFO, msg, ref data);
|
||||
}
|
||||
|
@ -29,9 +29,9 @@ namespace NTwain.Triplets.ImageDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg, ref TW_IMAGELAYOUT data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.IMAGELAYOUT, msg, ref data);
|
||||
}
|
||||
@ -40,11 +40,11 @@ namespace NTwain.Triplets.ImageDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.IMAGELAYOUT, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.IMAGELAYOUT, msg, ref data);
|
||||
}
|
||||
|
@ -11,9 +11,9 @@ namespace NTwain.Triplets.ImageDATs
|
||||
public TWRC Get(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, ref TW_IMAGEMEMXFER data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.IMAGEMEMFILEXFER, MSG.GET, ref data);
|
||||
}
|
||||
@ -29,11 +29,11 @@ namespace NTwain.Triplets.ImageDATs
|
||||
public TWRC Get(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, ref TW_IMAGEMEMXFER_MACOSX data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.IMAGEMEMXFER, MSG.GET, ref data);
|
||||
}
|
||||
|
@ -11,9 +11,9 @@ namespace NTwain.Triplets.ImageDATs
|
||||
public TWRC Get(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, ref TW_IMAGEMEMXFER data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.IMAGEMEMXFER, MSG.GET, ref data);
|
||||
}
|
||||
@ -28,11 +28,11 @@ namespace NTwain.Triplets.ImageDATs
|
||||
public TWRC Get(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, ref TW_IMAGEMEMXFER_MACOSX data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.IMAGEMEMXFER, MSG.GET, ref data);
|
||||
}
|
||||
|
@ -16,9 +16,9 @@ namespace NTwain.Triplets.ImageDATs
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
data = IntPtr.Zero;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.IMAGENATIVEXFER, msg, ref data);
|
||||
}
|
||||
@ -27,11 +27,11 @@ namespace NTwain.Triplets.ImageDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.IMAGENATIVEXFER, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.IMAGENATIVEXFER, msg, ref data);
|
||||
}
|
||||
|
@ -29,9 +29,9 @@ namespace NTwain.Triplets.ImageDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg, ref TW_JPEGCOMPRESSION data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.JPEGCOMPRESSION, msg, ref data);
|
||||
}
|
||||
@ -40,11 +40,11 @@ namespace NTwain.Triplets.ImageDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.JPEGCOMPRESSION, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.JPEGCOMPRESSION, msg, ref data);
|
||||
}
|
||||
|
@ -29,9 +29,9 @@ namespace NTwain.Triplets.ImageDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg, ref TW_PALETTE8 data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.PALETTE8, msg, ref data);
|
||||
}
|
||||
@ -40,11 +40,11 @@ namespace NTwain.Triplets.ImageDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.PALETTE8, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.PALETTE8, msg, ref data);
|
||||
}
|
||||
|
@ -19,9 +19,9 @@ namespace NTwain.Triplets.ImageDATs
|
||||
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg, ref TW_RGBRESPONSE data)
|
||||
{
|
||||
var rc = TWRC.FAILURE;
|
||||
if (TwainPlatform.IsWindows)
|
||||
if (TWPlatform.IsWindows)
|
||||
{
|
||||
if (TwainPlatform.Is32bit && TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.RGBRESPONSE, msg, ref data);
|
||||
}
|
||||
@ -30,11 +30,11 @@ namespace NTwain.Triplets.ImageDATs
|
||||
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.RGBRESPONSE, msg, ref data);
|
||||
}
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
TW_IDENTITY_MACOSX app2 = app;
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.PreferLegacyDSM)
|
||||
if (TWPlatform.PreferLegacyDSM)
|
||||
{
|
||||
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.RGBRESPONSE, msg, ref data);
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ namespace NTwain
|
||||
{
|
||||
IntPtr cbPtr = IntPtr.Zero;
|
||||
|
||||
if (TwainPlatform.IsMacOSX)
|
||||
if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
cbPtr = Marshal.GetFunctionPointerForDelegate(_osxCallbackDelegate);
|
||||
}
|
||||
|
@ -17,15 +17,15 @@ namespace NTwain
|
||||
{
|
||||
return _entryPoint.DSM_MemAllocate(size);
|
||||
}
|
||||
else if (TwainPlatform.IsWindows)
|
||||
else if (TWPlatform.IsWindows)
|
||||
{
|
||||
return NativeMemoryMethods.WinGlobalAlloc(NativeMemoryMethods.AllocFlag.GHND, (UIntPtr)size);
|
||||
}
|
||||
else if (TwainPlatform.IsLinux)
|
||||
else if (TWPlatform.IsLinux)
|
||||
{
|
||||
return Marshal.AllocHGlobal((int)size);
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
return Marshal.AllocHGlobal((int)size);
|
||||
}
|
||||
@ -43,15 +43,15 @@ namespace NTwain
|
||||
{
|
||||
_entryPoint.DSM_MemFree(handle);
|
||||
}
|
||||
else if (TwainPlatform.IsWindows)
|
||||
else if (TWPlatform.IsWindows)
|
||||
{
|
||||
NativeMemoryMethods.WinGlobalFree(handle);
|
||||
}
|
||||
else if (TwainPlatform.IsLinux)
|
||||
else if (TWPlatform.IsLinux)
|
||||
{
|
||||
Marshal.FreeHGlobal(handle);
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
Marshal.FreeHGlobal(handle);
|
||||
}
|
||||
@ -69,15 +69,15 @@ namespace NTwain
|
||||
{
|
||||
return _entryPoint.DSM_MemLock(handle);
|
||||
}
|
||||
else if (TwainPlatform.IsWindows)
|
||||
else if (TWPlatform.IsWindows)
|
||||
{
|
||||
return NativeMemoryMethods.WinGlobalLock(handle);
|
||||
}
|
||||
else if (TwainPlatform.IsLinux)
|
||||
else if (TWPlatform.IsLinux)
|
||||
{
|
||||
return handle;
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
return handle;
|
||||
}
|
||||
@ -95,14 +95,14 @@ namespace NTwain
|
||||
{
|
||||
_entryPoint.DSM_MemUnlock(handle);
|
||||
}
|
||||
else if (TwainPlatform.IsWindows)
|
||||
else if (TWPlatform.IsWindows)
|
||||
{
|
||||
NativeMemoryMethods.WinGlobalUnlock(handle);
|
||||
}
|
||||
else if (TwainPlatform.IsLinux)
|
||||
else if (TWPlatform.IsLinux)
|
||||
{
|
||||
}
|
||||
else if (TwainPlatform.IsMacOSX)
|
||||
else if (TWPlatform.IsMacOSX)
|
||||
{
|
||||
}
|
||||
else
|
||||
|
@ -15,10 +15,6 @@ namespace NTwain
|
||||
public TW_IDENTITY_LEGACY AppIdentity
|
||||
{
|
||||
get => _appIdentity;
|
||||
internal set
|
||||
{
|
||||
_appIdentity = value;
|
||||
}
|
||||
}
|
||||
TW_IDENTITY_LEGACY _appIdentity;
|
||||
|
||||
@ -28,7 +24,7 @@ namespace NTwain
|
||||
public TW_IDENTITY_LEGACY CurrentSource
|
||||
{
|
||||
get => _currentDS;
|
||||
internal set
|
||||
protected set
|
||||
{
|
||||
_currentDS = value;
|
||||
try
|
||||
@ -56,16 +52,22 @@ namespace NTwain
|
||||
public STATE State
|
||||
{
|
||||
get => _state;
|
||||
internal set
|
||||
protected set
|
||||
{
|
||||
if (_state != value)
|
||||
{
|
||||
_state = value;
|
||||
try
|
||||
if (StateChanged != null)
|
||||
{
|
||||
StateChanged?.Invoke(this, value); // TODO: should care about thread
|
||||
_uiThreadMarshaller.Invoke(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
StateChanged.Invoke(this, value);
|
||||
}
|
||||
catch { }
|
||||
});
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -125,8 +127,7 @@ namespace NTwain
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Fires when <see cref="State"/> changes.
|
||||
/// This is not guaranteed to be raised on the UI thread.
|
||||
/// Fires when <see cref="State"/> changes.
|
||||
/// </summary>
|
||||
public event TwainEventDelegate<STATE>? StateChanged;
|
||||
|
||||
@ -157,8 +158,14 @@ namespace NTwain
|
||||
public event TwainEventDelegate<TransferReadyEventArgs>? TransferReady;
|
||||
|
||||
/// <summary>
|
||||
/// Fires when transferred data is available for app to use.
|
||||
/// Fires when there's a transfer cancellation, e.g. if the user pressed the "Cancel" button.
|
||||
/// </summary>
|
||||
public event TwainEventDelegate<DataTransferredEventArgs>? DataTransferred;
|
||||
public event TwainEventDelegate<TransferCanceledEventArgs>? TransferCanceled;
|
||||
|
||||
/// <summary>
|
||||
/// Fires when transferred data is available for app to use.
|
||||
/// This is NOT raised on the UI thread for reasons.
|
||||
/// </summary>
|
||||
public event TwainEventDelegate<TransferredEventArgs>? Transferred;
|
||||
}
|
||||
}
|
||||
|
@ -3,14 +3,8 @@ using NTwain.Native;
|
||||
using NTwain.Triplets;
|
||||
using System;
|
||||
using System.Buffers;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using System.Xml.Serialization;
|
||||
using static NTwain.Native.ImageTools;
|
||||
|
||||
namespace NTwain
|
||||
{
|
||||
@ -23,6 +17,17 @@ namespace NTwain
|
||||
// so the array max is made with 32 MB. Typical usage should be a lot less.
|
||||
static readonly ArrayPool<byte> XferMemPool = ArrayPool<byte>.Create(32 * 1024 * 1024, 8);
|
||||
|
||||
/// <summary>
|
||||
/// Can only be called in state 7, so it's hidden here and
|
||||
/// only exposed in data transferred event.
|
||||
/// </summary>
|
||||
/// <param name="container"></param>
|
||||
/// <returns></returns>
|
||||
internal STS GetExtendedImageInfo(ref TW_EXTIMAGEINFO container)
|
||||
{
|
||||
return WrapInSTS(DGImage.ExtImageInfo.Get(ref _appIdentity, ref _currentDS, ref container));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Start the transfer loop.
|
||||
@ -67,14 +72,17 @@ namespace NTwain
|
||||
do
|
||||
{
|
||||
var readyArgs = new TransferReadyEventArgs(pending.Count, (TWEJ)pending.EOJ);
|
||||
_uiThreadMarshaller.Invoke(() =>
|
||||
if (TransferReady != null)
|
||||
{
|
||||
try
|
||||
_uiThreadMarshaller.Invoke(() =>
|
||||
{
|
||||
TransferReady?.Invoke(this, readyArgs);
|
||||
}
|
||||
catch { } // don't let consumer kill the loop if they have exception
|
||||
});
|
||||
try
|
||||
{
|
||||
TransferReady.Invoke(this, readyArgs);
|
||||
}
|
||||
catch { } // don't let consumer kill the loop if they have exception
|
||||
});
|
||||
}
|
||||
|
||||
if (readyArgs.Cancel == CancelType.EndNow || _closeDsRequested)
|
||||
{
|
||||
@ -108,7 +116,7 @@ namespace NTwain
|
||||
try
|
||||
{
|
||||
if (readyArgs.Cancel != CancelType.SkipCurrent &&
|
||||
DataTransferred != null)
|
||||
Transferred != null)
|
||||
{
|
||||
// transfer normally and only if someone's listening
|
||||
// to DataTransferred event
|
||||
@ -146,11 +154,17 @@ namespace NTwain
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
try
|
||||
if (TransferError != null)
|
||||
{
|
||||
TransferError?.Invoke(this, new TransferErrorEventArgs(ex));
|
||||
_uiThreadMarshaller.Invoke(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
TransferError?.Invoke(this, new TransferErrorEventArgs(ex));
|
||||
}
|
||||
catch { }
|
||||
});
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
} while (sts.RC == TWRC.SUCCESS && pending.Count != 0);
|
||||
@ -176,6 +190,14 @@ namespace NTwain
|
||||
// ok to keep going
|
||||
break;
|
||||
case TWRC.CANCEL:
|
||||
// might eventually have option to cancel this or all like transfer ready
|
||||
if (TransferCanceled != null)
|
||||
{
|
||||
_uiThreadMarshaller.Invoke(() =>
|
||||
{
|
||||
TransferCanceled.Invoke(this, new TransferCanceledEventArgs());
|
||||
});
|
||||
};
|
||||
TW_PENDINGXFERS pending = default;
|
||||
DGControl.PendingXfers.EndXfer(ref _appIdentity, ref _currentDS, ref pending);
|
||||
// todo: also reset?
|
||||
@ -221,8 +243,8 @@ namespace NTwain
|
||||
try
|
||||
{
|
||||
DGAudio.AudioInfo.Get(ref _appIdentity, ref _currentDS, out TW_AUDIOINFO info);
|
||||
var args = new DataTransferredEventArgs(info, fileSetup);
|
||||
DataTransferred?.Invoke(this, args);
|
||||
var args = new TransferredEventArgs(info, fileSetup);
|
||||
Transferred?.Invoke(this, args);
|
||||
}
|
||||
catch { }
|
||||
;
|
||||
@ -255,8 +277,8 @@ namespace NTwain
|
||||
try
|
||||
{
|
||||
DGAudio.AudioInfo.Get(ref _appIdentity, ref _currentDS, out TW_AUDIOINFO info);
|
||||
var args = new DataTransferredEventArgs(info, data);
|
||||
DataTransferred?.Invoke(this, args);
|
||||
var args = new TransferredEventArgs(info, data);
|
||||
Transferred?.Invoke(this, args);
|
||||
}
|
||||
catch { }
|
||||
finally
|
||||
@ -307,7 +329,7 @@ namespace NTwain
|
||||
{
|
||||
do
|
||||
{
|
||||
rc = TwainPlatform.IsMacOSX ?
|
||||
rc = TWPlatform.IsMacOSX ?
|
||||
DGImage.ImageMemXfer.Get(ref _appIdentity, ref _currentDS, ref memXferOSX) :
|
||||
DGImage.ImageMemXfer.Get(ref _appIdentity, ref _currentDS, ref memXfer);
|
||||
|
||||
@ -315,7 +337,7 @@ namespace NTwain
|
||||
{
|
||||
try
|
||||
{
|
||||
var written = TwainPlatform.IsMacOSX ?
|
||||
var written = TWPlatform.IsMacOSX ?
|
||||
memXferOSX.BytesWritten : memXfer.BytesWritten;
|
||||
|
||||
IntPtr lockedPtr = Lock(memPtr);
|
||||
@ -387,7 +409,7 @@ namespace NTwain
|
||||
{
|
||||
do
|
||||
{
|
||||
rc = TwainPlatform.IsMacOSX ?
|
||||
rc = TWPlatform.IsMacOSX ?
|
||||
DGImage.ImageMemFileXfer.Get(ref _appIdentity, ref _currentDS, ref memXferOSX) :
|
||||
DGImage.ImageMemFileXfer.Get(ref _appIdentity, ref _currentDS, ref memXfer);
|
||||
|
||||
@ -395,7 +417,7 @@ namespace NTwain
|
||||
{
|
||||
try
|
||||
{
|
||||
var written = TwainPlatform.IsMacOSX ?
|
||||
var written = TWPlatform.IsMacOSX ?
|
||||
memXferOSX.BytesWritten : memXfer.BytesWritten;
|
||||
|
||||
IntPtr lockedPtr = Lock(memPtr);
|
||||
@ -421,8 +443,8 @@ namespace NTwain
|
||||
{
|
||||
DGImage.ImageInfo.Get(ref _appIdentity, ref _currentDS, out TW_IMAGEINFO info);
|
||||
// ToArray bypasses the XferMemPool but I guess this will have to do for now
|
||||
var args = new DataTransferredEventArgs(info, fileSetup, new BufferedData { Buffer = outStream.ToArray(), Length = (int)outStream.Length });
|
||||
DataTransferred?.Invoke(this, args);
|
||||
var args = new TransferredEventArgs(this, info, fileSetup, new BufferedData { Buffer = outStream.ToArray(), Length = (int)outStream.Length });
|
||||
Transferred?.Invoke(this, args);
|
||||
}
|
||||
catch { }
|
||||
|
||||
@ -449,8 +471,8 @@ namespace NTwain
|
||||
try
|
||||
{
|
||||
DGImage.ImageInfo.Get(ref _appIdentity, ref _currentDS, out TW_IMAGEINFO info);
|
||||
var args = new DataTransferredEventArgs(info, fileSetup, default);
|
||||
DataTransferred?.Invoke(this, args);
|
||||
var args = new TransferredEventArgs(this, info, fileSetup, default);
|
||||
Transferred?.Invoke(this, args);
|
||||
}
|
||||
catch { }
|
||||
|
||||
@ -495,8 +517,8 @@ namespace NTwain
|
||||
try
|
||||
{
|
||||
DGImage.ImageInfo.Get(ref _appIdentity, ref _currentDS, out TW_IMAGEINFO info);
|
||||
var args = new DataTransferredEventArgs(info, null, data);
|
||||
DataTransferred?.Invoke(this, args);
|
||||
var args = new TransferredEventArgs(this, info, null, data);
|
||||
Transferred?.Invoke(this, args);
|
||||
}
|
||||
catch { }
|
||||
finally
|
||||
|
@ -133,23 +133,23 @@ namespace NTwain
|
||||
});
|
||||
break;
|
||||
case MSG.DEVICEEVENT:
|
||||
if (DGControl.DeviceEvent.Get(ref _appIdentity, ref _currentDS, out TW_DEVICEEVENT de) == TWRC.SUCCESS)
|
||||
if (DeviceEvent != null && DGControl.DeviceEvent.Get(ref _appIdentity, ref _currentDS, out TW_DEVICEEVENT de) == TWRC.SUCCESS)
|
||||
{
|
||||
_uiThreadMarshaller.BeginInvoke(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
DeviceEvent?.Invoke(this, de);
|
||||
DeviceEvent.Invoke(this, de);
|
||||
}
|
||||
catch { }
|
||||
});
|
||||
}
|
||||
break;
|
||||
case MSG.XFERREADY:
|
||||
_uiThreadMarshaller.Invoke(() =>
|
||||
{
|
||||
State = STATE.S6;
|
||||
});
|
||||
//_uiThreadMarshaller.Invoke(() =>
|
||||
//{
|
||||
State = STATE.S6;
|
||||
//});
|
||||
EnterTransferRoutine();
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user