From 9d9812bfd617abd1a2f56bde51e087df2ca2d95d Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Fri, 26 Jan 2024 09:07:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D8018=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E7=BC=BA=E5=A4=B1=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- twain/twain/huagaods.cpp | 50 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/twain/twain/huagaods.cpp b/twain/twain/huagaods.cpp index a755253..6125f13 100644 --- a/twain/twain/huagaods.cpp +++ b/twain/twain/huagaods.cpp @@ -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 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((CapType)CapTypeEx::CAP_TYPE_EX_FILL_HOLE, { FALSE, TRUE }, ni, ii); + } + return success(); + case Msg::GetCurrent: + data = Capability::createOneValue((CapType)CapTypeEx::CAP_TYPE_EX_FILL_HOLE, Bool(now)); + return success(); + case Msg::GetDefault: + data = Capability::createOneValue((CapType)CapTypeEx::CAP_TYPE_EX_FILL_HOLE, Bool(init)); + return success(); + case Msg::Set: { + auto mech = data.currentItem(); + 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 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);