81 lines
2.2 KiB
C++
81 lines
2.2 KiB
C++
#ifndef __HGTWAINIMPL_HPP__
|
|
#define __HGTWAINIMPL_HPP__
|
|
|
|
#include "HGTwain.h"
|
|
#include "../base/HGDll.h"
|
|
#include "twain/twain.h"
|
|
#include "saneui/HGSaneUI.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 OpenDS(HGUInt index, class HGTwainDSImpl** dsImpl);
|
|
HGResult OpenDefaultDS(class HGTwainDSImpl** dsImpl);
|
|
HGResult OpenSelectedDS(class HGTwainDSImpl** dsImpl);
|
|
HGResult OpenSelectedDSEx(class HGTwainDSImpl** dsImpl);
|
|
|
|
private:
|
|
void RemoveDS(class HGTwainDSImpl* dsImpl);
|
|
static LRESULT CALLBACK NewWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
|
|
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<class HGTwainDSImpl *> m_listDSImpl;
|
|
};
|
|
|
|
class HGTwainDSImpl
|
|
{
|
|
friend class HGTwainDSMImpl;
|
|
public:
|
|
HGTwainDSImpl(HGTwainDSMImpl* dsmImpl);
|
|
~HGTwainDSImpl();
|
|
|
|
public:
|
|
HGResult Open(TW_IDENTITY* iden);
|
|
HGResult Close();
|
|
HGResult GetName(HGChar* name, HGUInt maxLen);
|
|
HGResult GetDeviceName(HGChar* name, HGUInt maxLen);
|
|
HGResult GetDeviceCustomInfo(HGTwainDeviceCustomInfo *info);
|
|
HGResult EnableUIOnly(HWND parent, HGDSCloseReqFunc eventFunc, HGPointer eventParam);
|
|
HGResult Enable(HGBool showUI, HWND parent, HGDSCloseReqFunc eventFunc, HGPointer eventParam,
|
|
HGDSImageFunc imageFunc, HGPointer imageParam);
|
|
HGResult Disable();
|
|
|
|
private:
|
|
HGResult SetCap(HGUInt cap, HGInt value);
|
|
HGResult GetCap(HGUInt cap, HGInt* value);
|
|
HGResult GetCap(HGUInt cap, HGChar *value, HGUInt maxLen);
|
|
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;
|
|
HGDSCloseReqFunc m_eventFunc;
|
|
HGPointer m_eventParam;
|
|
HGDSImageFunc m_imageFunc;
|
|
HGPointer m_imageParam;
|
|
HGBool m_enable;
|
|
};
|
|
|
|
#endif /* __HGTWAINIMPL_HPP__ */
|