code_app/modules/twain_user/HGTwainImpl.hpp

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__ */