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