在扫描前获取dpi而不是扫描过程中
This commit is contained in:
parent
112d13d22e
commit
fd0e1f82bd
|
@ -47,6 +47,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||||
: QMainWindow(parent)
|
: QMainWindow(parent)
|
||||||
, ui(new Ui::MainWindow)
|
, ui(new Ui::MainWindow)
|
||||||
, m_admin_loggedIn(false)
|
, m_admin_loggedIn(false)
|
||||||
|
, m_dpi(200)
|
||||||
, m_currFilePath("")
|
, m_currFilePath("")
|
||||||
, m_currIndex(-1)
|
, m_currIndex(-1)
|
||||||
, m_multiPageCount(0)
|
, m_multiPageCount(0)
|
||||||
|
@ -728,28 +729,7 @@ void MainWindow::on_sane_dev_error(QString errorInfo)
|
||||||
void MainWindow::on_new_image(void *img)
|
void MainWindow::on_new_image(void *img)
|
||||||
{
|
{
|
||||||
HGImage image = (HGImage)img;
|
HGImage image = (HGImage)img;
|
||||||
|
HGBase_SetImageDpi(image, m_dpi, m_dpi);
|
||||||
HGUInt dpi = 96;
|
|
||||||
SANE_Int num_dev_options = 0;
|
|
||||||
sane_control_option(cur_dev_.handle(), 0, SANE_ACTION_GET_VALUE, &num_dev_options, nullptr);
|
|
||||||
for (int i = 1; i < num_dev_options; ++i)
|
|
||||||
{
|
|
||||||
const SANE_Option_Descriptor* desp = sane_get_option_descriptor(cur_dev_.handle(), i);
|
|
||||||
if (nullptr == desp)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (SANE_TYPE_INT == desp->type)
|
|
||||||
{
|
|
||||||
SANE_Int value = 0;
|
|
||||||
sane_control_option(cur_dev_.handle(), i, SANE_ACTION_GET_VALUE, &value, nullptr);
|
|
||||||
if (0 == strcmp(desp->title, OPTION_TITLE_FBL))
|
|
||||||
{
|
|
||||||
dpi = (HGUInt)value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
HGBase_SetImageDpi(image, dpi, dpi);
|
|
||||||
|
|
||||||
if (1 == m_scanType)
|
if (1 == m_scanType)
|
||||||
{
|
{
|
||||||
|
@ -962,6 +942,8 @@ void MainWindow::on_continueScan()
|
||||||
startSaveMessageBox(m_dialogLog);
|
startSaveMessageBox(m_dialogLog);
|
||||||
|
|
||||||
SANE_Status ret;
|
SANE_Status ret;
|
||||||
|
|
||||||
|
m_dpi = getDpi();
|
||||||
if (m_singleScan)
|
if (m_singleScan)
|
||||||
ret = sane_io_control(cur_dev_.handle(), IO_CTRL_CODE_TEST_SINGLE, nullptr, nullptr);
|
ret = sane_io_control(cur_dev_.handle(), IO_CTRL_CODE_TEST_SINGLE, nullptr, nullptr);
|
||||||
else
|
else
|
||||||
|
@ -1064,6 +1046,31 @@ void MainWindow::on_act_last_triggered()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HGUInt MainWindow::getDpi()
|
||||||
|
{
|
||||||
|
HGUInt dpi = 200;
|
||||||
|
SANE_Int num_dev_options = 0;
|
||||||
|
sane_control_option(cur_dev_.handle(), 0, SANE_ACTION_GET_VALUE, &num_dev_options, nullptr);
|
||||||
|
for (int i = 1; i < num_dev_options; ++i)
|
||||||
|
{
|
||||||
|
const SANE_Option_Descriptor* desp = sane_get_option_descriptor(cur_dev_.handle(), i);
|
||||||
|
if (nullptr == desp)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (SANE_TYPE_INT == desp->type)
|
||||||
|
{
|
||||||
|
SANE_Int value = 0;
|
||||||
|
sane_control_option(cur_dev_.handle(), i, SANE_ACTION_GET_VALUE, &value, nullptr);
|
||||||
|
if (0 == strcmp(desp->title, OPTION_TITLE_FBL))
|
||||||
|
{
|
||||||
|
dpi = (HGUInt)value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dpi;
|
||||||
|
}
|
||||||
|
|
||||||
QString MainWindow::getCacheFileName()
|
QString MainWindow::getCacheFileName()
|
||||||
{
|
{
|
||||||
QString cachePath = Dialog_ClrCache::getCachePath();
|
QString cachePath = Dialog_ClrCache::getCachePath();
|
||||||
|
@ -2448,6 +2455,7 @@ void MainWindow::on_act_acquire_triggered()
|
||||||
|
|
||||||
startSaveMessageBox(this);
|
startSaveMessageBox(this);
|
||||||
|
|
||||||
|
m_dpi = getDpi();
|
||||||
SANE_Status ret = sane_start(cur_dev_.handle());
|
SANE_Status ret = sane_start(cur_dev_.handle());
|
||||||
if (ret != SANE_STATUS_GOOD)
|
if (ret != SANE_STATUS_GOOD)
|
||||||
{
|
{
|
||||||
|
@ -2495,6 +2503,7 @@ void MainWindow::on_act_acquireSingle_triggered()
|
||||||
|
|
||||||
startSaveMessageBox(this);
|
startSaveMessageBox(this);
|
||||||
|
|
||||||
|
m_dpi = getDpi();
|
||||||
SANE_Status ret = sane_io_control(cur_dev_.handle(), IO_CTRL_CODE_TEST_SINGLE, nullptr, nullptr);
|
SANE_Status ret = sane_io_control(cur_dev_.handle(), IO_CTRL_CODE_TEST_SINGLE, nullptr, nullptr);
|
||||||
if (ret != SANE_STATUS_GOOD)
|
if (ret != SANE_STATUS_GOOD)
|
||||||
{
|
{
|
||||||
|
@ -2557,6 +2566,7 @@ void MainWindow::on_act_acquireInto_triggered()
|
||||||
|
|
||||||
startSaveMessageBox(this);
|
startSaveMessageBox(this);
|
||||||
|
|
||||||
|
m_dpi = getDpi();
|
||||||
SANE_Status ret = sane_start(cur_dev_.handle());
|
SANE_Status ret = sane_start(cur_dev_.handle());
|
||||||
if (ret != SANE_STATUS_GOOD)
|
if (ret != SANE_STATUS_GOOD)
|
||||||
{
|
{
|
||||||
|
@ -2619,6 +2629,7 @@ void MainWindow::on_act_insertFromScanner_triggered()
|
||||||
|
|
||||||
startSaveMessageBox(this);
|
startSaveMessageBox(this);
|
||||||
|
|
||||||
|
m_dpi = getDpi();
|
||||||
SANE_Status ret = sane_start(cur_dev_.handle());
|
SANE_Status ret = sane_start(cur_dev_.handle());
|
||||||
if (ret != SANE_STATUS_GOOD)
|
if (ret != SANE_STATUS_GOOD)
|
||||||
{
|
{
|
||||||
|
|
|
@ -205,6 +205,7 @@ protected:
|
||||||
private:
|
private:
|
||||||
static int sane_ex_callback(SANE_Handle hdev, int code, void *data, unsigned int* len, void *param);
|
static int sane_ex_callback(SANE_Handle hdev, int code, void *data, unsigned int* len, void *param);
|
||||||
|
|
||||||
|
HGUInt getDpi();
|
||||||
QString getCacheFileName();
|
QString getCacheFileName();
|
||||||
HGImage createImage();
|
HGImage createImage();
|
||||||
int getMultiPageCount();
|
int getMultiPageCount();
|
||||||
|
@ -230,6 +231,7 @@ private:
|
||||||
sane_dev cur_dev_;
|
sane_dev cur_dev_;
|
||||||
std::vector<DEVCFG> dev_schemes_;
|
std::vector<DEVCFG> dev_schemes_;
|
||||||
|
|
||||||
|
HGUInt m_dpi;
|
||||||
QString m_currFilePath;
|
QString m_currFilePath;
|
||||||
int m_currIndex;
|
int m_currIndex;
|
||||||
int m_multiPageCount;
|
int m_multiPageCount;
|
||||||
|
|
Loading…
Reference in New Issue