From acf836648d9df4393c14cc220ccd5d7a543a335c Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Sat, 17 Jun 2023 16:52:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9B=BE=E5=83=8F=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E8=BD=AC=E6=8D=A2=E5=8F=8A=E9=87=8A=E6=94=BE=E9=A9=B1?= =?UTF-8?q?=E5=8A=A8=E5=86=85=E5=AD=98=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/scanner_manager.cpp | 18 +++++++++++++++++- hgsane/sane_hg_mdw.cpp | 2 ++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/hgdriver/hgdev/scanner_manager.cpp b/hgdriver/hgdev/scanner_manager.cpp index 03bc522..09f3a76 100644 --- a/hgdriver/hgdev/scanner_manager.cpp +++ b/hgdriver/hgdev/scanner_manager.cpp @@ -908,7 +908,9 @@ scanner_err hg_scanner_mgr::hg_scanner_get_parameter(scanner_handle h, const cha 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) + strcmp(SANE_STD_OPT_NAME_LOGOUT, name) == 0 || + strcmp(SANE_STD_OPT_NAME_TRANSFORM_IMAGE_FORMAT, name) == 0 || + strcmp(SANE_STD_OPT_NAME_FREE_BUFFER, name) == 0) return SCANNER_ERR_DEVICE_NOT_SUPPORT; if (strcmp(SANE_STD_OPT_NAME_ROLLER_LIFE, name) == 0) @@ -1002,6 +1004,20 @@ scanner_err hg_scanner_mgr::hg_scanner_set_parameter(scanner_handle h, const cha } 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); + else if (strcmp(SANE_STD_OPT_NAME_TRANSFORM_IMAGE_FORMAT, name) == 0) + { + return (scanner_err)SCAN_PTR(h)->device_io_control(IO_CTRL_CODE_CONVERT_IMAGE_FORMAT, data, (unsigned int*)len); + } + else if (strcmp(SANE_STD_OPT_NAME_FREE_BUFFER, name) == 0) + { + void* ptr = data ? *(void**)data : nullptr; + scanner_err ret = (scanner_err)SCAN_PTR(h)->device_io_control(IO_CTRL_CODE_FREE_MEMORY, ptr, (unsigned int*)len); + + if (data) + *(void**)data = nullptr; + + return ret; + } } 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 afc16a2..f84a9c0 100644 --- a/hgsane/sane_hg_mdw.cpp +++ b/hgsane/sane_hg_mdw.cpp @@ -400,6 +400,8 @@ namespace local_utility FIX_ID_TO_NAME(ROLLER_LIFE, sizeof(SANE_Int)); FIX_ID_TO_NAME(CUSTOM_GAMMA, sizeof(SANE_Gamma)); + FIX_ID_TO_NAME(TRANSFORM_IMAGE_FORMAT, sizeof(SANE_ImageFormatConvert)); + FIX_ID_TO_NAME(FREE_BUFFER, sizeof(void*)); //FIX_ID_TO_NAME(LANGUAGE, 128); return "";