2022-05-03 10:25:52 +00:00
|
|
|
|
#ifndef __HGTWAINIMPL_HPP__
|
|
|
|
|
#define __HGTWAINIMPL_HPP__
|
|
|
|
|
|
|
|
|
|
#include "HGTwain.h"
|
|
|
|
|
#include "../base/HGDll.h"
|
2023-04-04 05:18:13 +00:00
|
|
|
|
#include "twain/twain.h"
|
|
|
|
|
#include "saneui/HGSaneUI.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-04-07 06:18:56 +00:00
|
|
|
|
HGResult GetDeviceCustomInfo(HGTwainDeviceCustomInfo *info);
|
2023-03-27 06:24:18 +00:00
|
|
|
|
HGResult EnableUIOnly(HWND parent, HGDSCloseReqFunc eventFunc, HGPointer eventParam);
|
|
|
|
|
HGResult Enable(HGBool showUI, HWND parent, HGDSCloseReqFunc eventFunc, HGPointer eventParam,
|
2023-03-27 03:17:11 +00:00
|
|
|
|
HGDSImageFunc imageFunc, HGPointer imageParam);
|
|
|
|
|
HGResult Disable();
|
|
|
|
|
|
|
|
|
|
private:
|
2023-03-25 10:03:47 +00:00
|
|
|
|
HGResult SetCap(HGUInt cap, HGInt value);
|
|
|
|
|
HGResult GetCap(HGUInt cap, HGInt* value);
|
2023-04-07 06:18:56 +00:00
|
|
|
|
HGResult GetCap(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();
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
HGTwainDSMImpl* m_dsmImpl;
|
|
|
|
|
TW_IDENTITY m_iden;
|
|
|
|
|
HGBool m_open;
|
|
|
|
|
HGBool m_showUI;
|
|
|
|
|
HWND m_parent;
|
2023-03-27 06:24:18 +00:00
|
|
|
|
HGDSCloseReqFunc 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-03-25 10:03:47 +00:00
|
|
|
|
HGBool m_enable;
|
2022-05-03 10:25:52 +00:00
|
|
|
|
};
|
|
|
|
|
|
2023-04-03 09:13:53 +00:00
|
|
|
|
#endif /* __HGTWAINIMPL_HPP__ */
|