ntwain/src/NTwain/Triplets/ImageDATs/ImageLayout.cs
Eugene Wang fe89e661fc
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.
2023-04-09 17:52:23 -04:00

60 lines
1.9 KiB
C#

using NTwain.Data;
using NTwain.DSM;
namespace NTwain.Triplets.ImageDATs
{
/// <summary>
/// Contains calls used with <see cref="DG.IMAGE"/> and <see cref="DAT.IMAGELAYOUT"/>.
/// </summary>
public class ImageLayout
{
public TWRC Get(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, out TW_IMAGELAYOUT data)
{
data = default;
return DoIt(ref app, ref ds, MSG.GET, ref data);
}
public TWRC GetDefault(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, out TW_IMAGELAYOUT data)
{
data = default;
return DoIt(ref app, ref ds, MSG.GETDEFAULT, ref data);
}
public TWRC Set(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, ref TW_IMAGELAYOUT data)
=> DoIt(ref app, ref ds, MSG.SET, ref data);
public TWRC Reset(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, out TW_IMAGELAYOUT data)
{
data = default;
return DoIt(ref app, ref ds, MSG.RESET, ref data);
}
static TWRC DoIt(ref TW_IDENTITY_LEGACY app, ref TW_IDENTITY_LEGACY ds, MSG msg, ref TW_IMAGELAYOUT data)
{
var rc = TWRC.FAILURE;
if (TWPlatform.IsWindows)
{
if (TWPlatform.Is32bit && TWPlatform.PreferLegacyDSM)
{
rc = WinLegacyDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.IMAGELAYOUT, msg, ref data);
}
else
{
rc = WinNewDSM.DSM_Entry(ref app, ref ds, DG.IMAGE, DAT.IMAGELAYOUT, msg, ref data);
}
}
else if (TWPlatform.IsMacOSX)
{
TW_IDENTITY_MACOSX app2 = app;
TW_IDENTITY_MACOSX ds2 = ds;
if (TWPlatform.PreferLegacyDSM)
{
rc = OSXLegacyDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.IMAGELAYOUT, msg, ref data);
}
else
{
rc = OSXNewDSM.DSM_Entry(ref app2, ref ds2, DG.IMAGE, DAT.IMAGELAYOUT, msg, ref data);
}
}
return rc;
}
}
}