106 lines
3.0 KiB
C++
106 lines
3.0 KiB
C++
#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"
|
|
#include "../twainui/twainui.h"
|
|
#include <vector>
|
|
#include <map>
|
|
|
|
class HGTwainDSMImpl
|
|
{
|
|
friend class HGTwainDSImpl;
|
|
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);
|
|
|
|
private:
|
|
void RemoveDS(class HGTwainDSImpl* dsImpl);
|
|
static LRESULT CALLBACK NewWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
bool filterTwainSource(const char* sourceName, int majorNum);
|
|
|
|
private:
|
|
HGDll m_hDll;
|
|
DSMENTRYPROC m_pDSMProc;
|
|
TW_IDENTITY m_AppId;
|
|
HWND m_hWnd;
|
|
static std::map<HWND, HGTwainDSMImpl*> m_mapWnd;
|
|
WNDPROC m_oldWndProc;
|
|
std::vector<TW_IDENTITY> m_vds;
|
|
std::vector<class HGTwainDSImpl *> m_listDSImpl;
|
|
};
|
|
|
|
class HGTwainDSImpl
|
|
{
|
|
friend class HGTwainDSMImpl;
|
|
public:
|
|
HGTwainDSImpl(HGTwainDSMImpl* dsmImpl, TW_IDENTITY* iden);
|
|
~HGTwainDSImpl();
|
|
|
|
public:
|
|
HGResult Destroy();
|
|
HGResult Open();
|
|
HGResult Close();
|
|
HGResult GetName(HGChar* name, HGUInt maxLen);
|
|
HGResult GetDeviceName(HGChar* name, HGUInt maxLen);
|
|
|
|
HGResult GetDeviceCustomInfo(HGTwainDeviceCustomInfo *info);
|
|
HGResult Login(const HGChar *user, const HGChar *pwd);
|
|
HGResult Logout();
|
|
HGResult ClearRollerCount();
|
|
HGResult GetDriverLog(const HGChar *fileName);
|
|
HGResult ClearDriverLog();
|
|
HGResult GetDeviceLog(const HGChar *fileName);
|
|
HGResult ClearDeviceLog();
|
|
|
|
HGResult EnableUIOnly(HWND parent, HGDSEventFunc eventFunc, HGPointer eventParam);
|
|
HGResult Enable(HGBool showUI, HWND parent, HGDSEventFunc eventFunc, HGPointer eventParam,
|
|
HGDSImageFunc imageFunc, HGPointer imageParam);
|
|
HGResult EnableWithSingleScan(HWND parent, HGDSEventFunc eventFunc, HGPointer eventParam,
|
|
HGDSImageFunc imageFunc, HGPointer imageParam);
|
|
HGResult Disable();
|
|
|
|
HGResult SetCapbility(HGUShort cap, const HGCapValue* value, HGBool reset);
|
|
HGResult GetCapbility(HGUShort cap, HGCapValue* value);
|
|
|
|
private:
|
|
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);
|
|
|
|
private:
|
|
HGTwainDSMImpl* m_dsmImpl;
|
|
TW_IDENTITY m_iden;
|
|
HGBool m_open;
|
|
HGBool m_singleScan;
|
|
HGInt m_oldXferCount;
|
|
HGBool m_showUI;
|
|
HWND m_parent;
|
|
HGDSEventFunc m_eventFunc;
|
|
HGPointer m_eventParam;
|
|
HGDSImageFunc m_imageFunc;
|
|
HGPointer m_imageParam;
|
|
HGEvent m_event;
|
|
volatile HGBool m_stopThread;
|
|
HGThread m_thread;
|
|
};
|
|
|
|
#endif /* __HGTWAINIMPL_HPP__ */
|