mirror of
https://github.com/soukoku/ntwain.git
synced 2025-08-20 09:50:50 +08:00
Idea for getting EXT_IMAGEINFO in transferred event.
This commit is contained in:
parent
96a212a42b
commit
63b10c85e0
@ -32,7 +32,7 @@ namespace WinFormSample
|
||||
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 +101,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;
|
||||
@ -174,7 +174,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));
|
||||
|
||||
@ -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},
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -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,222 @@ 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;
|
||||
//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(uint a_uIndex, ref TW_INFO a_twinfo)
|
||||
public void Get(int a_uIndex, ref TW_INFO a_twinfo)
|
||||
{
|
||||
switch (a_uIndex)
|
||||
{
|
||||
@ -1718,110 +1715,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 +1923,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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -821,9 +821,208 @@ namespace NTwain.Data
|
||||
}
|
||||
}
|
||||
|
||||
//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)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
partial struct TW_INFO
|
||||
{
|
||||
//public unsafe TValue ReadTWTYData<TValue>(int itemIndex = 0) where TValue : struct
|
||||
//{
|
||||
// if (ReturnCode != TWRC.SUCCESS || NumItems == 0) return default;
|
||||
|
||||
// var sz = ItemType.GetItemTypeSize();
|
||||
// if (ItemType == TWTY.HANDLE || (sz * NumItems) > 4)
|
||||
// {
|
||||
// // read as ptr
|
||||
// // this is probably not correct
|
||||
// //((IntPtr)Item.ToPointer()).ReadTWTYData<TValue>(ItemType;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// // read as 4 byte number
|
||||
// }
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// Frees any memory used by this if necessary.
|
||||
/// </summary>
|
||||
/// <param name="memMgr"></param>
|
||||
internal unsafe void Free(IMemoryManager memMgr)
|
||||
{
|
||||
if (ReturnCode == TWRC.SUCCESS && Item != UIntPtr.Zero &&
|
||||
(ItemType == TWTY.HANDLE || (ItemType.GetItemTypeSize() * NumItems) > 4))
|
||||
{
|
||||
// this is probably not correct
|
||||
memMgr.Free((IntPtr)Item.ToPointer());
|
||||
Item = UIntPtr.Zero; // this is only a copy but whatev
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
@ -118,7 +117,7 @@ namespace NTwain.Data
|
||||
lockedPtr += Marshal.SizeOf(onevalue);
|
||||
}
|
||||
|
||||
return ReadContainerData<TValue>(lockedPtr, itemType, 0);
|
||||
return ReadTWTYData<TValue>(lockedPtr, itemType, 0);
|
||||
}
|
||||
finally
|
||||
{
|
||||
@ -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
|
||||
@ -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;
|
||||
}
|
||||
@ -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"/>.
|
||||
/// </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
|
||||
static TValue ReadTWTYData<TValue>(this IntPtr intptr, TWTY type, int itemIndex) where TValue : struct
|
||||
{
|
||||
var isEnum = typeof(TValue).IsEnum;
|
||||
|
||||
|
||||
@ -8,22 +8,18 @@ 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 (TwainPlatform.Is32bit && TwainPlatform.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)
|
||||
@ -32,11 +28,11 @@ namespace NTwain.Triplets.ImageDATs
|
||||
TW_IDENTITY_MACOSX ds2 = ds;
|
||||
if (TwainPlatform.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;
|
||||
|
||||
@ -61,11 +61,11 @@ namespace NTwain
|
||||
{
|
||||
_uiThreadMarshaller.Invoke(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
StateChanged.Invoke(this, value);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
catch { }
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -127,7 +127,7 @@ namespace NTwain
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Fires when <see cref="State"/> changes.
|
||||
/// Fires when <see cref="State"/> changes.
|
||||
/// </summary>
|
||||
public event TwainEventDelegate<STATE>? StateChanged;
|
||||
|
||||
|
||||
@ -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.
|
||||
@ -69,14 +74,14 @@ namespace NTwain
|
||||
var readyArgs = new TransferReadyEventArgs(pending.Count, (TWEJ)pending.EOJ);
|
||||
if (TransferReady != null)
|
||||
{
|
||||
_uiThreadMarshaller.Invoke(() =>
|
||||
{
|
||||
try
|
||||
_uiThreadMarshaller.Invoke(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
TransferReady.Invoke(this, readyArgs);
|
||||
}
|
||||
catch { } // don't let consumer kill the loop if they have exception
|
||||
});
|
||||
}
|
||||
catch { } // don't let consumer kill the loop if they have exception
|
||||
});
|
||||
}
|
||||
|
||||
if (readyArgs.Cancel == CancelType.EndNow || _closeDsRequested)
|
||||
@ -153,15 +158,15 @@ namespace NTwain
|
||||
{
|
||||
_uiThreadMarshaller.Invoke(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
TransferError?.Invoke(this, new TransferErrorEventArgs(ex));
|
||||
}
|
||||
catch { }
|
||||
try
|
||||
{
|
||||
TransferError?.Invoke(this, new TransferErrorEventArgs(ex));
|
||||
}
|
||||
catch { }
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} while (sts.RC == TWRC.SUCCESS && pending.Count != 0);
|
||||
}
|
||||
|
||||
|
||||
@ -148,7 +148,7 @@ namespace NTwain
|
||||
case MSG.XFERREADY:
|
||||
//_uiThreadMarshaller.Invoke(() =>
|
||||
//{
|
||||
State = STATE.S6;
|
||||
State = STATE.S6;
|
||||
//});
|
||||
EnterTransferRoutine();
|
||||
break;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user