v4.24: 更新穿孔移除算法

This commit is contained in:
gb 2022-09-12 14:45:07 +08:00
parent aa9997f561
commit 22009727c5
4 changed files with 92 additions and 10 deletions

View File

@ -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"

View File

@ -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"

View File

@ -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))

View File

@ -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>