#ifndef DIALOG_SCAN_H #define DIALOG_SCAN_H #include #include #include "sane/sane_ex.h" #include "sane/sane_option_definitions.h" #include "base/HGImage.h" #include "base/HGThread.h" #include "base/HGMsgPump.h" #include "imgfmt/HGImgFmt.h" #include "mainwindow.h" namespace Ui { class Dialog_Scan; } class Dialog_Scan : public QDialog { Q_OBJECT friend class MainWindow; public: explicit Dialog_Scan(class MainWindow *mainWnd); ~Dialog_Scan(); private: void StopScan(); void SaveImage(HGImage image); static int sane_ex_callback(SANE_Handle hdev, int code, void* data, unsigned int* len, void* param); static void HGAPI ocrThreadFunc(HGThread thread, HGPointer param); static void HGAPI ocrMsgPumpFunc(HGMsgPump msgPump, const HGMsg* msg, HGPointer param); protected: virtual void closeEvent(QCloseEvent *e) override; signals: void deviceArrive(QString devName); void deviceRemove(QString devName); void keyPress(unsigned int buttonType); void scanWorking(); void scanInfo(QString info, bool error); void scanImage(unsigned int count); void scanFinish(); private slots: void on_deviceArrive(QString devName); void on_deviceRemove(QString devName); void on_keyPress(unsigned int buttonType); void on_scanWorking(); void on_scanInfo(QString info, bool error); void on_scanImage(unsigned int count); void on_scanFinish(); void on_comboBox_currentIndexChanged(const QString &arg1); private: Ui::Dialog_Scan *ui; class MainWindow *m_mainWnd; QString m_devName; SANE_Handle m_devHandle; bool m_scanning; HGUInt m_dpi; QString m_scanFileName; HGImgFmtWriter m_scanImgFmtWriter; SaveParam m_aquireIntoSaveParam; bool m_aquireIntoInBlank; int m_aquireIntoBatchStartIndex; int m_aquireIntoPageIndex; int m_aquireIntoMultiPageCount; HGMsgPump m_ocrMsgPump; HGThread m_ocrThread; }; #endif // DIALOG_SCAN_H