修复8018属性缺失问题

This commit is contained in:
gb 2024-01-26 09:07:24 +08:00
parent e6955e136c
commit 9d9812bfd6
1 changed files with 47 additions and 3 deletions

View File

@ -2829,13 +2829,53 @@ void huagao_ds::init_support_caps(void)
}
};
m_query[(CapType)CapTypeEx::CAP_TYPE_EX_FILL_HOLE] = msgSupportGetAllSetReset;
m_caps[(CapType)CapTypeEx::CAP_TYPE_EX_FILL_HOLE] = [this](Msg msg, Capability& data)->Result {
log_attr_access((int)CapTypeEx::CAP_TYPE_EX_FILL_HOLE, (int)msg);
bool init = false, now = false;
std::vector<bool> all;
int ret = SCANNER_ERR_OK;
//GET_SANE_OPT_EX(float, scanner_, search_hole_range, NULL, &all);
GET_SANE_OPT(bool, scanner_, RID_HOLE_L, NULL, &all);
init = all[sane_opts::RANGE_POS_DEFAULT];
now = all[sane_opts::RANGE_POS_CURRENT];
switch (msg) {
case Msg::Get:
{
Bool ni = all[sane_opts::RANGE_POS_CURRENT],
ii = all[sane_opts::RANGE_POS_DEFAULT];
data = Capability::createEnumeration<Bool>((CapType)CapTypeEx::CAP_TYPE_EX_FILL_HOLE, { FALSE, TRUE }, ni, ii);
}
return success();
case Msg::GetCurrent:
data = Capability::createOneValue<Bool>((CapType)CapTypeEx::CAP_TYPE_EX_FILL_HOLE, Bool(now));
return success();
case Msg::GetDefault:
data = Capability::createOneValue<Bool>((CapType)CapTypeEx::CAP_TYPE_EX_FILL_HOLE, Bool(init));
return success();
case Msg::Set: {
auto mech = data.currentItem<Bool>();
init = (bool)mech;
}
case Msg::Reset:
SET_SANE_OPT(ret, scanner_, RID_HOLE_L, &init);
SET_SANE_OPT(ret, scanner_, RID_HOLE_R, &init);
SET_SANE_OPT(ret, scanner_, RID_HOLE_T, &init);
SET_SANE_OPT(ret, scanner_, RID_HOLE_B, &init);
return ret == SCANNER_ERR_OK ? success() : badValue();
default:
return capBadOperation();
}
};
m_query[(CapType)CapTypeEx::CAP_TYPE_EX_FILL_HOLE_RATIO] = msgSupportGetAllSetReset;
m_caps[(CapType)CapTypeEx::CAP_TYPE_EX_FILL_HOLE_RATIO] = [this](Msg msg, Capability& data)->Result {
log_attr_access((int)CapTypeEx::CAP_TYPE_EX_FILL_HOLE_RATIO, (int)msg);
float init = .0f, l = .0f, u = .0f, step = .0f, now = .0f;
std::vector<float> all;
int ret = SCANNER_ERR_OK;
GET_SANE_OPT_EX(float, scanner_, search_hole_range, NULL, &all);
//GET_SANE_OPT_EX(float, scanner_, search_hole_range, NULL, &all);
GET_SANE_OPT(float, scanner_, SEARCH_HOLE_RANGE_L, NULL, &all);
init = all[sane_opts::RANGE_POS_DEFAULT] * 100.0f;
now = all[sane_opts::RANGE_POS_CURRENT] * 100.0f;
l = all[sane_opts::RANGE_POS_LOWER] * 100.0f;
@ -2859,7 +2899,11 @@ void huagao_ds::init_support_caps(void)
}
case Msg::Reset:
init /= 100.0f;
SET_SANE_OPT_EX(ret, scanner_, search_hole_range, &init);
//SET_SANE_OPT_EX(ret, scanner_, search_hole_range, &init);
SET_SANE_OPT(ret, scanner_, SEARCH_HOLE_RANGE_L, &init);
SET_SANE_OPT(ret, scanner_, SEARCH_HOLE_RANGE_R, &init);
SET_SANE_OPT(ret, scanner_, SEARCH_HOLE_RANGE_T, &init);
SET_SANE_OPT(ret, scanner_, SEARCH_HOLE_RANGE_B, &init);
return ret == SCANNER_ERR_OK ? success() : badValue();
default:
return capBadOperation();
@ -3258,7 +3302,7 @@ void huagao_ds::init_support_caps(void)
SET_EXISTING_EXTENSION(MARGIN, CapTypeEx::CAP_TYPE_EX_EDGE_IDENT);
SET_EXISTING_EXTENSION(ANTI_NOISE_LEVEL, CapTypeEx::CAP_TYPE_EX_ANTI_NOISE);
SET_EXISTING_EXTENSION(THRESHOLD, CapTypeEx::CAP_TYPE_EX_THRESHOLD);
SET_EXISTING_EXTENSION(RID_HOLE, CapTypeEx::CAP_TYPE_EX_FILL_HOLE);
//SET_EXISTING_EXTENSION(RID_HOLE, CapTypeEx::CAP_TYPE_EX_FILL_HOLE);
SET_EXISTING_EXTENSION(NOISE_OPTIMIZE, CapTypeEx::CAP_TYPE_EX_DETACH_NOISE);
SET_EXISTING_EXTENSION(NOISE_SIZE, CapTypeEx::CAP_TYPE_EX_DETACH_NOISE_THRESHOLD);
SET_EXISTING_EXTENSION(RID_MULTIOUT_RED, CapTypeEx::CAP_TYPE_EX_RID_RED);