saneui中去掉sane_io_control相关调用
This commit is contained in:
parent
c4fe1495ec
commit
e5951a960e
|
@ -250,7 +250,7 @@ HGResult HGSaneSourceImpl::Init(const HGChar* saneManu, HGDll dll, const SANEAPI
|
||||||
|| NULL == saneAPI->sane_cancel_api || NULL == saneAPI->sane_get_devices_api
|
|| NULL == saneAPI->sane_cancel_api || NULL == saneAPI->sane_get_devices_api
|
||||||
|| NULL == saneAPI->sane_get_option_descriptor_api || NULL == saneAPI->sane_control_option_api
|
|| NULL == saneAPI->sane_get_option_descriptor_api || NULL == saneAPI->sane_control_option_api
|
||||||
|| NULL == saneAPI->sane_get_parameters_api || NULL == saneAPI->sane_set_io_mode_api
|
|| NULL == saneAPI->sane_get_parameters_api || NULL == saneAPI->sane_set_io_mode_api
|
||||||
|| NULL == saneAPI->sane_strstatus_api || NULL == saneAPI->sane_io_control_api
|
|| NULL == saneAPI->sane_strstatus_api
|
||||||
|| NULL == saneAPI->sane_init_api || NULL == saneAPI->sane_exit_api)
|
|| NULL == saneAPI->sane_init_api || NULL == saneAPI->sane_exit_api)
|
||||||
{
|
{
|
||||||
return HGBASE_ERR_INVALIDARG;
|
return HGBASE_ERR_INVALIDARG;
|
||||||
|
@ -524,11 +524,6 @@ HGResult HGSaneSourceImpl::FindFunctions(HGDll dll, const HGChar* saneManu, SANE
|
||||||
if (HGBASE_ERR_OK != ret)
|
if (HGBASE_ERR_OK != ret)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
sprintf(funcName, "sane_%s_io_control", saneManu);
|
|
||||||
ret = HGBase_GetDllProcAddress(dll, funcName, (HGPointer*)&saneAPI->sane_io_control_api);
|
|
||||||
if (HGBASE_ERR_OK != ret)
|
|
||||||
break;
|
|
||||||
|
|
||||||
} while (0);
|
} while (0);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -195,12 +195,76 @@ public:
|
||||||
|
|
||||||
gb::scanner_cfg::update(conf, &func);
|
gb::scanner_cfg::update(conf, &func);
|
||||||
}
|
}
|
||||||
|
static SANE_Status restore_settings(const SANEAPI* saneApi, SANE_Handle h)
|
||||||
|
{
|
||||||
|
SANE_Int dev_options = 0;
|
||||||
|
saneApi->sane_control_option_api(h, 0, SANE_ACTION_GET_VALUE, &dev_options, nullptr);
|
||||||
|
for(int i = 1; i < dev_options; ++i)
|
||||||
|
{
|
||||||
|
const SANE_Option_Descriptor* opt = saneApi->sane_get_option_descriptor_api(h, i);
|
||||||
|
if(!opt)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
saneApi->sane_control_option_api(h, i, SANE_ACTION_SET_AUTO, NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return SANE_STATUS_GOOD;
|
||||||
|
}
|
||||||
|
static SANE_Status get_default_value(const SANEAPI* saneApi, SANE_Handle h, int i, void* def)
|
||||||
|
{
|
||||||
|
const SANE_Option_Descriptor* opt = saneApi->sane_get_option_descriptor_api(h, i);
|
||||||
|
if(!opt)
|
||||||
|
{
|
||||||
|
return SANE_STATUS_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(opt->type == SANE_TYPE_BOOL)
|
||||||
|
{
|
||||||
|
SANE_Bool v = SANE_TRUE;
|
||||||
|
saneApi->sane_control_option_api(h, i, SANE_ACTION_GET_VALUE, &v, NULL);
|
||||||
|
saneApi->sane_control_option_api(h, i, SANE_ACTION_SET_AUTO, NULL, NULL);
|
||||||
|
saneApi->sane_control_option_api(h, i, SANE_ACTION_GET_VALUE, def, NULL);
|
||||||
|
saneApi->sane_control_option_api(h, i, SANE_ACTION_SET_VALUE, &v, NULL);
|
||||||
|
}
|
||||||
|
else if (opt->type == SANE_TYPE_INT)
|
||||||
|
{
|
||||||
|
SANE_Int v = 0;
|
||||||
|
saneApi->sane_control_option_api(h, i, SANE_ACTION_GET_VALUE, &v, NULL);
|
||||||
|
saneApi->sane_control_option_api(h, i, SANE_ACTION_SET_AUTO, NULL, NULL);
|
||||||
|
saneApi->sane_control_option_api(h, i, SANE_ACTION_GET_VALUE, def, NULL);
|
||||||
|
saneApi->sane_control_option_api(h, i, SANE_ACTION_SET_VALUE, &v, NULL);
|
||||||
|
}
|
||||||
|
else if(opt->type == SANE_TYPE_FIXED)
|
||||||
|
{
|
||||||
|
SANE_Fixed v = 0;
|
||||||
|
saneApi->sane_control_option_api(h, i, SANE_ACTION_GET_VALUE, &v, NULL);
|
||||||
|
saneApi->sane_control_option_api(h, i, SANE_ACTION_SET_AUTO, NULL, NULL);
|
||||||
|
saneApi->sane_control_option_api(h, i, SANE_ACTION_GET_VALUE, def, NULL);
|
||||||
|
saneApi->sane_control_option_api(h, i, SANE_ACTION_SET_VALUE, &v, NULL);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char *buf = new char[opt->size + 4];
|
||||||
|
memset(buf, 0, opt->size + 4);
|
||||||
|
saneApi->sane_control_option_api(h, i, SANE_ACTION_GET_VALUE, buf, NULL);
|
||||||
|
saneApi->sane_control_option_api(h, i, SANE_ACTION_SET_AUTO, NULL, NULL);
|
||||||
|
saneApi->sane_control_option_api(h, i, SANE_ACTION_GET_VALUE, def, NULL);
|
||||||
|
saneApi->sane_control_option_api(h, i, SANE_ACTION_SET_VALUE, buf, NULL);
|
||||||
|
delete[] buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
return SANE_STATUS_GOOD;
|
||||||
|
}
|
||||||
|
static SANE_Status set_custom_gamma(const SANEAPI* saneApi, SANE_Handle h, SANE_Gamma *gamma)
|
||||||
|
{
|
||||||
|
return saneApi->sane_control_option_api(h, 0x885A, SANE_ACTION_SET_VALUE, gamma, NULL);
|
||||||
|
}
|
||||||
static void apply_scheme(const SANEAPI* saneApi, SANE_Handle h, gb::sane_config_schm* schm)
|
static void apply_scheme(const SANEAPI* saneApi, SANE_Handle h, gb::sane_config_schm* schm)
|
||||||
{
|
{
|
||||||
SANE_Int count = 0, none = 0;
|
SANE_Int count = 0, none = 0;
|
||||||
std::string name(""), val("");
|
std::string name(""), val("");
|
||||||
|
|
||||||
none = saneApi->sane_io_control_api(h, IO_CTRL_CODE_RESTORE_SETTINGS, NULL, NULL);
|
none = restore_settings(saneApi, h);
|
||||||
if(schm && schm->id_from_name(SANE_STD_OPT_NAME_COLOR_MODE) == -1)
|
if(schm && schm->id_from_name(SANE_STD_OPT_NAME_COLOR_MODE) == -1)
|
||||||
{
|
{
|
||||||
SANE_Int dev_options = 0;
|
SANE_Int dev_options = 0;
|
||||||
|
@ -215,24 +279,24 @@ public:
|
||||||
if(opt->type == SANE_TYPE_BOOL)
|
if(opt->type == SANE_TYPE_BOOL)
|
||||||
{
|
{
|
||||||
SANE_Bool v = SANE_TRUE;
|
SANE_Bool v = SANE_TRUE;
|
||||||
saneApi->sane_io_control_api(h, IO_CTRL_CODE_GET_DEFAULT_VALUE, &v, &n);
|
get_default_value(saneApi, h, n, &v);
|
||||||
schm->set_default_value(i, opt->name, (char*)&v, sizeof(v));
|
schm->set_default_value(i, opt->name, (char*)&v, sizeof(v));
|
||||||
}
|
}
|
||||||
else if (opt->type == SANE_TYPE_INT) {
|
else if (opt->type == SANE_TYPE_INT) {
|
||||||
SANE_Int v = 0;
|
SANE_Int v = 0;
|
||||||
saneApi->sane_io_control_api(h, IO_CTRL_CODE_GET_DEFAULT_VALUE, &v, &n);
|
get_default_value(saneApi, h, n, &v);
|
||||||
schm->set_default_value(i, opt->name, (char*)&v, sizeof(v));
|
schm->set_default_value(i, opt->name, (char*)&v, sizeof(v));
|
||||||
}
|
}
|
||||||
else if(opt->type == SANE_TYPE_FIXED)
|
else if(opt->type == SANE_TYPE_FIXED)
|
||||||
{
|
{
|
||||||
SANE_Fixed v = 0;
|
SANE_Fixed v = 0;
|
||||||
saneApi->sane_io_control_api(h, IO_CTRL_CODE_GET_DEFAULT_VALUE, &v, &n);
|
get_default_value(saneApi, h, n, &v);
|
||||||
schm->set_default_value(i, opt->name, (char*)&v, sizeof(v));
|
schm->set_default_value(i, opt->name, (char*)&v, sizeof(v));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
char *buf = new char[opt->size + 4];
|
char *buf = new char[opt->size + 4];
|
||||||
memset(buf, 0, opt->size + 4);
|
memset(buf, 0, opt->size + 4);
|
||||||
saneApi->sane_io_control_api(h, IO_CTRL_CODE_GET_DEFAULT_VALUE, buf, &n);
|
get_default_value(saneApi, h, n, buf);
|
||||||
std::string langCN(to_default_language(buf, nullptr));
|
std::string langCN(to_default_language(buf, nullptr));
|
||||||
schm->set_default_value(i, opt->name, &langCN[0], langCN.length());
|
schm->set_default_value(i, opt->name, &langCN[0], langCN.length());
|
||||||
delete[] buf;
|
delete[] buf;
|
||||||
|
@ -250,8 +314,7 @@ public:
|
||||||
{
|
{
|
||||||
if(name == SANE_STD_OPT_NAME_IS_CUSTOM_GAMMA && val.length() == sizeof(SANE_Gamma))
|
if(name == SANE_STD_OPT_NAME_IS_CUSTOM_GAMMA && val.length() == sizeof(SANE_Gamma))
|
||||||
{
|
{
|
||||||
unsigned int l = val.length();
|
set_custom_gamma(saneApi, h, (SANE_Gamma*)&val[0]);
|
||||||
saneApi->sane_io_control_api(h, IO_CTRL_CODE_SET_CUSTOM_GAMMA, &val[0], &l);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -164,11 +164,6 @@ HGResult Dialog_Source_Select::FindFunctions(HGDll dll, const HGChar* saneManu,
|
||||||
if (HGBASE_ERR_OK != ret)
|
if (HGBASE_ERR_OK != ret)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
sprintf(funcName, "sane_%s_io_control", saneManu);
|
|
||||||
ret = HGBase_GetDllProcAddress(dll, funcName, (HGPointer*)&saneAPI->sane_io_control_api);
|
|
||||||
if (HGBASE_ERR_OK != ret)
|
|
||||||
break;
|
|
||||||
|
|
||||||
} while (0);
|
} while (0);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -75,7 +75,7 @@ hg_settingdialog::hg_settingdialog(const SANEAPI* saneApi, SANE_Handle handle, c
|
||||||
|
|
||||||
initUi();
|
initUi();
|
||||||
on_current_scheme_changed();
|
on_current_scheme_changed();
|
||||||
getAppVersion();
|
//getAppVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
hg_settingdialog::~hg_settingdialog()
|
hg_settingdialog::~hg_settingdialog()
|
||||||
|
@ -127,7 +127,7 @@ void hg_settingdialog::updateOpt()
|
||||||
if(first)
|
if(first)
|
||||||
{
|
{
|
||||||
unsigned int n = i;
|
unsigned int n = i;
|
||||||
m_saneAPI.sane_io_control_api(m_devHandle, IO_CTRL_CODE_GET_DEFAULT_VALUE, &init, &n);
|
dev_que::get_default_value(&m_saneAPI, m_devHandle, n, &init);
|
||||||
cur_scheme_->set_default_value(i, opt->name, (char*)&init, sizeof(init));
|
cur_scheme_->set_default_value(i, opt->name, (char*)&init, sizeof(init));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -141,7 +141,7 @@ void hg_settingdialog::updateOpt()
|
||||||
if(first)
|
if(first)
|
||||||
{
|
{
|
||||||
unsigned int n = i;
|
unsigned int n = i;
|
||||||
m_saneAPI.sane_io_control_api(m_devHandle, IO_CTRL_CODE_GET_DEFAULT_VALUE, &init, &n);
|
dev_que::get_default_value(&m_saneAPI, m_devHandle, n, &init);
|
||||||
cur_scheme_->set_default_value(i, opt->name, (char*)&init, sizeof(init));
|
cur_scheme_->set_default_value(i, opt->name, (char*)&init, sizeof(init));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -155,7 +155,7 @@ void hg_settingdialog::updateOpt()
|
||||||
if(first)
|
if(first)
|
||||||
{
|
{
|
||||||
unsigned int n = i;
|
unsigned int n = i;
|
||||||
m_saneAPI.sane_io_control_api(m_devHandle, IO_CTRL_CODE_GET_DEFAULT_VALUE, &init, &n);
|
dev_que::get_default_value(&m_saneAPI, m_devHandle, n, &init);
|
||||||
cur_scheme_->set_default_value(i, opt->name, (char*)&init, sizeof(init));
|
cur_scheme_->set_default_value(i, opt->name, (char*)&init, sizeof(init));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -169,7 +169,7 @@ void hg_settingdialog::updateOpt()
|
||||||
if(first)
|
if(first)
|
||||||
{
|
{
|
||||||
unsigned int n = i;
|
unsigned int n = i;
|
||||||
int err = m_saneAPI.sane_io_control_api(m_devHandle, IO_CTRL_CODE_GET_DEFAULT_VALUE, init, &n);
|
int err = dev_que::get_default_value(&m_saneAPI, m_devHandle, n, init);
|
||||||
(void)err;
|
(void)err;
|
||||||
std::string langCN(to_default_language(init, nullptr));
|
std::string langCN(to_default_language(init, nullptr));
|
||||||
cur_scheme_->set_default_value(i, opt->name, &langCN[0], langCN.length());
|
cur_scheme_->set_default_value(i, opt->name, &langCN[0], langCN.length());
|
||||||
|
@ -1187,8 +1187,7 @@ void hg_settingdialog::slot_gammaButtonClicked()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int len = sizeof(SANE_Gamma);
|
dev_que::set_custom_gamma(&m_saneAPI, m_devHandle, &m_gammaData);
|
||||||
m_saneAPI.sane_io_control_api(m_devHandle, IO_CTRL_CODE_SET_CUSTOM_GAMMA, &m_gammaData, &len);
|
|
||||||
cur_scheme_->config_changed(SANE_STD_OPT_NAME_IS_CUSTOM_GAMMA, (char*)&m_gammaData, sizeof(m_gammaData), true);
|
cur_scheme_->config_changed(SANE_STD_OPT_NAME_IS_CUSTOM_GAMMA, (char*)&m_gammaData, sizeof(m_gammaData), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1760,23 +1759,11 @@ void hg_settingdialog::cancel_setting(void)
|
||||||
dev_que::apply_scheme(&m_saneAPI, m_devHandle, cur_scheme_);
|
dev_que::apply_scheme(&m_saneAPI, m_devHandle, cur_scheme_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void hg_settingdialog::getAppVersion()
|
std::string hg_settingdialog::getAppVersion()
|
||||||
{
|
{
|
||||||
SANE_About *about = nullptr;
|
char v[256] = {0};
|
||||||
unsigned int len = 0;
|
m_saneAPI.sane_control_option_api(m_devHandle, (SANE_Int)0x884A, SANE_ACTION_GET_VALUE, v, NULL);
|
||||||
std::string versionNum;
|
return v;
|
||||||
if (m_saneAPI.sane_io_control_api(m_devHandle, IO_CTRL_CODE_ABOUT_INFO, about, &len) == SANE_STATUS_NO_MEM)
|
|
||||||
{
|
|
||||||
about = (SANE_About*)malloc(len + 128);
|
|
||||||
if (about)
|
|
||||||
{
|
|
||||||
memset(about, 0, len + 128);
|
|
||||||
if (m_saneAPI.sane_io_control_api(m_devHandle, IO_CTRL_CODE_ABOUT_INFO, about, &len) == SANE_STATUS_GOOD)
|
|
||||||
{
|
|
||||||
versionNum = about->version;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
void hg_settingdialog::apply_current_scheme(void)
|
void hg_settingdialog::apply_current_scheme(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -79,7 +79,7 @@ private:
|
||||||
std::string getCurUiShemeName(std::string name);
|
std::string getCurUiShemeName(std::string name);
|
||||||
void save_scheme(void);
|
void save_scheme(void);
|
||||||
void cancel_setting(void);
|
void cancel_setting(void);
|
||||||
void getAppVersion();
|
std::string getAppVersion();
|
||||||
void apply_current_scheme(void);
|
void apply_current_scheme(void);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
Loading…
Reference in New Issue