code_app/modules/twain_user/HGTwainImpl.hpp

106 lines
3.0 KiB
C++
Raw Normal View History

2022-05-03 10:25:52 +00:00
#ifndef __HGTWAINIMPL_HPP__
#define __HGTWAINIMPL_HPP__
#include "HGTwain.h"
#include "../base/HGDll.h"
#include "../base/HGEvent.h"
#include "../base/HGThread.h"
#include "twain/twain.h"
2023-08-12 02:00:34 +00:00
#include "../twainui/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
{
friend class HGTwainDSImpl;
2022-05-03 10:25:52 +00:00
public:
HGTwainDSMImpl();
~HGTwainDSMImpl();
HGResult Create(HWND hwnd);
HGResult Destroy();
HGResult GetDSCount(HGUInt* count);
HGResult GetDSName(HGUInt index, HGChar* name, HGUInt maxLen);
HGResult CreateDS(HGUInt index, class HGTwainDSImpl** dsImpl);
HGResult CreateDefaultDS(class HGTwainDSImpl** dsImpl);
HGResult CreateSelectedDS(class HGTwainDSImpl** dsImpl);
HGResult CreateSelectedDSEx(class HGTwainDSImpl** dsImpl);
2022-05-03 10:25:52 +00:00
private:
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);
2023-06-01 07:38:58 +00:00
bool filterTwainSource(const char* sourceName, int majorNum);
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-05-30 11:11:24 +00:00
std::vector<TW_IDENTITY> m_vds;
std::vector<class HGTwainDSImpl *> m_listDSImpl;
2023-03-25 10:03:47 +00:00
};
class HGTwainDSImpl
{
friend class HGTwainDSMImpl;
public:
HGTwainDSImpl(HGTwainDSMImpl* dsmImpl, TW_IDENTITY* iden);
2023-03-25 10:03:47 +00:00
~HGTwainDSImpl();
public:
HGResult Destroy();
HGResult Open();
2023-03-25 10:03:47 +00:00
HGResult Close();
HGResult GetName(HGChar* name, HGUInt maxLen);
HGResult GetDeviceName(HGChar* name, HGUInt maxLen);
2023-05-12 07:14:18 +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();
HGResult EnableUIOnly(HWND parent, HGDSEventFunc eventFunc, HGPointer eventParam);
HGResult Enable(HGBool showUI, HWND parent, HGDSEventFunc eventFunc, HGPointer eventParam,
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);
HGResult Disable();
HGResult SetCapbility(HGUShort cap, const HGCapValue* value, HGBool reset);
HGResult GetCapbility(HGUShort cap, HGCapValue* value);
private:
2023-03-25 10:03:47 +00:00
HGResult ImageNativeXfer(HGUInt type, HGUInt origin, HGImage* image);
HGResult EndXfer(HGUInt* count);
HGResult Reset();
TW_FIX32 FloatToFIX32(float i_float);
float FIX32ToFloat(TW_FIX32 FIX32Value);
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;
HGDSEventFunc m_eventFunc;
2023-03-25 10:03:47 +00:00
HGPointer m_eventParam;
HGDSImageFunc m_imageFunc;
HGPointer m_imageParam;
HGEvent m_event;
volatile HGBool m_stopThread;
HGThread m_thread;
2022-05-03 10:25:52 +00:00
};
#endif /* __HGTWAINIMPL_HPP__ */