From 9efd34e96eecaf5be8c0c82a8a4442e8c30d6d7b Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Mon, 29 May 2023 15:51:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=AE=9A=E4=B9=89GA?= =?UTF-8?q?MMA=E5=B1=9E=E6=80=A7=E8=AE=BF=E9=97=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/scanner_manager.cpp | 5 +++++ hgsane/sane_hg_mdw.cpp | 14 ++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/hgdriver/hgdev/scanner_manager.cpp b/hgdriver/hgdev/scanner_manager.cpp index 102d801..36df927 100644 --- a/hgdriver/hgdev/scanner_manager.cpp +++ b/hgdriver/hgdev/scanner_manager.cpp @@ -864,6 +864,9 @@ scanner_err hg_scanner_mgr::hg_scanner_get_parameter(scanner_handle h, const cha else return SCANNER_ERR_ACCESS_DENIED; } + else if (strcmp(SANE_STD_OPT_NAME_CUSTOM_GAMMA, name) == 0) + return (scanner_err)SCAN_PTR(h)->device_io_control(IO_CTRL_CODE_GET_CUSTOM_GAMMA, data, (unsigned int*)len); + if (strcmp(SANE_STD_OPT_NAME_LOGIN, name) == 0 || strcmp(SANE_STD_OPT_NAME_LOGOUT, name) == 0) return SCANNER_ERR_DEVICE_NOT_SUPPORT; @@ -943,6 +946,8 @@ scanner_err hg_scanner_mgr::hg_scanner_set_parameter(scanner_handle h, const cha return SCANNER_ERR_ACCESS_DENIED; } + else if (strcmp(SANE_STD_OPT_NAME_CUSTOM_GAMMA, name) == 0) + return (scanner_err)SCAN_PTR(h)->device_io_control(IO_CTRL_CODE_SET_CUSTOM_GAMMA, data, (unsigned int*)len); } return (scanner_err)SCAN_PTR(h)->set_setting(name, data, len); diff --git a/hgsane/sane_hg_mdw.cpp b/hgsane/sane_hg_mdw.cpp index 043d89d..d0190e9 100644 --- a/hgsane/sane_hg_mdw.cpp +++ b/hgsane/sane_hg_mdw.cpp @@ -394,6 +394,8 @@ namespace local_utility FIX_ID_TO_NAME(DEVICE_IP_ADDR, 255); FIX_ID_TO_NAME(DEVICE_MAC_ADDR, 255); + FIX_ID_TO_NAME(CUSTOM_GAMMA, sizeof(SANE_Gamma)); + return ""; } @@ -1357,17 +1359,21 @@ bool hg_sane_middleware::get_current_value(scanner_handle handle, const void* op if(!name.empty()) { - char buf[256] = { 0 }; - long len = sizeof(buf) - 1; + char *buf = new char[l + 4]; + long len = l; + bool ret = false; + memcpy(buf, value, l); + buf[l] = 0; if (hg_scanner_get_parameter(handle, name.c_str(), buf, &len) == SCANNER_ERR_OK) { setv(buf, len, value); - return true; + ret = true; } + delete[] buf; - return false; + return ret; } }