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:
Eugene Wang
2023-04-09 17:52:23 -04:00
committed by GitHub
parent a0da65dcca
commit fe89e661fc
59 changed files with 3708 additions and 731 deletions

View File

@@ -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);
}

View File

@@ -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);
}
}