make code compatible for linux
This commit is contained in:
parent
368a339bb2
commit
4adf21f0df
|
@ -5,7 +5,11 @@ add_definitions(-DUOS)
|
|||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -O2")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -O2")
|
||||
aux_source_directory(${PROJECT_SOURCE_DIR} DIR_SRCS)
|
||||
file(GLOB DIR_HEADS "${PROJECT_SOURCE_DIR}/*.h" "${PROJECT_SOURCE_DIR}/*.hpp" "${PROJECT_SOURCE_DIR}/../../sdk/hginclude/*.h" "${PROJECT_SOURCE_DIR}/../../sdk/hginclude/*.cpp")
|
||||
file(GLOB DIR_HEADS "${PROJECT_SOURCE_DIR}/*.h" "${PROJECT_SOURCE_DIR}/*.hpp"
|
||||
"${PROJECT_SOURCE_DIR}/user-opt/*.h" "${PROJECT_SOURCE_DIR}/user-opt/*.cpp"
|
||||
"${PROJECT_SOURCE_DIR}/../../sdk/hginclude/*.h" "${PROJECT_SOURCE_DIR}/../../sdk/hginclude/*.cpp"
|
||||
"${PROJECT_SOURCE_DIR}/../../sdk/json/*.h" "${PROJECT_SOURCE_DIR}/../../sdk/json/*.c*"
|
||||
)
|
||||
set(DIR_SRCS ${DIR_SRCS} ${DIR_HEADS})
|
||||
|
||||
add_library(${PROJECT_NAME} STATIC ${DIR_SRCS})
|
||||
|
@ -54,6 +58,6 @@ target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}
|
|||
${PROJECT_SOURCE_DIR}/../3rdparty/tiff/include
|
||||
${PROJECT_SOURCE_DIR}/../../../sdk/include
|
||||
${PROJECT_SOURCE_DIR}/../../sdk/hginclude
|
||||
|
||||
${PROJECT_SOURCE_DIR}/../../sdk
|
||||
)
|
||||
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../../../build)
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include <lang/app_language.h>
|
||||
#include "filetools.h"
|
||||
#include "../../sdk/json/gb_json.h"
|
||||
#include <fstream>
|
||||
|
||||
#if defined(WIN32) || defined(_WIN64)
|
||||
#include "scanner_manager.h"
|
||||
|
@ -113,7 +114,7 @@ namespace settings
|
|||
{200.0f, 1},
|
||||
{240.0f, 1},
|
||||
{300.0f, 0},
|
||||
{600.0f, 1} //临时版本å<EFBFBD>? 原æ<C5B8>¥å<EFBFBD>?
|
||||
{600.0f, 1} //临时版本<EFBFBD>? 原来<EFBFBD>?
|
||||
};
|
||||
bool is_equal(float l, float r)
|
||||
{
|
||||
|
@ -339,7 +340,7 @@ int hg_scanner_239::set_auto_flat(int data)
|
|||
}
|
||||
if ((fw[5] == 'A' && atoi(fw.substr(6, 4).c_str()) <= 9999))
|
||||
{
|
||||
data = data == 1 ? 1 : 0; //暂时没有用�
|
||||
data = data == 1 ? 1 : 0; //暂时没有用<EFBFBD>?
|
||||
}
|
||||
if (!wait_usb_.is_waiting())
|
||||
{
|
||||
|
@ -511,10 +512,10 @@ void hg_scanner_239::init_version(void)
|
|||
{
|
||||
firmware_sup_wait_paper_ = year_date.compare("3B0629") >= 0 ? true : false;
|
||||
firmware_sup_log_export_ = true;
|
||||
firmware_sup_pick_strength_ = false; //ä¸<EFBFBD>支æŒ
|
||||
firmware_sup_pick_strength_ = false; //不支<EFBFBD>
|
||||
firmware_sup_wake_device_ = year_date.compare("3C0518") >= 0 ? true : false;
|
||||
firmware_sup_color_corr_ = year.compare("3C") >= 0 ? true : false;
|
||||
firmware_sup_double_img = false; //ä¸<EFBFBD>支æŒ
|
||||
firmware_sup_double_img = false; //不支<EFBFBD>
|
||||
firmware_sup_devs_lock_ = year.compare("3C") >= 0 ? true : false;
|
||||
firmware_sup_dpi_300 = false;
|
||||
firmware_sup_dpi_600 = true;
|
||||
|
@ -598,7 +599,7 @@ int hg_scanner_239::writedown_device_configuration(bool type, setting_hardware:
|
|||
dev_conf->params_3399.is_fixedpaper = false;
|
||||
dev_conf->params_3399.en_autosize = true;
|
||||
}
|
||||
if (!firmware_sup_auto_speed_ && image_prc_param_.bits.paper == PAPER_AUTO_MATCH)//3399 ,åœ?C之å‰<C3A5>的版æœ?匹é…<C3A9>原始尺寸设置 12
|
||||
if (!firmware_sup_auto_speed_ && image_prc_param_.bits.paper == PAPER_AUTO_MATCH)//3399 ,<EFBFBD>?C之前的版<E79A84>?匹配原始尺寸设置 12
|
||||
{
|
||||
dev_conf->params_3399.paper = 12;
|
||||
}
|
||||
|
@ -891,7 +892,7 @@ int hg_scanner_239::on_resolution_changed(int& dpi)
|
|||
else
|
||||
dev_conf_.params_3399.dpi = dpi >= 500 ? 3 : (dpi < 500 && dpi> 299) ? 2 : 1;
|
||||
|
||||
//dev_conf_.params_3399.dpi = 1; //dpi å<EFBFBD>Žå‡Œcis和敦å<EFBFBD>—cis 默认å<C2A4>?æ— éœ€æ”¹å<C2B9>˜
|
||||
//dev_conf_.params_3399.dpi = 1; //dpi 华凌cis和敦南cis 默认<E9BB98>?无需改变
|
||||
int ret = writedown_device_configuration();
|
||||
return ret;
|
||||
}
|
||||
|
@ -949,7 +950,7 @@ int hg_scanner_239::on_skew_check_changed(bool& check)
|
|||
int hg_scanner_239::on_skew_check_level_changed(int& check)
|
||||
{
|
||||
int ret = SCANNER_ERR_OK,
|
||||
val = check - 1,//上é<EFBFBD>¢è®¾ç½®çš„是1 - 5 ,接å<C2A5>—范围值为0 - 4,默è®?
|
||||
val = check - 1,//上面设置的是1 - 5 ,接受范围值为0 - 4,默<EFBC8C>?
|
||||
old = dev_conf_.params_3399.screw_detect_level;
|
||||
setting_hardware::HGSCANCONF_3399 cf;
|
||||
|
||||
|
@ -1333,7 +1334,7 @@ void hg_scanner_239::thread_get_dves_image(void)
|
|||
break;
|
||||
}
|
||||
}
|
||||
////239 暂时先关é—å<EFBFBD>Œå¼ å˜å›¾å¼¹çª—æ<EFBFBD><EFBFBD>示,待到固件更新å†<EFBFBD>确认是å<EFBFBD>¦éœ€è¦<EFBFBD>å¼¹çª?
|
||||
////239 暂时先关闭双张存图弹窗提示,待到固件更新再确认是否需要弹<EFBFBD>?
|
||||
//while ((count = get_image_count()) > 0)
|
||||
//{
|
||||
// int s = SANE_Image_Statu_OK;
|
||||
|
@ -1388,7 +1389,7 @@ void hg_scanner_239::thread_get_dves_image(void)
|
|||
|
||||
// fetch all buffered images and exit ...
|
||||
//while(!is_dev_image_process_done())
|
||||
if (img_conf_.resolution_dst > 200 && is_quality_ == IMG_QUALITY) //åˆ é™¤è¿™æ®µä»£ç <EFBFBD>ï¼Œä½ å<EFBFBD>¯èƒ½éœ€è¦<EFBFBD>考虑一下å<EFBFBD>Žæž?
|
||||
if (img_conf_.resolution_dst > 200 && is_quality_ == IMG_QUALITY) //删除这段代码,你可能需要考虑一下后<EFBFBD>?
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(5000));
|
||||
else
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
||||
|
@ -1499,7 +1500,7 @@ int hg_scanner_239::start(void)
|
|||
|
||||
reset();
|
||||
|
||||
//211220固件版本ä¸<EFBFBD>支æŒ<EFBFBD>è¿”å›?
|
||||
//211220固件版本不支持返<EFBFBD>?
|
||||
ret = get_scan_is_sleep(val);
|
||||
if (!val && ret == SCANNER_ERR_OK)
|
||||
{
|
||||
|
@ -1781,7 +1782,7 @@ int hg_scanner_239::get_scan_is_sleep(SANE_Bool& type)
|
|||
std::lock_guard<std::mutex> lock(io_lock_);
|
||||
|
||||
int ret = 0,val;
|
||||
ret = read_register(setting3399::SR_GET_SLEEP_STAUTUS, &val); //0ä¼‘çœ 1唤醒状æ€?
|
||||
ret = read_register(setting3399::SR_GET_SLEEP_STAUTUS, &val); //0休眠 1唤醒状<E98692>?
|
||||
if (ret == SCANNER_ERR_OK)
|
||||
{
|
||||
type = val == 1 ? true : false;
|
||||
|
@ -1864,7 +1865,7 @@ int hg_scanner_239::get_device_log(string &logpath)
|
|||
if (ret != SCANNER_ERR_OK)
|
||||
return ret;
|
||||
|
||||
ofstream f;
|
||||
std::ofstream f;
|
||||
f.open(save_path,ios::out | ios::trunc);
|
||||
if (!f.is_open())
|
||||
return SCANNER_ERR_CREATE_FILE_FAILED;
|
||||
|
@ -1953,7 +1954,7 @@ int hg_scanner_239::set_scan_lock_check_val(string check_str)
|
|||
{
|
||||
return SCANNER_ERR_INVALID_PARAMETER;
|
||||
}
|
||||
int num = 32 - keys.size(); //ä¿<EFBFBD>æŒ<EFBFBD>32ä½<EFBFBD>下å<EFBFBD>?
|
||||
int num = 32 - keys.size(); //保持32位下<EFBFBD>?
|
||||
if (num > 0)
|
||||
{
|
||||
std::string str(num, '0');
|
||||
|
@ -2013,7 +2014,7 @@ int hg_scanner_239::set_firmware_upgrade(std::string filename)
|
|||
return SCANNER_ERR_OPEN_FILE_FAILED;
|
||||
}
|
||||
fwname.seekg(0, std::ios::end);
|
||||
int total = fwname.tellg();//记录总长�
|
||||
int total = fwname.tellg();//记录总长<EFBFBD>?
|
||||
fwname.seekg(0, std::ios::beg);
|
||||
int pos = fwname.tellg();//记录pos位置
|
||||
|
||||
|
@ -2052,7 +2053,7 @@ int hg_scanner_239::set_firmware_upgrade(std::string filename)
|
|||
return SCANNER_ERR_DEVICE_UPGRADE_FAIL;
|
||||
|
||||
int to_cnt = 0;
|
||||
// 到这个ä½<EFBFBD>置已ç»<EFBFBD>能够å<EFBFBD>‡çº§æˆ<EFBFBD>功了 å<>Žé<C5BD>¢å¯¹å<C2B9>‡çº§ç»“æžœå<C593>šä¸‹åˆ¤æ–?
|
||||
// 到这个位置已经能够升级成功了 后面对升级结果做下判<E4B88B>?
|
||||
auto now = std::chrono::steady_clock::now();
|
||||
while (std::chrono::duration<double>(std::chrono::steady_clock::now() - now).count() < 70)
|
||||
{
|
||||
|
@ -2119,7 +2120,7 @@ int hg_scanner_239::set_dev_islock_file(int islockfile)
|
|||
}
|
||||
if (islockfile != 0 && islockfile != 1)
|
||||
{
|
||||
return SCANNER_ERR_INVALID_PARAMETER; //这个地方设置的å<EFBFBD>‚æ•°å¿…é¡»ä¿<EFBFBD>è¯<EFBFBD>æ£ç¡?
|
||||
return SCANNER_ERR_INVALID_PARAMETER; //这个地方设置的参数必须保证正<EFBFBD>?
|
||||
}
|
||||
string device_log_path = "/var/log/black_list_file.txt";
|
||||
string str = std::to_string(islockfile);
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include "../../sdk/hginclude/utils.h"
|
||||
#include <lang/app_language.h>
|
||||
#include <fstream>
|
||||
|
||||
#if defined(WIN32) || defined(_WIN64)
|
||||
#include "scanner_manager.h"
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "../../sdk/hginclude/utils.h"
|
||||
#include <lang/app_language.h>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <string.h>
|
||||
#include "raw_src.h"
|
||||
#include "../../../sdk/include/huagao/brand.h"
|
||||
|
@ -402,7 +403,7 @@ void hg_scanner_mgr::on_hgscanner_pnp(usb_event ev, libusb_device* device, int v
|
|||
int index = -1;
|
||||
for (int i = 0; i < _countof(g_supporting_devices); ++i)
|
||||
{
|
||||
// 064B 婢舵艾褰寸拋鎯ь槵娴h法鏁ゆ潻娆庨嚋vid閿涘本澧嶆禒銉ュ<EFBFBD>鏉炶姤妞傛稉宥勭窗濞撳懏顨熺憰浣瑰ⅵ瀵<EFBFBD>偓閸濐亙绔撮崣鎷岊啎婢跺浄绱濋崣顏呮箒闁<EFBFBD>俺绻冩径鏍<EFBFBD>劥鏉╂稖顢戦崝鐘烘祰閺€鐟板綁鐎圭偘绶?
|
||||
// 064B 澶氬彴璁惧浣跨敤杩欎釜vid锛屾墍浠ュ姞杞芥椂涓嶄細娓呮瑕佹墦寮€鍝竴鍙拌澶囷紝鍙湁閫氳繃澶栭儴杩涜鍔犺浇鏀瑰彉瀹炰<EFBFBD>?
|
||||
if (g_supporting_devices[i].vid == vid && g_supporting_devices[i].pid == pid)
|
||||
{
|
||||
index = i;
|
||||
|
@ -437,7 +438,7 @@ void hg_scanner_mgr::on_hgscanner_pnp(usb_event ev, libusb_device* device, int v
|
|||
break;
|
||||
}
|
||||
}
|
||||
if (add) // 婢跺嫮鎮婄€电<EFBFBD>钖勯垾娓別vice閳ユ繃鏁奸崣妯兼畱閹<EFBFBD>懏娅?
|
||||
if (add) // 澶勭悊瀵硅薄鈥渄evice鈥濇敼鍙樼殑鎯呮<EFBFBD>?
|
||||
{
|
||||
i = 0;
|
||||
for (auto& v : online_devices_)
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
#include <huagao/hgscanner_error.h>
|
||||
#include "../../../sdk/hginclude/huagaoxxx_warraper_ex.h"
|
||||
#include <lang/app_language.h>
|
||||
#include <string.h>
|
||||
#include <algorithm>
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -226,7 +228,7 @@ static struct
|
|||
}g_known_group_with_sn[] = { {"base", "\xE5\x9F\xBA\xE6\x9C\xAC\xE8\xAE\xBE\xE7\xBD\xAE"}
|
||||
, {"bright", "\xE4\xBA\xAE\xE5\xBA\xA6"}
|
||||
, {"imgp", "\xE5\x9B\xBE\xE5\x83\x8F\xE5\xA4\x84\xE7\x90\x86"}
|
||||
, {"feeder", "\xE9\x80\x81\xE7\xBA\xB8\xE6\x96\xB9\xE5\xBC\x8F\xE8\xAE\xBE\xE7\xBD\xAE"} // 设置:\xE8\xAE\xBE\xE7\xBD\xAE
|
||||
, {"feeder", "\xE9\x80\x81\xE7\xBA\xB8\xE6\x96\xB9\xE5\xBC\x8F\xE8\xAE\xBE\xE7\xBD\xAE"} // <EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>\xE8\xAE\xBE\xE7\xBD\xAE
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include <lang/app_language.h>
|
||||
#include <sane/sane_ex.h>
|
||||
#include <hginclude/utils.h>
|
||||
#include <string.h>
|
||||
#include "../scanner_manager.h" // for version
|
||||
#include "user.h"
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "simple_logic.h"
|
||||
|
||||
|
||||
#include <string.h>
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -13,7 +13,10 @@ add_compile_options(-std=c++11)
|
|||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -O2")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -O2")
|
||||
aux_source_directory(${PROJECT_SOURCE_DIR} DIR_SRCS)
|
||||
file(GLOB DIR_HEADS "${PROJECT_SOURCE_DIR}/*.h" "${PROJECT_SOURCE_DIR}/*.hpp" "${PROJECT_SOURCE_DIR}/../../sdk/hginclude/*.h" "${PROJECT_SOURCE_DIR}/../../sdk/hginclude/*.cpp")
|
||||
file(GLOB DIR_HEADS "${PROJECT_SOURCE_DIR}/*.h" "${PROJECT_SOURCE_DIR}/*.hpp"
|
||||
"${PROJECT_SOURCE_DIR}/../../sdk/hginclude/*.h" "${PROJECT_SOURCE_DIR}/../../sdk/hginclude/*.cpp"
|
||||
"${PROJECT_SOURCE_DIR}/../../sdk/json/*.h" "${PROJECT_SOURCE_DIR}/../../sdk/json/*.c*"
|
||||
)
|
||||
set(DIR_SRCS ${DIR_SRCS} ${DIR_HEADS})
|
||||
if(COMMAND cmake_policy)
|
||||
cmake_policy(SET CMP0003 NEW)
|
||||
|
|
|
@ -11,7 +11,9 @@ add_compile_options(-std=c++11)
|
|||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -O2")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -O2")
|
||||
aux_source_directory(${PROJECT_SOURCE_DIR} DIR_SRCS)
|
||||
file(GLOB DIR_HEADS "${PROJECT_SOURCE_DIR}/*.h" "${PROJECT_SOURCE_DIR}/*.hpp" "${PROJECT_SOURCE_DIR}/../*.h" "${PROJECT_SOURCE_DIR}/../*.c" "${PROJECT_SOURCE_DIR}/../*.cpp")
|
||||
file(GLOB DIR_HEADS "${PROJECT_SOURCE_DIR}/*.h" "${PROJECT_SOURCE_DIR}/*.hpp"
|
||||
"${PROJECT_SOURCE_DIR}/sane_opt/*"
|
||||
)
|
||||
set(DIR_SRCS ${DIR_SRCS} ${DIR_HEADS})
|
||||
add_library(${PROJECT_NAME} SHARED ${DIR_SRCS})
|
||||
link_directories(${PROJECT_NAME} PRIVATE
|
||||
|
@ -26,7 +28,7 @@ target_link_libraries(${PROJECT_NAME} PRIVATE hgdriver
|
|||
target_link_libraries(${PROJECT_NAME} PRIVATE -static-libgcc -static-libstdc++ -Wl,--exclude-libs,ALL -zdefs -Bdirect pthread dl -Wl,-rpath,$ORIGIN)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}
|
||||
${PROJECT_SOURCE_DIR}/../sdk/hginclude
|
||||
${PROJECT_SOURCE_DIR}/../sdk/json
|
||||
${PROJECT_SOURCE_DIR}/../sdk
|
||||
${PROJECT_SOURCE_DIR}/../../sdk/include
|
||||
)
|
||||
|
||||
|
|
|
@ -100,7 +100,7 @@ extern "C" { // avoid compiler exporting name in C++ style !!!
|
|||
/// following are extensions for standard ...
|
||||
SANE_Status inner_sane_init_ex(SANE_Int* version_code, sane_callback cb, void* param)
|
||||
{
|
||||
hg_sane_middleware::set_app_callback(cb, param, hg_sane_middleware::APP_CALLBACK_EX);
|
||||
hg_sane_middleware::set_app_callback((void*)cb, param, hg_sane_middleware::APP_CALLBACK_EX);
|
||||
if (!hg_sane_middleware::instance()->is_ready())
|
||||
return (SANE_Status)SCANNER_ERR_LANG_PAK_LOST;
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
#include <json/gb_json.h>
|
||||
#include <algorithm>
|
||||
|
||||
#include <string.h>
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -397,7 +397,7 @@ SANE_Option_Descriptor* device_opts::get_opt_descriptor(const void* opt, int* fi
|
|||
|
||||
if (IS_PTR_NUMBER(opt))
|
||||
{
|
||||
int sn = (int)opt;
|
||||
int sn = (int)(long)opt;
|
||||
if(sn < SANE_OPT_ID_BASE)
|
||||
sn -= ind_base;
|
||||
if (opts_.count(sn))
|
||||
|
|
|
@ -181,11 +181,11 @@ gb_json* sane_std_opts::get_opt_json(scanner_handle h, int opt)
|
|||
long len = 0;
|
||||
gb_json* jsn = nullptr;
|
||||
|
||||
if (hg_scanner_get_parameter(h, (const char*)opt, buf, &len) == SCANNER_ERR_INSUFFICIENT_MEMORY)
|
||||
if (hg_scanner_get_option(h, (const char*)opt, buf, &len) == SCANNER_ERR_INSUFFICIENT_MEMORY)
|
||||
{
|
||||
buf = new char[len + 8];
|
||||
memset(buf, 0, len + 8);
|
||||
if (hg_scanner_get_parameter(h, (const char*)opt, buf, &len) == SCANNER_ERR_OK)
|
||||
if (hg_scanner_get_option(h, (const char*)opt, buf, &len) == SCANNER_ERR_OK)
|
||||
{
|
||||
jsn = new gb_json();
|
||||
if (!jsn->attach_text(buf))
|
||||
|
@ -400,7 +400,7 @@ scanner_err sane_std_opts::set_value(scanner_handle h, int opt, void* buf)
|
|||
|
||||
utils::to_log_with_api(hg_scanner_log_is_enable, hg_scanner_log, LOG_LEVEL_DEBUG, "%d->%d: %s\n", opt, op->user.opt, (char*)data);
|
||||
|
||||
statu = hg_scanner_set_parameter(h, (const char*)op->user.opt, data, &len);
|
||||
statu = hg_scanner_set_option(h, (const char*)op->user.opt, data, &len);
|
||||
if (statu == SCANNER_ERR_NOT_EXACT)
|
||||
to_known_opt_value(op, data, buf);
|
||||
if (data)
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "cJSON.h"
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
namespace special_char_trans
|
||||
{
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include "../../../sdk/include/sane/sane_option_definitions.h"
|
||||
#include "scanned_img.h"
|
||||
#include <algorithm>
|
||||
|
||||
// 标准TWAIN属性值与SANE属性值之间的转换
|
||||
//
|
||||
|
|
Loading…
Reference in New Issue