解决sane调用的编译问题
This commit is contained in:
parent
6935a1be37
commit
e502236caa
|
@ -63,12 +63,7 @@ void HGAPI DeviceUser::DSEventFunc(HGTwainDS ds, HGUInt event, HGPointer param)
|
|||
void HGAPI DeviceUser::DSImageFunc(HGTwainDS ds, HGImage image, HGPointer param)
|
||||
{
|
||||
DeviceUser* p = (DeviceUser*)param;
|
||||
HGImage image2 = nullptr;
|
||||
HGBase_CloneImage(image, 0, 0, &image2);
|
||||
if (nullptr != image2)
|
||||
{
|
||||
emit p->newImage(image2);
|
||||
}
|
||||
emit p->newImage(image);
|
||||
}
|
||||
|
||||
#else
|
||||
|
@ -161,12 +156,7 @@ HGResult DeviceUser::StartScan()
|
|||
void HGAPI DeviceUser::DeviceImageFunc(HGSaneDevice dev, HGImage image, HGPointer param)
|
||||
{
|
||||
DeviceUser* p = (DeviceUser*)param;
|
||||
HGImage image2 = nullptr;
|
||||
HGBase_CloneImage(image, 0, 0, &image2);
|
||||
if (nullptr != image2)
|
||||
{
|
||||
emit p->newImage(image2);
|
||||
}
|
||||
emit p->newImage(image);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -92,6 +92,7 @@ private:
|
|||
|
||||
signals:
|
||||
void newImage(void *image);
|
||||
void scanEvent(HGUInt event);
|
||||
|
||||
private:
|
||||
QWidget *m_wnd;
|
||||
|
|
|
@ -40,7 +40,6 @@ void MainWindow::on_newImage(void *image)
|
|||
char fileName[256];
|
||||
sprintf(fileName, "D:\\test_%d.jpg", i++);
|
||||
HGImgFmt_SaveImage((HGImage)image, 0, NULL, fileName);
|
||||
HGBase_DestroyImage((HGImage)image);
|
||||
}
|
||||
|
||||
void MainWindow::on_scanEvent(HGUInt event)
|
||||
|
|
|
@ -64,11 +64,6 @@ HGResult DeviceUser::StartSingleScan()
|
|||
return HGTwain_EnableDSWithSingleScan(m_twainDS, (HWND)m_wnd->winId(), DSEventFunc, this, DSImageFunc, this);
|
||||
}
|
||||
|
||||
HGResult DeviceUser::StopScan()
|
||||
{
|
||||
return HGTwain_DisableDS(m_twainDS);
|
||||
}
|
||||
|
||||
HGResult DeviceUser::GetDeviceCustomInfo(HGTwainDeviceCustomInfo *info)
|
||||
{
|
||||
return HGTwain_GetDSDeviceCustomInfo(m_twainDS, info);
|
||||
|
@ -220,17 +215,12 @@ HGResult DeviceUser::StartScan()
|
|||
return HGSane_StartDeviceWithUI(m_saneDev, m_wnd, DeviceImageFunc, this);
|
||||
}
|
||||
|
||||
HGResult DeviceUser::StartSingleScan();
|
||||
HGResult DeviceUser::StartSingleScan()
|
||||
{
|
||||
return HGSane_StartDeviceWithSingleScan(m_saneDev, m_wnd, DeviceImageFunc, this);
|
||||
}
|
||||
|
||||
HGResult DeviceUser::StopScan()
|
||||
{
|
||||
return HGSane_StopDevice(m_saneDev);
|
||||
}
|
||||
|
||||
HGResult DeviceUser::GetDeviceCustomInfo(HGSaneCustomInfo *info)
|
||||
HGResult DeviceUser::GetDeviceCustomInfo(HGSaneDeviceCustomInfo *info)
|
||||
{
|
||||
return HGSane_GetDeviceCustomInfo(m_saneDev, info);
|
||||
}
|
||||
|
@ -250,11 +240,14 @@ HGResult DeviceUser::ClearRollerCount()
|
|||
return HGSane_ClearRollerCount(m_saneDev);
|
||||
}
|
||||
|
||||
QString DeviceUser::GetDriverLogPath()
|
||||
QString DeviceUser::GetDriverLog()
|
||||
{
|
||||
HGChar driverLogPath[256];
|
||||
HGSane_GetDriverLogPath(m_saneDev, driverLogPath, 256);
|
||||
return getStdFileName(driverLogPath);
|
||||
QString fileName = QFileDialog::getSaveFileName(m_wnd, tr("Select log file path"), ".", tr("text(*.txt)"));
|
||||
HGResult ret = HGSane_GetDriverLog(m_saneDev, fileName.toStdString().c_str());
|
||||
if (ret == HGBASE_ERR_OK)
|
||||
return fileName;
|
||||
|
||||
return "Fail";
|
||||
}
|
||||
|
||||
HGResult DeviceUser::ClearDriverLog()
|
||||
|
@ -262,11 +255,14 @@ HGResult DeviceUser::ClearDriverLog()
|
|||
return HGSane_ClearDriverLog(m_saneDev);
|
||||
}
|
||||
|
||||
QString DeviceUser::GetDeviceLogPath()
|
||||
QString DeviceUser::GetDeviceLog()
|
||||
{
|
||||
HGChar deviceLogPath[256];
|
||||
HGSane_GetDeviceLogPath(m_saneDev, deviceLogPath, 256);
|
||||
return getStdFileName(deviceLogPath);
|
||||
QString fileName = QFileDialog::getSaveFileName(m_wnd, tr("Select log file path"), ".", tr("text(*.txt)"));
|
||||
HGResult ret = HGSane_GetDeviceLog(m_saneDev, fileName.toStdString().c_str());
|
||||
if (ret == HGBASE_ERR_OK)
|
||||
return fileName;
|
||||
|
||||
return "Fail";
|
||||
}
|
||||
|
||||
HGResult DeviceUser::ClearDeviceLog()
|
||||
|
|
|
@ -40,7 +40,6 @@ public:
|
|||
// 弹出扫描对话框
|
||||
HGResult StartScan();
|
||||
HGResult StartSingleScan();
|
||||
HGResult StopScan();
|
||||
HGResult GetDeviceCustomInfo(HGTwainDeviceCustomInfo *info);
|
||||
HGResult Login();
|
||||
HGResult Logout();
|
||||
|
@ -100,14 +99,13 @@ public:
|
|||
// 弹出扫描对话框
|
||||
HGResult StartScan();
|
||||
HGResult StartSingleScan();
|
||||
HGResult StopScan();
|
||||
HGResult GetDeviceCustomInfo(HGSaneCustomInfo *info);
|
||||
HGResult GetDeviceCustomInfo(HGSaneDeviceCustomInfo *info);
|
||||
HGResult Login();
|
||||
HGResult Logout();
|
||||
HGResult ClearRollerCount();
|
||||
QString GetDriverLogPath();
|
||||
QString GetDriverLog();
|
||||
HGResult ClearDriverLog();
|
||||
QString GetDeviceLogPath();
|
||||
QString GetDeviceLog();
|
||||
HGResult ClearDeviceLog();
|
||||
|
||||
private:
|
||||
|
@ -115,6 +113,7 @@ private:
|
|||
|
||||
signals:
|
||||
void newImage(void *image);
|
||||
void scanEvent(HGUInt event);
|
||||
|
||||
private:
|
||||
QWidget *m_wnd;
|
||||
|
|
|
@ -1200,12 +1200,12 @@ void MainWindow::on_newImage(void *image)
|
|||
|
||||
void MainWindow::on_scanEvent(HGUInt event)
|
||||
{
|
||||
if (HGTWAIN_EVENT_TYPE_WORKING == event)
|
||||
if (1 == event)
|
||||
{
|
||||
m_isScanning = true;
|
||||
updateActionStatus();
|
||||
}
|
||||
else if (HGTWAIN_EVENT_TYPE_SCANFINISHED == event)
|
||||
else if (2 == event)
|
||||
{
|
||||
m_isScanning = false;
|
||||
updateActionStatus();
|
||||
|
@ -2832,7 +2832,7 @@ void MainWindow::on_act_about_triggered()
|
|||
HGTwainDeviceCustomInfo info;
|
||||
m_devUser->GetDeviceCustomInfo(&info);
|
||||
#else
|
||||
HGSaneCustomInfo info;
|
||||
HGSaneDeviceCustomInfo info;
|
||||
m_devUser->GetDeviceCustomInfo(&info);
|
||||
#endif
|
||||
|
||||
|
|
|
@ -31,15 +31,6 @@ CONFIG(release, debug|release) {
|
|||
|
||||
win32 {
|
||||
|
||||
SOURCES += ../../../modules/saneui/qmfcapp.cpp
|
||||
SOURCES += ../../../modules/saneui/qwinhost.cpp
|
||||
SOURCES += ../../../modules/saneui/qwinwidget.cpp
|
||||
|
||||
HEADERS += ../../../modules/saneui/qmfcapp.hpp
|
||||
HEADERS += ../../../modules/saneui/qwinhost.hpp
|
||||
HEADERS += ../../../modules/saneui/qwinwidget.hpp
|
||||
|
||||
|
||||
MY_OS = windows
|
||||
TARGET = $${OEM_PREFIX}SaneUI
|
||||
|
||||
|
@ -64,6 +55,59 @@ win32 {
|
|||
|
||||
unix {
|
||||
|
||||
SOURCES += \
|
||||
../../../modules/saneui/HGSaneUI.cpp \
|
||||
../../../modules/saneui/cfg/cJSON.c \
|
||||
../../../modules/saneui/cfg/gb_json.cpp \
|
||||
../../../modules/saneui/cutdialog.cpp \
|
||||
../../../modules/saneui/cutpapertool.cpp \
|
||||
../../../modules/saneui/device_menu.cpp \
|
||||
../../../modules/saneui/dialog_device_scan.cpp \
|
||||
../../../modules/saneui/dialog_device_select.cpp \
|
||||
../../../modules/saneui/dialog_input.cpp \
|
||||
../../../modules/saneui/dllmain.cpp \
|
||||
../../../modules/saneui/gaosixy.cpp \
|
||||
../../../modules/saneui/hg_settingdialog.cpp \
|
||||
../../../modules/saneui/setpicclrtool.cpp \
|
||||
../../../modules/saneui/widget.cpp \
|
||||
../../../utility/HGString.cpp \
|
||||
../../../modules/saneui/dialog_source_select.cpp
|
||||
|
||||
HEADERS += \
|
||||
../../../modules/saneui/HGSaneUI.h \
|
||||
../../../modules/saneui/cfg/cJSON.h \
|
||||
../../../modules/saneui/cfg/gb_json.h \
|
||||
../../../modules/saneui/cutdialog.h \
|
||||
../../../modules/saneui/cutpapertool.h \
|
||||
../../../modules/saneui/device_menu.h \
|
||||
../../../modules/saneui/dialog_device_scan.h \
|
||||
../../../modules/saneui/dialog_device_select.h \
|
||||
../../../modules/saneui/dialog_input.h \
|
||||
../../../modules/saneui/gaosixy.h \
|
||||
../../../modules/saneui/hg_settingdialog.h \
|
||||
../../../modules/saneui/setpicclrtool.h \
|
||||
../../../modules/saneui/widget.h \
|
||||
../../../utility/HGString.h \
|
||||
../../../modules/saneui/dialog_source_select.h
|
||||
|
||||
FORMS += \
|
||||
../../../modules/saneui/cutdialog.ui \
|
||||
../../../modules/saneui/cutpapertool.ui \
|
||||
../../../modules/saneui/dialog_device_scan.ui \
|
||||
../../../modules/saneui/dialog_device_select.ui \
|
||||
../../../modules/saneui/dialog_input.ui \
|
||||
../../../modules/saneui/setpicclrtool.ui \
|
||||
../../../modules/saneui/widget.ui \
|
||||
../../../modules/saneui/dialog_source_select.ui
|
||||
|
||||
RESOURCES += \
|
||||
../../../modules/saneui/SaneUI_resource.qrc
|
||||
|
||||
TRANSLATIONS += \
|
||||
../../../modules/saneui/SaneUI_zh_CN.ts \
|
||||
../../../modules/saneui/SaneUI_zh_EN.ts \
|
||||
../../../modules/saneui/qt_zh_CN.ts
|
||||
|
||||
DISTRIBUTION = $$system(cat /etc/issue | cut -d\' \' -f1)
|
||||
contains(DISTRIBUTION, UnionTech) {
|
||||
MY_OS = uos
|
||||
|
@ -140,56 +184,3 @@ unix {
|
|||
QMAKE_POST_LINK += cp $$SRCDLL_FILE $$DESTDLL_PATH && cp $$SRCHEADER_FILE $$DESTHEADER_PATH
|
||||
}
|
||||
}
|
||||
|
||||
SOURCES += \
|
||||
../../../modules/saneui/HGSaneUI.cpp \
|
||||
../../../modules/saneui/cfg/cJSON.c \
|
||||
../../../modules/saneui/cfg/gb_json.cpp \
|
||||
../../../modules/saneui/cutdialog.cpp \
|
||||
../../../modules/saneui/cutpapertool.cpp \
|
||||
../../../modules/saneui/device_menu.cpp \
|
||||
../../../modules/saneui/dialog_device_scan.cpp \
|
||||
../../../modules/saneui/dialog_device_select.cpp \
|
||||
../../../modules/saneui/dialog_input.cpp \
|
||||
../../../modules/saneui/dllmain.cpp \
|
||||
../../../modules/saneui/gaosixy.cpp \
|
||||
../../../modules/saneui/hg_settingdialog.cpp \
|
||||
../../../modules/saneui/setpicclrtool.cpp \
|
||||
../../../modules/saneui/widget.cpp \
|
||||
../../../utility/HGString.cpp \
|
||||
../../../modules/saneui/dialog_source_select.cpp
|
||||
|
||||
HEADERS += \
|
||||
../../../modules/saneui/HGSaneUI.h \
|
||||
../../../modules/saneui/cfg/cJSON.h \
|
||||
../../../modules/saneui/cfg/gb_json.h \
|
||||
../../../modules/saneui/cutdialog.h \
|
||||
../../../modules/saneui/cutpapertool.h \
|
||||
../../../modules/saneui/device_menu.h \
|
||||
../../../modules/saneui/dialog_device_scan.h \
|
||||
../../../modules/saneui/dialog_device_select.h \
|
||||
../../../modules/saneui/dialog_input.h \
|
||||
../../../modules/saneui/gaosixy.h \
|
||||
../../../modules/saneui/hg_settingdialog.h \
|
||||
../../../modules/saneui/setpicclrtool.h \
|
||||
../../../modules/saneui/widget.h \
|
||||
../../../utility/HGString.h \
|
||||
../../../modules/saneui/dialog_source_select.h
|
||||
|
||||
FORMS += \
|
||||
../../../modules/saneui/cutdialog.ui \
|
||||
../../../modules/saneui/cutpapertool.ui \
|
||||
../../../modules/saneui/dialog_device_scan.ui \
|
||||
../../../modules/saneui/dialog_device_select.ui \
|
||||
../../../modules/saneui/dialog_input.ui \
|
||||
../../../modules/saneui/setpicclrtool.ui \
|
||||
../../../modules/saneui/widget.ui \
|
||||
../../../modules/saneui/dialog_source_select.ui
|
||||
|
||||
RESOURCES += \
|
||||
../../../modules/saneui/SaneUI_resource.qrc
|
||||
|
||||
TRANSLATIONS += \
|
||||
../../../modules/saneui/SaneUI_zh_CN.ts \
|
||||
../../../modules/saneui/SaneUI_zh_EN.ts \
|
||||
../../../modules/saneui/qt_zh_CN.ts
|
||||
|
|
|
@ -41,6 +41,56 @@ win32 {
|
|||
HEADERS += ../../../modules/twainui/qwinhost.hpp
|
||||
HEADERS += ../../../modules/twainui/qwinwidget.hpp
|
||||
HEADERS += ../../../modules/twainui/hg_settingdialog.h
|
||||
|
||||
SOURCES += \
|
||||
../../../modules/twainui/Manager.cpp \
|
||||
../../../modules/twainui/cfg/cJSON.c \
|
||||
../../../modules/twainui/cfg/gb_json.cpp \
|
||||
../../../modules/twainui/cutdialog.cpp \
|
||||
../../../modules/twainui/cutpapertool.cpp \
|
||||
../../../modules/twainui/device_menu.cpp \
|
||||
../../../modules/twainui/dialog_input.cpp \
|
||||
../../../modules/twainui/dllmain.cpp \
|
||||
../../../modules/twainui/gaosixy.cpp \
|
||||
../../../modules/twainui/setpicclrtool.cpp \
|
||||
../../../utility/HGString.cpp \
|
||||
../../../modules/twainui/widget.cpp \
|
||||
../../../modules/twainui/dialog_progress_ui.cpp \
|
||||
../../../modules/twainui/dialog_device_select.cpp \
|
||||
../../../modules/twainui/dialog_twain_source_select.cpp
|
||||
HEADERS += \
|
||||
../../../modules/twainui/Manager.h \
|
||||
../../../modules/twainui/cfg/cJSON.h \
|
||||
../../../modules/twainui/cfg/gb_json.h \
|
||||
../../../modules/twainui/cutdialog.h \
|
||||
../../../modules/twainui/cutpapertool.h \
|
||||
../../../modules/twainui/device_menu.h \
|
||||
../../../modules/twainui/dialog_input.h \
|
||||
../../../modules/twainui/gaosixy.h \
|
||||
../../../modules/twainui/setpicclrtool.h \
|
||||
../../../utility/HGString.h \
|
||||
../../../modules/twainui/widget.h \
|
||||
../../../modules/twainui/dialog_progress_ui.h \
|
||||
../../../modules/twainui/dialog_device_select.h \
|
||||
../../../modules/twainui/dialog_twain_source_select.h
|
||||
|
||||
FORMS += \
|
||||
../../../modules/twainui/cutdialog.ui \
|
||||
../../../modules/twainui/cutpapertool.ui \
|
||||
../../../modules/twainui/dialog_input.ui \
|
||||
../../../modules/twainui/setpicclrtool.ui \
|
||||
../../../modules/twainui/widget.ui \
|
||||
../../../modules/twainui/dialog_progress_ui.ui \
|
||||
../../../modules/twainui/dialog_device_select.ui \
|
||||
../../../modules/twainui/dialog_twain_source_select.ui
|
||||
|
||||
RESOURCES += \
|
||||
../../../modules/twainui/TwainUI_resource.qrc
|
||||
|
||||
TRANSLATIONS += \
|
||||
../../../modules/twainui/TwainUI_zh_CN.ts \
|
||||
../../../modules/twainui/TwainUI_zh_EN.ts \
|
||||
../../../modules/twainui/qt_zh_CN.ts
|
||||
|
||||
MY_OS = windows
|
||||
TARGET = $${OEM_PREFIX}TwainUI
|
||||
|
@ -151,53 +201,3 @@ win32 {
|
|||
&& xcopy /y $$SRCPDB_FILE $$DESTDLL_PATH
|
||||
}
|
||||
}
|
||||
|
||||
SOURCES += \
|
||||
../../../modules/twainui/Manager.cpp \
|
||||
../../../modules/twainui/cfg/cJSON.c \
|
||||
../../../modules/twainui/cfg/gb_json.cpp \
|
||||
../../../modules/twainui/cutdialog.cpp \
|
||||
../../../modules/twainui/cutpapertool.cpp \
|
||||
../../../modules/twainui/device_menu.cpp \
|
||||
../../../modules/twainui/dialog_input.cpp \
|
||||
../../../modules/twainui/dllmain.cpp \
|
||||
../../../modules/twainui/gaosixy.cpp \
|
||||
../../../modules/twainui/setpicclrtool.cpp \
|
||||
../../../utility/HGString.cpp \
|
||||
../../../modules/twainui/widget.cpp \
|
||||
../../../modules/twainui/dialog_progress_ui.cpp \
|
||||
../../../modules/twainui/dialog_device_select.cpp \
|
||||
../../../modules/twainui/dialog_twain_source_select.cpp
|
||||
HEADERS += \
|
||||
../../../modules/twainui/Manager.h \
|
||||
../../../modules/twainui/cfg/cJSON.h \
|
||||
../../../modules/twainui/cfg/gb_json.h \
|
||||
../../../modules/twainui/cutdialog.h \
|
||||
../../../modules/twainui/cutpapertool.h \
|
||||
../../../modules/twainui/device_menu.h \
|
||||
../../../modules/twainui/dialog_input.h \
|
||||
../../../modules/twainui/gaosixy.h \
|
||||
../../../modules/twainui/setpicclrtool.h \
|
||||
../../../utility/HGString.h \
|
||||
../../../modules/twainui/widget.h \
|
||||
../../../modules/twainui/dialog_progress_ui.h \
|
||||
../../../modules/twainui/dialog_device_select.h \
|
||||
../../../modules/twainui/dialog_twain_source_select.h
|
||||
|
||||
FORMS += \
|
||||
../../../modules/twainui/cutdialog.ui \
|
||||
../../../modules/twainui/cutpapertool.ui \
|
||||
../../../modules/twainui/dialog_input.ui \
|
||||
../../../modules/twainui/setpicclrtool.ui \
|
||||
../../../modules/twainui/widget.ui \
|
||||
../../../modules/twainui/dialog_progress_ui.ui \
|
||||
../../../modules/twainui/dialog_device_select.ui \
|
||||
../../../modules/twainui/dialog_twain_source_select.ui
|
||||
|
||||
RESOURCES += \
|
||||
../../../modules/twainui/TwainUI_resource.qrc
|
||||
|
||||
TRANSLATIONS += \
|
||||
../../../modules/twainui/TwainUI_zh_CN.ts \
|
||||
../../../modules/twainui/TwainUI_zh_EN.ts \
|
||||
../../../modules/twainui/qt_zh_CN.ts
|
||||
|
|
|
@ -257,7 +257,7 @@ HGResult HGAPI HGSane_ClearRollerCount(HGSaneDevice dev)
|
|||
return saneDeviceImpl->ClearRollerCount();
|
||||
}
|
||||
|
||||
HGResult HGAPI HGSane_GetDriverLogPath(HGSaneDevice dev, HGChar *path, HGUInt maxLen)
|
||||
HGResult HGAPI HGSane_GetDriverLog(HGSaneDevice dev, const HGChar *fileName)
|
||||
{
|
||||
if (NULL == dev)
|
||||
{
|
||||
|
@ -265,7 +265,7 @@ HGResult HGAPI HGSane_GetDriverLogPath(HGSaneDevice dev, HGChar *path, HGUInt ma
|
|||
}
|
||||
|
||||
HGSaneDeviceImpl* saneDeviceImpl = (HGSaneDeviceImpl*)dev;
|
||||
return saneDeviceImpl->GetDriverLogPath(path, maxLen);
|
||||
return saneDeviceImpl->GetDriverLog(fileName);
|
||||
}
|
||||
|
||||
HGResult HGAPI HGSane_ClearDriverLog(HGSaneDevice dev)
|
||||
|
@ -279,7 +279,7 @@ HGResult HGAPI HGSane_ClearDriverLog(HGSaneDevice dev)
|
|||
return saneDeviceImpl->ClearDriverLog();
|
||||
}
|
||||
|
||||
HGResult HGAPI HGSane_GetDeviceLogPath(HGSaneDevice dev, HGChar *path, HGUInt maxLen)
|
||||
HGResult HGAPI HGSane_GetDeviceLog(HGSaneDevice dev, const HGChar *fileName)
|
||||
{
|
||||
if (NULL == dev)
|
||||
{
|
||||
|
@ -287,7 +287,7 @@ HGResult HGAPI HGSane_GetDeviceLogPath(HGSaneDevice dev, HGChar *path, HGUInt ma
|
|||
}
|
||||
|
||||
HGSaneDeviceImpl* saneDeviceImpl = (HGSaneDeviceImpl*)dev;
|
||||
return saneDeviceImpl->GetDeviceLogPath(path, maxLen);
|
||||
return saneDeviceImpl->GetDeviceLog(fileName);
|
||||
}
|
||||
|
||||
HGResult HGAPI HGSane_ClearDeviceLog(HGSaneDevice dev)
|
||||
|
@ -301,29 +301,6 @@ HGResult HGAPI HGSane_ClearDeviceLog(HGSaneDevice dev)
|
|||
return saneDeviceImpl->ClearDeviceLog();
|
||||
}
|
||||
|
||||
HGResult HGAPI HGSane_StartDevice(HGSaneDevice dev, HGSane_DeviceEventFunc eventFunc, HGPointer eventParam,
|
||||
HGSane_DeviceImageFunc imageFunc, HGPointer imageParam, HGChar* errInfo, HGUInt errInfoLen)
|
||||
{
|
||||
if (NULL == dev)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
HGSaneDeviceImpl* saneDeviceImpl = (HGSaneDeviceImpl*)dev;
|
||||
return saneDeviceImpl->Start(eventFunc, eventParam, imageFunc, imageParam, errInfo, errInfoLen);
|
||||
}
|
||||
|
||||
HGResult HGAPI HGSane_StopDevice(HGSaneDevice dev)
|
||||
{
|
||||
if (NULL == dev)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
HGSaneDeviceImpl* saneDeviceImpl = (HGSaneDeviceImpl*)dev;
|
||||
return saneDeviceImpl->Stop();
|
||||
}
|
||||
|
||||
HGResult HGAPI HGSane_StartDeviceWithUI(HGSaneDevice dev, HGWindow parent, HGSane_DeviceImageFunc imageFunc, HGPointer imageParam)
|
||||
{
|
||||
if (NULL == dev)
|
||||
|
|
|
@ -36,9 +36,12 @@ typedef struct
|
|||
|
||||
#pragma pack(pop)
|
||||
|
||||
#define HGSANE_EVENT_TYPE_WORKING 1L
|
||||
#define HGSANE_EVENT_TYPE_SCANFINISHED 2L
|
||||
|
||||
/* Sane回调
|
||||
*/
|
||||
typedef void (HGAPI* HGSane_DeviceEventFunc)(HGSaneDevice dev, HGUInt error, const HGChar *errInfo, HGPointer param);
|
||||
typedef void (HGAPI* HGSane_DeviceEventFunc)(HGSaneDevice dev, HGUInt event, HGPointer param);
|
||||
typedef void (HGAPI* HGSane_DeviceImageFunc)(HGSaneDevice dev, HGImage image, HGPointer param);
|
||||
|
||||
HGEXPORT HGResult HGAPI HGSane_CreateManager(HGSaneManager *manager);
|
||||
|
@ -79,19 +82,14 @@ HGEXPORT HGResult HGAPI HGSane_Logout(HGSaneDevice dev);
|
|||
|
||||
HGEXPORT HGResult HGAPI HGSane_ClearRollerCount(HGSaneDevice dev);
|
||||
|
||||
HGEXPORT HGResult HGAPI HGSane_GetDriverLogPath(HGSaneDevice dev, HGChar *path, HGUInt maxLen);
|
||||
HGEXPORT HGResult HGAPI HGSane_GetDriverLog(HGSaneDevice dev, const HGChar *fileName);
|
||||
|
||||
HGEXPORT HGResult HGAPI HGSane_ClearDriverLog(HGSaneDevice dev);
|
||||
|
||||
HGEXPORT HGResult HGAPI HGSane_GetDeviceLogPath(HGSaneDevice dev, HGChar *path, HGUInt maxLen);
|
||||
HGEXPORT HGResult HGAPI HGSane_GetDeviceLog(HGSaneDevice dev, const HGChar *fileName);
|
||||
|
||||
HGEXPORT HGResult HGAPI HGSane_ClearDeviceLog(HGSaneDevice dev);
|
||||
|
||||
HGEXPORT HGResult HGAPI HGSane_StartDevice(HGSaneDevice dev, HGSane_DeviceEventFunc eventFunc, HGPointer eventParam,
|
||||
HGSane_DeviceImageFunc imageFunc, HGPointer imageParam, HGChar* errInfo, HGUInt errInfoLen);
|
||||
|
||||
HGEXPORT HGResult HGAPI HGSane_StopDevice(HGSaneDevice dev);
|
||||
|
||||
HGEXPORT HGResult HGAPI HGSane_StartDeviceWithUI(HGSaneDevice dev, HGWindow parent, HGSane_DeviceImageFunc imageFunc, HGPointer imageParam);
|
||||
|
||||
HGEXPORT HGResult HGAPI HGSane_StartDeviceWithSingleScan(HGSaneDevice dev, HGWindow parent, HGSane_DeviceImageFunc imageFunc, HGPointer imageParam);
|
||||
|
|
|
@ -561,8 +561,6 @@ HGSaneDeviceImpl::HGSaneDeviceImpl(HGSaneSourceImpl* sourceImpl)
|
|||
m_eventParam = NULL;
|
||||
m_imageFunc = NULL;
|
||||
m_imageParam = NULL;
|
||||
m_stopThread = HGFALSE;
|
||||
m_thread = NULL;
|
||||
}
|
||||
|
||||
HGSaneDeviceImpl::~HGSaneDeviceImpl()
|
||||
|
@ -620,7 +618,6 @@ HGResult HGSaneDeviceImpl::Close()
|
|||
{
|
||||
assert(NULL != m_devHandle);
|
||||
|
||||
Stop();
|
||||
m_sourceImpl->m_saneApi.sane_close_api(m_devHandle);
|
||||
m_devHandle = NULL;
|
||||
m_devName.clear();
|
||||
|
@ -695,9 +692,9 @@ HGResult HGSaneDeviceImpl::ClearRollerCount()
|
|||
return SetValueInt32(0x9902, 0);
|
||||
}
|
||||
|
||||
HGResult HGSaneDeviceImpl::GetDriverLogPath(HGChar *path, HGUInt maxLen)
|
||||
HGResult HGSaneDeviceImpl::GetDriverLog(const HGChar *fileName)
|
||||
{
|
||||
return GetValueStr256(0x9903, path, maxLen);
|
||||
return HGBASE_ERR_NOTIMPL;
|
||||
}
|
||||
|
||||
HGResult HGSaneDeviceImpl::ClearDriverLog()
|
||||
|
@ -706,9 +703,9 @@ HGResult HGSaneDeviceImpl::ClearDriverLog()
|
|||
return SetValueStr256(0x9903, value);
|
||||
}
|
||||
|
||||
HGResult HGSaneDeviceImpl::GetDeviceLogPath(HGChar *path, HGUInt maxLen)
|
||||
HGResult HGSaneDeviceImpl::GetDeviceLog(const HGChar *fileName)
|
||||
{
|
||||
return GetValueStr256(0x9904, path, maxLen);
|
||||
return HGBASE_ERR_NOTIMPL;
|
||||
}
|
||||
|
||||
HGResult HGSaneDeviceImpl::ClearDeviceLog()
|
||||
|
@ -719,11 +716,6 @@ HGResult HGSaneDeviceImpl::ClearDeviceLog()
|
|||
|
||||
HGResult HGSaneDeviceImpl::ShowSettingDlg(HGWindow parent)
|
||||
{
|
||||
if (NULL != m_thread)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
if (-2 == show_setting_ui(&m_sourceImpl->m_saneApi, m_devHandle, m_devName.c_str(), parent))
|
||||
{
|
||||
return HGBASE_ERR_NOTSUPPORT;
|
||||
|
@ -732,105 +724,8 @@ HGResult HGSaneDeviceImpl::ShowSettingDlg(HGWindow parent)
|
|||
return HGBASE_ERR_OK;
|
||||
}
|
||||
|
||||
HGResult HGSaneDeviceImpl::Start(HGSane_DeviceEventFunc eventFunc, HGPointer eventParam,
|
||||
HGSane_DeviceImageFunc imageFunc, HGPointer imageParam, HGChar* errInfo, HGUInt errInfoLen)
|
||||
{
|
||||
if (NULL != m_thread)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
SANE_Parameters params;
|
||||
memset(¶ms, 0, sizeof(SANE_Parameters));
|
||||
SANE_Status stat = m_sourceImpl->m_saneApi.sane_get_parameters_api(m_devHandle, ¶ms);
|
||||
if (SANE_STATUS_GOOD != stat)
|
||||
{
|
||||
if (NULL != errInfo)
|
||||
{
|
||||
const char* err = m_sourceImpl->m_saneApi.sane_strstatus_api(stat);
|
||||
if (NULL != err && errInfoLen >= strlen(err) + 1)
|
||||
{
|
||||
strcpy(errInfo, err);
|
||||
}
|
||||
}
|
||||
|
||||
return HGSANE_ERR_FAIL;
|
||||
}
|
||||
|
||||
m_bufferSize = 5000 * 4000;
|
||||
m_buffer = (HGByte *)malloc(m_bufferSize);
|
||||
if (NULL == m_buffer)
|
||||
{
|
||||
return HGBASE_ERR_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
HGResult ret = GetValueInt32(0x8818, &m_dpi);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
{
|
||||
free(m_buffer);
|
||||
m_buffer = NULL;
|
||||
m_bufferSize = 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
stat = m_sourceImpl->m_saneApi.sane_start_api(m_devHandle);
|
||||
if (SANE_STATUS_GOOD != stat)
|
||||
{
|
||||
if (NULL != errInfo)
|
||||
{
|
||||
const char* err = m_sourceImpl->m_saneApi.sane_strstatus_api(stat);
|
||||
if (NULL != err && errInfoLen >= strlen(err) + 1)
|
||||
{
|
||||
strcpy(errInfo, err);
|
||||
}
|
||||
}
|
||||
|
||||
m_dpi = 0;
|
||||
free(m_buffer);
|
||||
m_buffer = NULL;
|
||||
m_bufferSize = 0;
|
||||
return HGSANE_ERR_FAIL;
|
||||
}
|
||||
|
||||
m_eventFunc = eventFunc;
|
||||
m_eventParam = eventParam;
|
||||
m_imageFunc = imageFunc;
|
||||
m_imageParam = imageParam;
|
||||
m_stopThread = HGFALSE;
|
||||
HGBase_OpenThread(ThreadFunc, this, &m_thread);
|
||||
return HGBASE_ERR_OK;
|
||||
}
|
||||
|
||||
HGResult HGSaneDeviceImpl::Stop()
|
||||
{
|
||||
if (NULL == m_thread)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
m_stopThread = HGTRUE;
|
||||
m_sourceImpl->m_saneApi.sane_cancel_api(m_devHandle);
|
||||
HGBase_CloseThread(m_thread);
|
||||
m_thread = NULL;
|
||||
m_eventFunc = NULL;
|
||||
m_eventParam = NULL;
|
||||
m_imageFunc = NULL;
|
||||
m_imageParam = NULL;
|
||||
|
||||
m_dpi = 0;
|
||||
free(m_buffer);
|
||||
m_buffer = NULL;
|
||||
m_bufferSize = 0;
|
||||
return HGBASE_ERR_OK;
|
||||
}
|
||||
|
||||
HGResult HGSaneDeviceImpl::StartWithUI(HGWindow parent, HGSane_DeviceImageFunc imageFunc, HGPointer imageParam)
|
||||
{
|
||||
if (NULL != m_thread)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
HGResult ret = GetValueInt32(0x8818, &m_dpi);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
{
|
||||
|
@ -851,11 +746,6 @@ HGResult HGSaneDeviceImpl::StartWithUI(HGWindow parent, HGSane_DeviceImageFunc i
|
|||
|
||||
HGResult HGSaneDeviceImpl::StartWithSingleScan(HGWindow parent, HGSane_DeviceImageFunc imageFunc, HGPointer imageParam)
|
||||
{
|
||||
if (NULL != m_thread)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
HGChar scanMode[256] = {0};
|
||||
HGResult ret = GetValueStr256(0x882E, scanMode, 256);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
|
@ -925,7 +815,7 @@ HGResult HGSaneDeviceImpl::SetValueStr256(HGUInt optionId, const HGChar *value)
|
|||
}
|
||||
|
||||
const char *v = value;
|
||||
SANE_Status status = m_sourceImpl->m_saneApi.sane_control_option_api(m_devHandle, (SANE_Int)optionId, SANE_ACTION_SET_VALUE, v, NULL);
|
||||
SANE_Status status = m_sourceImpl->m_saneApi.sane_control_option_api(m_devHandle, (SANE_Int)optionId, SANE_ACTION_SET_VALUE, (void*)v, NULL);
|
||||
return (SANE_STATUS_GOOD == status) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
|
@ -952,90 +842,6 @@ HGResult HGSaneDeviceImpl::GetValueStr256(HGUInt optionId, HGChar *value, HGUInt
|
|||
return HGBASE_ERR_OK;
|
||||
}
|
||||
|
||||
void HGAPI HGSaneDeviceImpl::ThreadFunc(HGThread thread, HGPointer param)
|
||||
{
|
||||
HGSaneDeviceImpl* p = (HGSaneDeviceImpl*)param;
|
||||
while (!p->m_stopThread)
|
||||
{
|
||||
SANE_Parameters params;
|
||||
memset(¶ms, 0, sizeof(SANE_Parameters));
|
||||
SANE_Status stat1 = p->m_sourceImpl->m_saneApi.sane_get_parameters_api(p->m_devHandle, ¶ms);
|
||||
|
||||
SANE_Int readSize = 0;
|
||||
SANE_Status stat2 = SANE_STATUS_GOOD;
|
||||
while (readSize < p->m_bufferSize)
|
||||
{
|
||||
SANE_Int len = 0;
|
||||
stat2 = p->m_sourceImpl->m_saneApi.sane_read_api(p->m_devHandle, p->m_buffer + readSize, p->m_bufferSize - readSize, &len);
|
||||
readSize += len;
|
||||
if (SANE_STATUS_GOOD != stat2)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (SANE_STATUS_GOOD == stat2)
|
||||
{
|
||||
// m_bufferSize空间不够
|
||||
if (NULL != p->m_eventFunc)
|
||||
p->m_eventFunc((HGSaneDevice)p, HGSANE_ERR_FAIL, p->m_sourceImpl->m_saneApi.sane_strstatus_api(SANE_STATUS_INVAL), p->m_eventParam);
|
||||
break;
|
||||
}
|
||||
else if (SANE_STATUS_EOF == stat2)
|
||||
{
|
||||
if (0 == readSize)
|
||||
{
|
||||
if (NULL != p->m_eventFunc)
|
||||
p->m_eventFunc((HGSaneDevice)p, HGBASE_ERR_OK, NULL, p->m_eventParam);
|
||||
break;
|
||||
}
|
||||
else if (SANE_STATUS_GOOD != stat1 || readSize != params.bytes_per_line * params.lines)
|
||||
{
|
||||
if (NULL != p->m_eventFunc)
|
||||
p->m_eventFunc((HGSaneDevice)p, HGSANE_ERR_FAIL, p->m_sourceImpl->m_saneApi.sane_strstatus_api(SANE_STATUS_INVAL), p->m_eventParam);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (SANE_STATUS_CANCELLED == stat2)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (NULL != p->m_eventFunc)
|
||||
p->m_eventFunc((HGSaneDevice)p, HGSANE_ERR_FAIL, p->m_sourceImpl->m_saneApi.sane_strstatus_api(stat2), p->m_eventParam);
|
||||
break;
|
||||
}
|
||||
|
||||
if (NULL != p->m_imageFunc)
|
||||
{
|
||||
HGUInt imgType = 0;
|
||||
if (params.format == SANE_FRAME_GRAY)
|
||||
{
|
||||
if (1 == params.depth)
|
||||
imgType = HGBASE_IMGTYPE_BINARY;
|
||||
else if (8 == params.depth)
|
||||
imgType = HGBASE_IMGTYPE_GRAY;
|
||||
}
|
||||
else if (params.format == SANE_FRAME_RGB)
|
||||
{
|
||||
imgType = HGBASE_IMGTYPE_RGB;
|
||||
}
|
||||
|
||||
HGImageInfo imgInfo = { (HGUInt)params.pixels_per_line, (HGUInt)params.lines,
|
||||
imgType, (HGUInt)params.bytes_per_line, HGBASE_IMGORIGIN_TOP };
|
||||
HGImage img = NULL;
|
||||
HGBase_CreateImageWithData(p->m_buffer, &imgInfo, &img);
|
||||
if (NULL != img)
|
||||
{
|
||||
HGBase_SetImageDpi(img, p->m_dpi, p->m_dpi);
|
||||
p->m_imageFunc((HGSaneDevice)p, img, p->m_imageParam);
|
||||
HGBase_DestroyImage(img);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void HGSaneDeviceImpl::ShowScanImageCallback(const SANE_Parameters* imageFormat, const SANE_Byte* imageData, void* callbackParam)
|
||||
{
|
||||
HGSaneDeviceImpl* p = (HGSaneDeviceImpl*)callbackParam;
|
||||
|
|
|
@ -78,13 +78,10 @@ public:
|
|||
HGResult Login(const HGChar *user, const HGChar *pwd);
|
||||
HGResult Logout();
|
||||
HGResult ClearRollerCount();
|
||||
HGResult GetDriverLogPath(HGChar *path, HGUInt maxLen);
|
||||
HGResult GetDriverLog(const HGChar *fileName);
|
||||
HGResult ClearDriverLog();
|
||||
HGResult GetDeviceLogPath(HGChar *path, HGUInt maxLen);
|
||||
HGResult GetDeviceLog(const HGChar *fileName);
|
||||
HGResult ClearDeviceLog();
|
||||
HGResult Start(HGSane_DeviceEventFunc eventFunc, HGPointer eventParam,
|
||||
HGSane_DeviceImageFunc imageFunc, HGPointer imageParam, HGChar* errInfo, HGUInt errInfoLen);
|
||||
HGResult Stop();
|
||||
HGResult StartWithUI(HGWindow parent, HGSane_DeviceImageFunc imageFunc, HGPointer imageParam);
|
||||
HGResult StartWithSingleScan(HGWindow parent, HGSane_DeviceImageFunc imageFunc, HGPointer imageParam);
|
||||
|
||||
|
@ -93,7 +90,6 @@ private:
|
|||
HGResult GetValueInt32(HGUInt optionId, HGInt *value);
|
||||
HGResult SetValueStr256(HGUInt optionId, const HGChar *value);
|
||||
HGResult GetValueStr256(HGUInt optionId, HGChar *value, HGUInt maxLen);
|
||||
static void HGAPI ThreadFunc(HGThread thread, HGPointer param);
|
||||
static void ShowScanImageCallback(const SANE_Parameters* imageFormat, const SANE_Byte* imageData, void* callbackParam);
|
||||
|
||||
private:
|
||||
|
@ -107,8 +103,6 @@ private:
|
|||
HGPointer m_eventParam;
|
||||
HGSane_DeviceImageFunc m_imageFunc;
|
||||
HGPointer m_imageParam;
|
||||
volatile HGBool m_stopThread;
|
||||
HGThread m_thread;
|
||||
};
|
||||
|
||||
#endif /* __HGSANEIMPL_HPP__ */
|
||||
|
|
Loading…
Reference in New Issue