2022-05-03 10:25:52 +00:00
|
|
|
|
#ifndef __HGTWAINIMPL_HPP__
|
|
|
|
|
#define __HGTWAINIMPL_HPP__
|
|
|
|
|
|
|
|
|
|
#include "HGTwain.h"
|
|
|
|
|
#include "../base/HGDll.h"
|
2023-05-12 01:38:37 +00:00
|
|
|
|
#include "../base/HGEvent.h"
|
|
|
|
|
#include "../base/HGThread.h"
|
2023-04-04 05:18:13 +00:00
|
|
|
|
#include "twain/twain.h"
|
2023-05-12 06:39:19 +00:00
|
|
|
|
#include "twain_user/twainui.h"
|
2022-05-03 10:25:52 +00:00
|
|
|
|
#include <vector>
|
2022-07-21 08:20:51 +00:00
|
|
|
|
#include <map>
|
2022-05-03 10:25:52 +00:00
|
|
|
|
|
|
|
|
|
class HGTwainDSMImpl
|
|
|
|
|
{
|
2023-04-03 09:13:53 +00:00
|
|
|
|
friend class HGTwainDSImpl;
|
2022-05-03 10:25:52 +00:00
|
|
|
|
public:
|
|
|
|
|
HGTwainDSMImpl();
|
|
|
|
|
~HGTwainDSMImpl();
|
|
|
|
|
|
2023-03-27 03:17:11 +00:00
|
|
|
|
HGResult Create(HWND hwnd);
|
|
|
|
|
HGResult Destroy();
|
|
|
|
|
HGResult GetDSCount(HGUInt* count);
|
|
|
|
|
HGResult GetDSName(HGUInt index, HGChar* name, HGUInt maxLen);
|
|
|
|
|
HGResult OpenDS(HGUInt index, class HGTwainDSImpl** dsImpl);
|
|
|
|
|
HGResult OpenDefaultDS(class HGTwainDSImpl** dsImpl);
|
|
|
|
|
HGResult OpenSelectedDS(class HGTwainDSImpl** dsImpl);
|
2023-04-04 05:18:13 +00:00
|
|
|
|
HGResult OpenSelectedDSEx(class HGTwainDSImpl** dsImpl);
|
2022-05-03 10:25:52 +00:00
|
|
|
|
|
|
|
|
|
private:
|
2023-03-27 03:17:11 +00:00
|
|
|
|
void RemoveDS(class HGTwainDSImpl* dsImpl);
|
2022-07-21 08:20:51 +00:00
|
|
|
|
static LRESULT CALLBACK NewWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
2022-05-03 10:25:52 +00:00
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
HGDll m_hDll;
|
|
|
|
|
DSMENTRYPROC m_pDSMProc;
|
|
|
|
|
TW_IDENTITY m_AppId;
|
|
|
|
|
HWND m_hWnd;
|
2022-07-21 08:20:51 +00:00
|
|
|
|
static std::map<HWND, HGTwainDSMImpl*> m_mapWnd;
|
|
|
|
|
WNDPROC m_oldWndProc;
|
2023-03-27 03:17:11 +00:00
|
|
|
|
std::vector<class HGTwainDSImpl *> m_listDSImpl;
|
2023-03-25 10:03:47 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class HGTwainDSImpl
|
|
|
|
|
{
|
|
|
|
|
friend class HGTwainDSMImpl;
|
|
|
|
|
public:
|
2023-03-27 03:17:11 +00:00
|
|
|
|
HGTwainDSImpl(HGTwainDSMImpl* dsmImpl);
|
2023-03-25 10:03:47 +00:00
|
|
|
|
~HGTwainDSImpl();
|
|
|
|
|
|
|
|
|
|
public:
|
2023-04-04 05:18:13 +00:00
|
|
|
|
HGResult Open(TW_IDENTITY* iden);
|
2023-03-25 10:03:47 +00:00
|
|
|
|
HGResult Close();
|
2023-03-29 08:16:19 +00:00
|
|
|
|
HGResult GetName(HGChar* name, HGUInt maxLen);
|
2023-04-08 00:53:10 +00:00
|
|
|
|
HGResult GetDeviceName(HGChar* name, HGUInt maxLen);
|
2023-05-12 07:14:18 +00:00
|
|
|
|
|
2023-04-07 06:18:56 +00:00
|
|
|
|
HGResult GetDeviceCustomInfo(HGTwainDeviceCustomInfo *info);
|
2023-05-12 07:14:18 +00:00
|
|
|
|
HGResult Login(const HGChar *user, const HGChar *pwd);
|
|
|
|
|
HGResult Logout();
|
|
|
|
|
HGResult ClearRollerCount();
|
2023-05-17 10:29:08 +00:00
|
|
|
|
HGResult GetDriverLog(const HGChar *fileName);
|
2023-05-12 07:14:18 +00:00
|
|
|
|
HGResult ClearDriverLog();
|
2023-05-17 10:29:08 +00:00
|
|
|
|
HGResult GetDeviceLog(const HGChar *fileName);
|
2023-05-12 07:14:18 +00:00
|
|
|
|
HGResult ClearDeviceLog();
|
|
|
|
|
|
2023-05-20 08:08:55 +00:00
|
|
|
|
HGResult EnableUIOnly(HWND parent, HGDSEventFunc eventFunc, HGPointer eventParam);
|
|
|
|
|
HGResult Enable(HGBool showUI, HWND parent, HGDSEventFunc eventFunc, HGPointer eventParam,
|
2023-03-27 03:17:11 +00:00
|
|
|
|
HGDSImageFunc imageFunc, HGPointer imageParam);
|
2023-05-20 08:27:48 +00:00
|
|
|
|
HGResult EnableWithSingleScan(HWND parent, HGDSEventFunc eventFunc, HGPointer eventParam,
|
2023-05-12 02:29:48 +00:00
|
|
|
|
HGDSImageFunc imageFunc, HGPointer imageParam);
|
2023-03-27 03:17:11 +00:00
|
|
|
|
HGResult Disable();
|
|
|
|
|
|
|
|
|
|
private:
|
2023-05-17 08:45:41 +00:00
|
|
|
|
HGResult SetCapInt(HGUInt cap, TW_UINT16 itemType, HGInt value);
|
|
|
|
|
HGResult ResetCapInt(HGUInt cap, TW_UINT16 itemType);
|
|
|
|
|
HGResult GetCapInt(HGUInt cap, HGInt* value);
|
2023-05-12 07:14:18 +00:00
|
|
|
|
HGResult SetCapStr255(HGUInt cap, const HGChar *value);
|
|
|
|
|
HGResult ResetCapStr255(HGUInt cap);
|
|
|
|
|
HGResult GetCapStr255(HGUInt cap, HGChar *value, HGUInt maxLen);
|
2023-03-25 10:03:47 +00:00
|
|
|
|
HGResult ImageNativeXfer(HGUInt type, HGUInt origin, HGImage* image);
|
|
|
|
|
HGResult EndXfer(HGUInt* count);
|
|
|
|
|
HGResult Reset();
|
|
|
|
|
|
2023-05-12 01:38:37 +00:00
|
|
|
|
static void HGAPI ThreadFunc(HGThread thread, HGPointer param);
|
|
|
|
|
|
2023-03-25 10:03:47 +00:00
|
|
|
|
private:
|
|
|
|
|
HGTwainDSMImpl* m_dsmImpl;
|
|
|
|
|
TW_IDENTITY m_iden;
|
|
|
|
|
HGBool m_open;
|
2023-05-12 02:29:48 +00:00
|
|
|
|
HGBool m_singleScan;
|
|
|
|
|
HGInt m_oldXferCount;
|
2023-03-25 10:03:47 +00:00
|
|
|
|
HGBool m_showUI;
|
|
|
|
|
HWND m_parent;
|
2023-05-20 08:08:55 +00:00
|
|
|
|
HGDSEventFunc m_eventFunc;
|
2023-03-25 10:03:47 +00:00
|
|
|
|
HGPointer m_eventParam;
|
2023-03-27 03:17:11 +00:00
|
|
|
|
HGDSImageFunc m_imageFunc;
|
|
|
|
|
HGPointer m_imageParam;
|
2023-05-12 01:38:37 +00:00
|
|
|
|
HGEvent m_event;
|
|
|
|
|
volatile HGBool m_stopThread;
|
|
|
|
|
HGThread m_thread;
|
2022-05-03 10:25:52 +00:00
|
|
|
|
};
|
|
|
|
|
|
2023-04-03 09:13:53 +00:00
|
|
|
|
#endif /* __HGTWAINIMPL_HPP__ */
|