mirror of
https://github.com/soukoku/ntwain.git
synced 2026-02-25 13:04:07 +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:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user