code_app/modules/sane_user/HGSaneImpl.hpp

112 lines
3.7 KiB
C++
Raw Normal View History

2022-05-03 10:25:52 +00:00
#ifndef __HGSANEIMPL_HPP__
#define __HGSANEIMPL_HPP__
#include "HGSane.h"
#include "../base/HGInc.h"
2022-05-03 10:25:52 +00:00
#include "../base/HGDll.h"
#include "../base/HGThread.h"
#include "../base/HGLock.h"
#include "sane/sane_ex.h"
#include "sane/sane_option_definitions.h"
#include "saneui/HGSaneUI.h"
2022-05-03 10:25:52 +00:00
#include <list>
#include <vector>
#include <string>
2022-05-03 10:25:52 +00:00
class HGSaneManagerImpl
{
friend class HGSaneSourceImpl;
2022-05-03 10:25:52 +00:00
public:
HGSaneManagerImpl();
~HGSaneManagerImpl();
HGResult Create();
HGResult Destroy();
HGResult GetSourceCount(HGUInt *count);
HGResult GetSourceName(HGUInt index, HGChar* name, HGUInt maxLen);
HGResult OpenSource(HGUInt index, class HGSaneSourceImpl **sourceImpl);
HGResult OpenSelectedSource(HGWindow parent, class HGSaneSourceImpl **sourceImpl);
private:
void RemoveSource(class HGSaneSourceImpl* sourceImpl);
2022-05-03 10:25:52 +00:00
private:
std::vector<std::pair<std::string, std::string>> m_vSource;
std::list<class HGSaneSourceImpl *> m_listSourceImpl;
};
class HGSaneSourceImpl
{
friend class HGSaneDeviceImpl;
public:
HGSaneSourceImpl(HGSaneManagerImpl *managerImpl);
~HGSaneSourceImpl();
HGResult Init(const HGChar* saneManu, HGDll dll, const SANEAPI *saneAPI);
HGResult Open(const HGChar* saneManu, const HGChar* sanePath);
HGResult Close();
HGResult GetName(HGChar* name, HGUInt maxLen);
2022-05-03 10:25:52 +00:00
HGResult GetDeviceCount(HGUInt *count);
HGResult GetDeviceName(HGUInt index, HGChar* name, HGUInt maxLen);
2023-03-25 07:31:09 +00:00
HGResult OpenDevice(HGUInt index, class HGSaneDeviceImpl **deviceImpl, HGChar* errInfo, HGUInt errInfoLen);
HGResult OpenSelectedDevice(HGWindow parent, class HGSaneDeviceImpl** deviceImpl);
2022-05-03 10:25:52 +00:00
private:
static HGResult FindFunctions(HGDll dll, const HGChar* saneManu, SANEAPI *saneAPI);
2023-03-25 07:31:09 +00:00
void RemoveDevice(class HGSaneDeviceImpl* deviceImpl);
2022-05-03 10:25:52 +00:00
private:
HGSaneManagerImpl *m_managerImpl;
std::string m_manuName;
2022-05-03 10:25:52 +00:00
HGDll m_dll;
SANEAPI m_saneApi;
2023-03-25 07:31:09 +00:00
std::list<class HGSaneDeviceImpl*> m_listDeviceImpl;
};
class HGSaneDeviceImpl
{
public:
HGSaneDeviceImpl(HGSaneSourceImpl* sourceImpl);
2023-03-25 07:31:09 +00:00
~HGSaneDeviceImpl();
HGResult Init(const HGChar* devName, SANE_Handle handle);
2023-03-25 07:31:09 +00:00
HGResult Open(const HGChar *devName, HGChar* errInfo, HGUInt errInfoLen);
HGResult Close();
HGResult GetName(HGChar* name, HGUInt maxLen);
HGResult GetCustomInfo(HGSaneDeviceCustomInfo *info);
HGResult ShowSettingDlg(HGWindow parent);
HGResult Login(const HGChar *user, const HGChar *pwd);
HGResult Logout();
HGResult ClearRollerCount();
2023-05-20 10:06:05 +00:00
HGResult GetDriverLog(const HGChar *fileName);
HGResult ClearDriverLog();
2023-05-20 10:06:05 +00:00
HGResult GetDeviceLog(const HGChar *fileName);
HGResult ClearDeviceLog();
HGResult Start(HGWindow parent, HGSane_DeviceEventFunc eventFunc, HGPointer eventParam,
HGSane_DeviceImageFunc imageFunc, HGPointer imageParam);
HGResult StartWithSingleScan(HGWindow parent, HGSane_DeviceEventFunc eventFunc, HGPointer eventParam,
HGSane_DeviceImageFunc imageFunc, HGPointer imageParam);
2022-05-03 10:25:52 +00:00
2023-03-25 07:31:09 +00:00
private:
HGResult SetValueInt32(HGUInt optionId, HGInt value);
HGResult GetValueInt32(HGUInt optionId, HGInt *value);
HGResult SetValueStr256(HGUInt optionId, const HGChar *value);
HGResult GetValueStr256(HGUInt optionId, HGChar *value, HGUInt maxLen);
2023-05-23 06:37:34 +00:00
static void show_scan_ui_event_func(HGUInt event, HGPointer param);
static void show_scan_ui_image_func(HGImage image, HGPointer param);
2023-03-25 07:31:09 +00:00
private:
HGSaneSourceImpl* m_sourceImpl;
std::string m_devName;
2023-03-25 07:31:09 +00:00
SANE_Handle m_devHandle;
HGByte* m_buffer;
HGInt m_bufferSize;
HGInt m_dpi;
2023-03-25 10:03:47 +00:00
HGSane_DeviceEventFunc m_eventFunc;
2023-03-25 07:31:09 +00:00
HGPointer m_eventParam;
2023-03-25 10:03:47 +00:00
HGSane_DeviceImageFunc m_imageFunc;
2023-03-25 07:31:09 +00:00
HGPointer m_imageParam;
2022-05-03 10:25:52 +00:00
};
#endif /* __HGSANEIMPL_HPP__ */