v4.24: 更新穿孔移除算法
This commit is contained in:
parent
aa9997f561
commit
22009727c5
|
@ -51,8 +51,8 @@ END
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 4,23,10000,22238
|
FILEVERSION 4,24,10000,22255
|
||||||
PRODUCTVERSION 4,23,10000,22238
|
PRODUCTVERSION 4,24,10000,22255
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -69,12 +69,12 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "宁波华高信息科技有限公司"
|
VALUE "CompanyName", "宁波华高信息科技有限公司"
|
||||||
VALUE "FileDescription", "华高扫描仪应用程序"
|
VALUE "FileDescription", "华高扫描仪应用程序"
|
||||||
VALUE "FileVersion", "4.23.10000.22238"
|
VALUE "FileVersion", "4.24.10000.22255"
|
||||||
VALUE "InternalName", "scanner.dll"
|
VALUE "InternalName", "scanner.dll"
|
||||||
VALUE "LegalCopyright", "Copyright (C) HUAGOScan 2022"
|
VALUE "LegalCopyright", "Copyright (C) HUAGOScan 2022"
|
||||||
VALUE "OriginalFilename", "scanner.dll"
|
VALUE "OriginalFilename", "scanner.dll"
|
||||||
VALUE "ProductName", "HUAGOScan"
|
VALUE "ProductName", "HUAGOScan"
|
||||||
VALUE "ProductVersion", "4.23.10000.22238"
|
VALUE "ProductVersion", "4.24.10000.22255"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
@ -248,8 +248,8 @@ END
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 4,23,10000,22238
|
FILEVERSION 4,24,10000,22255
|
||||||
PRODUCTVERSION 4,23,10000,22238
|
PRODUCTVERSION 4,24,10000,22255
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -266,12 +266,12 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "宁波华高信息科技有限公司"
|
VALUE "CompanyName", "宁波华高信息科技有限公司"
|
||||||
VALUE "FileDescription", "华高扫描仪应用程序"
|
VALUE "FileDescription", "华高扫描仪应用程序"
|
||||||
VALUE "FileVersion", "4.23.10000.22238"
|
VALUE "FileVersion", "4.24.10000.22255"
|
||||||
VALUE "InternalName", "sane.dll"
|
VALUE "InternalName", "sane.dll"
|
||||||
VALUE "LegalCopyright", "Copyright (C) HUAGOScan 2022"
|
VALUE "LegalCopyright", "Copyright (C) HUAGOScan 2022"
|
||||||
VALUE "OriginalFilename", "sane.dll"
|
VALUE "OriginalFilename", "sane.dll"
|
||||||
VALUE "ProductName", "HUAGOScan"
|
VALUE "ProductName", "HUAGOScan"
|
||||||
VALUE "ProductVersion", "4.23.10000.22238"
|
VALUE "ProductVersion", "4.24.10000.22255"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
@ -358,8 +358,8 @@ int scanner::init_options_id(void)
|
||||||
else SET_OPT_ID(fill_background, BJTCFS, extension_fill_bkg_method)
|
else SET_OPT_ID(fill_background, BJTCFS, extension_fill_bkg_method)
|
||||||
else SET_OPT_ID(is_anti_permeate, FZST, extension_none)
|
else SET_OPT_ID(is_anti_permeate, FZST, extension_none)
|
||||||
else SET_OPT_ID(anti_permeate_level, FZSTDJ, extension_none)
|
else SET_OPT_ID(anti_permeate_level, FZSTDJ, extension_none)
|
||||||
// else SET_OPT_ID(is_erase_hole, CKYC, extension_none)
|
else SET_OPT_ID(is_erase_hole, CKYC, extension_none)
|
||||||
// else SET_OPT_ID(search_hole_range, CKSSFWZFMBL, extension_none)
|
else SET_OPT_ID(search_hole_range, CKSSFWZFMBL, extension_none)
|
||||||
else SET_OPT_ID(is_filling_color, SCTC, extension_none)
|
else SET_OPT_ID(is_filling_color, SCTC, extension_none)
|
||||||
else SET_OPT_ID(is_ultrasonic_check, CSBJC, extension_none)
|
else SET_OPT_ID(is_ultrasonic_check, CSBJC, extension_none)
|
||||||
else SET_OPT_ID(is_check_staple, ZDJC, extension_none)
|
else SET_OPT_ID(is_check_staple, ZDJC, extension_none)
|
||||||
|
@ -411,6 +411,19 @@ int scanner::init_options_id(void)
|
||||||
if (black_white_threshold_id_ == -1)
|
if (black_white_threshold_id_ == -1)
|
||||||
black_white_threshold_id_ = 0x8836;
|
black_white_threshold_id_ = 0x8836;
|
||||||
|
|
||||||
|
if (is_erase_hole_id_ == -1)
|
||||||
|
{
|
||||||
|
// 兼容老的除孔算法
|
||||||
|
EXAPI ea;
|
||||||
|
|
||||||
|
ea.ind = is_erase_hole_id_ = ex_id_++;
|
||||||
|
ea.ex_api = &scanner::handle_ex_erase_hole;
|
||||||
|
ex_opts_.push_back(ea);
|
||||||
|
|
||||||
|
ea.ind = search_hole_range_id_ = ex_id_++;
|
||||||
|
ea.ex_api = &scanner::handle_ex_search_hole_range;
|
||||||
|
ex_opts_.push_back(ea);
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
int scanner::control_read_string(int code, std::string& ret)
|
int scanner::control_read_string(int code, std::string& ret)
|
||||||
|
@ -1557,6 +1570,73 @@ EX_OPTION_HANDLER_IMPL(ip)
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
EX_OPTION_HANDLER_IMPL(erase_hole)
|
||||||
|
{
|
||||||
|
int ret = SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||||
|
if (is_erase_hole_l_id_ != -1 || is_erase_hole_r_id_ != -1)
|
||||||
|
{
|
||||||
|
SANE_Bool yes = SANE_FALSE;
|
||||||
|
SANE_Int after = 0;
|
||||||
|
if (setv)
|
||||||
|
{
|
||||||
|
if (is_erase_hole_l_id_ != -1)
|
||||||
|
hg_sane_middleware::instance()->set_option(handle_, is_erase_hole_l_id_, SANE_ACTION_GET_VALUE, &yes, &after);
|
||||||
|
if (!yes && is_erase_hole_r_id_ != -1)
|
||||||
|
hg_sane_middleware::instance()->set_option(handle_, is_erase_hole_r_id_, SANE_ACTION_GET_VALUE, &yes, &after);
|
||||||
|
|
||||||
|
bool v = yes == SANE_TRUE;
|
||||||
|
setv(&v, VAL_ROLE_CURRENT, data);
|
||||||
|
ret = SCANNER_ERR_OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
yes = *(bool*)data ? SANE_TRUE : SANE_FALSE;
|
||||||
|
if (is_erase_hole_l_id_ != -1)
|
||||||
|
ret = hg_sane_middleware::instance()->set_option(handle_, is_erase_hole_l_id_, SANE_ACTION_SET_VALUE, &yes, &after);
|
||||||
|
yes = *(bool*)data ? SANE_TRUE : SANE_FALSE;
|
||||||
|
if (is_erase_hole_r_id_ != -1)
|
||||||
|
ret = hg_sane_middleware::instance()->set_option(handle_, is_erase_hole_r_id_, SANE_ACTION_SET_VALUE, &yes, &after);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
EX_OPTION_HANDLER_IMPL(search_hole_range)
|
||||||
|
{
|
||||||
|
int ret = SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||||
|
if (search_hole_range_l_id_ != -1 || search_hole_range_r_id_ != -1)
|
||||||
|
{
|
||||||
|
SANE_Fixed val = 0;
|
||||||
|
SANE_Int after = 0;
|
||||||
|
double rv = .0f;
|
||||||
|
if (setv)
|
||||||
|
{
|
||||||
|
if (search_hole_range_l_id_ != -1)
|
||||||
|
hg_sane_middleware::instance()->set_option(handle_, search_hole_range_l_id_, SANE_ACTION_GET_VALUE, &val, &after);
|
||||||
|
rv = SANE_UNFIX(val);
|
||||||
|
if (search_hole_range_r_id_ != -1)
|
||||||
|
{
|
||||||
|
hg_sane_middleware::instance()->set_option(handle_, search_hole_range_r_id_, SANE_ACTION_GET_VALUE, &val, &after);
|
||||||
|
if (rv < SANE_UNFIX(val))
|
||||||
|
rv = SANE_UNFIX(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
setv(&rv, VAL_ROLE_CURRENT, data);
|
||||||
|
ret = SCANNER_ERR_OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
val = SANE_FIX(*(double*)data);
|
||||||
|
if (search_hole_range_l_id_ != -1)
|
||||||
|
ret = hg_sane_middleware::instance()->set_option(handle_, search_hole_range_l_id_, SANE_ACTION_SET_VALUE, &val, &after);
|
||||||
|
val = SANE_FIX(*(double*)data);
|
||||||
|
if (search_hole_range_r_id_ != -1)
|
||||||
|
ret = hg_sane_middleware::instance()->set_option(handle_, search_hole_range_r_id_, SANE_ACTION_SET_VALUE, &val, &after);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
// ISaneInvoker
|
// ISaneInvoker
|
||||||
COM_API_IMPLEMENT(scanner, int, start(void))
|
COM_API_IMPLEMENT(scanner, int, start(void))
|
||||||
|
|
|
@ -114,6 +114,8 @@ class scanner : public ISaneInvoker, virtual public refer
|
||||||
EX_OPTION_HANDLER_DECL(power); // int
|
EX_OPTION_HANDLER_DECL(power); // int
|
||||||
EX_OPTION_HANDLER_DECL(hardware_version); // std::string
|
EX_OPTION_HANDLER_DECL(hardware_version); // std::string
|
||||||
EX_OPTION_HANDLER_DECL(ip); // std::string
|
EX_OPTION_HANDLER_DECL(ip); // std::string
|
||||||
|
EX_OPTION_HANDLER_DECL(erase_hole);
|
||||||
|
EX_OPTION_HANDLER_DECL(search_hole_range);
|
||||||
|
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
|
|
Loading…
Reference in New Issue